From 8309424bc758dd72a2f9044b51586c8b0c66f01c Mon Sep 17 00:00:00 2001 From: Giuliano Taffoni Date: Thu, 22 Nov 2018 17:28:24 +0100 Subject: [PATCH] google PaaS --- .../scipy/env/lib/python2.7/UserDict.pyc | Bin 0 -> 12591 bytes .../scipy/env/lib/python2.7/_abcoll.pyc | Bin 0 -> 32338 bytes .../scipy/env/lib/python2.7/_weakrefset.pyc | Bin 0 -> 12750 bytes .../scipy/env/lib/python2.7/abc.pyc | Bin 0 -> 6847 bytes .../scipy/env/lib/python2.7/codecs.pyc | Bin 0 -> 42840 bytes .../scipy/env/lib/python2.7/copy_reg.pyc | Bin 0 -> 5871 bytes .../scipy/env/lib/python2.7/genericpath.pyc | Bin 0 -> 4221 bytes .../scipy/env/lib/python2.7/linecache.pyc | Bin 0 -> 3656 bytes .../scipy/env/lib/python2.7/ntpath.pyc | Bin 0 -> 14537 bytes .../scipy/env/lib/python2.7/os.pyc | Bin 0 -> 29081 bytes .../scipy/env/lib/python2.7/posixpath.pyc | Bin 0 -> 12903 bytes .../scipy/env/lib/python2.7/re.pyc | Bin 0 -> 14757 bytes .../Click-7.0.dist-info/INSTALLER | 1 + .../Click-7.0.dist-info/LICENSE.txt | 39 + .../Click-7.0.dist-info/METADATA | 121 + .../site-packages/Click-7.0.dist-info/RECORD | 40 + .../site-packages/Click-7.0.dist-info/WHEEL | 6 + .../Click-7.0.dist-info/top_level.txt | 1 + .../Flask-1.0.2.dist-info/INSTALLER | 1 + .../Flask-1.0.2.dist-info/LICENSE.txt | 31 + .../Flask-1.0.2.dist-info/METADATA | 130 + .../Flask-1.0.2.dist-info/RECORD | 48 + .../site-packages/Flask-1.0.2.dist-info/WHEEL | 6 + .../Flask-1.0.2.dist-info/entry_points.txt | 3 + .../Flask-1.0.2.dist-info/top_level.txt | 1 + .../Jinja2-2.10.dist-info/DESCRIPTION.rst | 37 + .../Jinja2-2.10.dist-info/INSTALLER | 1 + .../Jinja2-2.10.dist-info/LICENSE.txt | 31 + .../Jinja2-2.10.dist-info/METADATA | 68 + .../Jinja2-2.10.dist-info/RECORD | 61 + .../site-packages/Jinja2-2.10.dist-info/WHEEL | 6 + .../Jinja2-2.10.dist-info/entry_points.txt | 4 + .../Jinja2-2.10.dist-info/metadata.json | 1 + .../Jinja2-2.10.dist-info/top_level.txt | 1 + .../MarkupSafe-1.0.dist-info/INSTALLER | 1 + .../MarkupSafe-1.0.dist-info/LICENSE | 33 + .../MarkupSafe-1.0.dist-info/METADATA | 135 + .../MarkupSafe-1.0.dist-info/RECORD | 16 + .../MarkupSafe-1.0.dist-info/WHEEL | 5 + .../MarkupSafe-1.0.dist-info/top_level.txt | 1 + .../PIL/.libs/libfreetype-6ed94974.so.6.16.1 | Bin 0 -> 1254200 bytes .../PIL/.libs/libjpeg-3fe7dfc0.so.9.3.0 | Bin 0 -> 344704 bytes .../PIL/.libs/liblcms2-a6801db4.so.2.0.8 | Bin 0 -> 453104 bytes .../PIL/.libs/liblzma-90de1f11.so.5.2.2 | Bin 0 -> 216664 bytes .../PIL/.libs/libopenjp2-e366d6b0.so.2.1.0 | Bin 0 -> 310256 bytes .../PIL/.libs/libpng16-8793a1b2.so.16.32.0 | Bin 0 -> 279824 bytes .../PIL/.libs/libtiff-8a6d997d.so.5.3.0 | Bin 0 -> 636464 bytes .../PIL/.libs/libwebp-8ccd29fd.so.7.0.2 | Bin 0 -> 776912 bytes .../PIL/.libs/libwebpdemux-eba3dc32.so.2.0.4 | Bin 0 -> 29512 bytes .../PIL/.libs/libwebpmux-1c63fe99.so.3.0.2 | Bin 0 -> 58600 bytes .../PIL/.libs/libz-a147dcb0.so.1.2.3 | Bin 0 -> 87848 bytes .../site-packages/PIL/BdfFontFile.py | 133 + .../site-packages/PIL/BdfFontFile.pyc | Bin 0 -> 2801 bytes .../site-packages/PIL/BlpImagePlugin.py | 435 + .../site-packages/PIL/BlpImagePlugin.pyc | Bin 0 -> 12778 bytes .../site-packages/PIL/BmpImagePlugin.py | 289 + .../site-packages/PIL/BmpImagePlugin.pyc | Bin 0 -> 8243 bytes .../site-packages/PIL/BufrStubImagePlugin.py | 72 + .../site-packages/PIL/BufrStubImagePlugin.pyc | Bin 0 -> 2119 bytes .../site-packages/PIL/ContainerIO.py | 116 + .../site-packages/PIL/ContainerIO.pyc | Bin 0 -> 3016 bytes .../site-packages/PIL/CurImagePlugin.py | 86 + .../site-packages/PIL/CurImagePlugin.pyc | Bin 0 -> 1799 bytes .../site-packages/PIL/DcxImagePlugin.py | 87 + .../site-packages/PIL/DcxImagePlugin.pyc | Bin 0 -> 2359 bytes .../site-packages/PIL/DdsImagePlugin.py | 172 + .../site-packages/PIL/DdsImagePlugin.pyc | Bin 0 -> 4936 bytes .../site-packages/PIL/EpsImagePlugin.py | 429 + .../site-packages/PIL/EpsImagePlugin.pyc | Bin 0 -> 10286 bytes .../python2.7/site-packages/PIL/ExifTags.py | 315 + .../python2.7/site-packages/PIL/ExifTags.pyc | Bin 0 -> 9509 bytes .../site-packages/PIL/FitsStubImagePlugin.py | 75 + .../site-packages/PIL/FitsStubImagePlugin.pyc | Bin 0 -> 2116 bytes .../site-packages/PIL/FliImagePlugin.py | 163 + .../site-packages/PIL/FliImagePlugin.pyc | Bin 0 -> 4510 bytes .../python2.7/site-packages/PIL/FontFile.py | 114 + .../python2.7/site-packages/PIL/FontFile.pyc | Bin 0 -> 2878 bytes .../site-packages/PIL/FpxImagePlugin.py | 229 + .../site-packages/PIL/FpxImagePlugin.pyc | Bin 0 -> 4678 bytes .../site-packages/PIL/FtexImagePlugin.py | 94 + .../site-packages/PIL/FtexImagePlugin.pyc | Bin 0 -> 3922 bytes .../site-packages/PIL/GbrImagePlugin.py | 94 + .../site-packages/PIL/GbrImagePlugin.pyc | Bin 0 -> 2357 bytes .../site-packages/PIL/GdImageFile.py | 83 + .../site-packages/PIL/GdImageFile.pyc | Bin 0 -> 2072 bytes .../site-packages/PIL/GifImagePlugin.py | 814 + .../site-packages/PIL/GifImagePlugin.pyc | Bin 0 -> 19290 bytes .../site-packages/PIL/GimpGradientFile.py | 138 + .../site-packages/PIL/GimpGradientFile.pyc | Bin 0 -> 3760 bytes .../site-packages/PIL/GimpPaletteFile.py | 62 + .../site-packages/PIL/GimpPaletteFile.pyc | Bin 0 -> 1503 bytes .../site-packages/PIL/GribStubImagePlugin.py | 73 + .../site-packages/PIL/GribStubImagePlugin.pyc | Bin 0 -> 2186 bytes .../site-packages/PIL/Hdf5StubImagePlugin.py | 72 + .../site-packages/PIL/Hdf5StubImagePlugin.pyc | Bin 0 -> 2116 bytes .../site-packages/PIL/IcnsImagePlugin.py | 374 + .../site-packages/PIL/IcnsImagePlugin.pyc | Bin 0 -> 10848 bytes .../site-packages/PIL/IcoImagePlugin.py | 284 + .../site-packages/PIL/IcoImagePlugin.pyc | Bin 0 -> 7782 bytes .../site-packages/PIL/ImImagePlugin.py | 347 + .../site-packages/PIL/ImImagePlugin.pyc | Bin 0 -> 8482 bytes .../lib/python2.7/site-packages/PIL/Image.py | 2930 ++ .../lib/python2.7/site-packages/PIL/Image.pyc | Bin 0 -> 89657 bytes .../python2.7/site-packages/PIL/ImageChops.py | 283 + .../site-packages/PIL/ImageChops.pyc | Bin 0 -> 7824 bytes .../python2.7/site-packages/PIL/ImageCms.py | 955 + .../python2.7/site-packages/PIL/ImageCms.pyc | Bin 0 -> 34583 bytes .../python2.7/site-packages/PIL/ImageColor.py | 309 + .../site-packages/PIL/ImageColor.pyc | Bin 0 -> 8513 bytes .../python2.7/site-packages/PIL/ImageDraw.py | 387 + .../python2.7/site-packages/PIL/ImageDraw.pyc | Bin 0 -> 12368 bytes .../python2.7/site-packages/PIL/ImageDraw2.py | 108 + .../site-packages/PIL/ImageDraw2.pyc | Bin 0 -> 4910 bytes .../site-packages/PIL/ImageEnhance.py | 100 + .../site-packages/PIL/ImageEnhance.pyc | Bin 0 -> 4183 bytes .../python2.7/site-packages/PIL/ImageFile.py | 667 + .../python2.7/site-packages/PIL/ImageFile.pyc | Bin 0 -> 17258 bytes .../site-packages/PIL/ImageFilter.py | 486 + .../site-packages/PIL/ImageFilter.pyc | Bin 0 -> 19745 bytes .../python2.7/site-packages/PIL/ImageFont.py | 471 + .../python2.7/site-packages/PIL/ImageFont.pyc | Bin 0 -> 20759 bytes .../python2.7/site-packages/PIL/ImageGrab.py | 80 + .../python2.7/site-packages/PIL/ImageGrab.pyc | Bin 0 -> 2116 bytes .../python2.7/site-packages/PIL/ImageMath.py | 271 + .../python2.7/site-packages/PIL/ImageMath.pyc | Bin 0 -> 10883 bytes .../python2.7/site-packages/PIL/ImageMode.py | 55 + .../python2.7/site-packages/PIL/ImageMode.pyc | Bin 0 -> 1621 bytes .../python2.7/site-packages/PIL/ImageMorph.py | 250 + .../site-packages/PIL/ImageMorph.pyc | Bin 0 -> 8875 bytes .../python2.7/site-packages/PIL/ImageOps.py | 529 + .../python2.7/site-packages/PIL/ImageOps.pyc | Bin 0 -> 15545 bytes .../site-packages/PIL/ImagePalette.py | 216 + .../site-packages/PIL/ImagePalette.pyc | Bin 0 -> 6834 bytes .../python2.7/site-packages/PIL/ImagePath.py | 20 + .../python2.7/site-packages/PIL/ImagePath.pyc | Bin 0 -> 221 bytes .../python2.7/site-packages/PIL/ImageQt.py | 212 + .../python2.7/site-packages/PIL/ImageQt.pyc | Bin 0 -> 5574 bytes .../site-packages/PIL/ImageSequence.py | 56 + .../site-packages/PIL/ImageSequence.pyc | Bin 0 -> 1830 bytes .../python2.7/site-packages/PIL/ImageShow.py | 194 + .../python2.7/site-packages/PIL/ImageShow.pyc | Bin 0 -> 6605 bytes .../python2.7/site-packages/PIL/ImageStat.py | 148 + .../python2.7/site-packages/PIL/ImageStat.pyc | Bin 0 -> 4618 bytes .../python2.7/site-packages/PIL/ImageTk.py | 303 + .../python2.7/site-packages/PIL/ImageTk.pyc | Bin 0 -> 9091 bytes .../site-packages/PIL/ImageTransform.py | 98 + .../site-packages/PIL/ImageTransform.pyc | Bin 0 -> 3896 bytes .../python2.7/site-packages/PIL/ImageWin.py | 228 + .../python2.7/site-packages/PIL/ImageWin.pyc | Bin 0 -> 9415 bytes .../site-packages/PIL/ImtImagePlugin.py | 95 + .../site-packages/PIL/ImtImagePlugin.pyc | Bin 0 -> 1609 bytes .../site-packages/PIL/IptcImagePlugin.py | 257 + .../site-packages/PIL/IptcImagePlugin.pyc | Bin 0 -> 6018 bytes .../site-packages/PIL/Jpeg2KImagePlugin.py | 276 + .../site-packages/PIL/Jpeg2KImagePlugin.pyc | Bin 0 -> 6644 bytes .../site-packages/PIL/JpegImagePlugin.py | 804 + .../site-packages/PIL/JpegImagePlugin.pyc | Bin 0 -> 21544 bytes .../site-packages/PIL/JpegPresets.py | 241 + .../site-packages/PIL/JpegPresets.pyc | Bin 0 -> 6483 bytes .../site-packages/PIL/McIdasImagePlugin.py | 75 + .../site-packages/PIL/McIdasImagePlugin.pyc | Bin 0 -> 1698 bytes .../site-packages/PIL/MicImagePlugin.py | 107 + .../site-packages/PIL/MicImagePlugin.pyc | Bin 0 -> 2618 bytes .../site-packages/PIL/MpegImagePlugin.py | 85 + .../site-packages/PIL/MpegImagePlugin.pyc | Bin 0 -> 2507 bytes .../site-packages/PIL/MpoImagePlugin.py | 99 + .../site-packages/PIL/MpoImagePlugin.pyc | Bin 0 -> 2892 bytes .../site-packages/PIL/MspImagePlugin.py | 192 + .../site-packages/PIL/MspImagePlugin.pyc | Bin 0 -> 3976 bytes .../python2.7/site-packages/PIL/OleFileIO.py | 4 + .../python2.7/site-packages/PIL/OleFileIO.pyc | Bin 0 -> 286 bytes .../lib/python2.7/site-packages/PIL/PSDraw.py | 237 + .../python2.7/site-packages/PIL/PSDraw.pyc | Bin 0 -> 6584 bytes .../site-packages/PIL/PaletteFile.py | 55 + .../site-packages/PIL/PaletteFile.pyc | Bin 0 -> 1334 bytes .../site-packages/PIL/PalmImagePlugin.py | 236 + .../site-packages/PIL/PalmImagePlugin.pyc | Bin 0 -> 9609 bytes .../site-packages/PIL/PcdImagePlugin.py | 66 + .../site-packages/PIL/PcdImagePlugin.pyc | Bin 0 -> 1531 bytes .../site-packages/PIL/PcfFontFile.py | 245 + .../site-packages/PIL/PcfFontFile.pyc | Bin 0 -> 6236 bytes .../site-packages/PIL/PcxImagePlugin.py | 179 + .../site-packages/PIL/PcxImagePlugin.pyc | Bin 0 -> 4256 bytes .../site-packages/PIL/PdfImagePlugin.py | 227 + .../site-packages/PIL/PdfImagePlugin.pyc | Bin 0 -> 4719 bytes .../python2.7/site-packages/PIL/PdfParser.py | 844 + .../python2.7/site-packages/PIL/PdfParser.pyc | Bin 0 -> 32808 bytes .../site-packages/PIL/PixarImagePlugin.py | 71 + .../site-packages/PIL/PixarImagePlugin.pyc | Bin 0 -> 1479 bytes .../site-packages/PIL/PngImagePlugin.py | 870 + .../site-packages/PIL/PngImagePlugin.pyc | Bin 0 -> 23954 bytes .../site-packages/PIL/PpmImagePlugin.py | 157 + .../site-packages/PIL/PpmImagePlugin.pyc | Bin 0 -> 3702 bytes .../site-packages/PIL/PsdImagePlugin.py | 307 + .../site-packages/PIL/PsdImagePlugin.pyc | Bin 0 -> 6652 bytes .../python2.7/site-packages/PIL/PyAccess.py | 319 + .../python2.7/site-packages/PIL/PyAccess.pyc | Bin 0 -> 13073 bytes .../site-packages/PIL/SgiImagePlugin.py | 227 + .../site-packages/PIL/SgiImagePlugin.pyc | Bin 0 -> 5264 bytes .../site-packages/PIL/SpiderImagePlugin.py | 314 + .../site-packages/PIL/SpiderImagePlugin.pyc | Bin 0 -> 8076 bytes .../site-packages/PIL/SunImagePlugin.py | 136 + .../site-packages/PIL/SunImagePlugin.pyc | Bin 0 -> 2568 bytes .../lib/python2.7/site-packages/PIL/TarIO.py | 56 + .../lib/python2.7/site-packages/PIL/TarIO.pyc | Bin 0 -> 1214 bytes .../site-packages/PIL/TgaImagePlugin.py | 209 + .../site-packages/PIL/TgaImagePlugin.pyc | Bin 0 -> 4342 bytes .../site-packages/PIL/TiffImagePlugin.py | 1838 ++ .../site-packages/PIL/TiffImagePlugin.pyc | Bin 0 -> 56354 bytes .../python2.7/site-packages/PIL/TiffTags.py | 448 + .../python2.7/site-packages/PIL/TiffTags.pyc | Bin 0 -> 11738 bytes .../site-packages/PIL/WalImageFile.py | 128 + .../site-packages/PIL/WalImageFile.pyc | Bin 0 -> 2437 bytes .../site-packages/PIL/WebPImagePlugin.py | 316 + .../site-packages/PIL/WebPImagePlugin.pyc | Bin 0 -> 8598 bytes .../site-packages/PIL/WmfImagePlugin.py | 170 + .../site-packages/PIL/WmfImagePlugin.pyc | Bin 0 -> 4041 bytes .../site-packages/PIL/XVThumbImagePlugin.py | 80 + .../site-packages/PIL/XVThumbImagePlugin.pyc | Bin 0 -> 1851 bytes .../site-packages/PIL/XbmImagePlugin.py | 96 + .../site-packages/PIL/XbmImagePlugin.pyc | Bin 0 -> 2576 bytes .../site-packages/PIL/XpmImagePlugin.py | 129 + .../site-packages/PIL/XpmImagePlugin.pyc | Bin 0 -> 2843 bytes .../python2.7/site-packages/PIL/__init__.py | 74 + .../python2.7/site-packages/PIL/__init__.pyc | Bin 0 -> 1881 bytes .../python2.7/site-packages/PIL/_binary.py | 94 + .../python2.7/site-packages/PIL/_binary.pyc | Bin 0 -> 3351 bytes .../python2.7/site-packages/PIL/_imaging.so | Bin 0 -> 590992 bytes .../site-packages/PIL/_imagingcms.so | Bin 0 -> 45080 bytes .../python2.7/site-packages/PIL/_imagingft.so | Bin 0 -> 35776 bytes .../site-packages/PIL/_imagingmath.so | Bin 0 -> 24856 bytes .../site-packages/PIL/_imagingmorph.so | Bin 0 -> 8056 bytes .../python2.7/site-packages/PIL/_imagingtk.so | Bin 0 -> 8984 bytes .../site-packages/PIL/_tkinter_finder.py | 20 + .../site-packages/PIL/_tkinter_finder.pyc | Bin 0 -> 629 bytes .../lib/python2.7/site-packages/PIL/_util.py | 29 + .../lib/python2.7/site-packages/PIL/_util.pyc | Bin 0 -> 1663 bytes .../python2.7/site-packages/PIL/_version.py | 2 + .../python2.7/site-packages/PIL/_version.pyc | Bin 0 -> 165 bytes .../lib/python2.7/site-packages/PIL/_webp.so | Bin 0 -> 39328 bytes .../python2.7/site-packages/PIL/features.py | 85 + .../python2.7/site-packages/PIL/features.pyc | Bin 0 -> 2924 bytes .../Pillow-5.2.0.dist-info/INSTALLER | 1 + .../Pillow-5.2.0.dist-info/LICENSE.txt | 16 + .../Pillow-5.2.0.dist-info/METADATA | 107 + .../Pillow-5.2.0.dist-info/RECORD | 209 + .../Pillow-5.2.0.dist-info/WHEEL | 5 + .../Pillow-5.2.0.dist-info/top_level.txt | 1 + .../Pillow-5.2.0.dist-info/zip-safe | 1 + .../Werkzeug-0.14.1.dist-info/DESCRIPTION.rst | 80 + .../Werkzeug-0.14.1.dist-info/INSTALLER | 1 + .../Werkzeug-0.14.1.dist-info/LICENSE.txt | 31 + .../Werkzeug-0.14.1.dist-info/METADATA | 116 + .../Werkzeug-0.14.1.dist-info/RECORD | 97 + .../Werkzeug-0.14.1.dist-info/WHEEL | 6 + .../Werkzeug-0.14.1.dist-info/metadata.json | 1 + .../Werkzeug-0.14.1.dist-info/top_level.txt | 1 + .../site-packages/_pytest/__init__.py | 8 + .../site-packages/_pytest/__init__.pyc | Bin 0 -> 301 bytes .../site-packages/_pytest/_argcomplete.py | 109 + .../site-packages/_pytest/_argcomplete.pyc | Bin 0 -> 4437 bytes .../site-packages/_pytest/_code/__init__.py | 14 + .../site-packages/_pytest/_code/__init__.pyc | Bin 0 -> 777 bytes .../_pytest/_code/_py2traceback.py | 94 + .../_pytest/_code/_py2traceback.pyc | Bin 0 -> 2993 bytes .../site-packages/_pytest/_code/code.py | 1052 + .../site-packages/_pytest/_code/code.pyc | Bin 0 -> 38350 bytes .../site-packages/_pytest/_code/source.py | 325 + .../site-packages/_pytest/_code/source.pyc | Bin 0 -> 11205 bytes .../site-packages/_pytest/_version.py | 4 + .../site-packages/_pytest/_version.pyc | Bin 0 -> 165 bytes .../_pytest/assertion/__init__.py | 155 + .../_pytest/assertion/__init__.pyc | Bin 0 -> 6707 bytes .../_pytest/assertion/rewrite.py | 1035 + .../_pytest/assertion/rewrite.pyc | Bin 0 -> 35108 bytes .../_pytest/assertion/truncate.py | 102 + .../_pytest/assertion/truncate.pyc | Bin 0 -> 3421 bytes .../site-packages/_pytest/assertion/util.py | 342 + .../site-packages/_pytest/assertion/util.pyc | Bin 0 -> 12416 bytes .../site-packages/_pytest/cacheprovider.py | 366 + .../site-packages/_pytest/cacheprovider.pyc | Bin 0 -> 15355 bytes .../site-packages/_pytest/capture.py | 783 + .../site-packages/_pytest/capture.pyc | Bin 0 -> 31826 bytes .../python2.7/site-packages/_pytest/compat.py | 422 + .../site-packages/_pytest/compat.pyc | Bin 0 -> 15213 bytes .../site-packages/_pytest/config/__init__.py | 1042 + .../site-packages/_pytest/config/__init__.pyc | Bin 0 -> 36532 bytes .../_pytest/config/argparsing.py | 409 + .../_pytest/config/argparsing.pyc | Bin 0 -> 16550 bytes .../_pytest/config/exceptions.py | 9 + .../_pytest/config/exceptions.pyc | Bin 0 -> 732 bytes .../site-packages/_pytest/config/findpaths.py | 148 + .../_pytest/config/findpaths.pyc | Bin 0 -> 4894 bytes .../site-packages/_pytest/debugging.py | 185 + .../site-packages/_pytest/debugging.pyc | Bin 0 -> 7512 bytes .../site-packages/_pytest/deprecated.py | 118 + .../site-packages/_pytest/deprecated.pyc | Bin 0 -> 4159 bytes .../site-packages/_pytest/doctest.py | 516 + .../site-packages/_pytest/doctest.pyc | Bin 0 -> 18579 bytes .../site-packages/_pytest/fixtures.py | 1386 + .../site-packages/_pytest/fixtures.pyc | Bin 0 -> 46430 bytes .../site-packages/_pytest/freeze_support.py | 47 + .../site-packages/_pytest/freeze_support.pyc | Bin 0 -> 1670 bytes .../site-packages/_pytest/helpconfig.py | 217 + .../site-packages/_pytest/helpconfig.pyc | Bin 0 -> 7994 bytes .../site-packages/_pytest/hookspec.py | 611 + .../site-packages/_pytest/hookspec.pyc | Bin 0 -> 24394 bytes .../site-packages/_pytest/junitxml.py | 569 + .../site-packages/_pytest/junitxml.pyc | Bin 0 -> 19668 bytes .../site-packages/_pytest/logging.py | 625 + .../site-packages/_pytest/logging.pyc | Bin 0 -> 21714 bytes .../python2.7/site-packages/_pytest/main.py | 672 + .../python2.7/site-packages/_pytest/main.pyc | Bin 0 -> 21509 bytes .../site-packages/_pytest/mark/__init__.py | 171 + .../site-packages/_pytest/mark/__init__.pyc | Bin 0 -> 6041 bytes .../site-packages/_pytest/mark/evaluate.py | 125 + .../site-packages/_pytest/mark/evaluate.pyc | Bin 0 -> 4575 bytes .../site-packages/_pytest/mark/legacy.py | 101 + .../site-packages/_pytest/mark/legacy.pyc | Bin 0 -> 4161 bytes .../site-packages/_pytest/mark/structures.py | 471 + .../site-packages/_pytest/mark/structures.pyc | Bin 0 -> 18936 bytes .../site-packages/_pytest/monkeypatch.py | 306 + .../site-packages/_pytest/monkeypatch.pyc | Bin 0 -> 11499 bytes .../python2.7/site-packages/_pytest/nodes.py | 535 + .../python2.7/site-packages/_pytest/nodes.pyc | Bin 0 -> 20128 bytes .../python2.7/site-packages/_pytest/nose.py | 76 + .../python2.7/site-packages/_pytest/nose.pyc | Bin 0 -> 3300 bytes .../site-packages/_pytest/outcomes.py | 182 + .../site-packages/_pytest/outcomes.pyc | Bin 0 -> 6696 bytes .../site-packages/_pytest/pastebin.py | 113 + .../site-packages/_pytest/pastebin.pyc | Bin 0 -> 4271 bytes .../site-packages/_pytest/pathlib.py | 313 + .../site-packages/_pytest/pathlib.pyc | Bin 0 -> 10510 bytes .../site-packages/_pytest/pytester.py | 1385 + .../site-packages/_pytest/pytester.pyc | Bin 0 -> 54774 bytes .../python2.7/site-packages/_pytest/python.py | 1449 + .../site-packages/_pytest/python.pyc | Bin 0 -> 50979 bytes .../site-packages/_pytest/python_api.py | 721 + .../site-packages/_pytest/python_api.pyc | Bin 0 -> 26961 bytes .../site-packages/_pytest/recwarn.py | 241 + .../site-packages/_pytest/recwarn.pyc | Bin 0 -> 9329 bytes .../site-packages/_pytest/reports.py | 197 + .../site-packages/_pytest/reports.pyc | Bin 0 -> 7431 bytes .../site-packages/_pytest/resultlog.py | 123 + .../site-packages/_pytest/resultlog.pyc | Bin 0 -> 4872 bytes .../python2.7/site-packages/_pytest/runner.py | 394 + .../site-packages/_pytest/runner.pyc | Bin 0 -> 14457 bytes .../site-packages/_pytest/setuponly.py | 88 + .../site-packages/_pytest/setuponly.pyc | Bin 0 -> 3241 bytes .../site-packages/_pytest/setupplan.py | 31 + .../site-packages/_pytest/setupplan.pyc | Bin 0 -> 1351 bytes .../site-packages/_pytest/skipping.py | 298 + .../site-packages/_pytest/skipping.pyc | Bin 0 -> 9980 bytes .../site-packages/_pytest/terminal.py | 879 + .../site-packages/_pytest/terminal.pyc | Bin 0 -> 31114 bytes .../python2.7/site-packages/_pytest/tmpdir.py | 187 + .../site-packages/_pytest/tmpdir.pyc | Bin 0 -> 7673 bytes .../site-packages/_pytest/unittest.py | 259 + .../site-packages/_pytest/unittest.pyc | Bin 0 -> 9837 bytes .../site-packages/_pytest/warning_types.py | 60 + .../site-packages/_pytest/warning_types.pyc | Bin 0 -> 2852 bytes .../site-packages/_pytest/warnings.py | 173 + .../site-packages/_pytest/warnings.pyc | Bin 0 -> 6481 bytes .../lib/python2.7/site-packages/_scandir.so | Bin 0 -> 66936 bytes .../astropy-2.0.9.dist-info/INSTALLER | 1 + .../astropy-2.0.9.dist-info/LICENSE.rst | 26 + .../astropy-2.0.9.dist-info/METADATA | 32 + .../astropy-2.0.9.dist-info/RECORD | 1660 ++ .../astropy-2.0.9.dist-info/WHEEL | 5 + .../astropy-2.0.9.dist-info/entry_points.txt | 10 + .../astropy-2.0.9.dist-info/top_level.txt | 1 + .../python2.7/site-packages/astropy/CITATION | 112 + .../site-packages/astropy/__init__.py | 341 + .../site-packages/astropy/__init__.pyc | Bin 0 -> 9326 bytes .../site-packages/astropy/_compiler.so | Bin 0 -> 23584 bytes .../site-packages/astropy/_erfa/__init__.py | 7 + .../site-packages/astropy/_erfa/__init__.pyc | Bin 0 -> 259 bytes .../site-packages/astropy/_erfa/_core.so | Bin 0 -> 1065168 bytes .../site-packages/astropy/_erfa/core.py | 22631 ++++++++++++++++ .../site-packages/astropy/_erfa/core.pyc | Bin 0 -> 761228 bytes .../astropy/_erfa/erfa_generator.py | 563 + .../astropy/_erfa/erfa_generator.pyc | Bin 0 -> 21349 bytes .../astropy/_erfa/setup_package.py | 118 + .../astropy/_erfa/setup_package.pyc | Bin 0 -> 4691 bytes .../astropy/_erfa/tests/__init__.py | 1 + .../astropy/_erfa/tests/__init__.pyc | Bin 0 -> 150 bytes .../astropy/_erfa/tests/test_erfa.py | 233 + .../astropy/_erfa/tests/test_erfa.pyc | Bin 0 -> 8076 bytes .../astropy/analytic_functions/__init__.py | 10 + .../astropy/analytic_functions/__init__.pyc | Bin 0 -> 445 bytes .../astropy/analytic_functions/blackbody.py | 79 + .../astropy/analytic_functions/blackbody.pyc | Bin 0 -> 2664 bytes .../analytic_functions/tests/__init__.py | 0 .../analytic_functions/tests/__init__.pyc | Bin 0 -> 163 bytes .../tests/test_blackbody.py | 22 + .../tests/test_blackbody.pyc | Bin 0 -> 1145 bytes .../site-packages/astropy/astropy.cfg | 160 + .../site-packages/astropy/config/__init__.py | 13 + .../site-packages/astropy/config/__init__.pyc | Bin 0 -> 571 bytes .../astropy/config/affiliated.py | 9 + .../astropy/config/affiliated.pyc | Bin 0 -> 458 bytes .../astropy/config/configuration.py | 724 + .../astropy/config/configuration.pyc | Bin 0 -> 23546 bytes .../site-packages/astropy/config/paths.py | 315 + .../site-packages/astropy/config/paths.pyc | Bin 0 -> 10510 bytes .../astropy/config/setup_package.py | 11 + .../astropy/config/setup_package.pyc | Bin 0 -> 557 bytes .../astropy/config/tests/__init__.py | 2 + .../astropy/config/tests/__init__.pyc | Bin 0 -> 303 bytes .../astropy/config/tests/data/alias.cfg | 2 + .../astropy/config/tests/data/astropy.0.3.cfg | 149 + .../config/tests/data/astropy.0.3.windows.cfg | 149 + .../astropy/config/tests/data/deprecated.cfg | 2 + .../astropy/config/tests/data/empty.cfg | 15 + .../astropy/config/tests/data/not_empty.cfg | 15 + .../astropy/config/tests/test_configs.py | 358 + .../astropy/config/tests/test_configs.pyc | Bin 0 -> 12769 bytes .../site-packages/astropy/conftest.py | 44 + .../site-packages/astropy/conftest.pyc | Bin 0 -> 1378 bytes .../astropy/constants/__init__.py | 56 + .../astropy/constants/__init__.pyc | Bin 0 -> 1789 bytes .../astropy/constants/astropyconst13.py | 20 + .../astropy/constants/astropyconst13.pyc | Bin 0 -> 863 bytes .../astropy/constants/astropyconst20.py | 19 + .../astropy/constants/astropyconst20.pyc | Bin 0 -> 852 bytes .../site-packages/astropy/constants/cgs.py | 18 + .../site-packages/astropy/constants/cgs.pyc | Bin 0 -> 922 bytes .../astropy/constants/codata2010.py | 112 + .../astropy/constants/codata2010.pyc | Bin 0 -> 4091 bytes .../astropy/constants/codata2014.py | 107 + .../astropy/constants/codata2014.pyc | Bin 0 -> 3748 bytes .../astropy/constants/constant.py | 237 + .../astropy/constants/constant.pyc | Bin 0 -> 10353 bytes .../astropy/constants/iau2012.py | 78 + .../astropy/constants/iau2012.pyc | Bin 0 -> 2255 bytes .../astropy/constants/iau2015.py | 96 + .../astropy/constants/iau2015.pyc | Bin 0 -> 2715 bytes .../astropy/constants/setup_package.py | 5 + .../astropy/constants/setup_package.pyc | Bin 0 -> 329 bytes .../site-packages/astropy/constants/si.py | 20 + .../site-packages/astropy/constants/si.pyc | Bin 0 -> 870 bytes .../astropy/constants/tests/__init__.py | 2 + .../astropy/constants/tests/__init__.pyc | Bin 0 -> 306 bytes .../astropy/constants/tests/test_constant.py | 165 + .../astropy/constants/tests/test_constant.pyc | Bin 0 -> 5577 bytes .../astropy/constants/tests/test_pickle.py | 22 + .../astropy/constants/tests/test_pickle.pyc | Bin 0 -> 1128 bytes .../constants/tests/test_prior_version.py | 161 + .../constants/tests/test_prior_version.pyc | Bin 0 -> 5147 bytes .../astropy/convolution/__init__.py | 15 + .../astropy/convolution/__init__.pyc | Bin 0 -> 642 bytes .../astropy/convolution/boundary_extend.so | Bin 0 -> 291200 bytes .../astropy/convolution/boundary_fill.so | Bin 0 -> 300688 bytes .../astropy/convolution/boundary_none.so | Bin 0 -> 303824 bytes .../astropy/convolution/boundary_wrap.so | Bin 0 -> 314304 bytes .../astropy/convolution/convolve.py | 818 + .../astropy/convolution/convolve.pyc | Bin 0 -> 24462 bytes .../site-packages/astropy/convolution/core.py | 372 + .../astropy/convolution/core.pyc | Bin 0 -> 12584 bytes .../astropy/convolution/kernels.py | 1018 + .../astropy/convolution/kernels.pyc | Bin 0 -> 36920 bytes .../astropy/convolution/setup_package.py | 5 + .../astropy/convolution/setup_package.pyc | Bin 0 -> 333 bytes .../astropy/convolution/tests/__init__.py | 0 .../astropy/convolution/tests/__init__.pyc | Bin 0 -> 156 bytes .../convolution/tests/test_convolve.py | 809 + .../convolution/tests/test_convolve.pyc | Bin 0 -> 30856 bytes .../convolution/tests/test_convolve_fft.py | 617 + .../convolution/tests/test_convolve_fft.pyc | Bin 0 -> 19167 bytes .../tests/test_convolve_kernels.py | 130 + .../tests/test_convolve_kernels.pyc | Bin 0 -> 4325 bytes .../convolution/tests/test_convolve_models.py | 107 + .../tests/test_convolve_models.pyc | Bin 0 -> 5143 bytes .../convolution/tests/test_convolve_nddata.py | 58 + .../tests/test_convolve_nddata.pyc | Bin 0 -> 2746 bytes .../convolution/tests/test_convolve_speeds.py | 187 + .../tests/test_convolve_speeds.pyc | Bin 0 -> 2256 bytes .../convolution/tests/test_discretize.py | 198 + .../convolution/tests/test_discretize.pyc | Bin 0 -> 9642 bytes .../convolution/tests/test_kernel_class.py | 522 + .../convolution/tests/test_kernel_class.pyc | Bin 0 -> 21858 bytes .../astropy/convolution/tests/test_pickle.py | 27 + .../astropy/convolution/tests/test_pickle.pyc | Bin 0 -> 1234 bytes .../astropy/convolution/utils.py | 301 + .../astropy/convolution/utils.pyc | Bin 0 -> 11244 bytes .../astropy/cosmology/__init__.py | 13 + .../astropy/cosmology/__init__.pyc | Bin 0 -> 651 bytes .../site-packages/astropy/cosmology/core.py | 2904 ++ .../site-packages/astropy/cosmology/core.pyc | Bin 0 -> 94052 bytes .../site-packages/astropy/cosmology/funcs.py | 146 + .../site-packages/astropy/cosmology/funcs.pyc | Bin 0 -> 6109 bytes .../astropy/cosmology/parameters.py | 148 + .../astropy/cosmology/parameters.pyc | Bin 0 -> 3946 bytes .../astropy/cosmology/scalar_inv_efuncs.so | Bin 0 -> 458304 bytes .../astropy/cosmology/setup_package.py | 5 + .../astropy/cosmology/setup_package.pyc | Bin 0 -> 329 bytes .../astropy/cosmology/tests/__init__.py | 0 .../astropy/cosmology/tests/__init__.pyc | Bin 0 -> 154 bytes .../astropy/cosmology/tests/test_cosmology.py | 1567 ++ .../cosmology/tests/test_cosmology.pyc | Bin 0 -> 59546 bytes .../astropy/cosmology/tests/test_pickle.py | 19 + .../astropy/cosmology/tests/test_pickle.pyc | Bin 0 -> 980 bytes .../site-packages/astropy/cython_version.py | 2 + .../site-packages/astropy/cython_version.pyc | Bin 0 -> 180 bytes .../site-packages/astropy/io/__init__.py | 5 + .../site-packages/astropy/io/__init__.pyc | Bin 0 -> 273 bytes .../astropy/io/ascii/__init__.py | 46 + .../astropy/io/ascii/__init__.pyc | Bin 0 -> 2217 bytes .../site-packages/astropy/io/ascii/basic.py | 393 + .../site-packages/astropy/io/ascii/basic.pyc | Bin 0 -> 15128 bytes .../site-packages/astropy/io/ascii/cds.py | 322 + .../site-packages/astropy/io/ascii/cds.pyc | Bin 0 -> 11981 bytes .../site-packages/astropy/io/ascii/connect.py | 95 + .../astropy/io/ascii/connect.pyc | Bin 0 -> 3955 bytes .../site-packages/astropy/io/ascii/core.py | 1538 ++ .../site-packages/astropy/io/ascii/core.pyc | Bin 0 -> 52346 bytes .../site-packages/astropy/io/ascii/cparser.so | Bin 0 -> 1476384 bytes .../site-packages/astropy/io/ascii/daophot.py | 395 + .../astropy/io/ascii/daophot.pyc | Bin 0 -> 13979 bytes .../site-packages/astropy/io/ascii/ecsv.py | 252 + .../site-packages/astropy/io/ascii/ecsv.pyc | Bin 0 -> 8931 bytes .../astropy/io/ascii/fastbasic.py | 349 + .../astropy/io/ascii/fastbasic.pyc | Bin 0 -> 14028 bytes .../astropy/io/ascii/fixedwidth.py | 406 + .../astropy/io/ascii/fixedwidth.pyc | Bin 0 -> 14483 bytes .../site-packages/astropy/io/ascii/html.py | 469 + .../site-packages/astropy/io/ascii/html.pyc | Bin 0 -> 16430 bytes .../site-packages/astropy/io/ascii/ipac.py | 526 + .../site-packages/astropy/io/ascii/ipac.pyc | Bin 0 -> 18405 bytes .../site-packages/astropy/io/ascii/latex.py | 444 + .../site-packages/astropy/io/ascii/latex.pyc | Bin 0 -> 18115 bytes .../site-packages/astropy/io/ascii/misc.py | 129 + .../site-packages/astropy/io/ascii/misc.pyc | Bin 0 -> 6548 bytes .../site-packages/astropy/io/ascii/rst.py | 63 + .../site-packages/astropy/io/ascii/rst.pyc | Bin 0 -> 2796 bytes .../astropy/io/ascii/setup_package.py | 94 + .../astropy/io/ascii/setup_package.pyc | Bin 0 -> 2947 bytes .../astropy/io/ascii/sextractor.py | 151 + .../astropy/io/ascii/sextractor.pyc | Bin 0 -> 5714 bytes .../astropy/io/ascii/tests/__init__.py | 0 .../astropy/io/ascii/tests/__init__.pyc | Bin 0 -> 153 bytes .../astropy/io/ascii/tests/common.py | 109 + .../astropy/io/ascii/tests/common.pyc | Bin 0 -> 3924 bytes .../astropy/io/ascii/tests/t/apostrophe.rdb | 6 + .../astropy/io/ascii/tests/t/apostrophe.tab | 3 + .../astropy/io/ascii/tests/t/bad.txt | 6 + .../astropy/io/ascii/tests/t/bars_at_ends.txt | 4 + .../astropy/io/ascii/tests/t/cds.dat | 38 + .../io/ascii/tests/t/cds/description/ReadMe | 67 + .../ascii/tests/t/cds/description/table.dat | 2 + .../astropy/io/ascii/tests/t/cds/glob/ReadMe | 572 + .../io/ascii/tests/t/cds/glob/lmxbrefs.dat | 291 + .../astropy/io/ascii/tests/t/cds/multi/ReadMe | 64 + .../io/ascii/tests/t/cds/multi/lhs2065.dat | 18 + .../io/ascii/tests/t/cds/multi/lp944-20.dat | 18 + .../astropy/io/ascii/tests/t/cds2.dat | 287 + .../io/ascii/tests/t/cds_malformed.dat | 37 + .../io/ascii/tests/t/commented_header.dat | 4 + .../io/ascii/tests/t/commented_header2.dat | 5 + .../astropy/io/ascii/tests/t/continuation.dat | 4 + .../astropy/io/ascii/tests/t/daophot.dat | 45 + .../astropy/io/ascii/tests/t/daophot.dat.gz | Bin 0 -> 793 bytes .../astropy/io/ascii/tests/t/daophot2.dat | 31 + .../astropy/io/ascii/tests/t/daophot3.dat | 120 + .../astropy/io/ascii/tests/t/daophot4.dat | 113 + .../astropy/io/ascii/tests/t/fill_values.txt | 3 + .../io/ascii/tests/t/fixed_width_2_line.txt | 4 + .../astropy/io/ascii/tests/t/html.html | 29 + .../astropy/io/ascii/tests/t/html2.html | 28 + .../astropy/io/ascii/tests/t/ipac.dat | 12 + .../astropy/io/ascii/tests/t/ipac.dat.bz2 | Bin 0 -> 385 bytes .../astropy/io/ascii/tests/t/ipac.dat.xz | Bin 0 -> 320 bytes .../astropy/io/ascii/tests/t/latex1.tex | 10 + .../astropy/io/ascii/tests/t/latex1.tex.gz | Bin 0 -> 198 bytes .../astropy/io/ascii/tests/t/latex2.tex | 14 + .../astropy/io/ascii/tests/t/latex3.tex | 7 + .../io/ascii/tests/t/nls1_stackinfo.dbout | 60 + .../astropy/io/ascii/tests/t/no_data_cds.dat | 37 + .../io/ascii/tests/t/no_data_daophot.dat | 7 + .../astropy/io/ascii/tests/t/no_data_ipac.dat | 10 + .../io/ascii/tests/t/no_data_sextractor.dat | 5 + .../io/ascii/tests/t/no_data_with_header.dat | 1 + .../ascii/tests/t/no_data_without_header.dat | 2 + .../astropy/io/ascii/tests/t/sextractor.dat | 8 + .../astropy/io/ascii/tests/t/sextractor2.dat | 14 + .../astropy/io/ascii/tests/t/sextractor3.dat | 10 + .../astropy/io/ascii/tests/t/short.rdb | 14 + .../astropy/io/ascii/tests/t/short.rdb.bz2 | Bin 0 -> 146 bytes .../astropy/io/ascii/tests/t/short.rdb.gz | Bin 0 -> 148 bytes .../astropy/io/ascii/tests/t/short.rdb.xz | Bin 0 -> 192 bytes .../astropy/io/ascii/tests/t/short.tab | 8 + .../astropy/io/ascii/tests/t/simple.txt | 4 + .../astropy/io/ascii/tests/t/simple2.txt | 4 + .../astropy/io/ascii/tests/t/simple3.txt | 3 + .../astropy/io/ascii/tests/t/simple4.txt | 3 + .../astropy/io/ascii/tests/t/simple5.txt | 4 + .../astropy/io/ascii/tests/t/simple_csv.csv | 3 + .../io/ascii/tests/t/simple_csv_missing.csv | 3 + .../ascii/tests/t/space_delim_blank_lines.txt | 8 + .../ascii/tests/t/space_delim_no_header.dat | 2 + .../io/ascii/tests/t/space_delim_no_names.dat | 2 + .../astropy/io/ascii/tests/t/test4.dat | 12 + .../astropy/io/ascii/tests/t/test5.dat | 22 + .../astropy/io/ascii/tests/t/vizier/ReadMe | 89 + .../io/ascii/tests/t/vizier/table1.dat | 15 + .../io/ascii/tests/t/vizier/table5.dat | 49 + .../astropy/io/ascii/tests/t/vots_spec.dat | 99 + .../astropy/io/ascii/tests/t/whitespace.dat | 3 + .../astropy/io/ascii/tests/test_c_reader.py | 1151 + .../astropy/io/ascii/tests/test_c_reader.pyc | Bin 0 -> 43551 bytes .../tests/test_cds_header_from_readme.py | 155 + .../tests/test_cds_header_from_readme.pyc | Bin 0 -> 5046 bytes .../astropy/io/ascii/tests/test_compressed.py | 55 + .../io/ascii/tests/test_compressed.pyc | Bin 0 -> 2297 bytes .../astropy/io/ascii/tests/test_connect.py | 140 + .../astropy/io/ascii/tests/test_connect.pyc | Bin 0 -> 7204 bytes .../astropy/io/ascii/tests/test_ecsv.py | 418 + .../astropy/io/ascii/tests/test_ecsv.pyc | Bin 0 -> 14916 bytes .../astropy/io/ascii/tests/test_fixedwidth.py | 481 + .../io/ascii/tests/test_fixedwidth.pyc | Bin 0 -> 19618 bytes .../astropy/io/ascii/tests/test_html.py | 730 + .../astropy/io/ascii/tests/test_html.pyc | Bin 0 -> 23560 bytes .../io/ascii/tests/test_ipac_definitions.py | 151 + .../io/ascii/tests/test_ipac_definitions.pyc | Bin 0 -> 6936 bytes .../astropy/io/ascii/tests/test_read.py | 1321 + .../astropy/io/ascii/tests/test_read.pyc | Bin 0 -> 50746 bytes .../astropy/io/ascii/tests/test_rst.py | 184 + .../astropy/io/ascii/tests/test_rst.pyc | Bin 0 -> 6414 bytes .../astropy/io/ascii/tests/test_types.py | 55 + .../astropy/io/ascii/tests/test_types.pyc | Bin 0 -> 2408 bytes .../astropy/io/ascii/tests/test_write.py | 743 + .../astropy/io/ascii/tests/test_write.pyc | Bin 0 -> 25118 bytes .../site-packages/astropy/io/ascii/ui.py | 765 + .../site-packages/astropy/io/ascii/ui.pyc | Bin 0 -> 23282 bytes .../site-packages/astropy/io/fits/__init__.py | 92 + .../astropy/io/fits/__init__.pyc | Bin 0 -> 3231 bytes .../astropy/io/fits/_numpy_hacks.py | 66 + .../astropy/io/fits/_numpy_hacks.pyc | Bin 0 -> 2442 bytes .../site-packages/astropy/io/fits/card.py | 1269 + .../site-packages/astropy/io/fits/card.pyc | Bin 0 -> 31966 bytes .../site-packages/astropy/io/fits/column.py | 2272 ++ .../site-packages/astropy/io/fits/column.pyc | Bin 0 -> 63791 bytes .../astropy/io/fits/compression.so | Bin 0 -> 4592120 bytes .../site-packages/astropy/io/fits/connect.py | 226 + .../site-packages/astropy/io/fits/connect.pyc | Bin 0 -> 5965 bytes .../astropy/io/fits/convenience.py | 1056 + .../astropy/io/fits/convenience.pyc | Bin 0 -> 33732 bytes .../site-packages/astropy/io/fits/diff.py | 1570 ++ .../site-packages/astropy/io/fits/diff.pyc | Bin 0 -> 53527 bytes .../site-packages/astropy/io/fits/file.py | 593 + .../site-packages/astropy/io/fits/file.pyc | Bin 0 -> 16182 bytes .../site-packages/astropy/io/fits/fitsrec.py | 1362 + .../site-packages/astropy/io/fits/fitsrec.pyc | Bin 0 -> 36066 bytes .../astropy/io/fits/hdu/__init__.py | 16 + .../astropy/io/fits/hdu/__init__.pyc | Bin 0 -> 951 bytes .../site-packages/astropy/io/fits/hdu/base.py | 1671 ++ .../astropy/io/fits/hdu/base.pyc | Bin 0 -> 52857 bytes .../astropy/io/fits/hdu/compressed.py | 1960 ++ .../astropy/io/fits/hdu/compressed.pyc | Bin 0 -> 49268 bytes .../astropy/io/fits/hdu/groups.py | 623 + .../astropy/io/fits/hdu/groups.pyc | Bin 0 -> 18390 bytes .../astropy/io/fits/hdu/hdulist.py | 1381 + .../astropy/io/fits/hdu/hdulist.pyc | Bin 0 -> 38383 bytes .../astropy/io/fits/hdu/image.py | 1142 + .../astropy/io/fits/hdu/image.pyc | Bin 0 -> 31004 bytes .../astropy/io/fits/hdu/nonstandard.py | 125 + .../astropy/io/fits/hdu/nonstandard.pyc | Bin 0 -> 4597 bytes .../astropy/io/fits/hdu/streaming.py | 231 + .../astropy/io/fits/hdu/streaming.pyc | Bin 0 -> 7193 bytes .../astropy/io/fits/hdu/table.py | 1462 + .../astropy/io/fits/hdu/table.pyc | Bin 0 -> 43145 bytes .../site-packages/astropy/io/fits/header.py | 2129 ++ .../site-packages/astropy/io/fits/header.pyc | Bin 0 -> 64247 bytes .../astropy/io/fits/py3compat.py | 90 + .../astropy/io/fits/py3compat.pyc | Bin 0 -> 2829 bytes .../astropy/io/fits/scripts/__init__.py | 8 + .../astropy/io/fits/scripts/__init__.pyc | Bin 0 -> 397 bytes .../astropy/io/fits/scripts/fitscheck.py | 220 + .../astropy/io/fits/scripts/fitscheck.pyc | Bin 0 -> 7423 bytes .../astropy/io/fits/scripts/fitsdiff.py | 342 + .../astropy/io/fits/scripts/fitsdiff.pyc | Bin 0 -> 12140 bytes .../astropy/io/fits/scripts/fitsheader.py | 329 + .../astropy/io/fits/scripts/fitsheader.pyc | Bin 0 -> 11272 bytes .../astropy/io/fits/scripts/fitsinfo.py | 62 + .../astropy/io/fits/scripts/fitsinfo.pyc | Bin 0 -> 2303 bytes .../astropy/io/fits/setup_package.py | 79 + .../astropy/io/fits/setup_package.pyc | Bin 0 -> 2755 bytes .../astropy/io/fits/tests/__init__.py | 61 + .../astropy/io/fits/tests/__init__.pyc | Bin 0 -> 2624 bytes .../astropy/io/fits/tests/data/arange.fits | Bin 0 -> 8640 bytes .../astropy/io/fits/tests/data/ascii.fits | 1 + .../astropy/io/fits/tests/data/blank.fits | Bin 0 -> 5760 bytes .../astropy/io/fits/tests/data/btable.fits | Bin 0 -> 8640 bytes .../astropy/io/fits/tests/data/checksum.fits | 1 + .../astropy/io/fits/tests/data/comp.fits | 405 + .../tests/data/compressed_float_bzero.fits | Bin 0 -> 8640 bytes .../io/fits/tests/data/compressed_image.fits | Bin 0 -> 8640 bytes .../io/fits/tests/data/fixed-1890.fits | 1 + .../astropy/io/fits/tests/data/group.fits | Bin 0 -> 5760 bytes .../io/fits/tests/data/history_header.fits | 1 + .../astropy/io/fits/tests/data/memtest.fits | 1 + .../io/fits/tests/data/o4sp040b0_raw.fits | 1 + .../io/fits/tests/data/random_groups.fits | 8 + .../astropy/io/fits/tests/data/scale.fits | Bin 0 -> 8640 bytes .../astropy/io/fits/tests/data/stddata.fits | Bin 0 -> 23040 bytes .../astropy/io/fits/tests/data/table.fits | Bin 0 -> 8640 bytes .../astropy/io/fits/tests/data/tb.fits | Bin 0 -> 8640 bytes .../astropy/io/fits/tests/data/tdim.fits | Bin 0 -> 8640 bytes .../astropy/io/fits/tests/data/test0.fits | 1 + .../tests/data/variable_length_table.fits | Bin 0 -> 8640 bytes .../astropy/io/fits/tests/data/zerowidth.fits | 27 + .../astropy/io/fits/tests/test_checksum.py | 454 + .../astropy/io/fits/tests/test_checksum.pyc | Bin 0 -> 20034 bytes .../astropy/io/fits/tests/test_connect.py | 351 + .../astropy/io/fits/tests/test_connect.pyc | Bin 0 -> 17462 bytes .../astropy/io/fits/tests/test_convenience.py | 162 + .../io/fits/tests/test_convenience.pyc | Bin 0 -> 6734 bytes .../astropy/io/fits/tests/test_core.py | 1205 + .../astropy/io/fits/tests/test_core.pyc | Bin 0 -> 46738 bytes .../astropy/io/fits/tests/test_diff.py | 814 + .../astropy/io/fits/tests/test_diff.pyc | Bin 0 -> 34764 bytes .../astropy/io/fits/tests/test_division.py | 42 + .../astropy/io/fits/tests/test_division.pyc | Bin 0 -> 2657 bytes .../astropy/io/fits/tests/test_fitsdiff.py | 265 + .../astropy/io/fits/tests/test_fitsdiff.pyc | Bin 0 -> 10511 bytes .../astropy/io/fits/tests/test_fitsheader.py | 79 + .../astropy/io/fits/tests/test_fitsheader.pyc | Bin 0 -> 3873 bytes .../astropy/io/fits/tests/test_fitsinfo.py | 31 + .../astropy/io/fits/tests/test_fitsinfo.pyc | Bin 0 -> 1802 bytes .../astropy/io/fits/tests/test_groups.py | 212 + .../astropy/io/fits/tests/test_groups.pyc | Bin 0 -> 8349 bytes .../astropy/io/fits/tests/test_hdulist.py | 1005 + .../astropy/io/fits/tests/test_hdulist.pyc | Bin 0 -> 39140 bytes .../astropy/io/fits/tests/test_header.py | 2752 ++ .../astropy/io/fits/tests/test_header.pyc | Bin 0 -> 107494 bytes .../astropy/io/fits/tests/test_image.py | 1880 ++ .../astropy/io/fits/tests/test_image.pyc | Bin 0 -> 71714 bytes .../astropy/io/fits/tests/test_nonstandard.py | 66 + .../io/fits/tests/test_nonstandard.pyc | Bin 0 -> 3016 bytes .../astropy/io/fits/tests/test_structured.py | 101 + .../astropy/io/fits/tests/test_structured.pyc | Bin 0 -> 3534 bytes .../astropy/io/fits/tests/test_table.py | 3077 +++ .../astropy/io/fits/tests/test_table.pyc | Bin 0 -> 109183 bytes .../astropy/io/fits/tests/test_uint.py | 114 + .../astropy/io/fits/tests/test_uint.pyc | Bin 0 -> 4323 bytes .../astropy/io/fits/tests/test_util.py | 173 + .../astropy/io/fits/tests/test_util.pyc | Bin 0 -> 6945 bytes .../site-packages/astropy/io/fits/util.py | 924 + .../site-packages/astropy/io/fits/util.pyc | Bin 0 -> 28013 bytes .../site-packages/astropy/io/fits/verify.py | 175 + .../site-packages/astropy/io/fits/verify.pyc | Bin 0 -> 5831 bytes .../site-packages/astropy/io/misc/__init__.py | 7 + .../astropy/io/misc/__init__.pyc | Bin 0 -> 307 bytes .../site-packages/astropy/io/misc/connect.py | 10 + .../site-packages/astropy/io/misc/connect.pyc | Bin 0 -> 374 bytes .../site-packages/astropy/io/misc/hdf5.py | 303 + .../site-packages/astropy/io/misc/hdf5.pyc | Bin 0 -> 9141 bytes .../astropy/io/misc/pickle_helpers.py | 125 + .../astropy/io/misc/pickle_helpers.pyc | Bin 0 -> 3899 bytes .../astropy/io/misc/tests/__init__.py | 1 + .../astropy/io/misc/tests/__init__.pyc | Bin 0 -> 152 bytes .../astropy/io/misc/tests/test_hdf5.py | 466 + .../astropy/io/misc/tests/test_hdf5.pyc | Bin 0 -> 19527 bytes .../io/misc/tests/test_pickle_helpers.py | 108 + .../io/misc/tests/test_pickle_helpers.pyc | Bin 0 -> 3779 bytes .../astropy/io/misc/tests/test_yaml.py | 183 + .../astropy/io/misc/tests/test_yaml.pyc | Bin 0 -> 7781 bytes .../site-packages/astropy/io/misc/yaml.py | 358 + .../site-packages/astropy/io/misc/yaml.pyc | Bin 0 -> 13597 bytes .../site-packages/astropy/io/registry.py | 622 + .../site-packages/astropy/io/registry.pyc | Bin 0 -> 19027 bytes .../site-packages/astropy/io/setup_package.py | 5 + .../astropy/io/setup_package.pyc | Bin 0 -> 315 bytes .../astropy/io/tests/__init__.py | 0 .../astropy/io/tests/__init__.pyc | Bin 0 -> 147 bytes .../astropy/io/tests/test_registry.py | 416 + .../astropy/io/tests/test_registry.pyc | Bin 0 -> 21156 bytes .../astropy/io/votable/__init__.py | 34 + .../astropy/io/votable/__init__.pyc | Bin 0 -> 1745 bytes .../astropy/io/votable/connect.py | 167 + .../astropy/io/votable/connect.pyc | Bin 0 -> 5465 bytes .../astropy/io/votable/converters.py | 1450 + .../astropy/io/votable/converters.pyc | Bin 0 -> 51727 bytes .../astropy/io/votable/data/VOTable.dtd | 158 + .../astropy/io/votable/data/VOTable.v1.1.xsd | 466 + .../astropy/io/votable/data/VOTable.v1.2.xsd | 558 + .../astropy/io/votable/data/VOTable.v1.3.xsd | 572 + .../astropy/io/votable/data/ucd1p-words.txt | 473 + .../astropy/io/votable/exceptions.py | 1457 + .../astropy/io/votable/exceptions.pyc | Bin 0 -> 59375 bytes .../astropy/io/votable/setup_package.py | 29 + .../astropy/io/votable/setup_package.pyc | Bin 0 -> 1336 bytes .../site-packages/astropy/io/votable/table.py | 391 + .../astropy/io/votable/table.pyc | Bin 0 -> 12536 bytes .../astropy/io/votable/tablewriter.so | Bin 0 -> 41792 bytes .../astropy/io/votable/tests/__init__.py | 1 + .../astropy/io/votable/tests/__init__.pyc | Bin 0 -> 155 bytes .../io/votable/tests/converter_test.py | 276 + .../io/votable/tests/converter_test.pyc | Bin 0 -> 11568 bytes .../io/votable/tests/data/custom_datatype.xml | 18 + .../io/votable/tests/data/empty_table.xml | 12 + .../astropy/io/votable/tests/data/gemini.xml | 168 + .../io/votable/tests/data/irsa-nph-error.xml | 5 + .../io/votable/tests/data/irsa-nph-m31.xml | 70 + .../astropy/io/votable/tests/data/names.xml | 212 + .../io/votable/tests/data/no_resource.txt | 5 + .../io/votable/tests/data/no_resource.xml | 6 + .../votable/tests/data/nonstandard_units.xml | 13 + .../regression.bin.tabledata.truth.1.1.xml | 306 + .../regression.bin.tabledata.truth.1.3.xml | 309 + .../io/votable/tests/data/regression.xml | 305 + .../astropy/io/votable/tests/data/tb.fits | Bin 0 -> 8640 bytes .../tests/data/too_many_columns.xml.gz | Bin 0 -> 1734 bytes .../io/votable/tests/data/validation.txt | 237 + .../io/votable/tests/exception_test.py | 49 + .../io/votable/tests/exception_test.pyc | Bin 0 -> 1920 bytes .../astropy/io/votable/tests/table_test.py | 178 + .../astropy/io/votable/tests/table_test.pyc | Bin 0 -> 6965 bytes .../astropy/io/votable/tests/tree_test.py | 31 + .../astropy/io/votable/tests/tree_test.pyc | Bin 0 -> 1466 bytes .../astropy/io/votable/tests/ucd_test.py | 62 + .../astropy/io/votable/tests/ucd_test.pyc | Bin 0 -> 3006 bytes .../astropy/io/votable/tests/util_test.py | 68 + .../astropy/io/votable/tests/util_test.pyc | Bin 0 -> 3626 bytes .../astropy/io/votable/tests/vo_test.py | 1036 + .../astropy/io/votable/tests/vo_test.pyc | Bin 0 -> 38706 bytes .../site-packages/astropy/io/votable/tree.py | 3653 +++ .../site-packages/astropy/io/votable/tree.pyc | Bin 0 -> 123503 bytes .../site-packages/astropy/io/votable/ucd.py | 195 + .../site-packages/astropy/io/votable/ucd.pyc | Bin 0 -> 6037 bytes .../site-packages/astropy/io/votable/util.py | 216 + .../site-packages/astropy/io/votable/util.pyc | Bin 0 -> 6901 bytes .../astropy/io/votable/validator/__init__.py | 6 + .../astropy/io/votable/validator/__init__.pyc | Bin 0 -> 287 bytes .../astropy/io/votable/validator/html.py | 313 + .../astropy/io/votable/validator/html.pyc | Bin 0 -> 10129 bytes .../astropy/io/votable/validator/main.py | 162 + .../astropy/io/votable/validator/main.pyc | Bin 0 -> 6007 bytes .../astropy/io/votable/validator/result.py | 360 + .../astropy/io/votable/validator/result.pyc | Bin 0 -> 12035 bytes .../io/votable/validator/urls/cone.big.dat.gz | Bin 0 -> 168333 bytes .../votable/validator/urls/cone.broken.dat.gz | Bin 0 -> 350 bytes .../votable/validator/urls/cone.good.dat.gz | Bin 0 -> 168334 bytes .../validator/urls/cone.incorrect.dat.gz | Bin 0 -> 721 bytes .../astropy/io/votable/volint.py | 18 + .../astropy/io/votable/volint.pyc | Bin 0 -> 800 bytes .../astropy/io/votable/xmlutil.py | 129 + .../astropy/io/votable/xmlutil.pyc | Bin 0 -> 4470 bytes .../python2.7/site-packages/astropy/logger.py | 588 + .../site-packages/astropy/logger.pyc | Bin 0 -> 18430 bytes .../astropy/modeling/__init__.py | 13 + .../astropy/modeling/__init__.pyc | Bin 0 -> 546 bytes .../astropy/modeling/_projections.so | Bin 0 -> 625096 bytes .../astropy/modeling/blackbody.py | 348 + .../astropy/modeling/blackbody.pyc | Bin 0 -> 10993 bytes .../site-packages/astropy/modeling/core.py | 3347 +++ .../site-packages/astropy/modeling/core.pyc | Bin 0 -> 97482 bytes .../site-packages/astropy/modeling/fitting.py | 1299 + .../astropy/modeling/fitting.pyc | Bin 0 -> 39658 bytes .../astropy/modeling/functional_models.py | 2550 ++ .../astropy/modeling/functional_models.pyc | Bin 0 -> 79915 bytes .../astropy/modeling/mappings.py | 178 + .../astropy/modeling/mappings.pyc | Bin 0 -> 7727 bytes .../site-packages/astropy/modeling/models.py | 72 + .../site-packages/astropy/modeling/models.pyc | Bin 0 -> 2820 bytes .../astropy/modeling/optimizers.py | 246 + .../astropy/modeling/optimizers.pyc | Bin 0 -> 8744 bytes .../astropy/modeling/parameters.py | 920 + .../astropy/modeling/parameters.pyc | Bin 0 -> 30756 bytes .../astropy/modeling/polynomial.py | 1512 ++ .../astropy/modeling/polynomial.pyc | Bin 0 -> 53202 bytes .../astropy/modeling/powerlaws.py | 520 + .../astropy/modeling/powerlaws.pyc | Bin 0 -> 15876 bytes .../astropy/modeling/projections.py | 1991 ++ .../astropy/modeling/projections.pyc | Bin 0 -> 75473 bytes .../astropy/modeling/rotations.py | 402 + .../astropy/modeling/rotations.pyc | Bin 0 -> 15878 bytes .../astropy/modeling/setup_package.py | 160 + .../astropy/modeling/setup_package.pyc | Bin 0 -> 5623 bytes .../astropy/modeling/statistic.py | 44 + .../astropy/modeling/statistic.pyc | Bin 0 -> 1466 bytes .../site-packages/astropy/modeling/tabular.py | 309 + .../astropy/modeling/tabular.pyc | Bin 0 -> 10312 bytes .../astropy/modeling/tests/__init__.py | 0 .../astropy/modeling/tests/__init__.pyc | Bin 0 -> 153 bytes .../modeling/tests/data/1904-66_AZP.fits | 353 + .../astropy/modeling/tests/data/__init__.py | 5 + .../astropy/modeling/tests/data/__init__.pyc | Bin 0 -> 277 bytes .../astropy/modeling/tests/data/hst_sip.hdr | 42 + .../modeling/tests/data/idcompspec.fits | 36 + .../astropy/modeling/tests/data/irac_sip.hdr | 241 + .../astropy/modeling/tests/example_models.py | 339 + .../astropy/modeling/tests/example_models.pyc | Bin 0 -> 7615 bytes .../astropy/modeling/tests/irafutil.py | 266 + .../astropy/modeling/tests/irafutil.pyc | Bin 0 -> 10527 bytes .../astropy/modeling/tests/test_blackbody.py | 148 + .../astropy/modeling/tests/test_blackbody.pyc | Bin 0 -> 6374 bytes .../astropy/modeling/tests/test_compound.py | 946 + .../astropy/modeling/tests/test_compound.pyc | Bin 0 -> 34766 bytes .../modeling/tests/test_constraints.py | 526 + .../modeling/tests/test_constraints.pyc | Bin 0 -> 26276 bytes .../astropy/modeling/tests/test_core.py | 376 + .../astropy/modeling/tests/test_core.pyc | Bin 0 -> 14414 bytes .../astropy/modeling/tests/test_fitters.py | 786 + .../astropy/modeling/tests/test_fitters.pyc | Bin 0 -> 36024 bytes .../modeling/tests/test_functional_models.py | 271 + .../modeling/tests/test_functional_models.pyc | Bin 0 -> 12276 bytes .../astropy/modeling/tests/test_input.py | 851 + .../astropy/modeling/tests/test_input.pyc | Bin 0 -> 38932 bytes .../astropy/modeling/tests/test_mappings.py | 90 + .../astropy/modeling/tests/test_mappings.pyc | Bin 0 -> 4252 bytes .../astropy/modeling/tests/test_models.py | 624 + .../astropy/modeling/tests/test_models.pyc | Bin 0 -> 23530 bytes .../modeling/tests/test_models_quantities.py | 330 + .../modeling/tests/test_models_quantities.pyc | Bin 0 -> 11751 bytes .../astropy/modeling/tests/test_parameters.py | 626 + .../modeling/tests/test_parameters.pyc | Bin 0 -> 30644 bytes .../astropy/modeling/tests/test_polynomial.py | 385 + .../modeling/tests/test_polynomial.pyc | Bin 0 -> 12648 bytes .../modeling/tests/test_projections.py | 310 + .../modeling/tests/test_projections.pyc | Bin 0 -> 12871 bytes .../tests/test_quantities_evaluation.py | 190 + .../tests/test_quantities_evaluation.pyc | Bin 0 -> 7396 bytes .../modeling/tests/test_quantities_fitting.py | 136 + .../tests/test_quantities_fitting.pyc | Bin 0 -> 4902 bytes .../modeling/tests/test_quantities_model.py | 25 + .../modeling/tests/test_quantities_model.pyc | Bin 0 -> 1356 bytes .../tests/test_quantities_parameters.py | 342 + .../tests/test_quantities_parameters.pyc | Bin 0 -> 11771 bytes .../tests/test_quantities_rotations.py | 104 + .../tests/test_quantities_rotations.pyc | Bin 0 -> 5486 bytes .../astropy/modeling/tests/test_rotations.py | 126 + .../astropy/modeling/tests/test_rotations.pyc | Bin 0 -> 5508 bytes .../astropy/modeling/tests/test_utils.py | 105 + .../astropy/modeling/tests/test_utils.pyc | Bin 0 -> 3714 bytes .../astropy/modeling/tests/utils.py | 20 + .../astropy/modeling/tests/utils.pyc | Bin 0 -> 835 bytes .../site-packages/astropy/modeling/utils.py | 653 + .../site-packages/astropy/modeling/utils.pyc | Bin 0 -> 22251 bytes .../site-packages/astropy/nddata/__init__.py | 50 + .../site-packages/astropy/nddata/__init__.pyc | Bin 0 -> 1751 bytes .../site-packages/astropy/nddata/ccddata.py | 604 + .../site-packages/astropy/nddata/ccddata.pyc | Bin 0 -> 19800 bytes .../site-packages/astropy/nddata/compat.py | 300 + .../site-packages/astropy/nddata/compat.pyc | Bin 0 -> 10135 bytes .../astropy/nddata/decorators.py | 281 + .../astropy/nddata/decorators.pyc | Bin 0 -> 8415 bytes .../astropy/nddata/flag_collection.py | 50 + .../astropy/nddata/flag_collection.pyc | Bin 0 -> 2197 bytes .../astropy/nddata/mixins/__init__.py | 0 .../astropy/nddata/mixins/__init__.pyc | Bin 0 -> 152 bytes .../astropy/nddata/mixins/ndarithmetic.py | 619 + .../astropy/nddata/mixins/ndarithmetic.pyc | Bin 0 -> 19528 bytes .../astropy/nddata/mixins/ndio.py | 39 + .../astropy/nddata/mixins/ndio.pyc | Bin 0 -> 1779 bytes .../astropy/nddata/mixins/ndslicing.py | 125 + .../astropy/nddata/mixins/ndslicing.pyc | Bin 0 -> 4307 bytes .../astropy/nddata/mixins/tests/__init__.py | 0 .../astropy/nddata/mixins/tests/__init__.pyc | Bin 0 -> 158 bytes .../nddata/mixins/tests/test_ndarithmetic.py | 834 + .../nddata/mixins/tests/test_ndarithmetic.pyc | Bin 0 -> 23019 bytes .../astropy/nddata/mixins/tests/test_ndio.py | 14 + .../astropy/nddata/mixins/tests/test_ndio.pyc | Bin 0 -> 770 bytes .../nddata/mixins/tests/test_ndslicing.py | 163 + .../nddata/mixins/tests/test_ndslicing.pyc | Bin 0 -> 6907 bytes .../site-packages/astropy/nddata/nddata.py | 310 + .../site-packages/astropy/nddata/nddata.pyc | Bin 0 -> 9202 bytes .../astropy/nddata/nddata_base.py | 71 + .../astropy/nddata/nddata_base.pyc | Bin 0 -> 2922 bytes .../astropy/nddata/nddata_withmixins.py | 74 + .../astropy/nddata/nddata_withmixins.pyc | Bin 0 -> 2738 bytes .../astropy/nddata/nduncertainty.py | 657 + .../astropy/nddata/nduncertainty.pyc | Bin 0 -> 19678 bytes .../astropy/nddata/setup_package.py | 9 + .../astropy/nddata/setup_package.pyc | Bin 0 -> 542 bytes .../astropy/nddata/tests/__init__.py | 0 .../astropy/nddata/tests/__init__.pyc | Bin 0 -> 151 bytes .../astropy/nddata/tests/data/sip-wcs.fits | 1 + .../astropy/nddata/tests/test_ccddata.py | 902 + .../astropy/nddata/tests/test_ccddata.pyc | Bin 0 -> 36002 bytes .../astropy/nddata/tests/test_compat.py | 145 + .../astropy/nddata/tests/test_compat.pyc | Bin 0 -> 6455 bytes .../astropy/nddata/tests/test_decorators.py | 366 + .../astropy/nddata/tests/test_decorators.pyc | Bin 0 -> 15989 bytes .../nddata/tests/test_flag_collection.py | 53 + .../nddata/tests/test_flag_collection.pyc | Bin 0 -> 3079 bytes .../astropy/nddata/tests/test_nddata.py | 435 + .../astropy/nddata/tests/test_nddata.pyc | Bin 0 -> 16610 bytes .../astropy/nddata/tests/test_nddata_base.py | 46 + .../astropy/nddata/tests/test_nddata_base.pyc | Bin 0 -> 2432 bytes .../nddata/tests/test_nduncertainty.py | 245 + .../nddata/tests/test_nduncertainty.pyc | Bin 0 -> 8751 bytes .../astropy/nddata/tests/test_utils.py | 470 + .../astropy/nddata/tests/test_utils.pyc | Bin 0 -> 25348 bytes .../site-packages/astropy/nddata/utils.py | 916 + .../site-packages/astropy/nddata/utils.pyc | Bin 0 -> 35189 bytes .../site-packages/astropy/samp/__init__.py | 39 + .../site-packages/astropy/samp/__init__.pyc | Bin 0 -> 1370 bytes .../site-packages/astropy/samp/client.py | 722 + .../site-packages/astropy/samp/client.pyc | Bin 0 -> 24454 bytes .../site-packages/astropy/samp/constants.py | 27 + .../site-packages/astropy/samp/constants.pyc | Bin 0 -> 1029 bytes .../astropy/samp/data/astropy_icon.png | Bin 0 -> 1434 bytes .../astropy/samp/data/clientaccesspolicy.xml | 13 + .../astropy/samp/data/crossdomain.xml | 7 + .../site-packages/astropy/samp/errors.py | 37 + .../site-packages/astropy/samp/errors.pyc | Bin 0 -> 1637 bytes .../site-packages/astropy/samp/hub.py | 1405 + .../site-packages/astropy/samp/hub.pyc | Bin 0 -> 42603 bytes .../site-packages/astropy/samp/hub_proxy.py | 205 + .../site-packages/astropy/samp/hub_proxy.pyc | Bin 0 -> 8314 bytes .../site-packages/astropy/samp/hub_script.py | 144 + .../site-packages/astropy/samp/hub_script.pyc | Bin 0 -> 5856 bytes .../astropy/samp/integrated_client.py | 500 + .../astropy/samp/integrated_client.pyc | Bin 0 -> 19415 bytes .../astropy/samp/lockfile_helpers.py | 271 + .../astropy/samp/lockfile_helpers.pyc | Bin 0 -> 6788 bytes .../astropy/samp/setup_package.py | 15 + .../astropy/samp/setup_package.pyc | Bin 0 -> 706 bytes .../astropy/samp/standard_profile.py | 157 + .../astropy/samp/standard_profile.pyc | Bin 0 -> 5171 bytes .../astropy/samp/tests/__init__.py | 0 .../astropy/samp/tests/__init__.pyc | Bin 0 -> 149 bytes .../astropy/samp/tests/test_client.py | 50 + .../astropy/samp/tests/test_client.pyc | Bin 0 -> 2187 bytes .../astropy/samp/tests/test_errors.py | 25 + .../astropy/samp/tests/test_errors.pyc | Bin 0 -> 1271 bytes .../astropy/samp/tests/test_helpers.py | 70 + .../astropy/samp/tests/test_helpers.pyc | Bin 0 -> 3319 bytes .../astropy/samp/tests/test_hub.py | 40 + .../astropy/samp/tests/test_hub.pyc | Bin 0 -> 1633 bytes .../astropy/samp/tests/test_hub_proxy.py | 52 + .../astropy/samp/tests/test_hub_proxy.pyc | Bin 0 -> 2796 bytes .../astropy/samp/tests/test_hub_script.py | 24 + .../astropy/samp/tests/test_hub_script.pyc | Bin 0 -> 1235 bytes .../samp/tests/test_standard_profile.py | 234 + .../samp/tests/test_standard_profile.pyc | Bin 0 -> 5888 bytes .../astropy/samp/tests/test_web_profile.py | 93 + .../astropy/samp/tests/test_web_profile.pyc | Bin 0 -> 3825 bytes .../samp/tests/web_profile_test_helpers.py | 266 + .../samp/tests/web_profile_test_helpers.pyc | Bin 0 -> 10689 bytes .../site-packages/astropy/samp/utils.py | 164 + .../site-packages/astropy/samp/utils.pyc | Bin 0 -> 6926 bytes .../site-packages/astropy/samp/web_profile.py | 182 + .../astropy/samp/web_profile.pyc | Bin 0 -> 6449 bytes .../site-packages/astropy/setup_package.py | 5 + .../site-packages/astropy/setup_package.pyc | Bin 0 -> 356 bytes .../site-packages/astropy/stats/__init__.py | 23 + .../site-packages/astropy/stats/__init__.pyc | Bin 0 -> 889 bytes .../astropy/stats/bayesian_blocks.py | 517 + .../astropy/stats/bayesian_blocks.pyc | Bin 0 -> 18907 bytes .../site-packages/astropy/stats/biweight.py | 664 + .../site-packages/astropy/stats/biweight.pyc | Bin 0 -> 23933 bytes .../site-packages/astropy/stats/circstats.py | 454 + .../site-packages/astropy/stats/circstats.pyc | Bin 0 -> 18034 bytes .../site-packages/astropy/stats/funcs.py | 1249 + .../site-packages/astropy/stats/funcs.pyc | Bin 0 -> 46436 bytes .../site-packages/astropy/stats/histogram.py | 367 + .../site-packages/astropy/stats/histogram.pyc | Bin 0 -> 10989 bytes .../astropy/stats/info_theory.py | 405 + .../astropy/stats/info_theory.pyc | Bin 0 -> 15382 bytes .../site-packages/astropy/stats/jackknife.py | 180 + .../site-packages/astropy/stats/jackknife.pyc | Bin 0 -> 6297 bytes .../astropy/stats/lombscargle/__init__.py | 8 + .../astropy/stats/lombscargle/__init__.pyc | Bin 0 -> 329 bytes .../astropy/stats/lombscargle/core.py | 358 + .../astropy/stats/lombscargle/core.pyc | Bin 0 -> 15740 bytes .../lombscargle/implementations/__init__.py | 8 + .../lombscargle/implementations/__init__.pyc | Bin 0 -> 666 bytes .../lombscargle/implementations/chi2_impl.py | 88 + .../lombscargle/implementations/chi2_impl.pyc | Bin 0 -> 3422 bytes .../implementations/cython_impl.so | Bin 0 -> 808432 bytes .../lombscargle/implementations/fast_impl.py | 137 + .../lombscargle/implementations/fast_impl.pyc | Bin 0 -> 4289 bytes .../implementations/fastchi2_impl.py | 137 + .../implementations/fastchi2_impl.pyc | Bin 0 -> 6153 bytes .../stats/lombscargle/implementations/main.py | 228 + .../lombscargle/implementations/main.pyc | Bin 0 -> 7772 bytes .../stats/lombscargle/implementations/mle.py | 110 + .../stats/lombscargle/implementations/mle.pyc | Bin 0 -> 3712 bytes .../lombscargle/implementations/scipy_impl.py | 74 + .../implementations/scipy_impl.pyc | Bin 0 -> 2731 bytes .../lombscargle/implementations/slow_impl.py | 122 + .../lombscargle/implementations/slow_impl.pyc | Bin 0 -> 3951 bytes .../implementations/tests/__init__.py | 0 .../implementations/tests/__init__.pyc | Bin 0 -> 178 bytes .../implementations/tests/test_mle.py | 55 + .../implementations/tests/test_mle.pyc | Bin 0 -> 3065 bytes .../implementations/tests/test_utils.py | 83 + .../implementations/tests/test_utils.pyc | Bin 0 -> 4296 bytes .../lombscargle/implementations/utils.py | 183 + .../lombscargle/implementations/utils.pyc | Bin 0 -> 6348 bytes .../stats/lombscargle/tests/__init__.py | 0 .../stats/lombscargle/tests/__init__.pyc | Bin 0 -> 162 bytes .../lombscargle/tests/test_lombscargle.py | 497 + .../lombscargle/tests/test_lombscargle.pyc | Bin 0 -> 15892 bytes .../astropy/stats/setup_package.py | 2 + .../astropy/stats/setup_package.pyc | Bin 0 -> 321 bytes .../astropy/stats/sigma_clipping.py | 464 + .../astropy/stats/sigma_clipping.pyc | Bin 0 -> 18230 bytes .../site-packages/astropy/stats/spatial.py | 331 + .../site-packages/astropy/stats/spatial.pyc | Bin 0 -> 13164 bytes .../astropy/stats/tests/__init__.py | 0 .../astropy/stats/tests/__init__.pyc | Bin 0 -> 150 bytes .../stats/tests/test_bayesian_blocks.py | 148 + .../stats/tests/test_bayesian_blocks.pyc | Bin 0 -> 5109 bytes .../astropy/stats/tests/test_biweight.py | 338 + .../astropy/stats/tests/test_biweight.pyc | Bin 0 -> 13256 bytes .../astropy/stats/tests/test_circstats.py | 124 + .../astropy/stats/tests/test_circstats.pyc | Bin 0 -> 5322 bytes .../astropy/stats/tests/test_funcs.py | 637 + .../astropy/stats/tests/test_funcs.pyc | Bin 0 -> 25281 bytes .../astropy/stats/tests/test_histogram.py | 155 + .../astropy/stats/tests/test_histogram.pyc | Bin 0 -> 6274 bytes .../astropy/stats/tests/test_info_theory.py | 74 + .../astropy/stats/tests/test_info_theory.pyc | Bin 0 -> 2933 bytes .../astropy/stats/tests/test_jackknife.py | 59 + .../astropy/stats/tests/test_jackknife.pyc | Bin 0 -> 2686 bytes .../stats/tests/test_sigma_clipping.py | 195 + .../stats/tests/test_sigma_clipping.pyc | Bin 0 -> 7084 bytes .../astropy/stats/tests/test_spatial.py | 145 + .../astropy/stats/tests/test_spatial.pyc | Bin 0 -> 6637 bytes .../site-packages/astropy/table/__init__.py | 63 + .../site-packages/astropy/table/__init__.pyc | Bin 0 -> 2958 bytes .../astropy/table/_column_mixins.so | Bin 0 -> 307104 bytes .../site-packages/astropy/table/_np_utils.so | Bin 0 -> 282576 bytes .../site-packages/astropy/table/bst.py | 681 + .../site-packages/astropy/table/bst.pyc | Bin 0 -> 25522 bytes .../site-packages/astropy/table/column.py | 1302 + .../site-packages/astropy/table/column.pyc | Bin 0 -> 44061 bytes .../site-packages/astropy/table/groups.py | 406 + .../site-packages/astropy/table/groups.pyc | Bin 0 -> 13388 bytes .../site-packages/astropy/table/index.py | 858 + .../site-packages/astropy/table/index.pyc | Bin 0 -> 32202 bytes .../site-packages/astropy/table/info.py | 125 + .../site-packages/astropy/table/info.pyc | Bin 0 -> 4427 bytes .../site-packages/astropy/table/jsviewer.py | 198 + .../site-packages/astropy/table/jsviewer.pyc | Bin 0 -> 7029 bytes .../site-packages/astropy/table/meta.py | 342 + .../site-packages/astropy/table/meta.pyc | Bin 0 -> 12231 bytes .../site-packages/astropy/table/np_utils.py | 203 + .../site-packages/astropy/table/np_utils.pyc | Bin 0 -> 8246 bytes .../site-packages/astropy/table/operations.py | 872 + .../astropy/table/operations.pyc | Bin 0 -> 28435 bytes .../site-packages/astropy/table/pprint.py | 713 + .../site-packages/astropy/table/pprint.pyc | Bin 0 -> 21439 bytes .../site-packages/astropy/table/row.py | 177 + .../site-packages/astropy/table/row.pyc | Bin 0 -> 7994 bytes .../site-packages/astropy/table/serialize.py | 211 + .../site-packages/astropy/table/serialize.pyc | Bin 0 -> 7630 bytes .../astropy/table/setup_package.py | 25 + .../astropy/table/setup_package.pyc | Bin 0 -> 1026 bytes .../astropy/table/sorted_array.py | 317 + .../astropy/table/sorted_array.pyc | Bin 0 -> 10440 bytes .../site-packages/astropy/table/table.py | 2857 ++ .../site-packages/astropy/table/table.pyc | Bin 0 -> 98724 bytes .../astropy/table/table_helpers.py | 179 + .../astropy/table/table_helpers.pyc | Bin 0 -> 7106 bytes .../astropy/table/tests/__init__.py | 0 .../astropy/table/tests/__init__.pyc | Bin 0 -> 150 bytes .../astropy/table/tests/conftest.pyc | Bin 0 -> 8581 bytes .../astropy/table/tests/test_column.py | 836 + .../astropy/table/tests/test_groups.py | 581 + .../astropy/table/tests/test_index.py | 463 + .../astropy/table/tests/test_item_access.py | 263 + .../astropy/table/tests/test_jsviewer.py | 178 + .../astropy/table/tests/test_masked.pyc | Bin 0 -> 22824 bytes .../astropy/table/tests/test_pickle.pyc | Bin 0 -> 5378 bytes .../astropy/table/tests/test_pprint.pyc | Bin 0 -> 28411 bytes .../astropy/table/tests/test_row.pyc | Bin 0 -> 9145 bytes .../astropy/table/tests/test_subclass.pyc | Bin 0 -> 4772 bytes .../site-packages/astropy/tests/__init__.py | 28 + .../site-packages/astropy/tests/__init__.pyc | Bin 0 -> 554 bytes .../site-packages/astropy/tests/command.py | 332 + .../site-packages/astropy/tests/command.pyc | Bin 0 -> 12093 bytes .../site-packages/astropy/tests/coveragerc | 33 + .../astropy/tests/disable_internet.py | 153 + .../astropy/tests/disable_internet.pyc | Bin 0 -> 4572 bytes .../site-packages/astropy/tests/helper.py | 556 + .../site-packages/astropy/tests/helper.pyc | Bin 0 -> 17402 bytes .../astropy/tests/image_tests.py | 21 + .../astropy/tests/image_tests.pyc | Bin 0 -> 1116 bytes .../astropy/tests/output_checker.py | 186 + .../astropy/tests/output_checker.pyc | Bin 0 -> 5655 bytes .../astropy/tests/pytest_plugins.py | 386 + .../astropy/tests/pytest_plugins.pyc | Bin 0 -> 12500 bytes .../astropy/tests/pytest_repeat.py | 27 + .../astropy/tests/pytest_repeat.pyc | Bin 0 -> 1201 bytes .../site-packages/astropy/tests/runner.py | 525 + .../site-packages/astropy/tests/runner.pyc | Bin 0 -> 17018 bytes .../astropy/tests/setup_package.py | 11 + .../astropy/tests/setup_package.pyc | Bin 0 -> 602 bytes .../astropy/tests/test_logger.py | 489 + .../astropy/tests/test_logger.pyc | Bin 0 -> 16561 bytes .../astropy/tests/tests/__init__.py | 2 + .../astropy/tests/tests/__init__.pyc | Bin 0 -> 302 bytes .../tests/tests/data/open_file_detection.txt | 1 + .../astropy/tests/tests/test_imports.py | 72 + .../astropy/tests/tests/test_imports.pyc | Bin 0 -> 2652 bytes .../tests/tests/test_open_file_detection.py | 17 + .../tests/tests/test_open_file_detection.pyc | Bin 0 -> 901 bytes .../tests/tests/test_quantity_helpers.py | 38 + .../tests/tests/test_quantity_helpers.pyc | Bin 0 -> 1719 bytes .../astropy/tests/tests/test_run_tests.py | 72 + .../astropy/tests/tests/test_run_tests.pyc | Bin 0 -> 2410 bytes .../astropy/tests/tests/test_runner.py | 87 + .../astropy/tests/tests/test_runner.pyc | Bin 0 -> 4492 bytes .../tests/tests/test_skip_remote_data.py | 49 + .../tests/tests/test_skip_remote_data.pyc | Bin 0 -> 1759 bytes .../astropy/tests/tests/test_socketblocker.py | 87 + .../tests/tests/test_socketblocker.pyc | Bin 0 -> 4026 bytes .../site-packages/astropy/time/__init__.py | 3 + .../site-packages/astropy/time/__init__.pyc | Bin 0 -> 202 bytes .../site-packages/astropy/time/core.py | 1753 ++ .../site-packages/astropy/time/core.pyc | Bin 0 -> 60772 bytes .../site-packages/astropy/time/formats.py | 1170 + .../site-packages/astropy/time/formats.pyc | Bin 0 -> 45647 bytes .../astropy/time/setup_package.py | 5 + .../astropy/time/setup_package.pyc | Bin 0 -> 319 bytes .../astropy/time/tests/__init__.py | 0 .../astropy/time/tests/__init__.pyc | Bin 0 -> 149 bytes .../astropy/time/tests/test_basic.py | 1155 + .../astropy/time/tests/test_basic.pyc | Bin 0 -> 46642 bytes .../astropy/time/tests/test_comparisons.py | 73 + .../astropy/time/tests/test_comparisons.pyc | Bin 0 -> 3325 bytes .../astropy/time/tests/test_corrs.py | 66 + .../astropy/time/tests/test_corrs.pyc | Bin 0 -> 3648 bytes .../astropy/time/tests/test_delta.py | 422 + .../astropy/time/tests/test_delta.pyc | Bin 0 -> 14747 bytes .../astropy/time/tests/test_guess.py | 31 + .../astropy/time/tests/test_guess.pyc | Bin 0 -> 1963 bytes .../astropy/time/tests/test_methods.py | 394 + .../astropy/time/tests/test_methods.pyc | Bin 0 -> 19391 bytes .../astropy/time/tests/test_pickle.py | 27 + .../astropy/time/tests/test_pickle.pyc | Bin 0 -> 1252 bytes .../astropy/time/tests/test_precision.py | 122 + .../astropy/time/tests/test_precision.pyc | Bin 0 -> 5825 bytes .../time/tests/test_quantity_interaction.py | 243 + .../time/tests/test_quantity_interaction.pyc | Bin 0 -> 12410 bytes .../astropy/time/tests/test_sidereal.py | 167 + .../astropy/time/tests/test_sidereal.pyc | Bin 0 -> 8185 bytes .../astropy/time/tests/test_ut1.py | 92 + .../astropy/time/tests/test_ut1.pyc | Bin 0 -> 4132 bytes .../site-packages/astropy/time/utils.py | 163 + .../site-packages/astropy/time/utils.pyc | Bin 0 -> 5656 bytes .../site-packages/astropy/version.py | 27 + .../site-packages/astropy/version.pyc | Bin 0 -> 777 bytes .../astropy/visualization/__init__.py | 10 + .../astropy/visualization/__init__.pyc | Bin 0 -> 367 bytes .../astropy/visualization/hist.py | 63 + .../astropy/visualization/hist.pyc | Bin 0 -> 2348 bytes .../astropy/visualization/interval.py | 288 + .../astropy/visualization/interval.pyc | Bin 0 -> 10172 bytes .../astropy/visualization/lupton_rgb.py | 370 + .../astropy/visualization/lupton_rgb.pyc | Bin 0 -> 13154 bytes .../astropy/visualization/mpl_normalize.py | 234 + .../astropy/visualization/mpl_normalize.pyc | Bin 0 -> 8643 bytes .../astropy/visualization/mpl_style.py | 113 + .../astropy/visualization/mpl_style.pyc | Bin 0 -> 2401 bytes .../astropy/visualization/scripts/__init__.py | 1 + .../visualization/scripts/__init__.pyc | Bin 0 -> 160 bytes .../visualization/scripts/fits2bitmap.py | 174 + .../visualization/scripts/fits2bitmap.pyc | Bin 0 -> 7084 bytes .../visualization/scripts/tests/__init__.py | 1 + .../visualization/scripts/tests/__init__.pyc | Bin 0 -> 166 bytes .../scripts/tests/test_fits2bitmap.py | 73 + .../scripts/tests/test_fits2bitmap.pyc | Bin 0 -> 3957 bytes .../astropy/visualization/stretch.py | 528 + .../astropy/visualization/stretch.pyc | Bin 0 -> 20761 bytes .../astropy/visualization/tests/__init__.py | 1 + .../astropy/visualization/tests/__init__.pyc | Bin 0 -> 158 bytes .../visualization/tests/test_histogram.py | 71 + .../visualization/tests/test_histogram.pyc | Bin 0 -> 2619 bytes .../visualization/tests/test_interval.py | 136 + .../visualization/tests/test_interval.pyc | Bin 0 -> 6363 bytes .../visualization/tests/test_lupton_rgb.py | 243 + .../visualization/tests/test_lupton_rgb.pyc | Bin 0 -> 11343 bytes .../astropy/visualization/tests/test_norm.py | 172 + .../astropy/visualization/tests/test_norm.pyc | Bin 0 -> 8880 bytes .../visualization/tests/test_stretch.py | 105 + .../visualization/tests/test_stretch.pyc | Bin 0 -> 5376 bytes .../astropy/visualization/tests/test_units.py | 71 + .../visualization/tests/test_units.pyc | Bin 0 -> 2544 bytes .../astropy/visualization/transform.py | 43 + .../astropy/visualization/transform.pyc | Bin 0 -> 2080 bytes .../astropy/visualization/units.py | 103 + .../astropy/visualization/units.pyc | Bin 0 -> 4097 bytes .../astropy/visualization/wcsaxes/__init__.py | 41 + .../visualization/wcsaxes/__init__.pyc | Bin 0 -> 1407 bytes .../visualization/wcsaxes/axislabels.py | 126 + .../visualization/wcsaxes/axislabels.pyc | Bin 0 -> 4124 bytes .../wcsaxes/coordinate_helpers.py | 798 + .../wcsaxes/coordinate_helpers.pyc | Bin 0 -> 25306 bytes .../visualization/wcsaxes/coordinate_range.py | 126 + .../wcsaxes/coordinate_range.pyc | Bin 0 -> 3693 bytes .../visualization/wcsaxes/coordinates_map.py | 163 + .../visualization/wcsaxes/coordinates_map.pyc | Bin 0 -> 7522 bytes .../astropy/visualization/wcsaxes/core.py | 583 + .../astropy/visualization/wcsaxes/core.pyc | Bin 0 -> 20173 bytes .../wcsaxes/formatter_locator.py | 471 + .../wcsaxes/formatter_locator.pyc | Bin 0 -> 14452 bytes .../astropy/visualization/wcsaxes/frame.py | 266 + .../astropy/visualization/wcsaxes/frame.pyc | Bin 0 -> 10660 bytes .../visualization/wcsaxes/grid_paths.py | 121 + .../visualization/wcsaxes/grid_paths.pyc | Bin 0 -> 2793 bytes .../astropy/visualization/wcsaxes/patches.py | 91 + .../astropy/visualization/wcsaxes/patches.pyc | Bin 0 -> 3708 bytes .../visualization/wcsaxes/tests/__init__.py | 8 + .../visualization/wcsaxes/tests/__init__.pyc | Bin 0 -> 166 bytes .../wcsaxes/tests/data/2MASS_k_header | 14 + .../wcsaxes/tests/data/cube_header | 20 + .../wcsaxes/tests/data/msx_header | 13 + .../wcsaxes/tests/data/rosat_header | 13 + .../wcsaxes/tests/data/slice_header | 16 + .../visualization/wcsaxes/tests/datasets.py | 48 + .../visualization/wcsaxes/tests/datasets.pyc | Bin 0 -> 2042 bytes .../wcsaxes/tests/setup_package.py | 2 + .../wcsaxes/tests/setup_package.pyc | Bin 0 -> 450 bytes .../wcsaxes/tests/test_coordinate_helpers.py | 17 + .../wcsaxes/tests/test_coordinate_helpers.pyc | Bin 0 -> 901 bytes .../tests/test_display_world_coordinates.py | 120 + .../tests/test_display_world_coordinates.pyc | Bin 0 -> 3723 bytes .../wcsaxes/tests/test_formatter_locator.py | 351 + .../wcsaxes/tests/test_formatter_locator.pyc | Bin 0 -> 17122 bytes .../visualization/wcsaxes/tests/test_frame.py | 172 + .../wcsaxes/tests/test_frame.pyc | Bin 0 -> 5953 bytes .../wcsaxes/tests/test_images.py | 572 + .../wcsaxes/tests/test_images.pyc | Bin 0 -> 20501 bytes .../visualization/wcsaxes/tests/test_misc.py | 240 + .../visualization/wcsaxes/tests/test_misc.pyc | Bin 0 -> 8542 bytes .../tests/test_transform_coord_meta.py | 163 + .../tests/test_transform_coord_meta.pyc | Bin 0 -> 7111 bytes .../wcsaxes/tests/test_transforms.py | 52 + .../wcsaxes/tests/test_transforms.pyc | Bin 0 -> 1871 bytes .../visualization/wcsaxes/tests/test_utils.py | 71 + .../wcsaxes/tests/test_utils.pyc | Bin 0 -> 3804 bytes .../visualization/wcsaxes/ticklabels.py | 211 + .../visualization/wcsaxes/ticklabels.pyc | Bin 0 -> 6043 bytes .../astropy/visualization/wcsaxes/ticks.py | 181 + .../astropy/visualization/wcsaxes/ticks.pyc | Bin 0 -> 7358 bytes .../visualization/wcsaxes/transforms.py | 255 + .../visualization/wcsaxes/transforms.pyc | Bin 0 -> 9628 bytes .../astropy/visualization/wcsaxes/utils.py | 136 + .../astropy/visualization/wcsaxes/utils.pyc | Bin 0 -> 4426 bytes .../site-packages/astropy/vo/__init__.py | 28 + .../site-packages/astropy/vo/__init__.pyc | Bin 0 -> 1018 bytes .../astropy/vo/client/__init__.py | 0 .../astropy/vo/client/__init__.pyc | Bin 0 -> 148 bytes .../astropy/vo/client/conesearch.py | 524 + .../astropy/vo/client/conesearch.pyc | Bin 0 -> 17752 bytes .../astropy/vo/client/exceptions.py | 46 + .../astropy/vo/client/exceptions.pyc | Bin 0 -> 2319 bytes .../astropy/vo/client/setup_package.py | 10 + .../astropy/vo/client/setup_package.pyc | Bin 0 -> 574 bytes .../astropy/vo/client/tests/__init__.py | 0 .../astropy/vo/client/tests/__init__.pyc | Bin 0 -> 154 bytes .../astropy/vo/client/tests/data/basic.json | 10 + .../client/tests/data/conesearch_error1.xml | 6 + .../client/tests/data/conesearch_error2.xml | 8 + .../client/tests/data/conesearch_error3.xml | 9 + .../client/tests/data/conesearch_error4.xml | 9 + .../vo/client/tests/test_conesearch.py | 280 + .../vo/client/tests/test_conesearch.pyc | Bin 0 -> 11368 bytes .../vo/client/tests/test_vos_catalog.py | 238 + .../vo/client/tests/test_vos_catalog.pyc | Bin 0 -> 11036 bytes .../astropy/vo/client/vo_async.py | 86 + .../astropy/vo/client/vo_async.pyc | Bin 0 -> 3230 bytes .../astropy/vo/client/vos_catalog.py | 934 + .../astropy/vo/client/vos_catalog.pyc | Bin 0 -> 29775 bytes .../site-packages/astropy/vo/samp/__init__.py | 7 + .../astropy/vo/samp/__init__.pyc | Bin 0 -> 387 bytes .../astropy/vo/validator/__init__.py | 40 + .../astropy/vo/validator/__init__.pyc | Bin 0 -> 1612 bytes .../vo/validator/data/conesearch_urls.txt | 30 + .../astropy/vo/validator/exceptions.py | 25 + .../astropy/vo/validator/exceptions.pyc | Bin 0 -> 1305 bytes .../astropy/vo/validator/inspect.py | 193 + .../astropy/vo/validator/inspect.pyc | Bin 0 -> 5592 bytes .../astropy/vo/validator/setup_package.py | 12 + .../astropy/vo/validator/setup_package.pyc | Bin 0 -> 658 bytes .../astropy/vo/validator/tests/__init__.py | 0 .../astropy/vo/validator/tests/__init__.pyc | Bin 0 -> 157 bytes .../tests/data/conesearch_error.json | 4 + .../tests/data/conesearch_exception.json | 4 + .../validator/tests/data/conesearch_good.json | 47 + .../validator/tests/data/conesearch_warn.json | 4 + .../vo/validator/tests/data/listcats1.out | 4 + .../vo/validator/tests/data/listcats2.out | 2 + .../vo/validator/tests/data/printcat.out | 44 + .../astropy/vo/validator/tests/data/tally.out | 5 + .../vao_conesearch_sites_121107_subset.xml | 65 + .../astropy/vo/validator/tests/test_inpect.py | 86 + .../vo/validator/tests/test_inpect.pyc | Bin 0 -> 4394 bytes .../vo/validator/tests/test_validate.py | 95 + .../vo/validator/tests/test_validate.pyc | Bin 0 -> 4462 bytes .../astropy/vo/validator/tstquery.py | 93 + .../astropy/vo/validator/tstquery.pyc | Bin 0 -> 2907 bytes .../astropy/vo/validator/validate.py | 346 + .../astropy/vo/validator/validate.pyc | Bin 0 -> 9795 bytes .../site-packages/astropy/wcs/__init__.py | 42 + .../site-packages/astropy/wcs/__init__.pyc | Bin 0 -> 1719 bytes .../site-packages/astropy/wcs/_docutil.py | 61 + .../site-packages/astropy/wcs/_docutil.pyc | Bin 0 -> 2595 bytes .../site-packages/astropy/wcs/_wcs.so | Bin 0 -> 2908784 bytes .../site-packages/astropy/wcs/docstrings.py | 2278 ++ .../site-packages/astropy/wcs/docstrings.pyc | Bin 0 -> 61726 bytes .../wcs/include/astropy_wcs/astropy_wcs.h | 22 + .../wcs/include/astropy_wcs/astropy_wcs_api.h | 122 + .../wcs/include/astropy_wcs/distortion.h | 108 + .../astropy/wcs/include/astropy_wcs/isnan.h | 42 + .../wcs/include/astropy_wcs/pipeline.h | 105 + .../astropy/wcs/include/astropy_wcs/pyutil.h | 362 + .../astropy/wcs/include/astropy_wcs/sip.h | 170 + .../astropy/wcs/include/astropy_wcs/util.h | 35 + .../wcs/include/astropy_wcs/wcsconfig.h | 38 + .../astropy/wcs/include/astropy_wcs_api.h | 1 + .../astropy/wcs/include/wcslib/cel.h | 458 + .../astropy/wcs/include/wcslib/lin.h | 681 + .../astropy/wcs/include/wcslib/prj.h | 846 + .../astropy/wcs/include/wcslib/spc.h | 909 + .../astropy/wcs/include/wcslib/spx.h | 559 + .../astropy/wcs/include/wcslib/tab.h | 635 + .../astropy/wcs/include/wcslib/wcs.h | 1749 ++ .../astropy/wcs/include/wcslib/wcserr.h | 257 + .../astropy/wcs/include/wcslib/wcsmath.h | 75 + .../astropy/wcs/include/wcslib/wcsprintf.h | 152 + .../astropy/wcs/setup_package.py | 363 + .../astropy/wcs/setup_package.pyc | Bin 0 -> 11597 bytes .../astropy/wcs/tests/__init__.py | 2 + .../astropy/wcs/tests/__init__.pyc | Bin 0 -> 300 bytes .../astropy/wcs/tests/data/2wcses.hdr | 1 + .../astropy/wcs/tests/data/3d_cd.hdr | 16 + .../wcs/tests/data/defunct_keywords.hdr | 1 + .../astropy/wcs/tests/data/dist.fits | Bin 0 -> 23040 bytes .../wcs/tests/data/dist_lookup.fits.gz | Bin 0 -> 68483 bytes .../wcs/tests/data/header_newlines.fits | 1 + .../astropy/wcs/tests/data/invalid_header.hdr | 1 + .../astropy/wcs/tests/data/irac_sip.hdr | 1 + .../astropy/wcs/tests/data/j94f05bgq_flt.fits | 1 + .../astropy/wcs/tests/data/locale.hdr | 1 + .../wcs/tests/data/nonstandard_units.hdr | 1 + .../astropy/wcs/tests/data/outside_sky.hdr | 1 + .../astropy/wcs/tests/data/sip-broken.hdr | 1 + .../astropy/wcs/tests/data/sip.fits | 1 + .../astropy/wcs/tests/data/sip2.fits | 1 + .../astropy/wcs/tests/data/siponly.hdr | 1 + .../astropy/wcs/tests/data/sub-segfault.hdr | 28 + .../astropy/wcs/tests/data/too_many_pv.hdr | 1 + .../astropy/wcs/tests/data/tpvonly.hdr | 1 + .../astropy/wcs/tests/data/unit.hdr | 1 + .../astropy/wcs/tests/data/validate.5.0.txt | 16 + .../astropy/wcs/tests/data/validate.5.13.txt | 16 + .../astropy/wcs/tests/data/validate.fits | 1 + .../astropy/wcs/tests/data/validate.txt | 16 + .../astropy/wcs/tests/data/zpn-hole.hdr | 1 + .../astropy/wcs/tests/extension/__init__.py | 0 .../astropy/wcs/tests/extension/__init__.pyc | Bin 0 -> 158 bytes .../astropy/wcs/tests/extension/setup.py | 50 + .../astropy/wcs/tests/extension/setup.pyc | Bin 0 -> 1467 bytes .../wcs/tests/extension/test_extension.py | 75 + .../wcs/tests/extension/test_extension.pyc | Bin 0 -> 1984 bytes .../astropy/wcs/tests/extension/wcsapi_test.c | 76 + .../astropy/wcs/tests/maps/1904-66_AIR.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_AIT.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_ARC.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_AZP.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_BON.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_CAR.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_CEA.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_COD.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_COE.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_COO.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_COP.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_CSC.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_CYP.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_HPX.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_MER.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_MOL.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_NCP.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_PAR.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_PCO.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_QSC.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_SFL.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_SIN.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_STG.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_SZP.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_TAN.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_TSC.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_ZEA.hdr | 1 + .../astropy/wcs/tests/maps/1904-66_ZPN.hdr | 1 + .../wcs/tests/spectra/orion-freq-1.hdr | 1 + .../wcs/tests/spectra/orion-freq-4.hdr | 1 + .../wcs/tests/spectra/orion-velo-1.hdr | 1 + .../wcs/tests/spectra/orion-velo-4.hdr | 1 + .../wcs/tests/spectra/orion-wave-1.hdr | 1 + .../wcs/tests/spectra/orion-wave-4.hdr | 1 + .../astropy/wcs/tests/test_pickle.py | 103 + .../astropy/wcs/tests/test_pickle.pyc | Bin 0 -> 4407 bytes .../astropy/wcs/tests/test_profiling.py | 72 + .../astropy/wcs/tests/test_profiling.pyc | Bin 0 -> 2562 bytes .../astropy/wcs/tests/test_utils.py | 494 + .../astropy/wcs/tests/test_utils.pyc | Bin 0 -> 18322 bytes .../astropy/wcs/tests/test_wcs.py | 1093 + .../astropy/wcs/tests/test_wcs.pyc | Bin 0 -> 39593 bytes .../astropy/wcs/tests/test_wcsprm.py | 1069 + .../astropy/wcs/tests/test_wcsprm.pyc | Bin 0 -> 38500 bytes .../site-packages/astropy/wcs/utils.py | 507 + .../site-packages/astropy/wcs/utils.pyc | Bin 0 -> 17408 bytes .../site-packages/astropy/wcs/wcs.py | 3299 +++ .../site-packages/astropy/wcs/wcs.pyc | Bin 0 -> 100520 bytes .../site-packages/astropy/wcs/wcslint.py | 19 + .../site-packages/astropy/wcs/wcslint.pyc | Bin 0 -> 988 bytes .../atomicwrites-1.2.1.dist-info/INSTALLER | 1 + .../atomicwrites-1.2.1.dist-info/METADATA | 144 + .../atomicwrites-1.2.1.dist-info/RECORD | 7 + .../atomicwrites-1.2.1.dist-info/WHEEL | 6 + .../top_level.txt | 1 + .../site-packages/atomicwrites/__init__.py | 214 + .../site-packages/atomicwrites/__init__.pyc | Bin 0 -> 8007 bytes .../python2.7/site-packages/attr/__init__.py | 65 + .../python2.7/site-packages/attr/__init__.pyc | Bin 0 -> 1690 bytes .../python2.7/site-packages/attr/__init__.pyi | 252 + .../python2.7/site-packages/attr/_compat.py | 163 + .../python2.7/site-packages/attr/_compat.pyc | Bin 0 -> 5578 bytes .../python2.7/site-packages/attr/_config.py | 23 + .../python2.7/site-packages/attr/_config.pyc | Bin 0 -> 884 bytes .../python2.7/site-packages/attr/_funcs.py | 290 + .../python2.7/site-packages/attr/_funcs.pyc | Bin 0 -> 8199 bytes .../lib/python2.7/site-packages/attr/_make.py | 2034 ++ .../python2.7/site-packages/attr/_make.pyc | Bin 0 -> 57353 bytes .../site-packages/attr/converters.py | 78 + .../site-packages/attr/converters.pyc | Bin 0 -> 2676 bytes .../site-packages/attr/converters.pyi | 12 + .../site-packages/attr/exceptions.py | 57 + .../site-packages/attr/exceptions.pyc | Bin 0 -> 2444 bytes .../site-packages/attr/exceptions.pyi | 7 + .../python2.7/site-packages/attr/filters.py | 52 + .../python2.7/site-packages/attr/filters.pyc | Bin 0 -> 2212 bytes .../python2.7/site-packages/attr/filters.pyi | 5 + .../lib/python2.7/site-packages/attr/py.typed | 0 .../site-packages/attr/validators.py | 170 + .../site-packages/attr/validators.pyc | Bin 0 -> 6705 bytes .../site-packages/attr/validators.pyi | 14 + .../attrs-18.2.0.dist-info/INSTALLER | 1 + .../attrs-18.2.0.dist-info/LICENSE.txt | 21 + .../attrs-18.2.0.dist-info/METADATA | 260 + .../attrs-18.2.0.dist-info/RECORD | 30 + .../attrs-18.2.0.dist-info/WHEEL | 6 + .../attrs-18.2.0.dist-info/top_level.txt | 1 + .../python2.7/site-packages/click/__init__.py | 97 + .../site-packages/click/__init__.pyc | Bin 0 -> 3131 bytes .../site-packages/click/_bashcomplete.py | 293 + .../site-packages/click/_bashcomplete.pyc | Bin 0 -> 9855 bytes .../python2.7/site-packages/click/_compat.py | 703 + .../python2.7/site-packages/click/_compat.pyc | Bin 0 -> 22117 bytes .../site-packages/click/_termui_impl.py | 621 + .../site-packages/click/_termui_impl.pyc | Bin 0 -> 18073 bytes .../site-packages/click/_textwrap.py | 38 + .../site-packages/click/_textwrap.pyc | Bin 0 -> 1595 bytes .../site-packages/click/_unicodefun.py | 125 + .../site-packages/click/_unicodefun.pyc | Bin 0 -> 4086 bytes .../site-packages/click/_winconsole.py | 307 + .../site-packages/click/_winconsole.pyc | Bin 0 -> 10958 bytes .../lib/python2.7/site-packages/click/core.py | 1856 ++ .../python2.7/site-packages/click/core.pyc | Bin 0 -> 68233 bytes .../site-packages/click/decorators.py | 311 + .../site-packages/click/decorators.pyc | Bin 0 -> 13522 bytes .../site-packages/click/exceptions.py | 235 + .../site-packages/click/exceptions.pyc | Bin 0 -> 10433 bytes .../site-packages/click/formatting.py | 256 + .../site-packages/click/formatting.pyc | Bin 0 -> 10131 bytes .../python2.7/site-packages/click/globals.py | 48 + .../python2.7/site-packages/click/globals.pyc | Bin 0 -> 2176 bytes .../python2.7/site-packages/click/parser.py | 427 + .../python2.7/site-packages/click/parser.pyc | Bin 0 -> 13086 bytes .../python2.7/site-packages/click/termui.py | 606 + .../python2.7/site-packages/click/termui.pyc | Bin 0 -> 23142 bytes .../python2.7/site-packages/click/testing.py | 374 + .../python2.7/site-packages/click/testing.pyc | Bin 0 -> 13456 bytes .../python2.7/site-packages/click/types.py | 668 + .../python2.7/site-packages/click/types.pyc | Bin 0 -> 25384 bytes .../python2.7/site-packages/click/utils.py | 440 + .../python2.7/site-packages/click/utils.pyc | Bin 0 -> 17475 bytes .../python2.7/site-packages/easy_install.py | 5 + .../python2.7/site-packages/easy_install.pyc | Bin 0 -> 315 bytes .../python2.7/site-packages/flask/__init__.py | 49 + .../site-packages/flask/__init__.pyc | Bin 0 -> 2153 bytes .../python2.7/site-packages/flask/__main__.py | 14 + .../site-packages/flask/__main__.pyc | Bin 0 -> 469 bytes .../python2.7/site-packages/flask/_compat.py | 99 + .../python2.7/site-packages/flask/_compat.pyc | Bin 0 -> 4182 bytes .../lib/python2.7/site-packages/flask/app.py | 2315 ++ .../lib/python2.7/site-packages/flask/app.pyc | Bin 0 -> 76921 bytes .../site-packages/flask/blueprints.py | 448 + .../site-packages/flask/blueprints.pyc | Bin 0 -> 22795 bytes .../lib/python2.7/site-packages/flask/cli.py | 898 + .../lib/python2.7/site-packages/flask/cli.pyc | Bin 0 -> 29103 bytes .../python2.7/site-packages/flask/config.py | 265 + .../python2.7/site-packages/flask/config.pyc | Bin 0 -> 10959 bytes .../lib/python2.7/site-packages/flask/ctx.py | 457 + .../lib/python2.7/site-packages/flask/ctx.pyc | Bin 0 -> 15736 bytes .../site-packages/flask/debughelpers.py | 168 + .../site-packages/flask/debughelpers.pyc | Bin 0 -> 7827 bytes .../python2.7/site-packages/flask/globals.py | 61 + .../python2.7/site-packages/flask/globals.pyc | Bin 0 -> 2057 bytes .../python2.7/site-packages/flask/helpers.py | 1044 + .../python2.7/site-packages/flask/helpers.pyc | Bin 0 -> 36536 bytes .../site-packages/flask/json/__init__.py | 327 + .../site-packages/flask/json/__init__.pyc | Bin 0 -> 12011 bytes .../python2.7/site-packages/flask/json/tag.py | 300 + .../site-packages/flask/json/tag.pyc | Bin 0 -> 13008 bytes .../python2.7/site-packages/flask/logging.py | 78 + .../python2.7/site-packages/flask/logging.pyc | Bin 0 -> 2758 bytes .../python2.7/site-packages/flask/sessions.py | 385 + .../site-packages/flask/sessions.pyc | Bin 0 -> 13657 bytes .../python2.7/site-packages/flask/signals.py | 57 + .../python2.7/site-packages/flask/signals.pyc | Bin 0 -> 2846 bytes .../site-packages/flask/templating.py | 150 + .../site-packages/flask/templating.pyc | Bin 0 -> 5872 bytes .../python2.7/site-packages/flask/testing.py | 250 + .../python2.7/site-packages/flask/testing.pyc | Bin 0 -> 8972 bytes .../python2.7/site-packages/flask/views.py | 158 + .../python2.7/site-packages/flask/views.pyc | Bin 0 -> 5328 bytes .../python2.7/site-packages/flask/wrappers.py | 216 + .../site-packages/flask/wrappers.pyc | Bin 0 -> 7628 bytes .../funcsigs-1.0.2.dist-info/DESCRIPTION.rst | 355 + .../funcsigs-1.0.2.dist-info/INSTALLER | 1 + .../funcsigs-1.0.2.dist-info/METADATA | 381 + .../funcsigs-1.0.2.dist-info/RECORD | 12 + .../funcsigs-1.0.2.dist-info/WHEEL | 6 + .../funcsigs-1.0.2.dist-info/metadata.json | 1 + .../funcsigs-1.0.2.dist-info/pbr.json | 1 + .../funcsigs-1.0.2.dist-info/top_level.txt | 1 + .../site-packages/funcsigs/__init__.py | 829 + .../site-packages/funcsigs/__init__.pyc | Bin 0 -> 22074 bytes .../site-packages/funcsigs/version.py | 1 + .../site-packages/funcsigs/version.pyc | Bin 0 -> 171 bytes .../gunicorn-19.9.0.dist-info/INSTALLER | 1 + .../gunicorn-19.9.0.dist-info/LICENSE.txt | 23 + .../gunicorn-19.9.0.dist-info/METADATA | 111 + .../gunicorn-19.9.0.dist-info/RECORD | 88 + .../gunicorn-19.9.0.dist-info/WHEEL | 6 + .../entry_points.txt | 8 + .../gunicorn-19.9.0.dist-info/top_level.txt | 1 + .../site-packages/gunicorn/__init__.py | 8 + .../site-packages/gunicorn/__init__.pyc | Bin 0 -> 333 bytes .../site-packages/gunicorn/_compat.py | 298 + .../site-packages/gunicorn/_compat.pyc | Bin 0 -> 10152 bytes .../site-packages/gunicorn/app/__init__.py | 4 + .../site-packages/gunicorn/app/__init__.pyc | Bin 0 -> 144 bytes .../site-packages/gunicorn/app/base.py | 223 + .../site-packages/gunicorn/app/base.pyc | Bin 0 -> 7366 bytes .../site-packages/gunicorn/app/pasterapp.py | 209 + .../site-packages/gunicorn/app/pasterapp.pyc | Bin 0 -> 7136 bytes .../site-packages/gunicorn/app/wsgiapp.py | 65 + .../site-packages/gunicorn/app/wsgiapp.pyc | Bin 0 -> 2576 bytes .../site-packages/gunicorn/arbiter.py | 646 + .../site-packages/gunicorn/arbiter.pyc | Bin 0 -> 20133 bytes .../site-packages/gunicorn/argparse_compat.py | 2362 ++ .../gunicorn/argparse_compat.pyc | Bin 0 -> 68228 bytes .../site-packages/gunicorn/config.py | 1950 ++ .../site-packages/gunicorn/config.pyc | Bin 0 -> 70410 bytes .../python2.7/site-packages/gunicorn/debug.py | 69 + .../site-packages/gunicorn/debug.pyc | Bin 0 -> 2545 bytes .../site-packages/gunicorn/errors.py | 29 + .../site-packages/gunicorn/errors.pyc | Bin 0 -> 1274 bytes .../site-packages/gunicorn/glogging.py | 478 + .../site-packages/gunicorn/glogging.pyc | Bin 0 -> 14362 bytes .../site-packages/gunicorn/http/__init__.py | 9 + .../site-packages/gunicorn/http/__init__.pyc | Bin 0 -> 352 bytes .../site-packages/gunicorn/http/_sendfile.py | 67 + .../site-packages/gunicorn/http/_sendfile.pyc | Bin 0 -> 1761 bytes .../site-packages/gunicorn/http/body.py | 259 + .../site-packages/gunicorn/http/body.pyc | Bin 0 -> 8151 bytes .../site-packages/gunicorn/http/errors.py | 120 + .../site-packages/gunicorn/http/errors.pyc | Bin 0 -> 7589 bytes .../site-packages/gunicorn/http/message.py | 363 + .../site-packages/gunicorn/http/message.pyc | Bin 0 -> 10693 bytes .../site-packages/gunicorn/http/parser.py | 51 + .../site-packages/gunicorn/http/parser.pyc | Bin 0 -> 1734 bytes .../site-packages/gunicorn/http/unreader.py | 80 + .../site-packages/gunicorn/http/unreader.pyc | Bin 0 -> 3181 bytes .../site-packages/gunicorn/http/wsgi.py | 411 + .../site-packages/gunicorn/http/wsgi.pyc | Bin 0 -> 11796 bytes .../gunicorn/instrument/__init__.py | 0 .../gunicorn/instrument/__init__.pyc | Bin 0 -> 151 bytes .../gunicorn/instrument/statsd.py | 123 + .../gunicorn/instrument/statsd.pyc | Bin 0 -> 5861 bytes .../site-packages/gunicorn/pidfile.py | 86 + .../site-packages/gunicorn/pidfile.pyc | Bin 0 -> 2795 bytes .../site-packages/gunicorn/reloader.py | 132 + .../site-packages/gunicorn/reloader.pyc | Bin 0 -> 4742 bytes .../site-packages/gunicorn/selectors.py | 592 + .../site-packages/gunicorn/selectors.pyc | Bin 0 -> 20911 bytes .../python2.7/site-packages/gunicorn/six.py | 762 + .../python2.7/site-packages/gunicorn/six.pyc | Bin 0 -> 27986 bytes .../python2.7/site-packages/gunicorn/sock.py | 209 + .../python2.7/site-packages/gunicorn/sock.pyc | Bin 0 -> 7454 bytes .../site-packages/gunicorn/systemd.py | 45 + .../site-packages/gunicorn/systemd.pyc | Bin 0 -> 1510 bytes .../python2.7/site-packages/gunicorn/util.py | 557 + .../python2.7/site-packages/gunicorn/util.pyc | Bin 0 -> 15537 bytes .../gunicorn/workers/__init__.py | 22 + .../gunicorn/workers/__init__.pyc | Bin 0 -> 747 bytes .../gunicorn/workers/_gaiohttp.py | 168 + .../site-packages/gunicorn/workers/base.py | 264 + .../site-packages/gunicorn/workers/base.pyc | Bin 0 -> 9344 bytes .../gunicorn/workers/base_async.py | 147 + .../gunicorn/workers/base_async.pyc | Bin 0 -> 4663 bytes .../gunicorn/workers/gaiohttp.py | 27 + .../gunicorn/workers/gaiohttp.pyc | Bin 0 -> 829 bytes .../gunicorn/workers/geventlet.py | 148 + .../gunicorn/workers/geventlet.pyc | Bin 0 -> 5883 bytes .../site-packages/gunicorn/workers/ggevent.py | 246 + .../gunicorn/workers/ggevent.pyc | Bin 0 -> 8622 bytes .../site-packages/gunicorn/workers/gthread.py | 367 + .../gunicorn/workers/gthread.pyc | Bin 0 -> 10788 bytes .../gunicorn/workers/gtornado.py | 146 + .../gunicorn/workers/gtornado.pyc | Bin 0 -> 5137 bytes .../site-packages/gunicorn/workers/sync.py | 208 + .../site-packages/gunicorn/workers/sync.pyc | Bin 0 -> 6248 bytes .../gunicorn/workers/workertmp.py | 56 + .../gunicorn/workers/workertmp.pyc | Bin 0 -> 2292 bytes .../itsdangerous-1.1.0.dist-info/INSTALLER | 1 + .../itsdangerous-1.1.0.dist-info/LICENSE.rst | 47 + .../itsdangerous-1.1.0.dist-info/METADATA | 98 + .../itsdangerous-1.1.0.dist-info/RECORD | 26 + .../itsdangerous-1.1.0.dist-info/WHEEL | 6 + .../top_level.txt | 1 + .../site-packages/itsdangerous/__init__.py | 22 + .../site-packages/itsdangerous/__init__.pyc | Bin 0 -> 1211 bytes .../site-packages/itsdangerous/_compat.py | 46 + .../site-packages/itsdangerous/_compat.pyc | Bin 0 -> 1375 bytes .../site-packages/itsdangerous/_json.py | 18 + .../site-packages/itsdangerous/_json.pyc | Bin 0 -> 1061 bytes .../site-packages/itsdangerous/encoding.py | 49 + .../site-packages/itsdangerous/encoding.pyc | Bin 0 -> 2145 bytes .../site-packages/itsdangerous/exc.py | 98 + .../site-packages/itsdangerous/exc.pyc | Bin 0 -> 3963 bytes .../site-packages/itsdangerous/jws.py | 218 + .../site-packages/itsdangerous/jws.pyc | Bin 0 -> 7910 bytes .../site-packages/itsdangerous/serializer.py | 233 + .../site-packages/itsdangerous/serializer.pyc | Bin 0 -> 9254 bytes .../site-packages/itsdangerous/signer.py | 179 + .../site-packages/itsdangerous/signer.pyc | Bin 0 -> 7049 bytes .../site-packages/itsdangerous/timed.py | 147 + .../site-packages/itsdangerous/timed.pyc | Bin 0 -> 5405 bytes .../site-packages/itsdangerous/url_safe.py | 65 + .../site-packages/itsdangerous/url_safe.pyc | Bin 0 -> 2964 bytes .../site-packages/jinja2/__init__.py | 83 + .../site-packages/jinja2/__init__.pyc | Bin 0 -> 2879 bytes .../python2.7/site-packages/jinja2/_compat.py | 99 + .../site-packages/jinja2/_compat.pyc | Bin 0 -> 4407 bytes .../site-packages/jinja2/_identifier.py | 2 + .../site-packages/jinja2/_identifier.pyc | Bin 0 -> 1821 bytes .../site-packages/jinja2/asyncfilters.py | 146 + .../site-packages/jinja2/asyncsupport.py | 256 + .../python2.7/site-packages/jinja2/bccache.py | 362 + .../site-packages/jinja2/bccache.pyc | Bin 0 -> 14430 bytes .../site-packages/jinja2/compiler.py | 1721 ++ .../site-packages/jinja2/compiler.pyc | Bin 0 -> 56781 bytes .../site-packages/jinja2/constants.py | 32 + .../site-packages/jinja2/constants.pyc | Bin 0 -> 1692 bytes .../python2.7/site-packages/jinja2/debug.py | 372 + .../python2.7/site-packages/jinja2/debug.pyc | Bin 0 -> 11350 bytes .../site-packages/jinja2/defaults.py | 56 + .../site-packages/jinja2/defaults.pyc | Bin 0 -> 1823 bytes .../site-packages/jinja2/environment.py | 1276 + .../site-packages/jinja2/environment.pyc | Bin 0 -> 49235 bytes .../site-packages/jinja2/exceptions.py | 146 + .../site-packages/jinja2/exceptions.pyc | Bin 0 -> 6221 bytes .../lib/python2.7/site-packages/jinja2/ext.py | 627 + .../python2.7/site-packages/jinja2/ext.pyc | Bin 0 -> 23291 bytes .../python2.7/site-packages/jinja2/filters.py | 1190 + .../site-packages/jinja2/filters.pyc | Bin 0 -> 39959 bytes .../site-packages/jinja2/idtracking.py | 286 + .../site-packages/jinja2/idtracking.pyc | Bin 0 -> 12417 bytes .../python2.7/site-packages/jinja2/lexer.py | 739 + .../python2.7/site-packages/jinja2/lexer.pyc | Bin 0 -> 22751 bytes .../python2.7/site-packages/jinja2/loaders.py | 481 + .../site-packages/jinja2/loaders.pyc | Bin 0 -> 19157 bytes .../python2.7/site-packages/jinja2/meta.py | 106 + .../python2.7/site-packages/jinja2/meta.pyc | Bin 0 -> 4143 bytes .../site-packages/jinja2/nativetypes.py | 220 + .../site-packages/jinja2/nativetypes.pyc | Bin 0 -> 6105 bytes .../python2.7/site-packages/jinja2/nodes.py | 999 + .../python2.7/site-packages/jinja2/nodes.pyc | Bin 0 -> 44307 bytes .../site-packages/jinja2/optimizer.py | 49 + .../site-packages/jinja2/optimizer.pyc | Bin 0 -> 2361 bytes .../python2.7/site-packages/jinja2/parser.py | 903 + .../python2.7/site-packages/jinja2/parser.pyc | Bin 0 -> 31467 bytes .../python2.7/site-packages/jinja2/runtime.py | 813 + .../site-packages/jinja2/runtime.pyc | Bin 0 -> 29865 bytes .../python2.7/site-packages/jinja2/sandbox.py | 475 + .../site-packages/jinja2/sandbox.pyc | Bin 0 -> 16323 bytes .../python2.7/site-packages/jinja2/tests.py | 175 + .../python2.7/site-packages/jinja2/tests.pyc | Bin 0 -> 5719 bytes .../python2.7/site-packages/jinja2/utils.py | 647 + .../python2.7/site-packages/jinja2/utils.pyc | Bin 0 -> 24727 bytes .../python2.7/site-packages/jinja2/visitor.py | 87 + .../site-packages/jinja2/visitor.pyc | Bin 0 -> 3796 bytes .../env/lib/python2.7/site-packages/magic.py | 301 + .../env/lib/python2.7/site-packages/magic.pyc | Bin 0 -> 8551 bytes .../site-packages/markupsafe/__init__.py | 305 + .../site-packages/markupsafe/__init__.pyc | Bin 0 -> 14127 bytes .../site-packages/markupsafe/_compat.py | 26 + .../site-packages/markupsafe/_compat.pyc | Bin 0 -> 992 bytes .../site-packages/markupsafe/_constants.py | 267 + .../site-packages/markupsafe/_constants.pyc | Bin 0 -> 6369 bytes .../site-packages/markupsafe/_native.py | 46 + .../site-packages/markupsafe/_native.pyc | Bin 0 -> 1729 bytes .../site-packages/markupsafe/_speedups.c | 239 + .../site-packages/markupsafe/_speedups.so | Bin 0 -> 34864 bytes .../more_itertools-4.3.0.dist-info/INSTALLER | 1 + .../more_itertools-4.3.0.dist-info/METADATA | 433 + .../more_itertools-4.3.0.dist-info/RECORD | 17 + .../more_itertools-4.3.0.dist-info/WHEEL | 5 + .../top_level.txt | 1 + .../site-packages/more_itertools/__init__.py | 2 + .../site-packages/more_itertools/__init__.pyc | Bin 0 -> 241 bytes .../site-packages/more_itertools/more.py | 2211 ++ .../site-packages/more_itertools/more.pyc | Bin 0 -> 75402 bytes .../site-packages/more_itertools/recipes.py | 565 + .../site-packages/more_itertools/recipes.pyc | Bin 0 -> 19250 bytes .../more_itertools/tests/__init__.py | 0 .../more_itertools/tests/__init__.pyc | Bin 0 -> 158 bytes .../more_itertools/tests/test_more.py | 2074 ++ .../more_itertools/tests/test_more.pyc | Bin 0 -> 121389 bytes .../more_itertools/tests/test_recipes.py | 616 + .../more_itertools/tests/test_recipes.pyc | Bin 0 -> 40814 bytes .../numpy-1.15.1.dist-info/INSTALLER | 1 + .../numpy-1.15.1.dist-info/METADATA | 57 + .../numpy-1.15.1.dist-info/RECORD | 773 + .../numpy-1.15.1.dist-info/WHEEL | 5 + .../numpy-1.15.1.dist-info/top_level.txt | 1 + .../numpy/.libs/libgfortran-ed201abd.so.3.0.0 | Bin 0 -> 1023960 bytes .../.libs/libopenblasp-r0-8dca6697.3.0.dev.so | Bin 0 -> 39451136 bytes .../python2.7/site-packages/numpy/LICENSE.txt | 940 + .../site-packages/numpy/__config__.py | 39 + .../site-packages/numpy/__config__.pyc | Bin 0 -> 1783 bytes .../python2.7/site-packages/numpy/__init__.py | 226 + .../site-packages/numpy/__init__.pyc | Bin 0 -> 7215 bytes .../site-packages/numpy/_distributor_init.py | 10 + .../site-packages/numpy/_distributor_init.pyc | Bin 0 -> 490 bytes .../python2.7/site-packages/numpy/_globals.py | 76 + .../site-packages/numpy/_globals.pyc | Bin 0 -> 3091 bytes .../site-packages/numpy/_import_tools.py | 351 + .../site-packages/numpy/_import_tools.pyc | Bin 0 -> 11289 bytes .../site-packages/numpy/add_newdocs.py | 8151 ++++++ .../site-packages/numpy/add_newdocs.pyc | Bin 0 -> 213899 bytes .../site-packages/numpy/compat/__init__.py | 20 + .../site-packages/numpy/compat/__init__.pyc | Bin 0 -> 775 bytes .../site-packages/numpy/compat/_inspect.py | 194 + .../site-packages/numpy/compat/_inspect.pyc | Bin 0 -> 9026 bytes .../site-packages/numpy/compat/py3k.py | 156 + .../site-packages/numpy/compat/py3k.pyc | Bin 0 -> 5479 bytes .../site-packages/numpy/compat/setup.py | 12 + .../site-packages/numpy/compat/setup.pyc | Bin 0 -> 728 bytes .../numpy/compat/tests/__init__.py | 0 .../numpy/compat/tests/__init__.pyc | Bin 0 -> 147 bytes .../numpy/compat/tests/test_compat.py | 21 + .../numpy/compat/tests/test_compat.pyc | Bin 0 -> 939 bytes .../python2.7/site-packages/numpy/conftest.py | 62 + .../site-packages/numpy/conftest.pyc | Bin 0 -> 2034 bytes .../site-packages/numpy/core/__init__.py | 105 + .../site-packages/numpy/core/__init__.pyc | Bin 0 -> 3000 bytes .../site-packages/numpy/core/_dummy.so | Bin 0 -> 4504 bytes .../site-packages/numpy/core/_internal.py | 771 + .../site-packages/numpy/core/_internal.pyc | Bin 0 -> 22341 bytes .../site-packages/numpy/core/_methods.py | 156 + .../site-packages/numpy/core/_methods.pyc | Bin 0 -> 5324 bytes .../numpy/core/_multiarray_tests.so | Bin 0 -> 130192 bytes .../numpy/core/_operand_flag_tests.so | Bin 0 -> 7664 bytes .../numpy/core/_rational_tests.so | Bin 0 -> 49600 bytes .../numpy/core/_struct_ufunc_tests.so | Bin 0 -> 7680 bytes .../site-packages/numpy/core/_umath_tests.so | Bin 0 -> 16992 bytes .../site-packages/numpy/core/arrayprint.py | 1566 ++ .../site-packages/numpy/core/arrayprint.pyc | Bin 0 -> 57321 bytes .../site-packages/numpy/core/cversions.py | 15 + .../site-packages/numpy/core/cversions.pyc | Bin 0 -> 712 bytes .../site-packages/numpy/core/defchararray.py | 2679 ++ .../site-packages/numpy/core/defchararray.pyc | Bin 0 -> 75110 bytes .../site-packages/numpy/core/einsumfunc.py | 1306 + .../site-packages/numpy/core/einsumfunc.pyc | Bin 0 -> 36469 bytes .../site-packages/numpy/core/fromnumeric.py | 3232 +++ .../site-packages/numpy/core/fromnumeric.pyc | Bin 0 -> 106790 bytes .../site-packages/numpy/core/function_base.py | 358 + .../numpy/core/function_base.pyc | Bin 0 -> 11798 bytes .../numpy/core/generate_numpy_api.py | 253 + .../numpy/core/generate_numpy_api.pyc | Bin 0 -> 7076 bytes .../site-packages/numpy/core/getlimits.py | 560 + .../site-packages/numpy/core/getlimits.pyc | Bin 0 -> 17065 bytes .../core/include/numpy/__multiarray_api.h | 1555 ++ .../numpy/core/include/numpy/__ufunc_api.h | 320 + .../numpy/_neighborhood_iterator_imp.h | 90 + .../numpy/core/include/numpy/_numpyconfig.h | 32 + .../numpy/core/include/numpy/arrayobject.h | 11 + .../numpy/core/include/numpy/arrayscalars.h | 175 + .../numpy/core/include/numpy/halffloat.h | 70 + .../core/include/numpy/multiarray_api.txt | 2492 ++ .../numpy/core/include/numpy/ndarrayobject.h | 291 + .../numpy/core/include/numpy/ndarraytypes.h | 1837 ++ .../numpy/core/include/numpy/noprefix.h | 212 + .../include/numpy/npy_1_7_deprecated_api.h | 130 + .../numpy/core/include/numpy/npy_3kcompat.h | 510 + .../numpy/core/include/numpy/npy_common.h | 1083 + .../numpy/core/include/numpy/npy_cpu.h | 118 + .../numpy/core/include/numpy/npy_endian.h | 69 + .../numpy/core/include/numpy/npy_interrupt.h | 117 + .../numpy/core/include/numpy/npy_math.h | 551 + .../include/numpy/npy_no_deprecated_api.h | 19 + .../numpy/core/include/numpy/npy_os.h | 30 + .../numpy/core/include/numpy/numpyconfig.h | 41 + .../numpy/core/include/numpy/old_defines.h | 187 + .../numpy/core/include/numpy/oldnumeric.h | 25 + .../numpy/core/include/numpy/ufunc_api.txt | 321 + .../numpy/core/include/numpy/ufuncobject.h | 363 + .../numpy/core/include/numpy/utils.h | 21 + .../site-packages/numpy/core/info.py | 87 + .../site-packages/numpy/core/info.pyc | Bin 0 -> 4925 bytes .../site-packages/numpy/core/lib/libnpymath.a | Bin 0 -> 350266 bytes .../numpy/core/lib/npy-pkg-config/mlib.ini | 12 + .../numpy/core/lib/npy-pkg-config/npymath.ini | 20 + .../site-packages/numpy/core/machar.py | 342 + .../site-packages/numpy/core/machar.pyc | Bin 0 -> 8755 bytes .../site-packages/numpy/core/memmap.py | 338 + .../site-packages/numpy/core/memmap.pyc | Bin 0 -> 11143 bytes .../site-packages/numpy/core/multiarray.so | Bin 0 -> 2070376 bytes .../site-packages/numpy/core/numeric.py | 2938 ++ .../site-packages/numpy/core/numeric.pyc | Bin 0 -> 90231 bytes .../site-packages/numpy/core/numerictypes.py | 1022 + .../site-packages/numpy/core/numerictypes.pyc | Bin 0 -> 27572 bytes .../site-packages/numpy/core/records.py | 871 + .../site-packages/numpy/core/records.pyc | Bin 0 -> 25640 bytes .../site-packages/numpy/core/setup.py | 963 + .../site-packages/numpy/core/setup.pyc | Bin 0 -> 26582 bytes .../site-packages/numpy/core/setup_common.py | 399 + .../site-packages/numpy/core/setup_common.pyc | Bin 0 -> 12612 bytes .../site-packages/numpy/core/shape_base.py | 608 + .../site-packages/numpy/core/shape_base.pyc | Bin 0 -> 19377 bytes .../numpy/core/tests/__init__.py | 0 .../numpy/core/tests/__init__.pyc | Bin 0 -> 145 bytes .../numpy/core/tests/_locales.py | 76 + .../numpy/core/tests/_locales.pyc | Bin 0 -> 3181 bytes .../numpy/core/tests/data/astype_copy.pkl | Bin 0 -> 716 bytes .../core/tests/data/recarray_from_file.fits | Bin 0 -> 8640 bytes .../numpy/core/tests/test_abc.py | 56 + .../numpy/core/tests/test_abc.pyc | Bin 0 -> 3095 bytes .../numpy/core/tests/test_api.py | 516 + .../numpy/core/tests/test_api.pyc | Bin 0 -> 15831 bytes .../numpy/core/tests/test_arrayprint.py | 875 + .../numpy/core/tests/test_arrayprint.pyc | Bin 0 -> 37738 bytes .../numpy/core/tests/test_datetime.py | 2026 ++ .../numpy/core/tests/test_datetime.pyc | Bin 0 -> 65104 bytes .../numpy/core/tests/test_defchararray.py | 702 + .../numpy/core/tests/test_defchararray.pyc | Bin 0 -> 37607 bytes .../numpy/core/tests/test_deprecations.py | 512 + .../numpy/core/tests/test_deprecations.pyc | Bin 0 -> 27173 bytes .../numpy/core/tests/test_dtype.py | 802 + .../numpy/core/tests/test_dtype.pyc | Bin 0 -> 36000 bytes .../numpy/core/tests/test_einsum.py | 1004 + .../numpy/core/tests/test_einsum.pyc | Bin 0 -> 35227 bytes .../numpy/core/tests/test_errstate.py | 49 + .../numpy/core/tests/test_errstate.pyc | Bin 0 -> 2292 bytes .../numpy/core/tests/test_extint128.py | 223 + .../numpy/core/tests/test_extint128.pyc | Bin 0 -> 7652 bytes .../numpy/core/tests/test_function_base.py | 323 + .../numpy/core/tests/test_function_base.pyc | Bin 0 -> 16423 bytes .../numpy/core/tests/test_getlimits.py | 126 + .../numpy/core/tests/test_getlimits.pyc | Bin 0 -> 7677 bytes .../numpy/core/tests/test_half.py | 435 + .../numpy/core/tests/test_half.pyc | Bin 0 -> 18091 bytes .../numpy/core/tests/test_indexerrors.py | 123 + .../numpy/core/tests/test_indexerrors.pyc | Bin 0 -> 11010 bytes .../numpy/core/tests/test_indexing.py | 1308 + .../numpy/core/tests/test_indexing.pyc | Bin 0 -> 54358 bytes .../numpy/core/tests/test_item_selection.py | 87 + .../numpy/core/tests/test_item_selection.pyc | Bin 0 -> 4294 bytes .../numpy/core/tests/test_longdouble.py | 207 + .../numpy/core/tests/test_longdouble.pyc | Bin 0 -> 10212 bytes .../numpy/core/tests/test_machar.py | 32 + .../numpy/core/tests/test_machar.pyc | Bin 0 -> 1712 bytes .../numpy/core/tests/test_mem_overlap.py | 950 + .../numpy/core/tests/test_mem_overlap.pyc | Bin 0 -> 34580 bytes .../numpy/core/tests/test_memmap.py | 203 + .../numpy/core/tests/test_memmap.pyc | Bin 0 -> 9648 bytes .../numpy/core/tests/test_multiarray.py | 7610 ++++++ .../numpy/core/tests/test_multiarray.pyc | Bin 0 -> 313962 bytes .../numpy/core/tests/test_nditer.py | 2905 ++ .../numpy/core/tests/test_nditer.pyc | Bin 0 -> 92487 bytes .../numpy/core/tests/test_numeric.py | 2738 ++ .../numpy/core/tests/test_numeric.pyc | Bin 0 -> 119904 bytes .../numpy/core/tests/test_numerictypes.py | 408 + .../numpy/core/tests/test_numerictypes.pyc | Bin 0 -> 19705 bytes .../numpy/core/tests/test_print.py | 214 + .../numpy/core/tests/test_print.pyc | Bin 0 -> 9005 bytes .../numpy/core/tests/test_records.py | 431 + .../numpy/core/tests/test_records.pyc | Bin 0 -> 20734 bytes .../numpy/core/tests/test_regression.py | 2412 ++ .../numpy/core/tests/test_regression.pyc | Bin 0 -> 109017 bytes .../numpy/core/tests/test_scalar_ctors.py | 65 + .../numpy/core/tests/test_scalar_ctors.pyc | Bin 0 -> 3247 bytes .../numpy/core/tests/test_scalarbuffer.py | 104 + .../numpy/core/tests/test_scalarbuffer.pyc | Bin 0 -> 4533 bytes .../numpy/core/tests/test_scalarinherit.py | 74 + .../numpy/core/tests/test_scalarinherit.pyc | Bin 0 -> 3975 bytes .../numpy/core/tests/test_scalarmath.py | 666 + .../numpy/core/tests/test_scalarmath.pyc | Bin 0 -> 28130 bytes .../numpy/core/tests/test_scalarprint.py | 326 + .../numpy/core/tests/test_scalarprint.pyc | Bin 0 -> 12652 bytes .../numpy/core/tests/test_shape_base.py | 582 + .../numpy/core/tests/test_shape_base.pyc | Bin 0 -> 24361 bytes .../numpy/core/tests/test_ufunc.py | 1690 ++ .../numpy/core/tests/test_ufunc.pyc | Bin 0 -> 64052 bytes .../numpy/core/tests/test_umath.py | 2880 ++ .../numpy/core/tests/test_umath.pyc | Bin 0 -> 128481 bytes .../numpy/core/tests/test_umath_complex.py | 543 + .../numpy/core/tests/test_umath_complex.pyc | Bin 0 -> 18330 bytes .../numpy/core/tests/test_unicode.py | 396 + .../numpy/core/tests/test_unicode.pyc | Bin 0 -> 16566 bytes .../site-packages/numpy/core/umath.so | Bin 0 -> 1801752 bytes .../site-packages/numpy/core/umath_tests.py | 15 + .../site-packages/numpy/core/umath_tests.pyc | Bin 0 -> 654 bytes .../site-packages/numpy/ctypeslib.py | 379 + .../site-packages/numpy/ctypeslib.pyc | Bin 0 -> 12450 bytes .../numpy/distutils/__config__.py | 39 + .../numpy/distutils/__config__.pyc | Bin 0 -> 1813 bytes .../site-packages/numpy/distutils/__init__.py | 36 + .../numpy/distutils/__init__.pyc | Bin 0 -> 1370 bytes .../numpy/distutils/__version__.py | 6 + .../numpy/distutils/__version__.pyc | Bin 0 -> 398 bytes .../numpy/distutils/ccompiler.py | 826 + .../numpy/distutils/ccompiler.pyc | Bin 0 -> 24227 bytes .../numpy/distutils/command/__init__.py | 43 + .../numpy/distutils/command/__init__.pyc | Bin 0 -> 1374 bytes .../numpy/distutils/command/autodist.py | 96 + .../numpy/distutils/command/autodist.pyc | Bin 0 -> 2767 bytes .../numpy/distutils/command/bdist_rpm.py | 24 + .../numpy/distutils/command/bdist_rpm.pyc | Bin 0 -> 1154 bytes .../numpy/distutils/command/build.py | 47 + .../numpy/distutils/command/build.pyc | Bin 0 -> 2587 bytes .../numpy/distutils/command/build_clib.py | 323 + .../numpy/distutils/command/build_clib.pyc | Bin 0 -> 9721 bytes .../numpy/distutils/command/build_ext.py | 596 + .../numpy/distutils/command/build_ext.pyc | Bin 0 -> 15537 bytes .../numpy/distutils/command/build_py.py | 33 + .../numpy/distutils/command/build_py.pyc | Bin 0 -> 1665 bytes .../numpy/distutils/command/build_scripts.py | 51 + .../numpy/distutils/command/build_scripts.pyc | Bin 0 -> 1996 bytes .../numpy/distutils/command/build_src.py | 776 + .../numpy/distutils/command/build_src.pyc | Bin 0 -> 23145 bytes .../numpy/distutils/command/config.py | 486 + .../numpy/distutils/command/config.pyc | Bin 0 -> 15180 bytes .../distutils/command/config_compiler.py | 125 + .../distutils/command/config_compiler.pyc | Bin 0 -> 5832 bytes .../numpy/distutils/command/develop.py | 17 + .../numpy/distutils/command/develop.pyc | Bin 0 -> 1109 bytes .../numpy/distutils/command/egg_info.py | 27 + .../numpy/distutils/command/egg_info.pyc | Bin 0 -> 1396 bytes .../numpy/distutils/command/install.py | 82 + .../numpy/distutils/command/install.pyc | Bin 0 -> 2753 bytes .../numpy/distutils/command/install_clib.py | 39 + .../numpy/distutils/command/install_clib.pyc | Bin 0 -> 2189 bytes .../numpy/distutils/command/install_data.py | 26 + .../numpy/distutils/command/install_data.pyc | Bin 0 -> 1261 bytes .../distutils/command/install_headers.py | 27 + .../distutils/command/install_headers.pyc | Bin 0 -> 1351 bytes .../numpy/distutils/command/sdist.py | 29 + .../numpy/distutils/command/sdist.pyc | Bin 0 -> 1301 bytes .../site-packages/numpy/distutils/compat.py | 10 + .../site-packages/numpy/distutils/compat.pyc | Bin 0 -> 582 bytes .../numpy/distutils/conv_template.py | 339 + .../numpy/distutils/conv_template.pyc | Bin 0 -> 9868 bytes .../site-packages/numpy/distutils/core.py | 215 + .../site-packages/numpy/distutils/core.pyc | Bin 0 -> 5997 bytes .../site-packages/numpy/distutils/cpuinfo.py | 693 + .../site-packages/numpy/distutils/cpuinfo.pyc | Bin 0 -> 43303 bytes .../numpy/distutils/environment.py | 72 + .../numpy/distutils/environment.pyc | Bin 0 -> 3462 bytes .../numpy/distutils/exec_command.py | 291 + .../numpy/distutils/exec_command.pyc | Bin 0 -> 9602 bytes .../numpy/distutils/extension.py | 93 + .../numpy/distutils/extension.pyc | Bin 0 -> 2672 bytes .../numpy/distutils/fcompiler/__init__.py | 1020 + .../numpy/distutils/fcompiler/__init__.pyc | Bin 0 -> 34949 bytes .../numpy/distutils/fcompiler/absoft.py | 158 + .../numpy/distutils/fcompiler/absoft.pyc | Bin 0 -> 5884 bytes .../numpy/distutils/fcompiler/compaq.py | 126 + .../numpy/distutils/fcompiler/compaq.pyc | Bin 0 -> 5443 bytes .../numpy/distutils/fcompiler/g95.py | 44 + .../numpy/distutils/fcompiler/g95.pyc | Bin 0 -> 1995 bytes .../numpy/distutils/fcompiler/gnu.py | 539 + .../numpy/distutils/fcompiler/gnu.pyc | Bin 0 -> 16276 bytes .../numpy/distutils/fcompiler/hpux.py | 43 + .../numpy/distutils/fcompiler/hpux.pyc | Bin 0 -> 2386 bytes .../numpy/distutils/fcompiler/ibm.py | 95 + .../numpy/distutils/fcompiler/ibm.pyc | Bin 0 -> 4162 bytes .../numpy/distutils/fcompiler/intel.py | 219 + .../numpy/distutils/fcompiler/intel.pyc | Bin 0 -> 9173 bytes .../numpy/distutils/fcompiler/lahey.py | 47 + .../numpy/distutils/fcompiler/lahey.pyc | Bin 0 -> 2427 bytes .../numpy/distutils/fcompiler/mips.py | 56 + .../numpy/distutils/fcompiler/mips.pyc | Bin 0 -> 2879 bytes .../numpy/distutils/fcompiler/nag.py | 84 + .../numpy/distutils/fcompiler/nag.pyc | Bin 0 -> 3995 bytes .../numpy/distutils/fcompiler/none.py | 30 + .../numpy/distutils/fcompiler/none.pyc | Bin 0 -> 1332 bytes .../numpy/distutils/fcompiler/pathf95.py | 35 + .../numpy/distutils/fcompiler/pathf95.pyc | Bin 0 -> 1817 bytes .../numpy/distutils/fcompiler/pg.py | 141 + .../numpy/distutils/fcompiler/pg.pyc | Bin 0 -> 5964 bytes .../numpy/distutils/fcompiler/sun.py | 53 + .../numpy/distutils/fcompiler/sun.pyc | Bin 0 -> 2692 bytes .../numpy/distutils/fcompiler/vast.py | 54 + .../numpy/distutils/fcompiler/vast.pyc | Bin 0 -> 2405 bytes .../numpy/distutils/from_template.py | 264 + .../numpy/distutils/from_template.pyc | Bin 0 -> 8956 bytes .../site-packages/numpy/distutils/info.py | 6 + .../site-packages/numpy/distutils/info.pyc | Bin 0 -> 383 bytes .../numpy/distutils/intelccompiler.py | 113 + .../numpy/distutils/intelccompiler.pyc | Bin 0 -> 5143 bytes .../site-packages/numpy/distutils/lib2def.py | 116 + .../site-packages/numpy/distutils/lib2def.pyc | Bin 0 -> 3995 bytes .../numpy/distutils/line_endings.py | 76 + .../numpy/distutils/line_endings.pyc | Bin 0 -> 2869 bytes .../site-packages/numpy/distutils/log.py | 93 + .../site-packages/numpy/distutils/log.pyc | Bin 0 -> 3070 bytes .../distutils/mingw/gfortran_vs2003_hack.c | 6 + .../numpy/distutils/mingw32ccompiler.py | 657 + .../numpy/distutils/mingw32ccompiler.pyc | Bin 0 -> 18299 bytes .../numpy/distutils/misc_util.py | 2338 ++ .../numpy/distutils/misc_util.pyc | Bin 0 -> 77933 bytes .../numpy/distutils/msvc9compiler.py | 65 + .../numpy/distutils/msvc9compiler.pyc | Bin 0 -> 2685 bytes .../numpy/distutils/msvccompiler.py | 60 + .../numpy/distutils/msvccompiler.pyc | Bin 0 -> 2362 bytes .../numpy/distutils/npy_pkg_config.py | 446 + .../numpy/distutils/npy_pkg_config.pyc | Bin 0 -> 15169 bytes .../numpy/distutils/numpy_distribution.py | 19 + .../numpy/distutils/numpy_distribution.pyc | Bin 0 -> 1078 bytes .../numpy/distutils/pathccompiler.py | 23 + .../numpy/distutils/pathccompiler.pyc | Bin 0 -> 1211 bytes .../site-packages/numpy/distutils/setup.py | 17 + .../site-packages/numpy/distutils/setup.pyc | Bin 0 -> 938 bytes .../numpy/distutils/system_info.py | 2537 ++ .../numpy/distutils/system_info.pyc | Bin 0 -> 82798 bytes .../numpy/distutils/tests/__init__.py | 0 .../numpy/distutils/tests/__init__.pyc | Bin 0 -> 150 bytes .../distutils/tests/test_exec_command.py | 215 + .../distutils/tests/test_exec_command.pyc | Bin 0 -> 8447 bytes .../distutils/tests/test_fcompiler_gnu.py | 57 + .../distutils/tests/test_fcompiler_gnu.pyc | Bin 0 -> 4358 bytes .../distutils/tests/test_fcompiler_intel.py | 32 + .../distutils/tests/test_fcompiler_intel.pyc | Bin 0 -> 2407 bytes .../distutils/tests/test_fcompiler_nagfor.py | 24 + .../distutils/tests/test_fcompiler_nagfor.pyc | Bin 0 -> 2026 bytes .../distutils/tests/test_from_template.py | 44 + .../distutils/tests/test_from_template.pyc | Bin 0 -> 1565 bytes .../numpy/distutils/tests/test_misc_util.py | 81 + .../numpy/distutils/tests/test_misc_util.pyc | Bin 0 -> 4955 bytes .../distutils/tests/test_npy_pkg_config.py | 86 + .../distutils/tests/test_npy_pkg_config.pyc | Bin 0 -> 3684 bytes .../numpy/distutils/tests/test_system_info.py | 235 + .../distutils/tests/test_system_info.pyc | Bin 0 -> 8526 bytes .../numpy/distutils/unixccompiler.py | 139 + .../numpy/distutils/unixccompiler.pyc | Bin 0 -> 4132 bytes .../site-packages/numpy/doc/__init__.py | 28 + .../site-packages/numpy/doc/__init__.pyc | Bin 0 -> 1044 bytes .../site-packages/numpy/doc/basics.py | 185 + .../site-packages/numpy/doc/basics.pyc | Bin 0 -> 8125 bytes .../site-packages/numpy/doc/broadcasting.py | 178 + .../site-packages/numpy/doc/broadcasting.pyc | Bin 0 -> 5780 bytes .../site-packages/numpy/doc/byteswapping.py | 156 + .../site-packages/numpy/doc/byteswapping.pyc | Bin 0 -> 5560 bytes .../site-packages/numpy/doc/constants.py | 417 + .../site-packages/numpy/doc/constants.pyc | Bin 0 -> 8536 bytes .../site-packages/numpy/doc/creation.py | 144 + .../site-packages/numpy/doc/creation.pyc | Bin 0 -> 5707 bytes .../site-packages/numpy/doc/glossary.py | 450 + .../site-packages/numpy/doc/glossary.pyc | Bin 0 -> 13751 bytes .../site-packages/numpy/doc/indexing.py | 439 + .../site-packages/numpy/doc/indexing.pyc | Bin 0 -> 15880 bytes .../site-packages/numpy/doc/internals.py | 163 + .../site-packages/numpy/doc/internals.pyc | Bin 0 -> 9881 bytes .../python2.7/site-packages/numpy/doc/misc.py | 227 + .../site-packages/numpy/doc/misc.pyc | Bin 0 -> 6397 bytes .../numpy/doc/structured_arrays.py | 605 + .../numpy/doc/structured_arrays.pyc | Bin 0 -> 24655 bytes .../site-packages/numpy/doc/subclassing.py | 752 + .../site-packages/numpy/doc/subclassing.pyc | Bin 0 -> 28774 bytes .../site-packages/numpy/doc/ufuncs.py | 138 + .../site-packages/numpy/doc/ufuncs.pyc | Bin 0 -> 5634 bytes .../lib/python2.7/site-packages/numpy/dual.py | 71 + .../python2.7/site-packages/numpy/dual.pyc | Bin 0 -> 2268 bytes .../site-packages/numpy/f2py/__init__.py | 74 + .../site-packages/numpy/f2py/__init__.pyc | Bin 0 -> 2418 bytes .../site-packages/numpy/f2py/__main__.py | 27 + .../site-packages/numpy/f2py/__main__.pyc | Bin 0 -> 957 bytes .../site-packages/numpy/f2py/__version__.py | 10 + .../site-packages/numpy/f2py/__version__.pyc | Bin 0 -> 485 bytes .../site-packages/numpy/f2py/auxfuncs.py | 854 + .../site-packages/numpy/f2py/auxfuncs.pyc | Bin 0 -> 30568 bytes .../site-packages/numpy/f2py/capi_maps.py | 840 + .../site-packages/numpy/f2py/capi_maps.pyc | Bin 0 -> 22212 bytes .../site-packages/numpy/f2py/cb_rules.py | 578 + .../site-packages/numpy/f2py/cb_rules.pyc | Bin 0 -> 17456 bytes .../site-packages/numpy/f2py/cfuncs.py | 1262 + .../site-packages/numpy/f2py/cfuncs.pyc | Bin 0 -> 39917 bytes .../site-packages/numpy/f2py/common_rules.py | 150 + .../site-packages/numpy/f2py/common_rules.pyc | Bin 0 -> 5643 bytes .../site-packages/numpy/f2py/crackfortran.py | 3340 +++ .../site-packages/numpy/f2py/crackfortran.pyc | Bin 0 -> 88413 bytes .../site-packages/numpy/f2py/diagnose.py | 156 + .../site-packages/numpy/f2py/diagnose.pyc | Bin 0 -> 4324 bytes .../site-packages/numpy/f2py/f2py2e.py | 656 + .../site-packages/numpy/f2py/f2py2e.pyc | Bin 0 -> 20599 bytes .../site-packages/numpy/f2py/f2py_testing.py | 48 + .../site-packages/numpy/f2py/f2py_testing.pyc | Bin 0 -> 1772 bytes .../site-packages/numpy/f2py/f90mod_rules.py | 272 + .../site-packages/numpy/f2py/f90mod_rules.pyc | Bin 0 -> 8691 bytes .../site-packages/numpy/f2py/func2subr.py | 299 + .../site-packages/numpy/f2py/func2subr.pyc | Bin 0 -> 7957 bytes .../site-packages/numpy/f2py/info.py | 6 + .../site-packages/numpy/f2py/info.pyc | Bin 0 -> 357 bytes .../site-packages/numpy/f2py/rules.py | 1473 + .../site-packages/numpy/f2py/rules.pyc | Bin 0 -> 38655 bytes .../site-packages/numpy/f2py/setup.py | 117 + .../site-packages/numpy/f2py/setup.pyc | Bin 0 -> 4429 bytes .../numpy/f2py/src/fortranobject.c | 1089 + .../numpy/f2py/src/fortranobject.h | 162 + .../numpy/f2py/tests/__init__.py | 0 .../numpy/f2py/tests/__init__.pyc | Bin 0 -> 145 bytes .../tests/src/array_from_pyobj/wrapmodule.c | 224 + .../f2py/tests/src/assumed_shape/.f2py_f2cmap | 1 + .../f2py/tests/src/assumed_shape/foo_free.f90 | 34 + .../f2py/tests/src/assumed_shape/foo_mod.f90 | 41 + .../f2py/tests/src/assumed_shape/foo_use.f90 | 19 + .../tests/src/assumed_shape/precision.f90 | 4 + .../numpy/f2py/tests/src/common/block.f | 11 + .../numpy/f2py/tests/src/kind/foo.f90 | 20 + .../numpy/f2py/tests/src/mixed/foo.f | 5 + .../numpy/f2py/tests/src/mixed/foo_fixed.f90 | 8 + .../numpy/f2py/tests/src/mixed/foo_free.f90 | 8 + .../tests/src/parameter/constant_both.f90 | 57 + .../tests/src/parameter/constant_compound.f90 | 15 + .../tests/src/parameter/constant_integer.f90 | 22 + .../src/parameter/constant_non_compound.f90 | 23 + .../tests/src/parameter/constant_real.f90 | 23 + .../numpy/f2py/tests/src/regression/inout.f90 | 9 + .../numpy/f2py/tests/src/size/foo.f90 | 44 + .../numpy/f2py/tests/src/string/char.f90 | 29 + .../numpy/f2py/tests/test_array_from_pyobj.py | 584 + .../f2py/tests/test_array_from_pyobj.pyc | Bin 0 -> 23552 bytes .../numpy/f2py/tests/test_assumed_shape.py | 33 + .../numpy/f2py/tests/test_assumed_shape.pyc | Bin 0 -> 1669 bytes .../numpy/f2py/tests/test_block_docstring.py | 24 + .../numpy/f2py/tests/test_block_docstring.pyc | Bin 0 -> 1259 bytes .../numpy/f2py/tests/test_callback.py | 165 + .../numpy/f2py/tests/test_callback.pyc | Bin 0 -> 6345 bytes .../numpy/f2py/tests/test_common.py | 27 + .../numpy/f2py/tests/test_common.pyc | Bin 0 -> 1630 bytes .../numpy/f2py/tests/test_kind.py | 34 + .../numpy/f2py/tests/test_kind.pyc | Bin 0 -> 1729 bytes .../numpy/f2py/tests/test_mixed.py | 38 + .../numpy/f2py/tests/test_mixed.pyc | Bin 0 -> 1853 bytes .../numpy/f2py/tests/test_parameter.py | 119 + .../numpy/f2py/tests/test_parameter.pyc | Bin 0 -> 5111 bytes .../numpy/f2py/tests/test_regression.py | 30 + .../numpy/f2py/tests/test_regression.pyc | Bin 0 -> 1509 bytes .../numpy/f2py/tests/test_return_character.py | 146 + .../f2py/tests/test_return_character.pyc | Bin 0 -> 4999 bytes .../numpy/f2py/tests/test_return_complex.py | 169 + .../numpy/f2py/tests/test_return_complex.pyc | Bin 0 -> 6121 bytes .../numpy/f2py/tests/test_return_integer.py | 179 + .../numpy/f2py/tests/test_return_integer.pyc | Bin 0 -> 5799 bytes .../numpy/f2py/tests/test_return_logical.py | 188 + .../numpy/f2py/tests/test_return_logical.pyc | Bin 0 -> 6333 bytes .../numpy/f2py/tests/test_return_real.py | 204 + .../numpy/f2py/tests/test_return_real.pyc | Bin 0 -> 7015 bytes .../numpy/f2py/tests/test_semicolon_split.py | 53 + .../numpy/f2py/tests/test_semicolon_split.pyc | Bin 0 -> 2152 bytes .../numpy/f2py/tests/test_size.py | 51 + .../numpy/f2py/tests/test_size.pyc | Bin 0 -> 2379 bytes .../numpy/f2py/tests/test_string.py | 24 + .../numpy/f2py/tests/test_string.pyc | Bin 0 -> 1519 bytes .../site-packages/numpy/f2py/tests/util.py | 362 + .../site-packages/numpy/f2py/tests/util.pyc | Bin 0 -> 9823 bytes .../site-packages/numpy/f2py/use_rules.py | 115 + .../site-packages/numpy/f2py/use_rules.pyc | Bin 0 -> 3731 bytes .../site-packages/numpy/fft/__init__.py | 11 + .../site-packages/numpy/fft/__init__.pyc | Bin 0 -> 496 bytes .../site-packages/numpy/fft/fftpack.py | 1270 + .../site-packages/numpy/fft/fftpack.pyc | Bin 0 -> 47352 bytes .../site-packages/numpy/fft/fftpack_lite.so | Bin 0 -> 39928 bytes .../site-packages/numpy/fft/helper.py | 317 + .../site-packages/numpy/fft/helper.pyc | Bin 0 -> 10446 bytes .../python2.7/site-packages/numpy/fft/info.py | 187 + .../site-packages/numpy/fft/info.pyc | Bin 0 -> 7409 bytes .../site-packages/numpy/fft/setup.py | 19 + .../site-packages/numpy/fft/setup.pyc | Bin 0 -> 834 bytes .../site-packages/numpy/fft/tests/__init__.py | 0 .../numpy/fft/tests/__init__.pyc | Bin 0 -> 144 bytes .../numpy/fft/tests/test_fftpack.py | 185 + .../numpy/fft/tests/test_fftpack.pyc | Bin 0 -> 10258 bytes .../numpy/fft/tests/test_helper.py | 248 + .../numpy/fft/tests/test_helper.pyc | Bin 0 -> 9124 bytes .../site-packages/numpy/lib/__init__.py | 51 + .../site-packages/numpy/lib/__init__.pyc | Bin 0 -> 1475 bytes .../site-packages/numpy/lib/_datasource.py | 789 + .../site-packages/numpy/lib/_datasource.pyc | Bin 0 -> 25339 bytes .../site-packages/numpy/lib/_iotools.py | 953 + .../site-packages/numpy/lib/_iotools.pyc | Bin 0 -> 30125 bytes .../site-packages/numpy/lib/_version.py | 156 + .../site-packages/numpy/lib/_version.pyc | Bin 0 -> 5546 bytes .../site-packages/numpy/lib/arraypad.py | 1384 + .../site-packages/numpy/lib/arraypad.pyc | Bin 0 -> 39522 bytes .../site-packages/numpy/lib/arraysetops.py | 715 + .../site-packages/numpy/lib/arraysetops.pyc | Bin 0 -> 21350 bytes .../site-packages/numpy/lib/arrayterator.py | 225 + .../site-packages/numpy/lib/arrayterator.pyc | Bin 0 -> 7644 bytes .../site-packages/numpy/lib/financial.py | 761 + .../site-packages/numpy/lib/financial.pyc | Bin 0 -> 24567 bytes .../site-packages/numpy/lib/format.py | 839 + .../site-packages/numpy/lib/format.pyc | Bin 0 -> 25726 bytes .../site-packages/numpy/lib/function_base.py | 4528 ++++ .../site-packages/numpy/lib/function_base.pyc | Bin 0 -> 137000 bytes .../site-packages/numpy/lib/histograms.py | 1017 + .../site-packages/numpy/lib/histograms.pyc | Bin 0 -> 31444 bytes .../site-packages/numpy/lib/index_tricks.py | 880 + .../site-packages/numpy/lib/index_tricks.pyc | Bin 0 -> 26778 bytes .../python2.7/site-packages/numpy/lib/info.py | 160 + .../site-packages/numpy/lib/info.pyc | Bin 0 -> 6852 bytes .../site-packages/numpy/lib/mixins.py | 183 + .../site-packages/numpy/lib/mixins.pyc | Bin 0 -> 8577 bytes .../site-packages/numpy/lib/nanfunctions.py | 1550 ++ .../site-packages/numpy/lib/nanfunctions.pyc | Bin 0 -> 54475 bytes .../site-packages/numpy/lib/npyio.py | 2286 ++ .../site-packages/numpy/lib/npyio.pyc | Bin 0 -> 67108 bytes .../site-packages/numpy/lib/polynomial.py | 1297 + .../site-packages/numpy/lib/polynomial.pyc | Bin 0 -> 40404 bytes .../site-packages/numpy/lib/recfunctions.py | 1145 + .../site-packages/numpy/lib/recfunctions.pyc | Bin 0 -> 35292 bytes .../site-packages/numpy/lib/scimath.py | 566 + .../site-packages/numpy/lib/scimath.pyc | Bin 0 -> 15906 bytes .../site-packages/numpy/lib/setup.py | 12 + .../site-packages/numpy/lib/setup.pyc | Bin 0 -> 719 bytes .../site-packages/numpy/lib/shape_base.py | 1157 + .../site-packages/numpy/lib/shape_base.pyc | Bin 0 -> 36146 bytes .../site-packages/numpy/lib/stride_tricks.py | 261 + .../site-packages/numpy/lib/stride_tricks.pyc | Bin 0 -> 8792 bytes .../site-packages/numpy/lib/tests/__init__.py | 0 .../numpy/lib/tests/__init__.pyc | Bin 0 -> 144 bytes .../numpy/lib/tests/data/py2-objarr.npy | Bin 0 -> 258 bytes .../numpy/lib/tests/data/py2-objarr.npz | Bin 0 -> 366 bytes .../numpy/lib/tests/data/py3-objarr.npy | Bin 0 -> 341 bytes .../numpy/lib/tests/data/py3-objarr.npz | Bin 0 -> 449 bytes .../numpy/lib/tests/data/python3.npy | Bin 0 -> 96 bytes .../numpy/lib/tests/data/win64python2.npy | Bin 0 -> 96 bytes .../numpy/lib/tests/test__datasource.py | 363 + .../numpy/lib/tests/test__datasource.pyc | Bin 0 -> 16907 bytes .../numpy/lib/tests/test__iotools.py | 353 + .../numpy/lib/tests/test__iotools.pyc | Bin 0 -> 14396 bytes .../numpy/lib/tests/test__version.py | 66 + .../numpy/lib/tests/test__version.pyc | Bin 0 -> 3342 bytes .../numpy/lib/tests/test_arraypad.py | 1105 + .../numpy/lib/tests/test_arraypad.pyc | Bin 0 -> 59874 bytes .../numpy/lib/tests/test_arraysetops.py | 552 + .../numpy/lib/tests/test_arraysetops.pyc | Bin 0 -> 19873 bytes .../numpy/lib/tests/test_arrayterator.py | 48 + .../numpy/lib/tests/test_arrayterator.pyc | Bin 0 -> 1946 bytes .../numpy/lib/tests/test_financial.py | 340 + .../numpy/lib/tests/test_financial.pyc | Bin 0 -> 15849 bytes .../numpy/lib/tests/test_format.py | 854 + .../numpy/lib/tests/test_format.pyc | Bin 0 -> 17356 bytes .../numpy/lib/tests/test_function_base.py | 3028 +++ .../numpy/lib/tests/test_function_base.pyc | Bin 0 -> 138846 bytes .../numpy/lib/tests/test_histograms.py | 759 + .../numpy/lib/tests/test_histograms.pyc | Bin 0 -> 31445 bytes .../numpy/lib/tests/test_index_tricks.py | 379 + .../numpy/lib/tests/test_index_tricks.pyc | Bin 0 -> 18420 bytes .../site-packages/numpy/lib/tests/test_io.py | 2420 ++ .../site-packages/numpy/lib/tests/test_io.pyc | Bin 0 -> 105672 bytes .../numpy/lib/tests/test_mixins.py | 213 + .../numpy/lib/tests/test_mixins.pyc | Bin 0 -> 8813 bytes .../numpy/lib/tests/test_nanfunctions.py | 927 + .../numpy/lib/tests/test_nanfunctions.pyc | Bin 0 -> 40257 bytes .../numpy/lib/tests/test_packbits.py | 268 + .../numpy/lib/tests/test_packbits.pyc | Bin 0 -> 10771 bytes .../numpy/lib/tests/test_polynomial.py | 245 + .../numpy/lib/tests/test_polynomial.pyc | Bin 0 -> 9607 bytes .../numpy/lib/tests/test_recfunctions.py | 843 + .../numpy/lib/tests/test_recfunctions.pyc | Bin 0 -> 41911 bytes .../numpy/lib/tests/test_regression.py | 254 + .../numpy/lib/tests/test_regression.pyc | Bin 0 -> 13284 bytes .../numpy/lib/tests/test_shape_base.py | 656 + .../numpy/lib/tests/test_shape_base.pyc | Bin 0 -> 32949 bytes .../numpy/lib/tests/test_stride_tricks.py | 433 + .../numpy/lib/tests/test_stride_tricks.pyc | Bin 0 -> 16803 bytes .../numpy/lib/tests/test_twodim_base.py | 510 + .../numpy/lib/tests/test_twodim_base.pyc | Bin 0 -> 20642 bytes .../numpy/lib/tests/test_type_check.py | 442 + .../numpy/lib/tests/test_type_check.pyc | Bin 0 -> 24370 bytes .../numpy/lib/tests/test_ufunclike.py | 97 + .../numpy/lib/tests/test_ufunclike.pyc | Bin 0 -> 4688 bytes .../numpy/lib/tests/test_utils.py | 67 + .../numpy/lib/tests/test_utils.pyc | Bin 0 -> 3379 bytes .../site-packages/numpy/lib/twodim_base.py | 954 + .../site-packages/numpy/lib/twodim_base.pyc | Bin 0 -> 28678 bytes .../site-packages/numpy/lib/type_check.py | 632 + .../site-packages/numpy/lib/type_check.pyc | Bin 0 -> 17863 bytes .../site-packages/numpy/lib/ufunclike.py | 202 + .../site-packages/numpy/lib/ufunclike.pyc | Bin 0 -> 6373 bytes .../site-packages/numpy/lib/user_array.py | 288 + .../site-packages/numpy/lib/user_array.pyc | Bin 0 -> 15058 bytes .../site-packages/numpy/lib/utils.py | 1162 + .../site-packages/numpy/lib/utils.pyc | Bin 0 -> 31785 bytes .../site-packages/numpy/linalg/__init__.py | 55 + .../site-packages/numpy/linalg/__init__.pyc | Bin 0 -> 2578 bytes .../numpy/linalg/_umath_linalg.so | Bin 0 -> 192176 bytes .../site-packages/numpy/linalg/info.py | 37 + .../site-packages/numpy/linalg/info.pyc | Bin 0 -> 1418 bytes .../site-packages/numpy/linalg/lapack_lite.so | Bin 0 -> 26912 bytes .../site-packages/numpy/linalg/linalg.py | 2624 ++ .../site-packages/numpy/linalg/linalg.pyc | Bin 0 -> 82304 bytes .../site-packages/numpy/linalg/setup.py | 60 + .../site-packages/numpy/linalg/setup.pyc | Bin 0 -> 2062 bytes .../numpy/linalg/tests/__init__.py | 0 .../numpy/linalg/tests/__init__.pyc | Bin 0 -> 147 bytes .../numpy/linalg/tests/test_build.py | 55 + .../numpy/linalg/tests/test_build.pyc | Bin 0 -> 2868 bytes .../numpy/linalg/tests/test_deprecations.py | 22 + .../numpy/linalg/tests/test_deprecations.pyc | Bin 0 -> 1076 bytes .../numpy/linalg/tests/test_linalg.py | 1900 ++ .../numpy/linalg/tests/test_linalg.pyc | Bin 0 -> 75779 bytes .../numpy/linalg/tests/test_regression.py | 150 + .../numpy/linalg/tests/test_regression.pyc | Bin 0 -> 6250 bytes .../site-packages/numpy/ma/__init__.py | 56 + .../site-packages/numpy/ma/__init__.pyc | Bin 0 -> 1736 bytes .../python2.7/site-packages/numpy/ma/bench.py | 133 + .../site-packages/numpy/ma/bench.pyc | Bin 0 -> 4783 bytes .../python2.7/site-packages/numpy/ma/core.py | 8131 ++++++ .../python2.7/site-packages/numpy/ma/core.pyc | Bin 0 -> 231942 bytes .../site-packages/numpy/ma/extras.py | 1901 ++ .../site-packages/numpy/ma/extras.pyc | Bin 0 -> 56047 bytes .../site-packages/numpy/ma/mrecords.py | 796 + .../site-packages/numpy/ma/mrecords.pyc | Bin 0 -> 23704 bytes .../python2.7/site-packages/numpy/ma/setup.py | 13 + .../site-packages/numpy/ma/setup.pyc | Bin 0 -> 752 bytes .../site-packages/numpy/ma/tests/__init__.py | 0 .../site-packages/numpy/ma/tests/__init__.pyc | Bin 0 -> 143 bytes .../site-packages/numpy/ma/tests/test_core.py | 5019 ++++ .../numpy/ma/tests/test_core.pyc | Bin 0 -> 191882 bytes .../numpy/ma/tests/test_deprecations.py | 70 + .../numpy/ma/tests/test_deprecations.pyc | Bin 0 -> 3439 bytes .../numpy/ma/tests/test_extras.py | 1679 ++ .../numpy/ma/tests/test_extras.pyc | Bin 0 -> 65686 bytes .../numpy/ma/tests/test_mrecords.py | 496 + .../numpy/ma/tests/test_mrecords.pyc | Bin 0 -> 19905 bytes .../numpy/ma/tests/test_old_ma.py | 860 + .../numpy/ma/tests/test_old_ma.pyc | Bin 0 -> 36205 bytes .../numpy/ma/tests/test_regression.py | 86 + .../numpy/ma/tests/test_regression.pyc | Bin 0 -> 4820 bytes .../numpy/ma/tests/test_subclassing.py | 351 + .../numpy/ma/tests/test_subclassing.pyc | Bin 0 -> 15175 bytes .../site-packages/numpy/ma/testutils.py | 290 + .../site-packages/numpy/ma/testutils.pyc | Bin 0 -> 10375 bytes .../numpy/ma/timer_comparison.py | 440 + .../numpy/ma/timer_comparison.pyc | Bin 0 -> 14604 bytes .../site-packages/numpy/ma/version.py | 14 + .../site-packages/numpy/ma/version.pyc | Bin 0 -> 666 bytes .../python2.7/site-packages/numpy/matlib.py | 363 + .../python2.7/site-packages/numpy/matlib.pyc | Bin 0 -> 10936 bytes .../site-packages/numpy/matrixlib/__init__.py | 12 + .../numpy/matrixlib/__init__.pyc | Bin 0 -> 544 bytes .../numpy/matrixlib/defmatrix.py | 1103 + .../numpy/matrixlib/defmatrix.pyc | Bin 0 -> 33063 bytes .../site-packages/numpy/matrixlib/setup.py | 15 + .../site-packages/numpy/matrixlib/setup.pyc | Bin 0 -> 794 bytes .../numpy/matrixlib/tests/__init__.py | 0 .../numpy/matrixlib/tests/__init__.pyc | Bin 0 -> 150 bytes .../numpy/matrixlib/tests/test_defmatrix.py | 468 + .../numpy/matrixlib/tests/test_defmatrix.pyc | Bin 0 -> 23095 bytes .../numpy/matrixlib/tests/test_interaction.py | 369 + .../matrixlib/tests/test_interaction.pyc | Bin 0 -> 14152 bytes .../matrixlib/tests/test_masked_matrix.py | 239 + .../matrixlib/tests/test_masked_matrix.pyc | Bin 0 -> 11533 bytes .../matrixlib/tests/test_matrix_linalg.py | 103 + .../matrixlib/tests/test_matrix_linalg.pyc | Bin 0 -> 4965 bytes .../numpy/matrixlib/tests/test_multiarray.py | 26 + .../numpy/matrixlib/tests/test_multiarray.pyc | Bin 0 -> 1626 bytes .../numpy/matrixlib/tests/test_numeric.py | 27 + .../numpy/matrixlib/tests/test_numeric.pyc | Bin 0 -> 1522 bytes .../numpy/matrixlib/tests/test_regression.py | 41 + .../numpy/matrixlib/tests/test_regression.pyc | Bin 0 -> 2475 bytes .../numpy/polynomial/__init__.py | 27 + .../numpy/polynomial/__init__.pyc | Bin 0 -> 1527 bytes .../numpy/polynomial/_polybase.py | 959 + .../numpy/polynomial/_polybase.pyc | Bin 0 -> 35371 bytes .../numpy/polynomial/chebyshev.py | 2190 ++ .../numpy/polynomial/chebyshev.pyc | Bin 0 -> 70604 bytes .../site-packages/numpy/polynomial/hermite.py | 1853 ++ .../numpy/polynomial/hermite.pyc | Bin 0 -> 60272 bytes .../numpy/polynomial/hermite_e.py | 1850 ++ .../numpy/polynomial/hermite_e.pyc | Bin 0 -> 60330 bytes .../numpy/polynomial/laguerre.py | 1803 ++ .../numpy/polynomial/laguerre.pyc | Bin 0 -> 58503 bytes .../numpy/polynomial/legendre.py | 1833 ++ .../numpy/polynomial/legendre.pyc | Bin 0 -> 59453 bytes .../numpy/polynomial/polynomial.py | 1645 ++ .../numpy/polynomial/polynomial.pyc | Bin 0 -> 54711 bytes .../numpy/polynomial/polyutils.py | 412 + .../numpy/polynomial/polyutils.pyc | Bin 0 -> 13035 bytes .../site-packages/numpy/polynomial/setup.py | 11 + .../site-packages/numpy/polynomial/setup.pyc | Bin 0 -> 740 bytes .../numpy/polynomial/tests/__init__.py | 0 .../numpy/polynomial/tests/__init__.pyc | Bin 0 -> 151 bytes .../numpy/polynomial/tests/test_chebyshev.py | 610 + .../numpy/polynomial/tests/test_chebyshev.pyc | Bin 0 -> 25533 bytes .../numpy/polynomial/tests/test_classes.py | 592 + .../numpy/polynomial/tests/test_classes.pyc | Bin 0 -> 21164 bytes .../numpy/polynomial/tests/test_hermite.py | 546 + .../numpy/polynomial/tests/test_hermite.pyc | Bin 0 -> 22080 bytes .../numpy/polynomial/tests/test_hermite_e.py | 547 + .../numpy/polynomial/tests/test_hermite_e.pyc | Bin 0 -> 22173 bytes .../numpy/polynomial/tests/test_laguerre.py | 528 + .../numpy/polynomial/tests/test_laguerre.pyc | Bin 0 -> 21437 bytes .../numpy/polynomial/tests/test_legendre.py | 547 + .../numpy/polynomial/tests/test_legendre.pyc | Bin 0 -> 22073 bytes .../numpy/polynomial/tests/test_polynomial.py | 567 + .../polynomial/tests/test_polynomial.pyc | Bin 0 -> 21633 bytes .../numpy/polynomial/tests/test_polyutils.py | 108 + .../numpy/polynomial/tests/test_polyutils.pyc | Bin 0 -> 4284 bytes .../numpy/polynomial/tests/test_printing.py | 68 + .../numpy/polynomial/tests/test_printing.pyc | Bin 0 -> 4544 bytes .../site-packages/numpy/random/__init__.py | 122 + .../site-packages/numpy/random/__init__.pyc | Bin 0 -> 5920 bytes .../site-packages/numpy/random/info.py | 139 + .../site-packages/numpy/random/info.pyc | Bin 0 -> 5518 bytes .../site-packages/numpy/random/mtrand.so | Bin 0 -> 920456 bytes .../site-packages/numpy/random/randomkit.h | 226 + .../site-packages/numpy/random/setup.py | 67 + .../site-packages/numpy/random/setup.pyc | Bin 0 -> 2500 bytes .../numpy/random/tests/__init__.py | 0 .../numpy/random/tests/__init__.pyc | Bin 0 -> 147 bytes .../numpy/random/tests/test_random.py | 1636 ++ .../numpy/random/tests/test_random.pyc | Bin 0 -> 67012 bytes .../numpy/random/tests/test_regression.py | 135 + .../numpy/random/tests/test_regression.pyc | Bin 0 -> 6024 bytes .../python2.7/site-packages/numpy/setup.py | 28 + .../python2.7/site-packages/numpy/setup.pyc | Bin 0 -> 1092 bytes .../site-packages/numpy/testing/__init__.py | 22 + .../site-packages/numpy/testing/__init__.pyc | Bin 0 -> 942 bytes .../numpy/testing/_private/__init__.py | 0 .../numpy/testing/_private/__init__.pyc | Bin 0 -> 151 bytes .../numpy/testing/_private/decorators.py | 292 + .../numpy/testing/_private/decorators.pyc | Bin 0 -> 10481 bytes .../numpy/testing/_private/noseclasses.py | 366 + .../numpy/testing/_private/noseclasses.pyc | Bin 0 -> 12347 bytes .../numpy/testing/_private/nosetester.py | 560 + .../numpy/testing/_private/nosetester.pyc | Bin 0 -> 17245 bytes .../numpy/testing/_private/parameterized.py | 490 + .../numpy/testing/_private/parameterized.pyc | Bin 0 -> 19314 bytes .../numpy/testing/_private/pytesttester.py | 194 + .../numpy/testing/_private/pytesttester.pyc | Bin 0 -> 5858 bytes .../numpy/testing/_private/utils.py | 2282 ++ .../numpy/testing/_private/utils.pyc | Bin 0 -> 72709 bytes .../site-packages/numpy/testing/decorators.py | 15 + .../numpy/testing/decorators.pyc | Bin 0 -> 624 bytes .../numpy/testing/noseclasses.py | 14 + .../numpy/testing/noseclasses.pyc | Bin 0 -> 626 bytes .../site-packages/numpy/testing/nosetester.py | 19 + .../numpy/testing/nosetester.pyc | Bin 0 -> 782 bytes .../numpy/testing/print_coercion_tables.py | 91 + .../numpy/testing/print_coercion_tables.pyc | Bin 0 -> 3220 bytes .../site-packages/numpy/testing/setup.py | 21 + .../site-packages/numpy/testing/setup.pyc | Bin 0 -> 1012 bytes .../numpy/testing/tests/__init__.py | 0 .../numpy/testing/tests/__init__.pyc | Bin 0 -> 148 bytes .../numpy/testing/tests/test_decorators.py | 216 + .../numpy/testing/tests/test_decorators.pyc | Bin 0 -> 8832 bytes .../numpy/testing/tests/test_doctesting.py | 59 + .../numpy/testing/tests/test_doctesting.pyc | Bin 0 -> 2128 bytes .../numpy/testing/tests/test_utils.py | 1444 + .../numpy/testing/tests/test_utils.pyc | Bin 0 -> 64219 bytes .../site-packages/numpy/testing/utils.py | 29 + .../site-packages/numpy/testing/utils.pyc | Bin 0 -> 1515 bytes .../site-packages/numpy/tests/__init__.py | 0 .../site-packages/numpy/tests/__init__.pyc | Bin 0 -> 140 bytes .../numpy/tests/test_ctypeslib.py | 172 + .../numpy/tests/test_ctypeslib.pyc | Bin 0 -> 7835 bytes .../site-packages/numpy/tests/test_matlib.py | 68 + .../site-packages/numpy/tests/test_matlib.pyc | Bin 0 -> 3364 bytes .../numpy/tests/test_numpy_version.py | 19 + .../numpy/tests/test_numpy_version.pyc | Bin 0 -> 866 bytes .../numpy/tests/test_reloading.py | 36 + .../numpy/tests/test_reloading.pyc | Bin 0 -> 1471 bytes .../site-packages/numpy/tests/test_scripts.py | 93 + .../numpy/tests/test_scripts.pyc | Bin 0 -> 3375 bytes .../numpy/tests/test_warnings.py | 78 + .../numpy/tests/test_warnings.pyc | Bin 0 -> 3652 bytes .../python2.7/site-packages/numpy/version.py | 12 + .../python2.7/site-packages/numpy/version.pyc | Bin 0 -> 331 bytes .../pathlib2-2.3.2.dist-info/DESCRIPTION.rst | 47 + .../pathlib2-2.3.2.dist-info/INSTALLER | 1 + .../pathlib2-2.3.2.dist-info/METADATA | 76 + .../pathlib2-2.3.2.dist-info/RECORD | 9 + .../pathlib2-2.3.2.dist-info/WHEEL | 6 + .../pathlib2-2.3.2.dist-info/metadata.json | 1 + .../pathlib2-2.3.2.dist-info/top_level.txt | 1 + .../site-packages/pathlib2/__init__.py | 1670 ++ .../site-packages/pathlib2/__init__.pyc | Bin 0 -> 57146 bytes .../pip-18.1.dist-info/INSTALLER | 1 + .../pip-18.1.dist-info/LICENSE.txt | 20 + .../site-packages/pip-18.1.dist-info/METADATA | 70 + .../site-packages/pip-18.1.dist-info/RECORD | 614 + .../site-packages/pip-18.1.dist-info/WHEEL | 6 + .../pip-18.1.dist-info/entry_points.txt | 5 + .../pip-18.1.dist-info/top_level.txt | 1 + .../python2.7/site-packages/pip/__init__.py | 1 + .../python2.7/site-packages/pip/__init__.pyc | Bin 0 -> 159 bytes .../python2.7/site-packages/pip/__main__.py | 19 + .../python2.7/site-packages/pip/__main__.pyc | Bin 0 -> 508 bytes .../site-packages/pip/_internal/__init__.py | 78 + .../site-packages/pip/_internal/__init__.pyc | Bin 0 -> 2190 bytes .../site-packages/pip/_internal/build_env.py | 142 + .../site-packages/pip/_internal/build_env.pyc | Bin 0 -> 6199 bytes .../site-packages/pip/_internal/cache.py | 202 + .../site-packages/pip/_internal/cache.pyc | Bin 0 -> 8002 bytes .../pip/_internal/cli/__init__.py | 4 + .../pip/_internal/cli/__init__.pyc | Bin 0 -> 236 bytes .../pip/_internal/cli/autocompletion.py | 152 + .../pip/_internal/cli/autocompletion.pyc | Bin 0 -> 5456 bytes .../pip/_internal/cli/base_command.py | 278 + .../pip/_internal/cli/base_command.pyc | Bin 0 -> 7778 bytes .../pip/_internal/cli/cmdoptions.py | 714 + .../pip/_internal/cli/cmdoptions.pyc | Bin 0 -> 17866 bytes .../pip/_internal/cli/main_parser.py | 96 + .../pip/_internal/cli/main_parser.pyc | Bin 0 -> 2650 bytes .../site-packages/pip/_internal/cli/parser.py | 261 + .../pip/_internal/cli/parser.pyc | Bin 0 -> 10216 bytes .../pip/_internal/cli/status_codes.py | 8 + .../pip/_internal/cli/status_codes.pyc | Bin 0 -> 400 bytes .../pip/_internal/commands/__init__.py | 79 + .../pip/_internal/commands/__init__.pyc | Bin 0 -> 3151 bytes .../pip/_internal/commands/check.py | 41 + .../pip/_internal/commands/check.pyc | Bin 0 -> 1533 bytes .../pip/_internal/commands/completion.py | 94 + .../pip/_internal/commands/completion.pyc | Bin 0 -> 3361 bytes .../pip/_internal/commands/configuration.py | 227 + .../pip/_internal/commands/configuration.pyc | Bin 0 -> 7467 bytes .../pip/_internal/commands/download.py | 174 + .../pip/_internal/commands/download.pyc | Bin 0 -> 5401 bytes .../pip/_internal/commands/freeze.py | 96 + .../pip/_internal/commands/freeze.pyc | Bin 0 -> 3461 bytes .../pip/_internal/commands/hash.py | 57 + .../pip/_internal/commands/hash.pyc | Bin 0 -> 2513 bytes .../pip/_internal/commands/help.py | 37 + .../pip/_internal/commands/help.pyc | Bin 0 -> 1489 bytes .../pip/_internal/commands/install.py | 535 + .../pip/_internal/commands/install.pyc | Bin 0 -> 14074 bytes .../pip/_internal/commands/list.py | 306 + .../pip/_internal/commands/list.pyc | Bin 0 -> 10238 bytes .../pip/_internal/commands/search.py | 135 + .../pip/_internal/commands/search.pyc | Bin 0 -> 5089 bytes .../pip/_internal/commands/show.py | 168 + .../pip/_internal/commands/show.pyc | Bin 0 -> 6091 bytes .../pip/_internal/commands/uninstall.py | 78 + .../pip/_internal/commands/uninstall.pyc | Bin 0 -> 3128 bytes .../pip/_internal/commands/wheel.py | 183 + .../pip/_internal/commands/wheel.pyc | Bin 0 -> 5801 bytes .../pip/_internal/configuration.py | 387 + .../pip/_internal/configuration.pyc | Bin 0 -> 11871 bytes .../site-packages/pip/_internal/download.py | 921 + .../site-packages/pip/_internal/download.pyc | Bin 0 -> 26033 bytes .../site-packages/pip/_internal/exceptions.py | 268 + .../pip/_internal/exceptions.pyc | Bin 0 -> 13775 bytes .../site-packages/pip/_internal/index.py | 899 + .../site-packages/pip/_internal/index.pyc | Bin 0 -> 26567 bytes .../site-packages/pip/_internal/locations.py | 194 + .../site-packages/pip/_internal/locations.pyc | Bin 0 -> 5157 bytes .../pip/_internal/models/__init__.py | 2 + .../pip/_internal/models/__init__.pyc | Bin 0 -> 224 bytes .../pip/_internal/models/candidate.py | 23 + .../pip/_internal/models/candidate.pyc | Bin 0 -> 1241 bytes .../pip/_internal/models/format_control.py | 62 + .../pip/_internal/models/format_control.pyc | Bin 0 -> 3011 bytes .../pip/_internal/models/index.py | 29 + .../pip/_internal/models/index.pyc | Bin 0 -> 1339 bytes .../pip/_internal/models/link.py | 141 + .../pip/_internal/models/link.pyc | Bin 0 -> 6059 bytes .../pip/_internal/operations/__init__.py | 0 .../pip/_internal/operations/__init__.pyc | Bin 0 -> 149 bytes .../pip/_internal/operations/check.py | 148 + .../pip/_internal/operations/check.pyc | Bin 0 -> 4262 bytes .../pip/_internal/operations/freeze.py | 264 + .../pip/_internal/operations/freeze.pyc | Bin 0 -> 7940 bytes .../pip/_internal/operations/prepare.py | 355 + .../pip/_internal/operations/prepare.pyc | Bin 0 -> 11001 bytes .../site-packages/pip/_internal/pep425tags.py | 317 + .../pip/_internal/pep425tags.pyc | Bin 0 -> 9407 bytes .../site-packages/pip/_internal/pyproject.py | 144 + .../site-packages/pip/_internal/pyproject.pyc | Bin 0 -> 3179 bytes .../pip/_internal/req/__init__.py | 69 + .../pip/_internal/req/__init__.pyc | Bin 0 -> 1690 bytes .../pip/_internal/req/constructors.py | 298 + .../pip/_internal/req/constructors.pyc | Bin 0 -> 8420 bytes .../pip/_internal/req/req_file.py | 340 + .../pip/_internal/req/req_file.pyc | Bin 0 -> 10388 bytes .../pip/_internal/req/req_install.py | 860 + .../pip/_internal/req/req_install.pyc | Bin 0 -> 27254 bytes .../pip/_internal/req/req_set.py | 181 + .../pip/_internal/req/req_set.pyc | Bin 0 -> 6312 bytes .../pip/_internal/req/req_tracker.py | 76 + .../pip/_internal/req/req_tracker.pyc | Bin 0 -> 3608 bytes .../pip/_internal/req/req_uninstall.py | 460 + .../pip/_internal/req/req_uninstall.pyc | Bin 0 -> 15799 bytes .../site-packages/pip/_internal/resolve.py | 353 + .../site-packages/pip/_internal/resolve.pyc | Bin 0 -> 9763 bytes .../pip/_internal/utils/__init__.py | 0 .../pip/_internal/utils/__init__.pyc | Bin 0 -> 144 bytes .../pip/_internal/utils/appdirs.py | 258 + .../pip/_internal/utils/appdirs.pyc | Bin 0 -> 8821 bytes .../pip/_internal/utils/compat.py | 248 + .../pip/_internal/utils/compat.pyc | Bin 0 -> 7577 bytes .../pip/_internal/utils/deprecation.py | 89 + .../pip/_internal/utils/deprecation.pyc | Bin 0 -> 3098 bytes .../pip/_internal/utils/encoding.py | 33 + .../pip/_internal/utils/encoding.pyc | Bin 0 -> 1352 bytes .../pip/_internal/utils/filesystem.py | 28 + .../pip/_internal/utils/filesystem.pyc | Bin 0 -> 802 bytes .../pip/_internal/utils/glibc.py | 84 + .../pip/_internal/utils/glibc.pyc | Bin 0 -> 1970 bytes .../pip/_internal/utils/hashes.py | 94 + .../pip/_internal/utils/hashes.pyc | Bin 0 -> 4022 bytes .../pip/_internal/utils/logging.py | 225 + .../pip/_internal/utils/logging.pyc | Bin 0 -> 6639 bytes .../site-packages/pip/_internal/utils/misc.py | 940 + .../pip/_internal/utils/misc.pyc | Bin 0 -> 29868 bytes .../pip/_internal/utils/models.py | 40 + .../pip/_internal/utils/models.pyc | Bin 0 -> 2356 bytes .../pip/_internal/utils/outdated.py | 154 + .../pip/_internal/utils/outdated.pyc | Bin 0 -> 4845 bytes .../pip/_internal/utils/packaging.py | 75 + .../pip/_internal/utils/packaging.pyc | Bin 0 -> 2941 bytes .../pip/_internal/utils/setuptools_build.py | 8 + .../pip/_internal/utils/setuptools_build.pyc | Bin 0 -> 350 bytes .../pip/_internal/utils/temp_dir.py | 82 + .../pip/_internal/utils/temp_dir.pyc | Bin 0 -> 3299 bytes .../pip/_internal/utils/typing.py | 29 + .../pip/_internal/utils/typing.pyc | Bin 0 -> 1310 bytes .../site-packages/pip/_internal/utils/ui.py | 421 + .../site-packages/pip/_internal/utils/ui.pyc | Bin 0 -> 14748 bytes .../pip/_internal/vcs/__init__.py | 509 + .../pip/_internal/vcs/__init__.pyc | Bin 0 -> 18355 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 112 + .../pip/_internal/vcs/bazaar.pyc | Bin 0 -> 4944 bytes .../site-packages/pip/_internal/vcs/git.py | 346 + .../site-packages/pip/_internal/vcs/git.pyc | Bin 0 -> 11434 bytes .../pip/_internal/vcs/mercurial.py | 101 + .../pip/_internal/vcs/mercurial.pyc | Bin 0 -> 4816 bytes .../pip/_internal/vcs/subversion.py | 213 + .../pip/_internal/vcs/subversion.pyc | Bin 0 -> 7633 bytes .../site-packages/pip/_internal/wheel.py | 831 + .../site-packages/pip/_internal/wheel.pyc | Bin 0 -> 24253 bytes .../site-packages/pip/_vendor/__init__.py | 110 + .../site-packages/pip/_vendor/__init__.pyc | Bin 0 -> 3280 bytes .../site-packages/pip/_vendor/appdirs.py | 604 + .../site-packages/pip/_vendor/appdirs.pyc | Bin 0 -> 22727 bytes .../pip/_vendor/cachecontrol/__init__.py | 11 + .../pip/_vendor/cachecontrol/__init__.pyc | Bin 0 -> 576 bytes .../pip/_vendor/cachecontrol/_cmd.py | 57 + .../pip/_vendor/cachecontrol/_cmd.pyc | Bin 0 -> 2018 bytes .../pip/_vendor/cachecontrol/adapter.py | 133 + .../pip/_vendor/cachecontrol/adapter.pyc | Bin 0 -> 3664 bytes .../pip/_vendor/cachecontrol/cache.py | 39 + .../pip/_vendor/cachecontrol/cache.pyc | Bin 0 -> 2329 bytes .../_vendor/cachecontrol/caches/__init__.py | 2 + .../_vendor/cachecontrol/caches/__init__.pyc | Bin 0 -> 275 bytes .../_vendor/cachecontrol/caches/file_cache.py | 146 + .../cachecontrol/caches/file_cache.pyc | Bin 0 -> 4215 bytes .../cachecontrol/caches/redis_cache.py | 33 + .../cachecontrol/caches/redis_cache.pyc | Bin 0 -> 2068 bytes .../pip/_vendor/cachecontrol/compat.py | 29 + .../pip/_vendor/cachecontrol/compat.pyc | Bin 0 -> 795 bytes .../pip/_vendor/cachecontrol/controller.py | 367 + .../pip/_vendor/cachecontrol/controller.pyc | Bin 0 -> 9473 bytes .../pip/_vendor/cachecontrol/filewrapper.py | 80 + .../pip/_vendor/cachecontrol/filewrapper.pyc | Bin 0 -> 2611 bytes .../pip/_vendor/cachecontrol/heuristics.py | 135 + .../pip/_vendor/cachecontrol/heuristics.pyc | Bin 0 -> 5809 bytes .../pip/_vendor/cachecontrol/serialize.py | 186 + .../pip/_vendor/cachecontrol/serialize.pyc | Bin 0 -> 5601 bytes .../pip/_vendor/cachecontrol/wrapper.py | 29 + .../pip/_vendor/cachecontrol/wrapper.pyc | Bin 0 -> 798 bytes .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__init__.pyc | Bin 0 -> 258 bytes .../pip/_vendor/certifi/__main__.py | 2 + .../pip/_vendor/certifi/__main__.pyc | Bin 0 -> 219 bytes .../pip/_vendor/certifi/cacert.pem | 4300 +++ .../site-packages/pip/_vendor/certifi/core.py | 37 + .../pip/_vendor/certifi/core.pyc | Bin 0 -> 1395 bytes .../pip/_vendor/chardet/__init__.py | 39 + .../pip/_vendor/chardet/__init__.pyc | Bin 0 -> 980 bytes .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5freq.pyc | Bin 0 -> 54694 bytes .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/big5prober.pyc | Bin 0 -> 1322 bytes .../pip/_vendor/chardet/chardistribution.py | 233 + .../pip/_vendor/chardet/chardistribution.pyc | Bin 0 -> 7669 bytes .../pip/_vendor/chardet/charsetgroupprober.py | 106 + .../_vendor/chardet/charsetgroupprober.pyc | Bin 0 -> 2817 bytes .../pip/_vendor/chardet/charsetprober.py | 145 + .../pip/_vendor/chardet/charsetprober.pyc | Bin 0 -> 4072 bytes .../pip/_vendor/chardet/cli/__init__.py | 1 + .../pip/_vendor/chardet/cli/__init__.pyc | Bin 0 -> 148 bytes .../pip/_vendor/chardet/cli/chardetect.py | 85 + .../pip/_vendor/chardet/cli/chardetect.pyc | Bin 0 -> 3169 bytes .../pip/_vendor/chardet/codingstatemachine.py | 88 + .../_vendor/chardet/codingstatemachine.pyc | Bin 0 -> 3304 bytes .../pip/_vendor/chardet/compat.py | 34 + .../pip/_vendor/chardet/compat.pyc | Bin 0 -> 397 bytes .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/cp949prober.pyc | Bin 0 -> 1330 bytes .../pip/_vendor/chardet/enums.py | 76 + .../pip/_vendor/chardet/enums.pyc | Bin 0 -> 3073 bytes .../pip/_vendor/chardet/escprober.py | 101 + .../pip/_vendor/chardet/escprober.pyc | Bin 0 -> 3175 bytes .../pip/_vendor/chardet/escsm.py | 246 + .../pip/_vendor/chardet/escsm.pyc | Bin 0 -> 8008 bytes .../pip/_vendor/chardet/eucjpprober.py | 92 + .../pip/_vendor/chardet/eucjpprober.pyc | Bin 0 -> 2990 bytes .../pip/_vendor/chardet/euckrfreq.py | 195 + .../pip/_vendor/chardet/euckrfreq.pyc | Bin 0 -> 24080 bytes .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euckrprober.pyc | Bin 0 -> 1331 bytes .../pip/_vendor/chardet/euctwfreq.py | 387 + .../pip/_vendor/chardet/euctwfreq.pyc | Bin 0 -> 54703 bytes .../pip/_vendor/chardet/euctwprober.py | 46 + .../pip/_vendor/chardet/euctwprober.pyc | Bin 0 -> 1331 bytes .../pip/_vendor/chardet/gb2312freq.py | 283 + .../pip/_vendor/chardet/gb2312freq.pyc | Bin 0 -> 38345 bytes .../pip/_vendor/chardet/gb2312prober.py | 46 + .../pip/_vendor/chardet/gb2312prober.pyc | Bin 0 -> 1340 bytes .../pip/_vendor/chardet/hebrewprober.py | 292 + .../pip/_vendor/chardet/hebrewprober.pyc | Bin 0 -> 3737 bytes .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/jisfreq.pyc | Bin 0 -> 44489 bytes .../pip/_vendor/chardet/jpcntx.py | 233 + .../pip/_vendor/chardet/jpcntx.pyc | Bin 0 -> 25232 bytes .../pip/_vendor/chardet/langbulgarianmodel.py | 228 + .../_vendor/chardet/langbulgarianmodel.pyc | Bin 0 -> 24957 bytes .../pip/_vendor/chardet/langcyrillicmodel.py | 333 + .../pip/_vendor/chardet/langcyrillicmodel.pyc | Bin 0 -> 30677 bytes .../pip/_vendor/chardet/langgreekmodel.py | 225 + .../pip/_vendor/chardet/langgreekmodel.pyc | Bin 0 -> 24632 bytes .../pip/_vendor/chardet/langhebrewmodel.py | 200 + .../pip/_vendor/chardet/langhebrewmodel.pyc | Bin 0 -> 23443 bytes .../pip/_vendor/chardet/langhungarianmodel.py | 225 + .../_vendor/chardet/langhungarianmodel.pyc | Bin 0 -> 24927 bytes .../pip/_vendor/chardet/langthaimodel.py | 199 + .../pip/_vendor/chardet/langthaimodel.pyc | Bin 0 -> 23422 bytes .../pip/_vendor/chardet/langturkishmodel.py | 193 + .../pip/_vendor/chardet/langturkishmodel.pyc | Bin 0 -> 23439 bytes .../pip/_vendor/chardet/latin1prober.py | 145 + .../pip/_vendor/chardet/latin1prober.pyc | Bin 0 -> 3685 bytes .../pip/_vendor/chardet/mbcharsetprober.py | 91 + .../pip/_vendor/chardet/mbcharsetprober.pyc | Bin 0 -> 2739 bytes .../pip/_vendor/chardet/mbcsgroupprober.py | 54 + .../pip/_vendor/chardet/mbcsgroupprober.pyc | Bin 0 -> 1315 bytes .../pip/_vendor/chardet/mbcssm.py | 572 + .../pip/_vendor/chardet/mbcssm.pyc | Bin 0 -> 19114 bytes .../pip/_vendor/chardet/sbcharsetprober.py | 132 + .../pip/_vendor/chardet/sbcharsetprober.pyc | Bin 0 -> 3618 bytes .../pip/_vendor/chardet/sbcsgroupprober.py | 73 + .../pip/_vendor/chardet/sbcsgroupprober.pyc | Bin 0 -> 1908 bytes .../pip/_vendor/chardet/sjisprober.py | 92 + .../pip/_vendor/chardet/sjisprober.pyc | Bin 0 -> 3011 bytes .../pip/_vendor/chardet/universaldetector.py | 286 + .../pip/_vendor/chardet/universaldetector.pyc | Bin 0 -> 7079 bytes .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/utf8prober.pyc | Bin 0 -> 2460 bytes .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/chardet/version.pyc | Bin 0 -> 424 bytes .../pip/_vendor/colorama/__init__.py | 7 + .../pip/_vendor/colorama/__init__.pyc | Bin 0 -> 476 bytes .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansi.pyc | Bin 0 -> 4320 bytes .../pip/_vendor/colorama/ansitowin32.py | 236 + .../pip/_vendor/colorama/ansitowin32.pyc | Bin 0 -> 9206 bytes .../pip/_vendor/colorama/initialise.py | 82 + .../pip/_vendor/colorama/initialise.pyc | Bin 0 -> 2305 bytes .../pip/_vendor/colorama/win32.py | 156 + .../pip/_vendor/colorama/win32.pyc | Bin 0 -> 5133 bytes .../pip/_vendor/colorama/winterm.py | 162 + .../pip/_vendor/colorama/winterm.pyc | Bin 0 -> 5930 bytes .../pip/_vendor/distlib/__init__.py | 23 + .../pip/_vendor/distlib/__init__.pyc | Bin 0 -> 1299 bytes .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../_vendor/distlib/_backport/__init__.pyc | Bin 0 -> 444 bytes .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/misc.pyc | Bin 0 -> 1400 bytes .../pip/_vendor/distlib/_backport/shutil.py | 761 + .../pip/_vendor/distlib/_backport/shutil.pyc | Bin 0 -> 26167 bytes .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 788 + .../_vendor/distlib/_backport/sysconfig.pyc | Bin 0 -> 20585 bytes .../pip/_vendor/distlib/_backport/tarfile.py | 2607 ++ .../pip/_vendor/distlib/_backport/tarfile.pyc | Bin 0 -> 78627 bytes .../pip/_vendor/distlib/compat.py | 1120 + .../pip/_vendor/distlib/compat.pyc | Bin 0 -> 39126 bytes .../pip/_vendor/distlib/database.py | 1336 + .../pip/_vendor/distlib/database.pyc | Bin 0 -> 49362 bytes .../pip/_vendor/distlib/index.py | 516 + .../pip/_vendor/distlib/index.pyc | Bin 0 -> 19907 bytes .../pip/_vendor/distlib/locators.py | 1292 + .../pip/_vendor/distlib/locators.pyc | Bin 0 -> 45667 bytes .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/manifest.pyc | Bin 0 -> 12042 bytes .../pip/_vendor/distlib/markers.py | 131 + .../pip/_vendor/distlib/markers.pyc | Bin 0 -> 6086 bytes .../pip/_vendor/distlib/metadata.py | 1091 + .../pip/_vendor/distlib/metadata.pyc | Bin 0 -> 35518 bytes .../pip/_vendor/distlib/resources.py | 355 + .../pip/_vendor/distlib/resources.pyc | Bin 0 -> 13682 bytes .../pip/_vendor/distlib/scripts.py | 415 + .../pip/_vendor/distlib/scripts.pyc | Bin 0 -> 13446 bytes .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 92672 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 102400 bytes .../site-packages/pip/_vendor/distlib/util.py | 1755 ++ .../pip/_vendor/distlib/util.pyc | Bin 0 -> 60201 bytes .../pip/_vendor/distlib/version.py | 736 + .../pip/_vendor/distlib/version.pyc | Bin 0 -> 25625 bytes .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 89088 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 99328 bytes .../pip/_vendor/distlib/wheel.py | 984 + .../pip/_vendor/distlib/wheel.pyc | Bin 0 -> 31046 bytes .../site-packages/pip/_vendor/distro.py | 1197 + .../site-packages/pip/_vendor/distro.pyc | Bin 0 -> 39617 bytes .../pip/_vendor/html5lib/__init__.py | 35 + .../pip/_vendor/html5lib/__init__.pyc | Bin 0 -> 1441 bytes .../pip/_vendor/html5lib/_ihatexml.py | 288 + .../pip/_vendor/html5lib/_ihatexml.pyc | Bin 0 -> 15414 bytes .../pip/_vendor/html5lib/_inputstream.py | 923 + .../pip/_vendor/html5lib/_inputstream.pyc | Bin 0 -> 27390 bytes .../pip/_vendor/html5lib/_tokenizer.py | 1721 ++ .../pip/_vendor/html5lib/_tokenizer.pyc | Bin 0 -> 53345 bytes .../pip/_vendor/html5lib/_trie/__init__.py | 14 + .../pip/_vendor/html5lib/_trie/__init__.pyc | Bin 0 -> 435 bytes .../pip/_vendor/html5lib/_trie/_base.py | 37 + .../pip/_vendor/html5lib/_trie/_base.pyc | Bin 0 -> 1888 bytes .../pip/_vendor/html5lib/_trie/datrie.py | 44 + .../pip/_vendor/html5lib/_trie/datrie.pyc | Bin 0 -> 2702 bytes .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_trie/py.pyc | Bin 0 -> 2949 bytes .../pip/_vendor/html5lib/_utils.py | 124 + .../pip/_vendor/html5lib/_utils.pyc | Bin 0 -> 4268 bytes .../pip/_vendor/html5lib/constants.py | 2947 ++ .../pip/_vendor/html5lib/constants.pyc | Bin 0 -> 83045 bytes .../pip/_vendor/html5lib/filters/__init__.py | 0 .../pip/_vendor/html5lib/filters/__init__.pyc | Bin 0 -> 153 bytes .../filters/alphabeticalattributes.py | 29 + .../filters/alphabeticalattributes.pyc | Bin 0 -> 1660 bytes .../pip/_vendor/html5lib/filters/base.py | 12 + .../pip/_vendor/html5lib/filters/base.pyc | Bin 0 -> 1071 bytes .../html5lib/filters/inject_meta_charset.py | 73 + .../html5lib/filters/inject_meta_charset.pyc | Bin 0 -> 2432 bytes .../pip/_vendor/html5lib/filters/lint.py | 93 + .../pip/_vendor/html5lib/filters/lint.pyc | Bin 0 -> 3284 bytes .../_vendor/html5lib/filters/optionaltags.py | 207 + .../_vendor/html5lib/filters/optionaltags.pyc | Bin 0 -> 4430 bytes .../pip/_vendor/html5lib/filters/sanitizer.py | 896 + .../_vendor/html5lib/filters/sanitizer.pyc | Bin 0 -> 26838 bytes .../_vendor/html5lib/filters/whitespace.py | 38 + .../_vendor/html5lib/filters/whitespace.pyc | Bin 0 -> 1725 bytes .../pip/_vendor/html5lib/html5parser.py | 2791 ++ .../pip/_vendor/html5lib/html5parser.pyc | Bin 0 -> 122993 bytes .../pip/_vendor/html5lib/serializer.py | 409 + .../pip/_vendor/html5lib/serializer.pyc | Bin 0 -> 13338 bytes .../_vendor/html5lib/treeadapters/__init__.py | 30 + .../html5lib/treeadapters/__init__.pyc | Bin 0 -> 968 bytes .../_vendor/html5lib/treeadapters/genshi.py | 54 + .../_vendor/html5lib/treeadapters/genshi.pyc | Bin 0 -> 1865 bytes .../pip/_vendor/html5lib/treeadapters/sax.py | 50 + .../pip/_vendor/html5lib/treeadapters/sax.pyc | Bin 0 -> 1862 bytes .../_vendor/html5lib/treebuilders/__init__.py | 88 + .../html5lib/treebuilders/__init__.pyc | Bin 0 -> 3554 bytes .../pip/_vendor/html5lib/treebuilders/base.py | 417 + .../_vendor/html5lib/treebuilders/base.pyc | Bin 0 -> 14179 bytes .../pip/_vendor/html5lib/treebuilders/dom.py | 236 + .../pip/_vendor/html5lib/treebuilders/dom.pyc | Bin 0 -> 11402 bytes .../_vendor/html5lib/treebuilders/etree.py | 340 + .../_vendor/html5lib/treebuilders/etree.pyc | Bin 0 -> 14495 bytes .../html5lib/treebuilders/etree_lxml.py | 366 + .../html5lib/treebuilders/etree_lxml.pyc | Bin 0 -> 14969 bytes .../_vendor/html5lib/treewalkers/__init__.py | 154 + .../_vendor/html5lib/treewalkers/__init__.pyc | Bin 0 -> 4855 bytes .../pip/_vendor/html5lib/treewalkers/base.py | 252 + .../pip/_vendor/html5lib/treewalkers/base.pyc | Bin 0 -> 8667 bytes .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/dom.pyc | Bin 0 -> 2193 bytes .../pip/_vendor/html5lib/treewalkers/etree.py | 130 + .../_vendor/html5lib/treewalkers/etree.pyc | Bin 0 -> 4392 bytes .../html5lib/treewalkers/etree_lxml.py | 213 + .../html5lib/treewalkers/etree_lxml.pyc | Bin 0 -> 9018 bytes .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../_vendor/html5lib/treewalkers/genshi.pyc | Bin 0 -> 2410 bytes .../pip/_vendor/idna/__init__.py | 2 + .../pip/_vendor/idna/__init__.pyc | Bin 0 -> 237 bytes .../site-packages/pip/_vendor/idna/codec.py | 118 + .../site-packages/pip/_vendor/idna/codec.pyc | Bin 0 -> 3892 bytes .../site-packages/pip/_vendor/idna/compat.py | 12 + .../site-packages/pip/_vendor/idna/compat.pyc | Bin 0 -> 783 bytes .../site-packages/pip/_vendor/idna/core.py | 399 + .../site-packages/pip/_vendor/idna/core.pyc | Bin 0 -> 11953 bytes .../pip/_vendor/idna/idnadata.py | 1893 ++ .../pip/_vendor/idna/idnadata.pyc | Bin 0 -> 33700 bytes .../pip/_vendor/idna/intranges.py | 53 + .../pip/_vendor/idna/intranges.pyc | Bin 0 -> 2182 bytes .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/package_data.pyc | Bin 0 -> 175 bytes .../pip/_vendor/idna/uts46data.py | 8179 ++++++ .../pip/_vendor/idna/uts46data.pyc | Bin 0 -> 291784 bytes .../site-packages/pip/_vendor/ipaddress.py | 2419 ++ .../site-packages/pip/_vendor/ipaddress.pyc | Bin 0 -> 76767 bytes .../pip/_vendor/lockfile/__init__.py | 347 + .../pip/_vendor/lockfile/__init__.pyc | Bin 0 -> 11909 bytes .../pip/_vendor/lockfile/linklockfile.py | 73 + .../pip/_vendor/lockfile/linklockfile.pyc | Bin 0 -> 2860 bytes .../pip/_vendor/lockfile/mkdirlockfile.py | 84 + .../pip/_vendor/lockfile/mkdirlockfile.pyc | Bin 0 -> 3370 bytes .../pip/_vendor/lockfile/pidlockfile.py | 190 + .../pip/_vendor/lockfile/pidlockfile.pyc | Bin 0 -> 5825 bytes .../pip/_vendor/lockfile/sqlitelockfile.py | 156 + .../pip/_vendor/lockfile/sqlitelockfile.pyc | Bin 0 -> 4640 bytes .../pip/_vendor/lockfile/symlinklockfile.py | 70 + .../pip/_vendor/lockfile/symlinklockfile.pyc | Bin 0 -> 2769 bytes .../pip/_vendor/msgpack/__init__.py | 66 + .../pip/_vendor/msgpack/__init__.pyc | Bin 0 -> 2547 bytes .../pip/_vendor/msgpack/_version.py | 1 + .../pip/_vendor/msgpack/_version.pyc | Bin 0 -> 197 bytes .../pip/_vendor/msgpack/exceptions.py | 41 + .../pip/_vendor/msgpack/exceptions.pyc | Bin 0 -> 2719 bytes .../pip/_vendor/msgpack/fallback.py | 977 + .../pip/_vendor/msgpack/fallback.pyc | Bin 0 -> 30319 bytes .../pip/_vendor/packaging/__about__.py | 21 + .../pip/_vendor/packaging/__about__.pyc | Bin 0 -> 775 bytes .../pip/_vendor/packaging/__init__.py | 14 + .../pip/_vendor/packaging/__init__.pyc | Bin 0 -> 597 bytes .../pip/_vendor/packaging/_compat.py | 30 + .../pip/_vendor/packaging/_compat.pyc | Bin 0 -> 1188 bytes .../pip/_vendor/packaging/_structures.py | 70 + .../pip/_vendor/packaging/_structures.pyc | Bin 0 -> 3879 bytes .../pip/_vendor/packaging/markers.py | 301 + .../pip/_vendor/packaging/markers.pyc | Bin 0 -> 11463 bytes .../pip/_vendor/packaging/requirements.py | 130 + .../pip/_vendor/packaging/requirements.pyc | Bin 0 -> 5061 bytes .../pip/_vendor/packaging/specifiers.py | 774 + .../pip/_vendor/packaging/specifiers.pyc | Bin 0 -> 24333 bytes .../pip/_vendor/packaging/utils.py | 63 + .../pip/_vendor/packaging/utils.pyc | Bin 0 -> 1881 bytes .../pip/_vendor/packaging/version.py | 441 + .../pip/_vendor/packaging/version.pyc | Bin 0 -> 15738 bytes .../pip/_vendor/pep517/__init__.py | 4 + .../pip/_vendor/pep517/__init__.pyc | Bin 0 -> 252 bytes .../pip/_vendor/pep517/_in_process.py | 182 + .../pip/_vendor/pep517/_in_process.pyc | Bin 0 -> 6683 bytes .../site-packages/pip/_vendor/pep517/check.py | 194 + .../pip/_vendor/pep517/check.pyc | Bin 0 -> 5796 bytes .../pip/_vendor/pep517/colorlog.py | 110 + .../pip/_vendor/pep517/colorlog.pyc | Bin 0 -> 3577 bytes .../pip/_vendor/pep517/compat.py | 23 + .../pip/_vendor/pep517/compat.pyc | Bin 0 -> 1317 bytes .../pip/_vendor/pep517/envbuild.py | 150 + .../pip/_vendor/pep517/envbuild.pyc | Bin 0 -> 5107 bytes .../pip/_vendor/pep517/wrappers.py | 134 + .../pip/_vendor/pep517/wrappers.pyc | Bin 0 -> 5433 bytes .../pip/_vendor/pkg_resources/__init__.py | 3149 +++ .../pip/_vendor/pkg_resources/__init__.pyc | Bin 0 -> 117720 bytes .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/pkg_resources/py31compat.pyc | Bin 0 -> 773 bytes .../pip/_vendor/progress/__init__.py | 127 + .../pip/_vendor/progress/__init__.pyc | Bin 0 -> 5212 bytes .../site-packages/pip/_vendor/progress/bar.py | 94 + .../pip/_vendor/progress/bar.pyc | Bin 0 -> 3614 bytes .../pip/_vendor/progress/counter.py | 48 + .../pip/_vendor/progress/counter.pyc | Bin 0 -> 2148 bytes .../pip/_vendor/progress/helpers.py | 91 + .../pip/_vendor/progress/helpers.pyc | Bin 0 -> 3841 bytes .../pip/_vendor/progress/spinner.py | 44 + .../pip/_vendor/progress/spinner.pyc | Bin 0 -> 1916 bytes .../site-packages/pip/_vendor/pyparsing.py | 5742 ++++ .../site-packages/pip/_vendor/pyparsing.pyc | Bin 0 -> 229226 bytes .../pip/_vendor/pytoml/__init__.py | 3 + .../pip/_vendor/pytoml/__init__.pyc | Bin 0 -> 335 bytes .../site-packages/pip/_vendor/pytoml/core.py | 13 + .../site-packages/pip/_vendor/pytoml/core.pyc | Bin 0 -> 1130 bytes .../pip/_vendor/pytoml/parser.py | 374 + .../pip/_vendor/pytoml/parser.pyc | Bin 0 -> 14323 bytes .../pip/_vendor/pytoml/writer.py | 127 + .../pip/_vendor/pytoml/writer.pyc | Bin 0 -> 5273 bytes .../pip/_vendor/requests/__init__.py | 138 + .../pip/_vendor/requests/__init__.pyc | Bin 0 -> 4567 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/__version__.pyc | Bin 0 -> 580 bytes .../pip/_vendor/requests/_internal_utils.py | 42 + .../pip/_vendor/requests/_internal_utils.pyc | Bin 0 -> 1514 bytes .../pip/_vendor/requests/adapters.py | 530 + .../pip/_vendor/requests/adapters.pyc | Bin 0 -> 19152 bytes .../site-packages/pip/_vendor/requests/api.py | 152 + .../pip/_vendor/requests/api.pyc | Bin 0 -> 7021 bytes .../pip/_vendor/requests/auth.py | 305 + .../pip/_vendor/requests/auth.pyc | Bin 0 -> 10351 bytes .../pip/_vendor/requests/certs.py | 18 + .../pip/_vendor/requests/certs.pyc | Bin 0 -> 611 bytes .../pip/_vendor/requests/compat.py | 75 + .../pip/_vendor/requests/compat.pyc | Bin 0 -> 1982 bytes .../pip/_vendor/requests/cookies.py | 546 + .../pip/_vendor/requests/cookies.pyc | Bin 0 -> 22270 bytes .../pip/_vendor/requests/exceptions.py | 126 + .../pip/_vendor/requests/exceptions.pyc | Bin 0 -> 6995 bytes .../pip/_vendor/requests/help.py | 120 + .../pip/_vendor/requests/help.pyc | Bin 0 -> 3370 bytes .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/hooks.pyc | Bin 0 -> 1207 bytes .../pip/_vendor/requests/models.py | 952 + .../pip/_vendor/requests/models.pyc | Bin 0 -> 28914 bytes .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/packages.pyc | Bin 0 -> 571 bytes .../pip/_vendor/requests/sessions.py | 741 + .../pip/_vendor/requests/sessions.pyc | Bin 0 -> 21614 bytes .../pip/_vendor/requests/status_codes.py | 120 + .../pip/_vendor/requests/status_codes.pyc | Bin 0 -> 6007 bytes .../pip/_vendor/requests/structures.py | 103 + .../pip/_vendor/requests/structures.pyc | Bin 0 -> 5255 bytes .../pip/_vendor/requests/utils.py | 976 + .../pip/_vendor/requests/utils.pyc | Bin 0 -> 26962 bytes .../site-packages/pip/_vendor/retrying.py | 267 + .../site-packages/pip/_vendor/retrying.pyc | Bin 0 -> 9988 bytes .../site-packages/pip/_vendor/six.py | 891 + .../site-packages/pip/_vendor/six.pyc | Bin 0 -> 31170 bytes .../pip/_vendor/urllib3/__init__.py | 97 + .../pip/_vendor/urllib3/__init__.pyc | Bin 0 -> 3062 bytes .../pip/_vendor/urllib3/_collections.py | 332 + .../pip/_vendor/urllib3/_collections.pyc | Bin 0 -> 13178 bytes .../pip/_vendor/urllib3/connection.py | 403 + .../pip/_vendor/urllib3/connection.pyc | Bin 0 -> 12305 bytes .../pip/_vendor/urllib3/connectionpool.py | 906 + .../pip/_vendor/urllib3/connectionpool.pyc | Bin 0 -> 27150 bytes .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../pip/_vendor/urllib3/contrib/__init__.pyc | Bin 0 -> 152 bytes .../contrib/_securetransport/__init__.py | 0 .../contrib/_securetransport/__init__.pyc | Bin 0 -> 169 bytes .../contrib/_securetransport/bindings.py | 593 + .../contrib/_securetransport/bindings.pyc | Bin 0 -> 12197 bytes .../contrib/_securetransport/low_level.py | 346 + .../contrib/_securetransport/low_level.pyc | Bin 0 -> 9376 bytes .../pip/_vendor/urllib3/contrib/appengine.py | 305 + .../pip/_vendor/urllib3/contrib/appengine.pyc | Bin 0 -> 10528 bytes .../pip/_vendor/urllib3/contrib/ntlmpool.py | 112 + .../pip/_vendor/urllib3/contrib/ntlmpool.pyc | Bin 0 -> 3908 bytes .../pip/_vendor/urllib3/contrib/pyopenssl.py | 457 + .../pip/_vendor/urllib3/contrib/pyopenssl.pyc | Bin 0 -> 17623 bytes .../urllib3/contrib/securetransport.py | 804 + .../urllib3/contrib/securetransport.pyc | Bin 0 -> 22334 bytes .../pip/_vendor/urllib3/contrib/socks.py | 192 + .../pip/_vendor/urllib3/contrib/socks.pyc | Bin 0 -> 5812 bytes .../pip/_vendor/urllib3/exceptions.py | 246 + .../pip/_vendor/urllib3/exceptions.pyc | Bin 0 -> 13018 bytes .../pip/_vendor/urllib3/fields.py | 178 + .../pip/_vendor/urllib3/fields.pyc | Bin 0 -> 6752 bytes .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/filepost.pyc | Bin 0 -> 3402 bytes .../pip/_vendor/urllib3/packages/__init__.py | 5 + .../pip/_vendor/urllib3/packages/__init__.pyc | Bin 0 -> 315 bytes .../urllib3/packages/backports/__init__.py | 0 .../urllib3/packages/backports/__init__.pyc | Bin 0 -> 163 bytes .../urllib3/packages/backports/makefile.py | 53 + .../urllib3/packages/backports/makefile.pyc | Bin 0 -> 1611 bytes .../_vendor/urllib3/packages/ordered_dict.py | 259 + .../_vendor/urllib3/packages/ordered_dict.pyc | Bin 0 -> 10084 bytes .../pip/_vendor/urllib3/packages/six.py | 868 + .../pip/_vendor/urllib3/packages/six.pyc | Bin 0 -> 31836 bytes .../packages/ssl_match_hostname/__init__.py | 19 + .../packages/ssl_match_hostname/__init__.pyc | Bin 0 -> 613 bytes .../ssl_match_hostname/_implementation.py | 157 + .../ssl_match_hostname/_implementation.pyc | Bin 0 -> 4274 bytes .../pip/_vendor/urllib3/poolmanager.py | 449 + .../pip/_vendor/urllib3/poolmanager.pyc | Bin 0 -> 14907 bytes .../pip/_vendor/urllib3/request.py | 150 + .../pip/_vendor/urllib3/request.pyc | Bin 0 -> 6081 bytes .../pip/_vendor/urllib3/response.py | 676 + .../pip/_vendor/urllib3/response.pyc | Bin 0 -> 20799 bytes .../pip/_vendor/urllib3/util/__init__.py | 54 + .../pip/_vendor/urllib3/util/__init__.pyc | Bin 0 -> 1270 bytes .../pip/_vendor/urllib3/util/connection.py | 126 + .../pip/_vendor/urllib3/util/connection.pyc | Bin 0 -> 3750 bytes .../pip/_vendor/urllib3/util/queue.py | 21 + .../pip/_vendor/urllib3/util/queue.pyc | Bin 0 -> 1341 bytes .../pip/_vendor/urllib3/util/request.py | 118 + .../pip/_vendor/urllib3/util/request.pyc | Bin 0 -> 3729 bytes .../pip/_vendor/urllib3/util/response.py | 81 + .../pip/_vendor/urllib3/util/response.pyc | Bin 0 -> 2269 bytes .../pip/_vendor/urllib3/util/retry.py | 411 + .../pip/_vendor/urllib3/util/retry.pyc | Bin 0 -> 14595 bytes .../pip/_vendor/urllib3/util/ssl_.py | 396 + .../pip/_vendor/urllib3/util/ssl_.pyc | Bin 0 -> 11926 bytes .../pip/_vendor/urllib3/util/timeout.py | 242 + .../pip/_vendor/urllib3/util/timeout.pyc | Bin 0 -> 9639 bytes .../pip/_vendor/urllib3/util/url.py | 230 + .../pip/_vendor/urllib3/util/url.pyc | Bin 0 -> 6307 bytes .../pip/_vendor/urllib3/util/wait.py | 153 + .../pip/_vendor/urllib3/util/wait.pyc | Bin 0 -> 4224 bytes .../pip/_vendor/webencodings/__init__.py | 342 + .../pip/_vendor/webencodings/__init__.pyc | Bin 0 -> 11338 bytes .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/labels.pyc | Bin 0 -> 5307 bytes .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/mklabels.pyc | Bin 0 -> 2216 bytes .../pip/_vendor/webencodings/tests.py | 153 + .../pip/_vendor/webencodings/tests.pyc | Bin 0 -> 6751 bytes .../_vendor/webencodings/x_user_defined.py | 325 + .../_vendor/webencodings/x_user_defined.pyc | Bin 0 -> 3302 bytes .../DESCRIPTION.rst | 3 + .../pkg_resources-0.0.0.dist-info/INSTALLER | 1 + .../pkg_resources-0.0.0.dist-info/METADATA | 13 + .../pkg_resources-0.0.0.dist-info/RECORD | 38 + .../pkg_resources-0.0.0.dist-info/WHEEL | 6 + .../metadata.json | 1 + .../site-packages/pkg_resources/__init__.py | 3125 +++ .../site-packages/pkg_resources/__init__.pyc | Bin 0 -> 116289 bytes .../pkg_resources/_vendor/__init__.py | 0 .../pkg_resources/_vendor/__init__.pyc | Bin 0 -> 156 bytes .../pkg_resources/_vendor/appdirs.py | 552 + .../pkg_resources/_vendor/appdirs.pyc | Bin 0 -> 20893 bytes .../_vendor/packaging/__about__.py | 21 + .../_vendor/packaging/__about__.pyc | Bin 0 -> 795 bytes .../_vendor/packaging/__init__.py | 14 + .../_vendor/packaging/__init__.pyc | Bin 0 -> 617 bytes .../_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_compat.pyc | Bin 0 -> 1268 bytes .../_vendor/packaging/_structures.py | 68 + .../_vendor/packaging/_structures.pyc | Bin 0 -> 4299 bytes .../_vendor/packaging/markers.py | 301 + .../_vendor/packaging/markers.pyc | Bin 0 -> 12172 bytes .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/requirements.pyc | Bin 0 -> 5224 bytes .../_vendor/packaging/specifiers.py | 774 + .../_vendor/packaging/specifiers.pyc | Bin 0 -> 25753 bytes .../pkg_resources/_vendor/packaging/utils.py | 14 + .../pkg_resources/_vendor/packaging/utils.pyc | Bin 0 -> 606 bytes .../_vendor/packaging/version.py | 393 + .../_vendor/packaging/version.pyc | Bin 0 -> 14736 bytes .../pkg_resources/_vendor/pyparsing.py | 5696 ++++ .../pkg_resources/_vendor/pyparsing.pyc | Bin 0 -> 235746 bytes .../pkg_resources/_vendor/six.py | 868 + .../pkg_resources/_vendor/six.pyc | Bin 0 -> 32073 bytes .../pkg_resources/extern/__init__.py | 73 + .../pkg_resources/extern/__init__.pyc | Bin 0 -> 2962 bytes .../site-packages/pkg_resources/py31compat.py | 22 + .../pkg_resources/py31compat.pyc | Bin 0 -> 818 bytes .../pluggy-0.8.0.dist-info/INSTALLER | 1 + .../pluggy-0.8.0.dist-info/LICENSE | 21 + .../pluggy-0.8.0.dist-info/METADATA | 393 + .../pluggy-0.8.0.dist-info/RECORD | 18 + .../pluggy-0.8.0.dist-info/WHEEL | 6 + .../pluggy-0.8.0.dist-info/top_level.txt | 1 + .../site-packages/pluggy/__init__.py | 18 + .../site-packages/pluggy/__init__.pyc | Bin 0 -> 580 bytes .../site-packages/pluggy/_tracing.py | 83 + .../site-packages/pluggy/_tracing.pyc | Bin 0 -> 4378 bytes .../site-packages/pluggy/_version.py | 4 + .../site-packages/pluggy/_version.pyc | Bin 0 -> 164 bytes .../python2.7/site-packages/pluggy/callers.py | 208 + .../site-packages/pluggy/callers.pyc | Bin 0 -> 6860 bytes .../python2.7/site-packages/pluggy/hooks.py | 357 + .../python2.7/site-packages/pluggy/hooks.pyc | Bin 0 -> 13580 bytes .../python2.7/site-packages/pluggy/manager.py | 355 + .../site-packages/pluggy/manager.pyc | Bin 0 -> 14637 bytes .../python2.7/site-packages/py/__init__.py | 156 + .../python2.7/site-packages/py/__init__.pyc | Bin 0 -> 5139 bytes .../python2.7/site-packages/py/__metainfo.py | 2 + .../python2.7/site-packages/py/__metainfo.pyc | Bin 0 -> 237 bytes .../python2.7/site-packages/py/_builtin.py | 248 + .../python2.7/site-packages/py/_builtin.pyc | Bin 0 -> 8773 bytes .../site-packages/py/_code/__init__.py | 1 + .../site-packages/py/_code/__init__.pyc | Bin 0 -> 196 bytes .../site-packages/py/_code/_assertionnew.py | 322 + .../site-packages/py/_code/_assertionnew.pyc | Bin 0 -> 11830 bytes .../site-packages/py/_code/_assertionold.py | 556 + .../site-packages/py/_code/_assertionold.pyc | Bin 0 -> 20403 bytes .../site-packages/py/_code/_py2traceback.py | 79 + .../site-packages/py/_code/_py2traceback.pyc | Bin 0 -> 2536 bytes .../site-packages/py/_code/assertion.py | 90 + .../site-packages/py/_code/assertion.pyc | Bin 0 -> 3041 bytes .../python2.7/site-packages/py/_code/code.py | 796 + .../python2.7/site-packages/py/_code/code.pyc | Bin 0 -> 31626 bytes .../site-packages/py/_code/source.py | 410 + .../site-packages/py/_code/source.pyc | Bin 0 -> 13821 bytes .../lib/python2.7/site-packages/py/_error.py | 91 + .../lib/python2.7/site-packages/py/_error.pyc | Bin 0 -> 3277 bytes .../site-packages/py/_io/__init__.py | 1 + .../site-packages/py/_io/__init__.pyc | Bin 0 -> 177 bytes .../python2.7/site-packages/py/_io/capture.py | 371 + .../site-packages/py/_io/capture.pyc | Bin 0 -> 14303 bytes .../site-packages/py/_io/saferepr.py | 71 + .../site-packages/py/_io/saferepr.pyc | Bin 0 -> 3107 bytes .../site-packages/py/_io/terminalwriter.py | 421 + .../site-packages/py/_io/terminalwriter.pyc | Bin 0 -> 14032 bytes .../site-packages/py/_log/__init__.py | 2 + .../site-packages/py/_log/__init__.pyc | Bin 0 -> 222 bytes .../python2.7/site-packages/py/_log/log.py | 206 + .../python2.7/site-packages/py/_log/log.pyc | Bin 0 -> 9144 bytes .../site-packages/py/_log/warning.py | 79 + .../site-packages/py/_log/warning.pyc | Bin 0 -> 2841 bytes .../site-packages/py/_path/__init__.py | 1 + .../site-packages/py/_path/__init__.pyc | Bin 0 -> 182 bytes .../site-packages/py/_path/cacheutil.py | 114 + .../site-packages/py/_path/cacheutil.pyc | Bin 0 -> 5412 bytes .../site-packages/py/_path/common.py | 453 + .../site-packages/py/_path/common.pyc | Bin 0 -> 17970 bytes .../python2.7/site-packages/py/_path/local.py | 994 + .../site-packages/py/_path/local.pyc | Bin 0 -> 35781 bytes .../site-packages/py/_path/svnurl.py | 380 + .../site-packages/py/_path/svnurl.pyc | Bin 0 -> 15773 bytes .../python2.7/site-packages/py/_path/svnwc.py | 1240 + .../site-packages/py/_path/svnwc.pyc | Bin 0 -> 43520 bytes .../site-packages/py/_process/__init__.py | 1 + .../site-packages/py/_process/__init__.pyc | Bin 0 -> 193 bytes .../site-packages/py/_process/cmdexec.py | 49 + .../site-packages/py/_process/cmdexec.pyc | Bin 0 -> 2238 bytes .../site-packages/py/_process/forkedfunc.py | 120 + .../site-packages/py/_process/forkedfunc.pyc | Bin 0 -> 4591 bytes .../site-packages/py/_process/killproc.py | 23 + .../site-packages/py/_process/killproc.pyc | Bin 0 -> 1316 bytes .../lib/python2.7/site-packages/py/_std.py | 26 + .../lib/python2.7/site-packages/py/_std.pyc | Bin 0 -> 1308 bytes .../py/_vendored_packages/__init__.py | 0 .../py/_vendored_packages/__init__.pyc | Bin 0 -> 147 bytes .../py/_vendored_packages/apipkg.py | 205 + .../py/_vendored_packages/apipkg.pyc | Bin 0 -> 7358 bytes .../py/_vendored_packages/iniconfig.py | 165 + .../py/_vendored_packages/iniconfig.pyc | Bin 0 -> 6868 bytes .../python2.7/site-packages/py/_version.py | 4 + .../python2.7/site-packages/py/_version.pyc | Bin 0 -> 156 bytes .../lib/python2.7/site-packages/py/_xmlgen.py | 255 + .../python2.7/site-packages/py/_xmlgen.pyc | Bin 0 -> 11864 bytes .../lib/python2.7/site-packages/py/test.py | 10 + .../lib/python2.7/site-packages/py/test.pyc | Bin 0 -> 321 bytes .../pytest-3.9.3.dist-info/INSTALLER | 1 + .../pytest-3.9.3.dist-info/LICENSE | 21 + .../pytest-3.9.3.dist-info/METADATA | 163 + .../pytest-3.9.3.dist-info/RECORD | 117 + .../pytest-3.9.3.dist-info/WHEEL | 6 + .../pytest-3.9.3.dist-info/entry_points.txt | 4 + .../pytest-3.9.3.dist-info/top_level.txt | 2 + .../env/lib/python2.7/site-packages/pytest.py | 96 + .../lib/python2.7/site-packages/pytest.pyc | Bin 0 -> 2711 bytes .../DESCRIPTION.rst | 5 + .../python_magic-0.4.15.dist-info/INSTALLER | 1 + .../python_magic-0.4.15.dist-info/METADATA | 28 + .../python_magic-0.4.15.dist-info/RECORD | 9 + .../python_magic-0.4.15.dist-info/WHEEL | 6 + .../metadata.json | 1 + .../top_level.txt | 1 + .../scandir-1.9.0.dist-info/INSTALLER | 1 + .../scandir-1.9.0.dist-info/LICENSE.txt | 27 + .../scandir-1.9.0.dist-info/METADATA | 238 + .../scandir-1.9.0.dist-info/RECORD | 9 + .../scandir-1.9.0.dist-info/WHEEL | 5 + .../scandir-1.9.0.dist-info/top_level.txt | 2 + .../lib/python2.7/site-packages/scandir.py | 693 + .../lib/python2.7/site-packages/scandir.pyc | Bin 0 -> 18563 bytes .../scipy-1.1.0.dist-info/INSTALLER | 1 + .../scipy-1.1.0.dist-info/METADATA | 50 + .../scipy-1.1.0.dist-info/RECORD | 1513 ++ .../site-packages/scipy-1.1.0.dist-info/WHEEL | 5 + .../scipy-1.1.0.dist-info/top_level.txt | 1 + .../scipy/.libs/libgfortran-ed201abd.so.3.0.0 | Bin 0 -> 1023960 bytes .../.libs/libopenblasp-r0-39a31c03.2.18.so | Bin 0 -> 38513408 bytes .../site-packages/scipy/BENTO_BUILD.txt | 30 + .../site-packages/scipy/HACKING.rst.txt | 519 + .../site-packages/scipy/INSTALL.rst.txt | 253 + .../python2.7/site-packages/scipy/LICENSE.txt | 1073 + .../python2.7/site-packages/scipy/THANKS.txt | 204 + .../site-packages/scipy/__config__.py | 26 + .../site-packages/scipy/__config__.pyc | Bin 0 -> 1270 bytes .../python2.7/site-packages/scipy/__init__.py | 123 + .../site-packages/scipy/__init__.pyc | Bin 0 -> 4274 bytes .../scipy/_build_utils/__init__.py | 21 + .../scipy/_build_utils/__init__.pyc | Bin 0 -> 606 bytes .../scipy/_build_utils/_fortran.py | 182 + .../scipy/_build_utils/_fortran.pyc | Bin 0 -> 5787 bytes .../site-packages/scipy/_distributor_init.py | 10 + .../site-packages/scipy/_distributor_init.pyc | Bin 0 -> 490 bytes .../site-packages/scipy/_lib/__init__.py | 16 + .../site-packages/scipy/_lib/__init__.pyc | Bin 0 -> 649 bytes .../site-packages/scipy/_lib/_ccallback.py | 227 + .../site-packages/scipy/_lib/_ccallback.pyc | Bin 0 -> 7425 bytes .../site-packages/scipy/_lib/_ccallback_c.so | Bin 0 -> 60024 bytes .../site-packages/scipy/_lib/_fpumode.so | Bin 0 -> 4952 bytes .../site-packages/scipy/_lib/_gcutils.py | 105 + .../site-packages/scipy/_lib/_gcutils.pyc | Bin 0 -> 3334 bytes .../site-packages/scipy/_lib/_numpy_compat.py | 554 + .../scipy/_lib/_numpy_compat.pyc | Bin 0 -> 20446 bytes .../scipy/_lib/_test_ccallback.so | Bin 0 -> 15760 bytes .../site-packages/scipy/_lib/_testutils.py | 128 + .../site-packages/scipy/_lib/_testutils.pyc | Bin 0 -> 4470 bytes .../site-packages/scipy/_lib/_threadsafety.py | 60 + .../scipy/_lib/_threadsafety.pyc | Bin 0 -> 2894 bytes .../site-packages/scipy/_lib/_tmpdirs.py | 87 + .../site-packages/scipy/_lib/_tmpdirs.pyc | Bin 0 -> 3092 bytes .../site-packages/scipy/_lib/_util.py | 339 + .../site-packages/scipy/_lib/_util.pyc | Bin 0 -> 12447 bytes .../site-packages/scipy/_lib/_version.py | 155 + .../site-packages/scipy/_lib/_version.pyc | Bin 0 -> 5412 bytes .../site-packages/scipy/_lib/decorator.py | 425 + .../site-packages/scipy/_lib/decorator.pyc | Bin 0 -> 14662 bytes .../site-packages/scipy/_lib/messagestream.so | Bin 0 -> 42072 bytes .../site-packages/scipy/_lib/setup.py | 52 + .../site-packages/scipy/_lib/setup.pyc | Bin 0 -> 2096 bytes .../python2.7/site-packages/scipy/_lib/six.py | 276 + .../site-packages/scipy/_lib/six.pyc | Bin 0 -> 8234 bytes .../scipy/_lib/tests/__init__.py | 0 .../scipy/_lib/tests/__init__.pyc | Bin 0 -> 145 bytes .../scipy/_lib/tests/test__gcutils.py | 99 + .../scipy/_lib/tests/test__gcutils.pyc | Bin 0 -> 4266 bytes .../scipy/_lib/tests/test__testutils.py | 34 + .../scipy/_lib/tests/test__testutils.pyc | Bin 0 -> 1408 bytes .../scipy/_lib/tests/test__threadsafety.py | 53 + .../scipy/_lib/tests/test__threadsafety.pyc | Bin 0 -> 2120 bytes .../scipy/_lib/tests/test__util.py | 56 + .../scipy/_lib/tests/test__util.pyc | Bin 0 -> 2258 bytes .../scipy/_lib/tests/test__version.py | 65 + .../scipy/_lib/tests/test__version.pyc | Bin 0 -> 3340 bytes .../scipy/_lib/tests/test_ccallback.py | 199 + .../scipy/_lib/tests/test_ccallback.pyc | Bin 0 -> 9145 bytes .../scipy/_lib/tests/test_import_cycles.py | 52 + .../scipy/_lib/tests/test_import_cycles.pyc | Bin 0 -> 1600 bytes .../scipy/_lib/tests/test_tmpdirs.py | 45 + .../scipy/_lib/tests/test_tmpdirs.pyc | Bin 0 -> 1978 bytes .../scipy/_lib/tests/test_warnings.py | 123 + .../scipy/_lib/tests/test_warnings.pyc | Bin 0 -> 5027 bytes .../site-packages/scipy/cluster/__init__.py | 31 + .../site-packages/scipy/cluster/__init__.pyc | Bin 0 -> 1216 bytes .../site-packages/scipy/cluster/_hierarchy.so | Bin 0 -> 347296 bytes .../scipy/cluster/_optimal_leaf_ordering.so | Bin 0 -> 302880 bytes .../site-packages/scipy/cluster/_vq.so | Bin 0 -> 493936 bytes .../site-packages/scipy/cluster/hierarchy.py | 3035 +++ .../site-packages/scipy/cluster/hierarchy.pyc | Bin 0 -> 96034 bytes .../site-packages/scipy/cluster/setup.py | 38 + .../site-packages/scipy/cluster/setup.pyc | Bin 0 -> 1375 bytes .../scipy/cluster/tests/__init__.py | 0 .../scipy/cluster/tests/__init__.pyc | Bin 0 -> 148 bytes .../cluster/tests/hierarchy_test_data.py | 145 + .../cluster/tests/hierarchy_test_data.pyc | Bin 0 -> 4838 bytes .../scipy/cluster/tests/test_hierarchy.py | 1062 + .../scipy/cluster/tests/test_hierarchy.pyc | Bin 0 -> 49452 bytes .../scipy/cluster/tests/test_vq.py | 284 + .../scipy/cluster/tests/test_vq.pyc | Bin 0 -> 15646 bytes .../site-packages/scipy/cluster/vq.py | 652 + .../site-packages/scipy/cluster/vq.pyc | Bin 0 -> 23768 bytes .../python2.7/site-packages/scipy/conftest.py | 35 + .../site-packages/scipy/conftest.pyc | Bin 0 -> 1519 bytes .../site-packages/scipy/constants/__init__.py | 340 + .../scipy/constants/__init__.pyc | Bin 0 -> 12380 bytes .../site-packages/scipy/constants/codata.py | 1385 + .../site-packages/scipy/constants/codata.pyc | Bin 0 -> 115420 bytes .../scipy/constants/constants.py | 307 + .../scipy/constants/constants.pyc | Bin 0 -> 8784 bytes .../site-packages/scipy/constants/setup.py | 13 + .../site-packages/scipy/constants/setup.pyc | Bin 0 -> 791 bytes .../scipy/constants/tests/__init__.py | 0 .../scipy/constants/tests/__init__.pyc | Bin 0 -> 150 bytes .../scipy/constants/tests/test_codata.py | 57 + .../scipy/constants/tests/test_codata.pyc | Bin 0 -> 2948 bytes .../scipy/constants/tests/test_constants.py | 37 + .../scipy/constants/tests/test_constants.pyc | Bin 0 -> 1926 bytes .../site-packages/scipy/fftpack/__init__.py | 114 + .../site-packages/scipy/fftpack/__init__.pyc | Bin 0 -> 3585 bytes .../site-packages/scipy/fftpack/_fftpack.so | Bin 0 -> 658480 bytes .../site-packages/scipy/fftpack/basic.py | 713 + .../site-packages/scipy/fftpack/basic.pyc | Bin 0 -> 21332 bytes .../site-packages/scipy/fftpack/convolve.so | Bin 0 -> 191944 bytes .../site-packages/scipy/fftpack/helper.py | 151 + .../site-packages/scipy/fftpack/helper.pyc | Bin 0 -> 5517 bytes .../scipy/fftpack/pseudo_diffs.py | 557 + .../scipy/fftpack/pseudo_diffs.pyc | Bin 0 -> 15566 bytes .../scipy/fftpack/realtransforms.py | 717 + .../scipy/fftpack/realtransforms.pyc | Bin 0 -> 25088 bytes .../site-packages/scipy/fftpack/setup.py | 40 + .../site-packages/scipy/fftpack/setup.pyc | Bin 0 -> 1427 bytes .../scipy/fftpack/tests/Makefile | 13 + .../scipy/fftpack/tests/__init__.py | 0 .../scipy/fftpack/tests/__init__.pyc | Bin 0 -> 148 bytes .../scipy/fftpack/tests/fftw_dct.c | 138 + .../scipy/fftpack/tests/fftw_double_ref.npz | Bin 0 -> 154380 bytes .../scipy/fftpack/tests/fftw_single_ref.npz | Bin 0 -> 87404 bytes .../scipy/fftpack/tests/gen_fftw_ref.py | 59 + .../scipy/fftpack/tests/gen_fftw_ref.pyc | Bin 0 -> 1931 bytes .../scipy/fftpack/tests/gendata.m | 21 + .../scipy/fftpack/tests/gendata.py | 8 + .../scipy/fftpack/tests/gendata.pyc | Bin 0 -> 504 bytes .../scipy/fftpack/tests/test.npz | Bin 0 -> 11968 bytes .../scipy/fftpack/tests/test_basic.py | 914 + .../scipy/fftpack/tests/test_basic.pyc | Bin 0 -> 43875 bytes .../scipy/fftpack/tests/test_helper.py | 161 + .../scipy/fftpack/tests/test_helper.pyc | Bin 0 -> 5762 bytes .../scipy/fftpack/tests/test_import.py | 33 + .../scipy/fftpack/tests/test_import.pyc | Bin 0 -> 1858 bytes .../scipy/fftpack/tests/test_pseudo_diffs.py | 382 + .../scipy/fftpack/tests/test_pseudo_diffs.pyc | Bin 0 -> 19302 bytes .../fftpack/tests/test_real_transforms.py | 653 + .../fftpack/tests/test_real_transforms.pyc | Bin 0 -> 33793 bytes .../site-packages/scipy/integrate/__init__.py | 101 + .../scipy/integrate/__init__.pyc | Bin 0 -> 4152 bytes .../site-packages/scipy/integrate/_bvp.py | 1134 + .../site-packages/scipy/integrate/_bvp.pyc | Bin 0 -> 39199 bytes .../site-packages/scipy/integrate/_dop.so | Bin 0 -> 229368 bytes .../scipy/integrate/_ivp/__init__.py | 10 + .../scipy/integrate/_ivp/__init__.pyc | Bin 0 -> 729 bytes .../scipy/integrate/_ivp/base.py | 275 + .../scipy/integrate/_ivp/base.pyc | Bin 0 -> 11570 bytes .../site-packages/scipy/integrate/_ivp/bdf.py | 459 + .../scipy/integrate/_ivp/bdf.pyc | Bin 0 -> 16193 bytes .../scipy/integrate/_ivp/common.py | 422 + .../scipy/integrate/_ivp/common.pyc | Bin 0 -> 14309 bytes .../site-packages/scipy/integrate/_ivp/ivp.py | 554 + .../scipy/integrate/_ivp/ivp.pyc | Bin 0 -> 22216 bytes .../scipy/integrate/_ivp/lsoda.py | 190 + .../scipy/integrate/_ivp/lsoda.pyc | Bin 0 -> 8624 bytes .../scipy/integrate/_ivp/radau.py | 556 + .../scipy/integrate/_ivp/radau.pyc | Bin 0 -> 17978 bytes .../site-packages/scipy/integrate/_ivp/rk.py | 379 + .../site-packages/scipy/integrate/_ivp/rk.pyc | Bin 0 -> 15470 bytes .../site-packages/scipy/integrate/_ode.py | 1371 + .../site-packages/scipy/integrate/_ode.pyc | Bin 0 -> 45695 bytes .../site-packages/scipy/integrate/_odepack.so | Bin 0 -> 153232 bytes .../scipy/integrate/_quadpack.so | Bin 0 -> 202600 bytes .../scipy/integrate/_test_multivariate.so | Bin 0 -> 6888 bytes .../scipy/integrate/_test_odeint_banded.so | Bin 0 -> 206760 bytes .../site-packages/scipy/integrate/lsoda.so | Bin 0 -> 211056 bytes .../site-packages/scipy/integrate/odepack.py | 248 + .../site-packages/scipy/integrate/odepack.pyc | Bin 0 -> 10641 bytes .../site-packages/scipy/integrate/quadpack.py | 878 + .../scipy/integrate/quadpack.pyc | Bin 0 -> 35501 bytes .../scipy/integrate/quadrature.py | 901 + .../scipy/integrate/quadrature.pyc | Bin 0 -> 28047 bytes .../site-packages/scipy/integrate/setup.py | 102 + .../site-packages/scipy/integrate/setup.pyc | Bin 0 -> 2897 bytes .../scipy/integrate/tests/__init__.py | 0 .../scipy/integrate/tests/__init__.pyc | Bin 0 -> 150 bytes .../integrate/tests/_test_multivariate.c | 140 + .../scipy/integrate/tests/banded5x5.f | 240 + .../tests/test_banded_ode_solvers.py | 224 + .../tests/test_banded_ode_solvers.pyc | Bin 0 -> 6888 bytes .../scipy/integrate/tests/test_bvp.py | 553 + .../scipy/integrate/tests/test_bvp.pyc | Bin 0 -> 21635 bytes .../scipy/integrate/tests/test_integrate.py | 807 + .../scipy/integrate/tests/test_integrate.pyc | Bin 0 -> 33157 bytes .../scipy/integrate/tests/test_ivp.py | 727 + .../scipy/integrate/tests/test_ivp.pyc | Bin 0 -> 24874 bytes .../scipy/integrate/tests/test_odeint_jac.py | 75 + .../scipy/integrate/tests/test_odeint_jac.pyc | Bin 0 -> 2846 bytes .../scipy/integrate/tests/test_quadpack.py | 418 + .../scipy/integrate/tests/test_quadpack.pyc | Bin 0 -> 26169 bytes .../scipy/integrate/tests/test_quadrature.py | 233 + .../scipy/integrate/tests/test_quadrature.pyc | Bin 0 -> 12936 bytes .../site-packages/scipy/integrate/vode.so | Bin 0 -> 338096 bytes .../scipy/interpolate/__init__.py | 197 + .../scipy/interpolate/__init__.pyc | Bin 0 -> 3612 bytes .../site-packages/scipy/interpolate/_bspl.so | Bin 0 -> 1273320 bytes .../scipy/interpolate/_bsplines.py | 1004 + .../scipy/interpolate/_bsplines.pyc | Bin 0 -> 31807 bytes .../site-packages/scipy/interpolate/_cubic.py | 770 + .../scipy/interpolate/_cubic.pyc | Bin 0 -> 24737 bytes .../scipy/interpolate/_fitpack.so | Bin 0 -> 322224 bytes .../scipy/interpolate/_fitpack_impl.py | 1311 + .../scipy/interpolate/_fitpack_impl.pyc | Bin 0 -> 45040 bytes .../scipy/interpolate/_interpolate.so | Bin 0 -> 14168 bytes .../site-packages/scipy/interpolate/_pade.py | 59 + .../site-packages/scipy/interpolate/_pade.pyc | Bin 0 -> 2062 bytes .../site-packages/scipy/interpolate/_ppoly.so | Bin 0 -> 1572344 bytes .../scipy/interpolate/dfitpack.so | Bin 0 -> 728744 bytes .../scipy/interpolate/fitpack.py | 722 + .../scipy/interpolate/fitpack.pyc | Bin 0 -> 26396 bytes .../scipy/interpolate/fitpack2.py | 1710 ++ .../scipy/interpolate/fitpack2.pyc | Bin 0 -> 63324 bytes .../scipy/interpolate/interpnd.so | Bin 0 -> 348640 bytes .../scipy/interpolate/interpnd_info.py | 39 + .../scipy/interpolate/interpnd_info.pyc | Bin 0 -> 1421 bytes .../scipy/interpolate/interpolate.py | 2919 ++ .../scipy/interpolate/interpolate.pyc | Bin 0 -> 94162 bytes .../scipy/interpolate/interpolate_wrapper.py | 187 + .../scipy/interpolate/interpolate_wrapper.pyc | Bin 0 -> 5830 bytes .../scipy/interpolate/ndgriddata.py | 230 + .../scipy/interpolate/ndgriddata.pyc | Bin 0 -> 7370 bytes .../scipy/interpolate/polyint.py | 666 + .../scipy/interpolate/polyint.pyc | Bin 0 -> 25039 bytes .../site-packages/scipy/interpolate/rbf.py | 245 + .../site-packages/scipy/interpolate/rbf.pyc | Bin 0 -> 10758 bytes .../site-packages/scipy/interpolate/setup.py | 54 + .../site-packages/scipy/interpolate/setup.pyc | Bin 0 -> 1676 bytes .../scipy/interpolate/tests/__init__.py | 0 .../scipy/interpolate/tests/__init__.pyc | Bin 0 -> 152 bytes .../scipy/interpolate/tests/data/bug-1310.npz | Bin 0 -> 2648 bytes .../tests/data/estimate_gradients_hang.npy | Bin 0 -> 35680 bytes .../scipy/interpolate/tests/test_bsplines.py | 1223 + .../scipy/interpolate/tests/test_bsplines.pyc | Bin 0 -> 49043 bytes .../scipy/interpolate/tests/test_fitpack.py | 463 + .../scipy/interpolate/tests/test_fitpack.pyc | Bin 0 -> 19825 bytes .../scipy/interpolate/tests/test_fitpack2.py | 511 + .../scipy/interpolate/tests/test_fitpack2.pyc | Bin 0 -> 26234 bytes .../scipy/interpolate/tests/test_gil.py | 67 + .../scipy/interpolate/tests/test_gil.pyc | Bin 0 -> 3559 bytes .../scipy/interpolate/tests/test_interpnd.py | 356 + .../scipy/interpolate/tests/test_interpnd.pyc | Bin 0 -> 17998 bytes .../interpolate/tests/test_interpolate.py | 2761 ++ .../interpolate/tests/test_interpolate.pyc | Bin 0 -> 112087 bytes .../tests/test_interpolate_wrapper.py | 81 + .../tests/test_interpolate_wrapper.pyc | Bin 0 -> 4364 bytes .../interpolate/tests/test_ndgriddata.py | 177 + .../interpolate/tests/test_ndgriddata.pyc | Bin 0 -> 9143 bytes .../scipy/interpolate/tests/test_pade.py | 32 + .../scipy/interpolate/tests/test_pade.pyc | Bin 0 -> 1401 bytes .../scipy/interpolate/tests/test_polyint.py | 662 + .../scipy/interpolate/tests/test_polyint.pyc | Bin 0 -> 31826 bytes .../scipy/interpolate/tests/test_rbf.py | 155 + .../scipy/interpolate/tests/test_rbf.pyc | Bin 0 -> 6072 bytes .../interpolate/tests/test_regression.py | 16 + .../interpolate/tests/test_regression.pyc | Bin 0 -> 1199 bytes .../site-packages/scipy/io/__init__.py | 113 + .../site-packages/scipy/io/__init__.pyc | Bin 0 -> 2824 bytes .../site-packages/scipy/io/_fortran.py | 317 + .../site-packages/scipy/io/_fortran.pyc | Bin 0 -> 11018 bytes .../site-packages/scipy/io/_test_fortran.so | Bin 0 -> 117944 bytes .../site-packages/scipy/io/arff/__init__.py | 26 + .../site-packages/scipy/io/arff/__init__.pyc | Bin 0 -> 1014 bytes .../site-packages/scipy/io/arff/arffread.py | 670 + .../site-packages/scipy/io/arff/arffread.pyc | Bin 0 -> 19149 bytes .../site-packages/scipy/io/arff/setup.py | 13 + .../site-packages/scipy/io/arff/setup.pyc | Bin 0 -> 789 bytes .../scipy/io/arff/tests/__init__.py | 0 .../scipy/io/arff/tests/__init__.pyc | Bin 0 -> 148 bytes .../scipy/io/arff/tests/data/iris.arff | 225 + .../scipy/io/arff/tests/data/missing.arff | 8 + .../scipy/io/arff/tests/data/nodata.arff | 11 + .../scipy/io/arff/tests/data/test1.arff | 10 + .../scipy/io/arff/tests/data/test2.arff | 15 + .../scipy/io/arff/tests/data/test3.arff | 6 + .../scipy/io/arff/tests/data/test4.arff | 11 + .../scipy/io/arff/tests/data/test5.arff | 26 + .../scipy/io/arff/tests/data/test6.arff | 12 + .../scipy/io/arff/tests/data/test7.arff | 15 + .../scipy/io/arff/tests/data/test8.arff | 12 + .../scipy/io/arff/tests/test_arffread.py | 259 + .../scipy/io/arff/tests/test_arffread.pyc | Bin 0 -> 11143 bytes .../scipy/io/harwell_boeing/__init__.py | 4 + .../scipy/io/harwell_boeing/__init__.pyc | Bin 0 -> 470 bytes .../harwell_boeing/_fortran_format_parser.py | 313 + .../harwell_boeing/_fortran_format_parser.pyc | Bin 0 -> 11815 bytes .../scipy/io/harwell_boeing/hb.py | 543 + .../scipy/io/harwell_boeing/hb.pyc | Bin 0 -> 17489 bytes .../scipy/io/harwell_boeing/setup.py | 14 + .../scipy/io/harwell_boeing/setup.pyc | Bin 0 -> 812 bytes .../scipy/io/harwell_boeing/tests/__init__.py | 0 .../io/harwell_boeing/tests/__init__.pyc | Bin 0 -> 158 bytes .../tests/test_fortran_format.py | 77 + .../tests/test_fortran_format.pyc | Bin 0 -> 5811 bytes .../scipy/io/harwell_boeing/tests/test_hb.py | 72 + .../scipy/io/harwell_boeing/tests/test_hb.pyc | Bin 0 -> 3582 bytes .../python2.7/site-packages/scipy/io/idl.py | 882 + .../python2.7/site-packages/scipy/io/idl.pyc | Bin 0 -> 21205 bytes .../site-packages/scipy/io/matlab/__init__.py | 20 + .../scipy/io/matlab/__init__.pyc | Bin 0 -> 770 bytes .../scipy/io/matlab/byteordercodes.py | 70 + .../scipy/io/matlab/byteordercodes.pyc | Bin 0 -> 2171 bytes .../site-packages/scipy/io/matlab/mio.py | 260 + .../site-packages/scipy/io/matlab/mio.pyc | Bin 0 -> 9045 bytes .../site-packages/scipy/io/matlab/mio4.py | 618 + .../site-packages/scipy/io/matlab/mio4.pyc | Bin 0 -> 21161 bytes .../site-packages/scipy/io/matlab/mio5.py | 849 + .../site-packages/scipy/io/matlab/mio5.pyc | Bin 0 -> 25426 bytes .../scipy/io/matlab/mio5_params.py | 254 + .../scipy/io/matlab/mio5_params.pyc | Bin 0 -> 6654 bytes .../scipy/io/matlab/mio5_utils.so | Bin 0 -> 213024 bytes .../scipy/io/matlab/mio_utils.so | Bin 0 -> 37816 bytes .../site-packages/scipy/io/matlab/miobase.py | 415 + .../site-packages/scipy/io/matlab/miobase.pyc | Bin 0 -> 12480 bytes .../site-packages/scipy/io/matlab/setup.py | 16 + .../site-packages/scipy/io/matlab/setup.pyc | Bin 0 -> 985 bytes .../site-packages/scipy/io/matlab/streams.so | Bin 0 -> 117528 bytes .../scipy/io/matlab/tests/__init__.py | 0 .../scipy/io/matlab/tests/__init__.pyc | Bin 0 -> 150 bytes .../scipy/io/matlab/tests/afunc.m | 4 + .../io/matlab/tests/data/bad_miuint32.mat | Bin 0 -> 272 bytes .../tests/data/bad_miutf8_array_name.mat | Bin 0 -> 208 bytes .../scipy/io/matlab/tests/data/big_endian.mat | Bin 0 -> 273 bytes .../io/matlab/tests/data/broken_utf8.mat | Bin 0 -> 216 bytes .../tests/data/corrupted_zlib_checksum.mat | Bin 0 -> 276 bytes .../matlab/tests/data/corrupted_zlib_data.mat | Bin 0 -> 3451 bytes .../io/matlab/tests/data/japanese_utf8.txt | 5 + .../io/matlab/tests/data/little_endian.mat | Bin 0 -> 265 bytes .../io/matlab/tests/data/logical_sparse.mat | Bin 0 -> 208 bytes .../scipy/io/matlab/tests/data/malformed1.mat | Bin 0 -> 2208 bytes .../tests/data/miuint32_for_miint32.mat | Bin 0 -> 272 bytes .../matlab/tests/data/miutf8_array_name.mat | Bin 0 -> 208 bytes .../tests/data/nasty_duplicate_fieldnames.mat | Bin 0 -> 8168 bytes .../io/matlab/tests/data/one_by_zero_char.mat | Bin 0 -> 184 bytes .../scipy/io/matlab/tests/data/parabola.mat | Bin 0 -> 729 bytes .../matlab/tests/data/single_empty_string.mat | Bin 0 -> 171 bytes .../io/matlab/tests/data/some_functions.mat | Bin 0 -> 1397 bytes .../scipy/io/matlab/tests/data/sqr.mat | Bin 0 -> 679 bytes .../tests/data/test3dmatrix_6.1_SOL2.mat | Bin 0 -> 232 bytes .../tests/data/test3dmatrix_6.5.1_GLNX86.mat | Bin 0 -> 232 bytes .../tests/data/test3dmatrix_7.1_GLNX86.mat | Bin 0 -> 213 bytes .../tests/data/test3dmatrix_7.4_GLNX86.mat | Bin 0 -> 213 bytes .../matlab/tests/data/test_empty_struct.mat | Bin 0 -> 173 bytes .../matlab/tests/data/test_mat4_le_floats.mat | Bin 0 -> 38 bytes .../matlab/tests/data/test_skip_variable.mat | Bin 0 -> 20225 bytes .../io/matlab/tests/data/testbool_8_WIN64.mat | Bin 0 -> 185 bytes .../matlab/tests/data/testcell_6.1_SOL2.mat | Bin 0 -> 536 bytes .../tests/data/testcell_6.5.1_GLNX86.mat | Bin 0 -> 536 bytes .../matlab/tests/data/testcell_7.1_GLNX86.mat | Bin 0 -> 283 bytes .../matlab/tests/data/testcell_7.4_GLNX86.mat | Bin 0 -> 283 bytes .../tests/data/testcellnest_6.1_SOL2.mat | Bin 0 -> 568 bytes .../tests/data/testcellnest_6.5.1_GLNX86.mat | Bin 0 -> 568 bytes .../tests/data/testcellnest_7.1_GLNX86.mat | Bin 0 -> 228 bytes .../tests/data/testcellnest_7.4_GLNX86.mat | Bin 0 -> 228 bytes .../tests/data/testcomplex_4.2c_SOL2.mat | Bin 0 -> 176 bytes .../tests/data/testcomplex_6.1_SOL2.mat | Bin 0 -> 352 bytes .../tests/data/testcomplex_6.5.1_GLNX86.mat | Bin 0 -> 352 bytes .../tests/data/testcomplex_7.1_GLNX86.mat | Bin 0 -> 247 bytes .../tests/data/testcomplex_7.4_GLNX86.mat | Bin 0 -> 247 bytes .../tests/data/testdouble_4.2c_SOL2.mat | Bin 0 -> 103 bytes .../matlab/tests/data/testdouble_6.1_SOL2.mat | Bin 0 -> 272 bytes .../tests/data/testdouble_6.5.1_GLNX86.mat | Bin 0 -> 272 bytes .../tests/data/testdouble_7.1_GLNX86.mat | Bin 0 -> 232 bytes .../tests/data/testdouble_7.4_GLNX86.mat | Bin 0 -> 232 bytes .../tests/data/testemptycell_5.3_SOL2.mat | Bin 0 -> 472 bytes .../tests/data/testemptycell_6.5.1_GLNX86.mat | Bin 0 -> 472 bytes .../tests/data/testemptycell_7.1_GLNX86.mat | Bin 0 -> 218 bytes .../tests/data/testemptycell_7.4_GLNX86.mat | Bin 0 -> 218 bytes .../matlab/tests/data/testfunc_7.4_GLNX86.mat | Bin 0 -> 381 bytes .../matlab/tests/data/testhdf5_7.4_GLNX86.mat | Bin 0 -> 4168 bytes .../tests/data/testmatrix_4.2c_SOL2.mat | Bin 0 -> 151 bytes .../matlab/tests/data/testmatrix_6.1_SOL2.mat | Bin 0 -> 216 bytes .../tests/data/testmatrix_6.5.1_GLNX86.mat | Bin 0 -> 216 bytes .../tests/data/testmatrix_7.1_GLNX86.mat | Bin 0 -> 193 bytes .../tests/data/testmatrix_7.4_GLNX86.mat | Bin 0 -> 193 bytes .../matlab/tests/data/testminus_4.2c_SOL2.mat | Bin 0 -> 38 bytes .../matlab/tests/data/testminus_6.1_SOL2.mat | Bin 0 -> 200 bytes .../tests/data/testminus_6.5.1_GLNX86.mat | Bin 0 -> 200 bytes .../tests/data/testminus_7.1_GLNX86.mat | Bin 0 -> 184 bytes .../tests/data/testminus_7.4_GLNX86.mat | Bin 0 -> 184 bytes .../matlab/tests/data/testmulti_4.2c_SOL2.mat | Bin 0 -> 240 bytes .../tests/data/testmulti_7.1_GLNX86.mat | Bin 0 -> 276 bytes .../tests/data/testmulti_7.4_GLNX86.mat | Bin 0 -> 276 bytes .../matlab/tests/data/testobject_6.1_SOL2.mat | Bin 0 -> 800 bytes .../tests/data/testobject_6.5.1_GLNX86.mat | Bin 0 -> 672 bytes .../tests/data/testobject_7.1_GLNX86.mat | Bin 0 -> 306 bytes .../tests/data/testobject_7.4_GLNX86.mat | Bin 0 -> 306 bytes .../tests/data/testonechar_4.2c_SOL2.mat | Bin 0 -> 40 bytes .../tests/data/testonechar_6.1_SOL2.mat | Bin 0 -> 200 bytes .../tests/data/testonechar_6.5.1_GLNX86.mat | Bin 0 -> 200 bytes .../tests/data/testonechar_7.1_GLNX86.mat | Bin 0 -> 184 bytes .../tests/data/testonechar_7.4_GLNX86.mat | Bin 0 -> 184 bytes .../tests/data/testscalarcell_7.4_GLNX86.mat | Bin 0 -> 194 bytes .../tests/data/testsparse_4.2c_SOL2.mat | Bin 0 -> 223 bytes .../matlab/tests/data/testsparse_6.1_SOL2.mat | Bin 0 -> 280 bytes .../tests/data/testsparse_6.5.1_GLNX86.mat | Bin 0 -> 328 bytes .../tests/data/testsparse_7.1_GLNX86.mat | Bin 0 -> 229 bytes .../tests/data/testsparse_7.4_GLNX86.mat | Bin 0 -> 229 bytes .../data/testsparsecomplex_4.2c_SOL2.mat | Bin 0 -> 294 bytes .../tests/data/testsparsecomplex_6.1_SOL2.mat | Bin 0 -> 304 bytes .../data/testsparsecomplex_6.5.1_GLNX86.mat | Bin 0 -> 400 bytes .../data/testsparsecomplex_7.1_GLNX86.mat | Bin 0 -> 241 bytes .../data/testsparsecomplex_7.4_GLNX86.mat | Bin 0 -> 241 bytes .../tests/data/testsparsefloat_7.4_GLNX86.mat | Bin 0 -> 219 bytes .../tests/data/teststring_4.2c_SOL2.mat | Bin 0 -> 375 bytes .../matlab/tests/data/teststring_6.1_SOL2.mat | Bin 0 -> 288 bytes .../tests/data/teststring_6.5.1_GLNX86.mat | Bin 0 -> 288 bytes .../tests/data/teststring_7.1_GLNX86.mat | Bin 0 -> 224 bytes .../tests/data/teststring_7.4_GLNX86.mat | Bin 0 -> 224 bytes .../tests/data/teststringarray_4.2c_SOL2.mat | Bin 0 -> 156 bytes .../tests/data/teststringarray_6.1_SOL2.mat | Bin 0 -> 232 bytes .../data/teststringarray_6.5.1_GLNX86.mat | Bin 0 -> 232 bytes .../tests/data/teststringarray_7.1_GLNX86.mat | Bin 0 -> 203 bytes .../tests/data/teststringarray_7.4_GLNX86.mat | Bin 0 -> 203 bytes .../matlab/tests/data/teststruct_6.1_SOL2.mat | Bin 0 -> 608 bytes .../tests/data/teststruct_6.5.1_GLNX86.mat | Bin 0 -> 552 bytes .../tests/data/teststruct_7.1_GLNX86.mat | Bin 0 -> 314 bytes .../tests/data/teststruct_7.4_GLNX86.mat | Bin 0 -> 314 bytes .../tests/data/teststructarr_6.1_SOL2.mat | Bin 0 -> 528 bytes .../tests/data/teststructarr_6.5.1_GLNX86.mat | Bin 0 -> 472 bytes .../tests/data/teststructarr_7.1_GLNX86.mat | Bin 0 -> 246 bytes .../tests/data/teststructarr_7.4_GLNX86.mat | Bin 0 -> 246 bytes .../tests/data/teststructnest_6.1_SOL2.mat | Bin 0 -> 496 bytes .../data/teststructnest_6.5.1_GLNX86.mat | Bin 0 -> 416 bytes .../tests/data/teststructnest_7.1_GLNX86.mat | Bin 0 -> 252 bytes .../tests/data/teststructnest_7.4_GLNX86.mat | Bin 0 -> 252 bytes .../tests/data/testunicode_7.1_GLNX86.mat | Bin 0 -> 357 bytes .../tests/data/testunicode_7.4_GLNX86.mat | Bin 0 -> 357 bytes .../io/matlab/tests/data/testvec_4_GLNX86.mat | Bin 0 -> 93 bytes .../scipy/io/matlab/tests/gen_mat4files.m | 50 + .../scipy/io/matlab/tests/gen_mat5files.m | 100 + .../scipy/io/matlab/tests/save_matfile.m | 6 + .../io/matlab/tests/test_byteordercodes.py | 31 + .../io/matlab/tests/test_byteordercodes.pyc | Bin 0 -> 1581 bytes .../scipy/io/matlab/tests/test_mio.py | 1238 + .../scipy/io/matlab/tests/test_mio.pyc | Bin 0 -> 41107 bytes .../scipy/io/matlab/tests/test_mio5_utils.py | 185 + .../scipy/io/matlab/tests/test_mio5_utils.pyc | Bin 0 -> 6477 bytes .../scipy/io/matlab/tests/test_mio_funcs.py | 57 + .../scipy/io/matlab/tests/test_mio_funcs.pyc | Bin 0 -> 2356 bytes .../scipy/io/matlab/tests/test_mio_utils.py | 46 + .../scipy/io/matlab/tests/test_mio_utils.pyc | Bin 0 -> 1991 bytes .../scipy/io/matlab/tests/test_miobase.py | 31 + .../scipy/io/matlab/tests/test_miobase.pyc | Bin 0 -> 1486 bytes .../io/matlab/tests/test_pathological.py | 35 + .../io/matlab/tests/test_pathological.pyc | Bin 0 -> 1559 bytes .../scipy/io/matlab/tests/test_streams.py | 184 + .../scipy/io/matlab/tests/test_streams.pyc | Bin 0 -> 6377 bytes .../python2.7/site-packages/scipy/io/mmio.py | 836 + .../python2.7/site-packages/scipy/io/mmio.pyc | Bin 0 -> 22053 bytes .../site-packages/scipy/io/netcdf.py | 1098 + .../site-packages/scipy/io/netcdf.pyc | Bin 0 -> 34779 bytes .../python2.7/site-packages/scipy/io/setup.py | 20 + .../site-packages/scipy/io/setup.pyc | Bin 0 -> 992 bytes .../site-packages/scipy/io/tests/__init__.py | 0 .../site-packages/scipy/io/tests/__init__.pyc | Bin 0 -> 143 bytes .../scipy/io/tests/data/array_float32_1d.sav | Bin 0 -> 2628 bytes .../scipy/io/tests/data/array_float32_2d.sav | Bin 0 -> 3192 bytes .../scipy/io/tests/data/array_float32_3d.sav | Bin 0 -> 13752 bytes .../scipy/io/tests/data/array_float32_4d.sav | Bin 0 -> 6616 bytes .../scipy/io/tests/data/array_float32_5d.sav | Bin 0 -> 7896 bytes .../scipy/io/tests/data/array_float32_6d.sav | Bin 0 -> 19416 bytes .../scipy/io/tests/data/array_float32_7d.sav | Bin 0 -> 3288 bytes .../scipy/io/tests/data/array_float32_8d.sav | Bin 0 -> 13656 bytes .../tests/data/array_float32_pointer_1d.sav | Bin 0 -> 2692 bytes .../tests/data/array_float32_pointer_2d.sav | Bin 0 -> 3256 bytes .../tests/data/array_float32_pointer_3d.sav | Bin 0 -> 13816 bytes .../tests/data/array_float32_pointer_4d.sav | Bin 0 -> 6680 bytes .../tests/data/array_float32_pointer_5d.sav | Bin 0 -> 7960 bytes .../tests/data/array_float32_pointer_6d.sav | Bin 0 -> 19480 bytes .../tests/data/array_float32_pointer_7d.sav | Bin 0 -> 3352 bytes .../tests/data/array_float32_pointer_8d.sav | Bin 0 -> 13720 bytes .../scipy/io/tests/data/example_1.nc | Bin 0 -> 1736 bytes .../scipy/io/tests/data/example_2.nc | Bin 0 -> 272 bytes .../io/tests/data/example_3_maskedvals.nc | Bin 0 -> 1424 bytes .../scipy/io/tests/data/fortran-3x3d-2i.dat | Bin 0 -> 451 bytes .../scipy/io/tests/data/fortran-mixed.dat | Bin 0 -> 40 bytes .../io/tests/data/fortran-sf8-11x1x10.dat | Bin 0 -> 888 bytes .../io/tests/data/fortran-sf8-15x10x22.dat | Bin 0 -> 26408 bytes .../scipy/io/tests/data/fortran-sf8-1x1x1.dat | Bin 0 -> 16 bytes .../scipy/io/tests/data/fortran-sf8-1x1x5.dat | Bin 0 -> 48 bytes .../scipy/io/tests/data/fortran-sf8-1x1x7.dat | Bin 0 -> 64 bytes .../scipy/io/tests/data/fortran-sf8-1x3x5.dat | Bin 0 -> 128 bytes .../io/tests/data/fortran-si4-11x1x10.dat | Bin 0 -> 448 bytes .../io/tests/data/fortran-si4-15x10x22.dat | Bin 0 -> 13208 bytes .../scipy/io/tests/data/fortran-si4-1x1x1.dat | Bin 0 -> 12 bytes .../scipy/io/tests/data/fortran-si4-1x1x5.dat | Bin 0 -> 28 bytes .../scipy/io/tests/data/fortran-si4-1x1x7.dat | Bin 0 -> 36 bytes .../scipy/io/tests/data/fortran-si4-1x3x5.dat | Bin 0 -> 68 bytes .../scipy/io/tests/data/invalid_pointer.sav | Bin 0 -> 1280 bytes .../scipy/io/tests/data/null_pointer.sav | Bin 0 -> 2180 bytes .../scipy/io/tests/data/scalar_byte.sav | Bin 0 -> 2076 bytes .../scipy/io/tests/data/scalar_byte_descr.sav | Bin 0 -> 2124 bytes .../scipy/io/tests/data/scalar_complex32.sav | Bin 0 -> 2076 bytes .../scipy/io/tests/data/scalar_complex64.sav | Bin 0 -> 2084 bytes .../scipy/io/tests/data/scalar_float32.sav | Bin 0 -> 2072 bytes .../scipy/io/tests/data/scalar_float64.sav | Bin 0 -> 2076 bytes .../io/tests/data/scalar_heap_pointer.sav | Bin 0 -> 2204 bytes .../scipy/io/tests/data/scalar_int16.sav | Bin 0 -> 2072 bytes .../scipy/io/tests/data/scalar_int32.sav | Bin 0 -> 2072 bytes .../scipy/io/tests/data/scalar_int64.sav | Bin 0 -> 2076 bytes .../scipy/io/tests/data/scalar_string.sav | Bin 0 -> 2124 bytes .../scipy/io/tests/data/scalar_uint16.sav | Bin 0 -> 2072 bytes .../scipy/io/tests/data/scalar_uint32.sav | Bin 0 -> 2072 bytes .../scipy/io/tests/data/scalar_uint64.sav | Bin 0 -> 2076 bytes .../scipy/io/tests/data/struct_arrays.sav | Bin 0 -> 2580 bytes .../tests/data/struct_arrays_byte_idl80.sav | Bin 0 -> 1388 bytes .../tests/data/struct_arrays_replicated.sav | Bin 0 -> 2936 bytes .../data/struct_arrays_replicated_3d.sav | Bin 0 -> 4608 bytes .../scipy/io/tests/data/struct_inherit.sav | Bin 0 -> 2404 bytes .../io/tests/data/struct_pointer_arrays.sav | Bin 0 -> 2408 bytes .../data/struct_pointer_arrays_replicated.sav | Bin 0 -> 2492 bytes .../struct_pointer_arrays_replicated_3d.sav | Bin 0 -> 2872 bytes .../scipy/io/tests/data/struct_pointers.sav | Bin 0 -> 2268 bytes .../tests/data/struct_pointers_replicated.sav | Bin 0 -> 2304 bytes .../data/struct_pointers_replicated_3d.sav | Bin 0 -> 2456 bytes .../scipy/io/tests/data/struct_scalars.sav | Bin 0 -> 2316 bytes .../tests/data/struct_scalars_replicated.sav | Bin 0 -> 2480 bytes .../data/struct_scalars_replicated_3d.sav | Bin 0 -> 3240 bytes .../data/test-44100Hz-2ch-32bit-float-be.wav | Bin 0 -> 3586 bytes .../data/test-44100Hz-2ch-32bit-float-le.wav | Bin 0 -> 3586 bytes .../test-44100Hz-le-1ch-4bytes-early-eof.wav | Bin 0 -> 1024 bytes ...44100Hz-le-1ch-4bytes-incomplete-chunk.wav | Bin 0 -> 13 bytes .../tests/data/test-44100Hz-le-1ch-4bytes.wav | Bin 0 -> 17720 bytes .../test-48000Hz-2ch-64bit-float-le-wavex.wav | Bin 0 -> 7792 bytes .../tests/data/test-8000Hz-le-2ch-1byteu.wav | Bin 0 -> 1644 bytes .../io/tests/data/various_compressed.sav | Bin 0 -> 1015 bytes .../scipy/io/tests/test_fortran.py | 159 + .../scipy/io/tests/test_fortran.pyc | Bin 0 -> 5879 bytes .../site-packages/scipy/io/tests/test_idl.py | 442 + .../site-packages/scipy/io/tests/test_idl.pyc | Bin 0 -> 27636 bytes .../site-packages/scipy/io/tests/test_mmio.py | 673 + .../scipy/io/tests/test_mmio.pyc | Bin 0 -> 32884 bytes .../scipy/io/tests/test_netcdf.py | 544 + .../scipy/io/tests/test_netcdf.pyc | Bin 0 -> 17026 bytes .../scipy/io/tests/test_paths.py | 88 + .../scipy/io/tests/test_paths.pyc | Bin 0 -> 4435 bytes .../scipy/io/tests/test_wavfile.py | 159 + .../scipy/io/tests/test_wavfile.pyc | Bin 0 -> 6223 bytes .../site-packages/scipy/io/wavfile.py | 405 + .../site-packages/scipy/io/wavfile.pyc | Bin 0 -> 10368 bytes .../python2.7/site-packages/scipy/linalg.pxd | 1 + .../site-packages/scipy/linalg/__init__.py | 229 + .../site-packages/scipy/linalg/__init__.pyc | Bin 0 -> 7519 bytes .../linalg/_cython_signature_generator.py | 129 + .../linalg/_cython_signature_generator.pyc | Bin 0 -> 7961 bytes .../site-packages/scipy/linalg/_decomp_ldl.py | 354 + .../scipy/linalg/_decomp_ldl.pyc | Bin 0 -> 12046 bytes .../scipy/linalg/_decomp_polar.py | 112 + .../scipy/linalg/_decomp_polar.pyc | Bin 0 -> 4034 bytes .../site-packages/scipy/linalg/_decomp_qz.py | 405 + .../site-packages/scipy/linalg/_decomp_qz.pyc | Bin 0 -> 14407 bytes .../scipy/linalg/_decomp_update.so | Bin 0 -> 312856 bytes .../scipy/linalg/_expm_frechet.py | 411 + .../scipy/linalg/_expm_frechet.pyc | Bin 0 -> 14051 bytes .../site-packages/scipy/linalg/_fblas.so | Bin 0 -> 1411976 bytes .../site-packages/scipy/linalg/_flapack.so | Bin 0 -> 3228304 bytes .../site-packages/scipy/linalg/_flinalg.so | Bin 0 -> 181872 bytes .../scipy/linalg/_generate_pyx.py | 736 + .../scipy/linalg/_generate_pyx.pyc | Bin 0 -> 27260 bytes .../scipy/linalg/_interpolative.so | Bin 0 -> 964864 bytes .../scipy/linalg/_interpolative_backend.py | 1669 ++ .../scipy/linalg/_interpolative_backend.pyc | Bin 0 -> 46746 bytes .../scipy/linalg/_matfuncs_inv_ssq.py | 888 + .../scipy/linalg/_matfuncs_inv_ssq.pyc | Bin 0 -> 28089 bytes .../scipy/linalg/_matfuncs_sqrtm.py | 196 + .../scipy/linalg/_matfuncs_sqrtm.pyc | Bin 0 -> 5825 bytes .../site-packages/scipy/linalg/_procrustes.py | 91 + .../scipy/linalg/_procrustes.pyc | Bin 0 -> 3115 bytes .../site-packages/scipy/linalg/_sketches.py | 121 + .../site-packages/scipy/linalg/_sketches.pyc | Bin 0 -> 4276 bytes .../scipy/linalg/_solve_toeplitz.so | Bin 0 -> 238144 bytes .../site-packages/scipy/linalg/_solvers.py | 844 + .../site-packages/scipy/linalg/_solvers.pyc | Bin 0 -> 26078 bytes .../site-packages/scipy/linalg/_testutils.py | 65 + .../site-packages/scipy/linalg/_testutils.pyc | Bin 0 -> 2977 bytes .../site-packages/scipy/linalg/basic.py | 1620 ++ .../site-packages/scipy/linalg/basic.pyc | Bin 0 -> 50526 bytes .../site-packages/scipy/linalg/blas.py | 395 + .../site-packages/scipy/linalg/blas.pyc | Bin 0 -> 8440 bytes .../scipy/linalg/cython_blas.pxd | 314 + .../site-packages/scipy/linalg/cython_blas.so | Bin 0 -> 1233456 bytes .../scipy/linalg/cython_lapack.pxd | 2619 ++ .../scipy/linalg/cython_lapack.so | Bin 0 -> 1994520 bytes .../site-packages/scipy/linalg/decomp.py | 1431 + .../site-packages/scipy/linalg/decomp.pyc | Bin 0 -> 46268 bytes .../scipy/linalg/decomp_cholesky.py | 348 + .../scipy/linalg/decomp_cholesky.pyc | Bin 0 -> 11872 bytes .../site-packages/scipy/linalg/decomp_lu.py | 224 + .../site-packages/scipy/linalg/decomp_lu.pyc | Bin 0 -> 7244 bytes .../site-packages/scipy/linalg/decomp_qr.py | 424 + .../site-packages/scipy/linalg/decomp_qr.pyc | Bin 0 -> 12852 bytes .../scipy/linalg/decomp_schur.py | 295 + .../scipy/linalg/decomp_schur.pyc | Bin 0 -> 11739 bytes .../site-packages/scipy/linalg/decomp_svd.py | 493 + .../site-packages/scipy/linalg/decomp_svd.pyc | Bin 0 -> 15110 bytes .../site-packages/scipy/linalg/flinalg.py | 58 + .../site-packages/scipy/linalg/flinalg.pyc | Bin 0 -> 1755 bytes .../scipy/linalg/interpolative.py | 971 + .../scipy/linalg/interpolative.pyc | Bin 0 -> 30654 bytes .../site-packages/scipy/linalg/lapack.py | 634 + .../site-packages/scipy/linalg/lapack.pyc | Bin 0 -> 11084 bytes .../scipy/linalg/linalg_version.py | 7 + .../scipy/linalg/linalg_version.pyc | Bin 0 -> 410 bytes .../site-packages/scipy/linalg/matfuncs.py | 670 + .../site-packages/scipy/linalg/matfuncs.pyc | Bin 0 -> 19510 bytes .../site-packages/scipy/linalg/misc.py | 187 + .../site-packages/scipy/linalg/misc.pyc | Bin 0 -> 5882 bytes .../site-packages/scipy/linalg/setup.py | 171 + .../site-packages/scipy/linalg/setup.pyc | Bin 0 -> 4613 bytes .../scipy/linalg/special_matrices.py | 1038 + .../scipy/linalg/special_matrices.pyc | Bin 0 -> 30747 bytes .../scipy/linalg/src/id_dist/doc/doc.tex | 977 + .../linalg/src/lapack_deprecations/LICENSE | 48 + .../scipy/linalg/tests/__init__.py | 0 .../scipy/linalg/tests/__init__.pyc | Bin 0 -> 147 bytes .../scipy/linalg/tests/data/carex_15_data.npz | Bin 0 -> 34462 bytes .../scipy/linalg/tests/data/carex_18_data.npz | Bin 0 -> 161487 bytes .../scipy/linalg/tests/data/carex_19_data.npz | Bin 0 -> 34050 bytes .../scipy/linalg/tests/data/carex_20_data.npz | Bin 0 -> 31231 bytes .../scipy/linalg/tests/data/carex_6_data.npz | Bin 0 -> 15878 bytes .../tests/data/gendare_20170120_data.npz | Bin 0 -> 2164 bytes .../scipy/linalg/tests/test_basic.py | 1653 ++ .../scipy/linalg/tests/test_basic.pyc | Bin 0 -> 69286 bytes .../scipy/linalg/tests/test_blas.py | 1079 + .../scipy/linalg/tests/test_blas.pyc | Bin 0 -> 41311 bytes .../scipy/linalg/tests/test_build.py | 57 + .../scipy/linalg/tests/test_build.pyc | Bin 0 -> 2971 bytes .../scipy/linalg/tests/test_cython_blas.py | 120 + .../scipy/linalg/tests/test_cython_blas.pyc | Bin 0 -> 6065 bytes .../scipy/linalg/tests/test_cython_lapack.py | 17 + .../scipy/linalg/tests/test_cython_lapack.pyc | Bin 0 -> 1279 bytes .../scipy/linalg/tests/test_decomp.py | 2816 ++ .../scipy/linalg/tests/test_decomp.pyc | Bin 0 -> 123890 bytes .../linalg/tests/test_decomp_cholesky.py | 204 + .../linalg/tests/test_decomp_cholesky.pyc | Bin 0 -> 10454 bytes .../scipy/linalg/tests/test_decomp_ldl.py | 137 + .../scipy/linalg/tests/test_decomp_ldl.pyc | Bin 0 -> 6698 bytes .../scipy/linalg/tests/test_decomp_polar.py | 92 + .../scipy/linalg/tests/test_decomp_polar.pyc | Bin 0 -> 3449 bytes .../scipy/linalg/tests/test_decomp_update.py | 1688 ++ .../scipy/linalg/tests/test_decomp_update.pyc | Bin 0 -> 85352 bytes .../scipy/linalg/tests/test_fblas.py | 655 + .../scipy/linalg/tests/test_fblas.pyc | Bin 0 -> 23748 bytes .../scipy/linalg/tests/test_interpolative.py | 258 + .../scipy/linalg/tests/test_interpolative.pyc | Bin 0 -> 7410 bytes .../scipy/linalg/tests/test_lapack.py | 883 + .../scipy/linalg/tests/test_lapack.pyc | Bin 0 -> 28763 bytes .../scipy/linalg/tests/test_matfuncs.py | 836 + .../scipy/linalg/tests/test_matfuncs.pyc | Bin 0 -> 34222 bytes .../scipy/linalg/tests/test_procrustes.py | 190 + .../scipy/linalg/tests/test_procrustes.pyc | Bin 0 -> 7213 bytes .../scipy/linalg/tests/test_sketches.py | 61 + .../scipy/linalg/tests/test_sketches.pyc | Bin 0 -> 2214 bytes .../scipy/linalg/tests/test_solve_toeplitz.py | 123 + .../linalg/tests/test_solve_toeplitz.pyc | Bin 0 -> 4614 bytes .../scipy/linalg/tests/test_solvers.py | 767 + .../scipy/linalg/tests/test_solvers.pyc | Bin 0 -> 27583 bytes .../linalg/tests/test_special_matrices.py | 598 + .../linalg/tests/test_special_matrices.pyc | Bin 0 -> 25631 bytes .../site-packages/scipy/misc/__init__.py | 113 + .../site-packages/scipy/misc/__init__.pyc | Bin 0 -> 4501 bytes .../site-packages/scipy/misc/ascent.dat | 749 + .../site-packages/scipy/misc/common.py | 303 + .../site-packages/scipy/misc/common.pyc | Bin 0 -> 9917 bytes .../site-packages/scipy/misc/doccer.py | 243 + .../site-packages/scipy/misc/doccer.pyc | Bin 0 -> 8034 bytes .../site-packages/scipy/misc/ecg.dat | Bin 0 -> 119035 bytes .../site-packages/scipy/misc/face.dat | Bin 0 -> 1581821 bytes .../site-packages/scipy/misc/pilutil.py | 621 + .../site-packages/scipy/misc/pilutil.pyc | Bin 0 -> 19854 bytes .../site-packages/scipy/misc/setup.py | 14 + .../site-packages/scipy/misc/setup.pyc | Bin 0 -> 820 bytes .../scipy/misc/tests/__init__.py | 0 .../scipy/misc/tests/__init__.pyc | Bin 0 -> 145 bytes .../scipy/misc/tests/data/3x3x3.png | Bin 0 -> 102 bytes .../scipy/misc/tests/data/3x3x4.png | Bin 0 -> 139 bytes .../scipy/misc/tests/data/3x4x3.png | Bin 0 -> 98 bytes .../scipy/misc/tests/data/3x4x4.png | Bin 0 -> 140 bytes .../scipy/misc/tests/data/3x5x3.png | Bin 0 -> 106 bytes .../scipy/misc/tests/data/3x5x4.png | Bin 0 -> 153 bytes .../scipy/misc/tests/data/4x3x3.png | Bin 0 -> 125 bytes .../scipy/misc/tests/data/4x3x4.png | Bin 0 -> 144 bytes .../scipy/misc/tests/data/4x4x3.png | Bin 0 -> 83 bytes .../scipy/misc/tests/data/4x4x4.png | Bin 0 -> 86 bytes .../scipy/misc/tests/data/4x5x3.png | Bin 0 -> 133 bytes .../scipy/misc/tests/data/4x5x4.png | Bin 0 -> 159 bytes .../scipy/misc/tests/data/5x3x3.png | Bin 0 -> 149 bytes .../scipy/misc/tests/data/5x3x4.png | Bin 0 -> 157 bytes .../scipy/misc/tests/data/5x4x3.png | Bin 0 -> 91 bytes .../scipy/misc/tests/data/5x4x4.png | Bin 0 -> 97 bytes .../scipy/misc/tests/data/5x5x3.png | Bin 0 -> 100 bytes .../scipy/misc/tests/data/5x5x4.png | Bin 0 -> 112 bytes .../scipy/misc/tests/data/blocks2bit.png | Bin 0 -> 77 bytes .../scipy/misc/tests/data/box1.png | Bin 0 -> 208 bytes .../scipy/misc/tests/data/foo3x5x4indexed.png | Bin 0 -> 116 bytes .../scipy/misc/tests/data/icon.png | Bin 0 -> 2122 bytes .../scipy/misc/tests/data/icon_mono.png | Bin 0 -> 449 bytes .../scipy/misc/tests/data/icon_mono_flat.png | Bin 0 -> 412 bytes .../scipy/misc/tests/data/pattern4bit.png | Bin 0 -> 169 bytes .../scipy/misc/tests/test_common.py | 40 + .../scipy/misc/tests/test_common.pyc | Bin 0 -> 2186 bytes .../scipy/misc/tests/test_doccer.py | 125 + .../scipy/misc/tests/test_doccer.pyc | Bin 0 -> 4572 bytes .../scipy/misc/tests/test_pilutil.py | 283 + .../scipy/misc/tests/test_pilutil.pyc | Bin 0 -> 12077 bytes .../site-packages/scipy/ndimage/__init__.py | 174 + .../site-packages/scipy/ndimage/__init__.pyc | Bin 0 -> 3804 bytes .../site-packages/scipy/ndimage/_ctest.so | Bin 0 -> 7160 bytes .../scipy/ndimage/_ctest_oldapi.so | Bin 0 -> 7000 bytes .../site-packages/scipy/ndimage/_cytest.so | Bin 0 -> 46072 bytes .../site-packages/scipy/ndimage/_nd_image.so | Bin 0 -> 112736 bytes .../scipy/ndimage/_ni_docstrings.py | 130 + .../scipy/ndimage/_ni_docstrings.pyc | Bin 0 -> 5606 bytes .../site-packages/scipy/ndimage/_ni_label.so | Bin 0 -> 337664 bytes .../scipy/ndimage/_ni_support.py | 91 + .../scipy/ndimage/_ni_support.pyc | Bin 0 -> 2339 bytes .../site-packages/scipy/ndimage/filters.py | 1431 + .../site-packages/scipy/ndimage/filters.pyc | Bin 0 -> 43787 bytes .../site-packages/scipy/ndimage/fourier.py | 306 + .../site-packages/scipy/ndimage/fourier.pyc | Bin 0 -> 9858 bytes .../scipy/ndimage/interpolation.py | 723 + .../scipy/ndimage/interpolation.pyc | Bin 0 -> 22590 bytes .../site-packages/scipy/ndimage/io.py | 36 + .../site-packages/scipy/ndimage/io.pyc | Bin 0 -> 1142 bytes .../scipy/ndimage/measurements.py | 1467 + .../scipy/ndimage/measurements.pyc | Bin 0 -> 44728 bytes .../site-packages/scipy/ndimage/morphology.py | 2223 ++ .../scipy/ndimage/morphology.pyc | Bin 0 -> 75639 bytes .../site-packages/scipy/ndimage/setup.py | 59 + .../site-packages/scipy/ndimage/setup.pyc | Bin 0 -> 1783 bytes .../scipy/ndimage/tests/__init__.py | 0 .../scipy/ndimage/tests/__init__.pyc | Bin 0 -> 148 bytes .../scipy/ndimage/tests/data/README.txt | 4 + .../scipy/ndimage/tests/data/label_inputs.txt | 21 + .../ndimage/tests/data/label_results.txt | 294 + .../scipy/ndimage/tests/data/label_strels.txt | 42 + .../scipy/ndimage/tests/dots.png | Bin 0 -> 2114 bytes .../scipy/ndimage/tests/test_c_api.py | 100 + .../scipy/ndimage/tests/test_c_api.pyc | Bin 0 -> 6690 bytes .../scipy/ndimage/tests/test_datatypes.py | 68 + .../scipy/ndimage/tests/test_datatypes.pyc | Bin 0 -> 2552 bytes .../scipy/ndimage/tests/test_filters.py | 410 + .../scipy/ndimage/tests/test_filters.pyc | Bin 0 -> 15398 bytes .../scipy/ndimage/tests/test_io.py | 38 + .../scipy/ndimage/tests/test_io.pyc | Bin 0 -> 1557 bytes .../scipy/ndimage/tests/test_measurements.py | 1106 + .../scipy/ndimage/tests/test_measurements.pyc | Bin 0 -> 47202 bytes .../scipy/ndimage/tests/test_ndimage.py | 4602 ++++ .../scipy/ndimage/tests/test_ndimage.pyc | Bin 0 -> 192323 bytes .../scipy/ndimage/tests/test_regression.py | 47 + .../scipy/ndimage/tests/test_regression.pyc | Bin 0 -> 2685 bytes .../scipy/ndimage/tests/test_splines.py | 64 + .../scipy/ndimage/tests/test_splines.pyc | Bin 0 -> 2584 bytes .../site-packages/scipy/odr/__init__.py | 143 + .../site-packages/scipy/odr/__init__.pyc | Bin 0 -> 4567 bytes .../site-packages/scipy/odr/__odrpack.so | Bin 0 -> 370456 bytes .../site-packages/scipy/odr/add_newdocs.py | 30 + .../site-packages/scipy/odr/add_newdocs.pyc | Bin 0 -> 1013 bytes .../site-packages/scipy/odr/models.py | 187 + .../site-packages/scipy/odr/models.pyc | Bin 0 -> 7169 bytes .../site-packages/scipy/odr/odrpack.py | 1127 + .../site-packages/scipy/odr/odrpack.pyc | Bin 0 -> 40322 bytes .../site-packages/scipy/odr/setup.py | 43 + .../site-packages/scipy/odr/setup.pyc | Bin 0 -> 1588 bytes .../site-packages/scipy/odr/tests/__init__.py | 0 .../scipy/odr/tests/__init__.pyc | Bin 0 -> 144 bytes .../site-packages/scipy/odr/tests/test_odr.py | 346 + .../scipy/odr/tests/test_odr.pyc | Bin 0 -> 13137 bytes .../site-packages/scipy/optimize/__init__.py | 295 + .../site-packages/scipy/optimize/__init__.pyc | Bin 0 -> 8552 bytes .../scipy/optimize/_basinhopping.py | 737 + .../scipy/optimize/_basinhopping.pyc | Bin 0 -> 29504 bytes .../site-packages/scipy/optimize/_cobyla.so | Bin 0 -> 216928 bytes .../scipy/optimize/_constraints.py | 285 + .../scipy/optimize/_constraints.pyc | Bin 0 -> 13271 bytes .../optimize/_differentiable_functions.py | 522 + .../optimize/_differentiable_functions.pyc | Bin 0 -> 20829 bytes .../scipy/optimize/_differentialevolution.py | 866 + .../scipy/optimize/_differentialevolution.pyc | Bin 0 -> 31479 bytes .../scipy/optimize/_group_columns.so | Bin 0 -> 196928 bytes .../optimize/_hessian_update_strategy.py | 430 + .../optimize/_hessian_update_strategy.pyc | Bin 0 -> 16043 bytes .../scipy/optimize/_hungarian.py | 282 + .../scipy/optimize/_hungarian.pyc | Bin 0 -> 8916 bytes .../site-packages/scipy/optimize/_lbfgsb.so | Bin 0 -> 223168 bytes .../site-packages/scipy/optimize/_linprog.py | 1048 + .../site-packages/scipy/optimize/_linprog.pyc | Bin 0 -> 34505 bytes .../scipy/optimize/_linprog_ip.py | 2168 ++ .../scipy/optimize/_linprog_ip.pyc | Bin 0 -> 70161 bytes .../scipy/optimize/_lsq/__init__.py | 7 + .../scipy/optimize/_lsq/__init__.pyc | Bin 0 -> 469 bytes .../site-packages/scipy/optimize/_lsq/bvls.py | 180 + .../scipy/optimize/_lsq/bvls.pyc | Bin 0 -> 3577 bytes .../scipy/optimize/_lsq/common.py | 735 + .../scipy/optimize/_lsq/common.pyc | Bin 0 -> 23712 bytes .../scipy/optimize/_lsq/dogbox.py | 332 + .../scipy/optimize/_lsq/dogbox.pyc | Bin 0 -> 9749 bytes .../scipy/optimize/_lsq/givens_elimination.so | Bin 0 -> 169824 bytes .../scipy/optimize/_lsq/least_squares.py | 931 + .../scipy/optimize/_lsq/least_squares.pyc | Bin 0 -> 37677 bytes .../scipy/optimize/_lsq/lsq_linear.py | 317 + .../scipy/optimize/_lsq/lsq_linear.pyc | Bin 0 -> 12787 bytes .../scipy/optimize/_lsq/setup.py | 14 + .../scipy/optimize/_lsq/setup.pyc | Bin 0 -> 856 bytes .../site-packages/scipy/optimize/_lsq/trf.py | 568 + .../site-packages/scipy/optimize/_lsq/trf.pyc | Bin 0 -> 14483 bytes .../scipy/optimize/_lsq/trf_linear.py | 251 + .../scipy/optimize/_lsq/trf_linear.pyc | Bin 0 -> 7109 bytes .../site-packages/scipy/optimize/_minimize.py | 787 + .../scipy/optimize/_minimize.pyc | Bin 0 -> 32307 bytes .../site-packages/scipy/optimize/_minpack.so | Bin 0 -> 202944 bytes .../site-packages/scipy/optimize/_nnls.so | Bin 0 -> 122176 bytes .../site-packages/scipy/optimize/_numdiff.py | 639 + .../site-packages/scipy/optimize/_numdiff.pyc | Bin 0 -> 22550 bytes .../scipy/optimize/_remove_redundancy.py | 451 + .../scipy/optimize/_remove_redundancy.pyc | Bin 0 -> 11657 bytes .../site-packages/scipy/optimize/_root.py | 640 + .../site-packages/scipy/optimize/_root.pyc | Bin 0 -> 26646 bytes .../site-packages/scipy/optimize/_slsqp.so | Bin 0 -> 183296 bytes .../site-packages/scipy/optimize/_spectral.py | 259 + .../scipy/optimize/_spectral.pyc | Bin 0 -> 8722 bytes .../scipy/optimize/_trlib/__init__.py | 12 + .../scipy/optimize/_trlib/__init__.pyc | Bin 0 -> 828 bytes .../scipy/optimize/_trlib/_trlib.so | Bin 0 -> 1539720 bytes .../scipy/optimize/_trlib/setup.py | 29 + .../scipy/optimize/_trlib/setup.pyc | Bin 0 -> 1448 bytes .../scipy/optimize/_trustregion.py | 266 + .../scipy/optimize/_trustregion.pyc | Bin 0 -> 8390 bytes .../optimize/_trustregion_constr/__init__.py | 6 + .../optimize/_trustregion_constr/__init__.pyc | Bin 0 -> 369 bytes .../canonical_constraint.py | 391 + .../canonical_constraint.pyc | Bin 0 -> 16105 bytes .../equality_constrained_sqp.py | 218 + .../equality_constrained_sqp.pyc | Bin 0 -> 5243 bytes .../minimize_trustregion_constr.py | 525 + .../minimize_trustregion_constr.pyc | Bin 0 -> 21066 bytes .../_trustregion_constr/projections.py | 406 + .../_trustregion_constr/projections.pyc | Bin 0 -> 12637 bytes .../_trustregion_constr/qp_subproblem.py | 639 + .../_trustregion_constr/qp_subproblem.pyc | Bin 0 -> 17692 bytes .../optimize/_trustregion_constr/report.py | 50 + .../optimize/_trustregion_constr/report.pyc | Bin 0 -> 2883 bytes .../optimize/_trustregion_constr/setup.py | 13 + .../optimize/_trustregion_constr/setup.pyc | Bin 0 -> 839 bytes .../_trustregion_constr/tests/__init__.py | 0 .../_trustregion_constr/tests/__init__.pyc | Bin 0 -> 169 bytes .../tests/test_canonical_constraint.py | 294 + .../tests/test_canonical_constraint.pyc | Bin 0 -> 9256 bytes .../tests/test_projections.py | 223 + .../tests/test_projections.pyc | Bin 0 -> 9691 bytes .../tests/test_qp_subproblem.py | 649 + .../tests/test_qp_subproblem.pyc | Bin 0 -> 20800 bytes .../_trustregion_constr/tr_interior_point.py | 347 + .../_trustregion_constr/tr_interior_point.pyc | Bin 0 -> 11817 bytes .../scipy/optimize/_trustregion_dogleg.py | 124 + .../scipy/optimize/_trustregion_dogleg.pyc | Bin 0 -> 4244 bytes .../scipy/optimize/_trustregion_exact.py | 432 + .../scipy/optimize/_trustregion_exact.pyc | Bin 0 -> 10393 bytes .../scipy/optimize/_trustregion_krylov.py | 65 + .../scipy/optimize/_trustregion_krylov.pyc | Bin 0 -> 1621 bytes .../scipy/optimize/_trustregion_ncg.py | 128 + .../scipy/optimize/_trustregion_ncg.pyc | Bin 0 -> 3892 bytes .../site-packages/scipy/optimize/_tstutils.py | 61 + .../scipy/optimize/_tstutils.pyc | Bin 0 -> 2479 bytes .../site-packages/scipy/optimize/_zeros.so | Bin 0 -> 11768 bytes .../site-packages/scipy/optimize/cobyla.py | 272 + .../site-packages/scipy/optimize/cobyla.pyc | Bin 0 -> 9190 bytes .../site-packages/scipy/optimize/lbfgsb.py | 468 + .../site-packages/scipy/optimize/lbfgsb.pyc | Bin 0 -> 15320 bytes .../scipy/optimize/lbfgsb/README | 87 + .../scipy/optimize/linesearch.py | 879 + .../scipy/optimize/linesearch.pyc | Bin 0 -> 22723 bytes .../site-packages/scipy/optimize/minpack.py | 904 + .../site-packages/scipy/optimize/minpack.pyc | Bin 0 -> 32869 bytes .../site-packages/scipy/optimize/minpack2.so | Bin 0 -> 126016 bytes .../site-packages/scipy/optimize/moduleTNC.so | Bin 0 -> 50328 bytes .../site-packages/scipy/optimize/nnls.py | 65 + .../site-packages/scipy/optimize/nnls.pyc | Bin 0 -> 2069 bytes .../site-packages/scipy/optimize/nonlin.py | 1546 ++ .../site-packages/scipy/optimize/nonlin.pyc | Bin 0 -> 52941 bytes .../site-packages/scipy/optimize/optimize.py | 3118 +++ .../site-packages/scipy/optimize/optimize.pyc | Bin 0 -> 93907 bytes .../site-packages/scipy/optimize/setup.py | 89 + .../site-packages/scipy/optimize/setup.pyc | Bin 0 -> 2693 bytes .../site-packages/scipy/optimize/slsqp.py | 509 + .../site-packages/scipy/optimize/slsqp.pyc | Bin 0 -> 16494 bytes .../scipy/optimize/tests/__init__.py | 0 .../scipy/optimize/tests/__init__.pyc | Bin 0 -> 149 bytes .../optimize/tests/test__basinhopping.py | 447 + .../optimize/tests/test__basinhopping.pyc | Bin 0 -> 19632 bytes .../tests/test__differential_evolution.py | 477 + .../tests/test__differential_evolution.pyc | Bin 0 -> 16196 bytes .../tests/test__linprog_ip_clean_inputs.py | 365 + .../tests/test__linprog_ip_clean_inputs.pyc | Bin 0 -> 10942 bytes .../scipy/optimize/tests/test__numdiff.py | 598 + .../scipy/optimize/tests/test__numdiff.pyc | Bin 0 -> 25475 bytes .../optimize/tests/test__remove_redundancy.py | 238 + .../tests/test__remove_redundancy.pyc | Bin 0 -> 9660 bytes .../scipy/optimize/tests/test__root.py | 71 + .../scipy/optimize/tests/test__root.pyc | Bin 0 -> 3634 bytes .../scipy/optimize/tests/test__spectral.py | 210 + .../scipy/optimize/tests/test__spectral.pyc | Bin 0 -> 9680 bytes .../scipy/optimize/tests/test_cobyla.py | 115 + .../scipy/optimize/tests/test_cobyla.pyc | Bin 0 -> 6091 bytes .../scipy/optimize/tests/test_constraints.py | 132 + .../scipy/optimize/tests/test_constraints.pyc | Bin 0 -> 5759 bytes .../tests/test_differentiable_functions.py | 580 + .../tests/test_differentiable_functions.pyc | Bin 0 -> 16324 bytes .../tests/test_hessian_update_strategy.py | 219 + .../tests/test_hessian_update_strategy.pyc | Bin 0 -> 10612 bytes .../scipy/optimize/tests/test_hungarian.py | 74 + .../scipy/optimize/tests/test_hungarian.pyc | Bin 0 -> 1920 bytes .../optimize/tests/test_lbfgsb_hessinv.py | 45 + .../optimize/tests/test_lbfgsb_hessinv.pyc | Bin 0 -> 2220 bytes .../optimize/tests/test_least_squares.py | 735 + .../optimize/tests/test_least_squares.pyc | Bin 0 -> 32620 bytes .../scipy/optimize/tests/test_linesearch.py | 283 + .../scipy/optimize/tests/test_linesearch.pyc | Bin 0 -> 13030 bytes .../scipy/optimize/tests/test_linprog.py | 1019 + .../scipy/optimize/tests/test_linprog.pyc | Bin 0 -> 44807 bytes .../scipy/optimize/tests/test_lsq_common.py | 275 + .../scipy/optimize/tests/test_lsq_common.pyc | Bin 0 -> 10011 bytes .../scipy/optimize/tests/test_lsq_linear.py | 150 + .../scipy/optimize/tests/test_lsq_linear.pyc | Bin 0 -> 6137 bytes .../tests/test_minimize_constrained.py | 564 + .../tests/test_minimize_constrained.pyc | Bin 0 -> 25163 bytes .../scipy/optimize/tests/test_minpack.py | 670 + .../scipy/optimize/tests/test_minpack.pyc | Bin 0 -> 34271 bytes .../scipy/optimize/tests/test_nnls.py | 36 + .../scipy/optimize/tests/test_nnls.pyc | Bin 0 -> 1723 bytes .../scipy/optimize/tests/test_nonlin.py | 448 + .../scipy/optimize/tests/test_nonlin.pyc | Bin 0 -> 21042 bytes .../scipy/optimize/tests/test_optimize.py | 1348 + .../scipy/optimize/tests/test_optimize.pyc | Bin 0 -> 55518 bytes .../scipy/optimize/tests/test_regression.py | 42 + .../scipy/optimize/tests/test_regression.pyc | Bin 0 -> 2658 bytes .../scipy/optimize/tests/test_slsqp.py | 456 + .../scipy/optimize/tests/test_slsqp.pyc | Bin 0 -> 22765 bytes .../scipy/optimize/tests/test_tnc.py | 302 + .../scipy/optimize/tests/test_tnc.pyc | Bin 0 -> 15629 bytes .../scipy/optimize/tests/test_trustregion.py | 106 + .../scipy/optimize/tests/test_trustregion.pyc | Bin 0 -> 5459 bytes .../optimize/tests/test_trustregion_exact.py | 357 + .../optimize/tests/test_trustregion_exact.pyc | Bin 0 -> 13719 bytes .../optimize/tests/test_trustregion_krylov.py | 173 + .../tests/test_trustregion_krylov.pyc | Bin 0 -> 8649 bytes .../scipy/optimize/tests/test_zeros.py | 131 + .../scipy/optimize/tests/test_zeros.pyc | Bin 0 -> 7658 bytes .../site-packages/scipy/optimize/tnc.py | 441 + .../site-packages/scipy/optimize/tnc.pyc | Bin 0 -> 14732 bytes .../site-packages/scipy/optimize/zeros.py | 612 + .../site-packages/scipy/optimize/zeros.pyc | Bin 0 -> 21643 bytes .../scipy/pip-delete-this-directory.txt | 5 + .../python2.7/site-packages/scipy/setup.py | 34 + .../python2.7/site-packages/scipy/setup.pyc | Bin 0 -> 1321 bytes .../site-packages/scipy/signal/__init__.py | 380 + .../site-packages/scipy/signal/__init__.pyc | Bin 0 -> 15941 bytes .../site-packages/scipy/signal/_arraytools.py | 243 + .../scipy/signal/_arraytools.pyc | Bin 0 -> 8107 bytes .../scipy/signal/_max_len_seq.py | 137 + .../scipy/signal/_max_len_seq.pyc | Bin 0 -> 4856 bytes .../scipy/signal/_max_len_seq_inner.so | Bin 0 -> 180384 bytes .../scipy/signal/_peak_finding.py | 1227 + .../scipy/signal/_peak_finding.pyc | Bin 0 -> 44484 bytes .../scipy/signal/_peak_finding_utils.so | Bin 0 -> 226784 bytes .../scipy/signal/_savitzky_golay.py | 349 + .../scipy/signal/_savitzky_golay.pyc | Bin 0 -> 11746 bytes .../site-packages/scipy/signal/_spectral.so | Bin 0 -> 55168 bytes .../site-packages/scipy/signal/_upfirdn.py | 183 + .../site-packages/scipy/signal/_upfirdn.pyc | Bin 0 -> 5608 bytes .../scipy/signal/_upfirdn_apply.so | Bin 0 -> 248096 bytes .../site-packages/scipy/signal/bsplines.py | 381 + .../site-packages/scipy/signal/bsplines.pyc | Bin 0 -> 13785 bytes .../scipy/signal/filter_design.py | 4270 +++ .../scipy/signal/filter_design.pyc | Bin 0 -> 134817 bytes .../scipy/signal/fir_filter_design.py | 1144 + .../scipy/signal/fir_filter_design.pyc | Bin 0 -> 38197 bytes .../scipy/signal/lti_conversion.py | 465 + .../scipy/signal/lti_conversion.pyc | Bin 0 -> 14217 bytes .../site-packages/scipy/signal/ltisys.py | 3664 +++ .../site-packages/scipy/signal/ltisys.pyc | Bin 0 -> 112121 bytes .../site-packages/scipy/signal/setup.py | 37 + .../site-packages/scipy/signal/setup.pyc | Bin 0 -> 1630 bytes .../site-packages/scipy/signal/signaltools.py | 3463 +++ .../scipy/signal/signaltools.pyc | Bin 0 -> 109600 bytes .../site-packages/scipy/signal/sigtools.so | Bin 0 -> 75584 bytes .../site-packages/scipy/signal/spectral.py | 1789 ++ .../site-packages/scipy/signal/spectral.pyc | Bin 0 -> 60880 bytes .../site-packages/scipy/signal/spline.so | Bin 0 -> 47064 bytes .../scipy/signal/tests/__init__.py | 0 .../scipy/signal/tests/__init__.pyc | Bin 0 -> 147 bytes .../site-packages/scipy/signal/tests/mpsig.py | 126 + .../scipy/signal/tests/mpsig.pyc | Bin 0 -> 4607 bytes .../scipy/signal/tests/test_array_tools.py | 113 + .../scipy/signal/tests/test_array_tools.pyc | Bin 0 -> 4477 bytes .../scipy/signal/tests/test_cont2discrete.py | 370 + .../scipy/signal/tests/test_cont2discrete.pyc | Bin 0 -> 12565 bytes .../scipy/signal/tests/test_dltisys.py | 600 + .../scipy/signal/tests/test_dltisys.pyc | Bin 0 -> 21604 bytes .../scipy/signal/tests/test_filter_design.py | 3191 +++ .../scipy/signal/tests/test_filter_design.pyc | Bin 0 -> 126658 bytes .../signal/tests/test_fir_filter_design.py | 563 + .../signal/tests/test_fir_filter_design.pyc | Bin 0 -> 22922 bytes .../scipy/signal/tests/test_ltisys.py | 1262 + .../scipy/signal/tests/test_ltisys.pyc | Bin 0 -> 49777 bytes .../scipy/signal/tests/test_max_len_seq.py | 67 + .../scipy/signal/tests/test_max_len_seq.pyc | Bin 0 -> 2652 bytes .../scipy/signal/tests/test_peak_finding.py | 733 + .../scipy/signal/tests/test_peak_finding.pyc | Bin 0 -> 30646 bytes .../scipy/signal/tests/test_savitzky_golay.py | 291 + .../signal/tests/test_savitzky_golay.pyc | Bin 0 -> 9317 bytes .../scipy/signal/tests/test_signaltools.py | 2384 ++ .../scipy/signal/tests/test_signaltools.pyc | Bin 0 -> 107809 bytes .../scipy/signal/tests/test_spectral.py | 1357 + .../scipy/signal/tests/test_spectral.pyc | Bin 0 -> 59713 bytes .../scipy/signal/tests/test_upfirdn.py | 175 + .../scipy/signal/tests/test_upfirdn.pyc | Bin 0 -> 6242 bytes .../scipy/signal/tests/test_waveforms.py | 353 + .../scipy/signal/tests/test_waveforms.pyc | Bin 0 -> 17623 bytes .../scipy/signal/tests/test_wavelets.py | 132 + .../scipy/signal/tests/test_wavelets.pyc | Bin 0 -> 5326 bytes .../scipy/signal/tests/test_windows.py | 633 + .../scipy/signal/tests/test_windows.pyc | Bin 0 -> 29496 bytes .../site-packages/scipy/signal/waveforms.py | 680 + .../site-packages/scipy/signal/waveforms.pyc | Bin 0 -> 20624 bytes .../site-packages/scipy/signal/wavelets.py | 365 + .../site-packages/scipy/signal/wavelets.pyc | Bin 0 -> 10926 bytes .../scipy/signal/windows/__init__.py | 46 + .../scipy/signal/windows/__init__.pyc | Bin 0 -> 2031 bytes .../scipy/signal/windows/setup.py | 11 + .../scipy/signal/windows/setup.pyc | Bin 0 -> 650 bytes .../scipy/signal/windows/windows.py | 2106 ++ .../scipy/signal/windows/windows.pyc | Bin 0 -> 74094 bytes .../site-packages/scipy/sparse/__init__.py | 247 + .../site-packages/scipy/sparse/__init__.pyc | Bin 0 -> 6879 bytes .../scipy/sparse/_csparsetools.so | Bin 0 -> 448704 bytes .../site-packages/scipy/sparse/_matrix_io.py | 157 + .../site-packages/scipy/sparse/_matrix_io.pyc | Bin 0 -> 5554 bytes .../scipy/sparse/_sparsetools.so | Bin 0 -> 3393032 bytes .../site-packages/scipy/sparse/base.py | 1217 + .../site-packages/scipy/sparse/base.pyc | Bin 0 -> 43300 bytes .../site-packages/scipy/sparse/bsr.py | 702 + .../site-packages/scipy/sparse/bsr.pyc | Bin 0 -> 21140 bytes .../site-packages/scipy/sparse/compressed.py | 1189 + .../site-packages/scipy/sparse/compressed.pyc | Bin 0 -> 36498 bytes .../site-packages/scipy/sparse/construct.py | 838 + .../site-packages/scipy/sparse/construct.pyc | Bin 0 -> 25600 bytes .../site-packages/scipy/sparse/coo.py | 606 + .../site-packages/scipy/sparse/coo.pyc | Bin 0 -> 19535 bytes .../site-packages/scipy/sparse/csc.py | 253 + .../site-packages/scipy/sparse/csc.pyc | Bin 0 -> 8268 bytes .../scipy/sparse/csgraph/__init__.py | 178 + .../scipy/sparse/csgraph/__init__.pyc | Bin 0 -> 7203 bytes .../scipy/sparse/csgraph/_laplacian.py | 128 + .../scipy/sparse/csgraph/_laplacian.pyc | Bin 0 -> 4513 bytes .../sparse/csgraph/_min_spanning_tree.so | Bin 0 -> 201248 bytes .../scipy/sparse/csgraph/_reordering.so | Bin 0 -> 328768 bytes .../scipy/sparse/csgraph/_shortest_path.so | Bin 0 -> 248064 bytes .../scipy/sparse/csgraph/_tools.so | Bin 0 -> 155008 bytes .../scipy/sparse/csgraph/_traversal.so | Bin 0 -> 147616 bytes .../scipy/sparse/csgraph/_validation.py | 58 + .../scipy/sparse/csgraph/_validation.pyc | Bin 0 -> 1912 bytes .../scipy/sparse/csgraph/setup.py | 32 + .../scipy/sparse/csgraph/setup.pyc | Bin 0 -> 1135 bytes .../scipy/sparse/csgraph/tests/__init__.py | 0 .../scipy/sparse/csgraph/tests/__init__.pyc | Bin 0 -> 155 bytes .../tests/test_connected_components.py | 101 + .../tests/test_connected_components.pyc | Bin 0 -> 3581 bytes .../sparse/csgraph/tests/test_conversions.py | 69 + .../sparse/csgraph/tests/test_conversions.pyc | Bin 0 -> 2388 bytes .../csgraph/tests/test_graph_laplacian.py | 136 + .../csgraph/tests/test_graph_laplacian.pyc | Bin 0 -> 5531 bytes .../sparse/csgraph/tests/test_reordering.py | 121 + .../sparse/csgraph/tests/test_reordering.pyc | Bin 0 -> 4461 bytes .../csgraph/tests/test_shortest_path.py | 202 + .../csgraph/tests/test_shortest_path.pyc | Bin 0 -> 8165 bytes .../csgraph/tests/test_spanning_tree.py | 67 + .../csgraph/tests/test_spanning_tree.pyc | Bin 0 -> 1842 bytes .../sparse/csgraph/tests/test_traversal.py | 70 + .../sparse/csgraph/tests/test_traversal.pyc | Bin 0 -> 2623 bytes .../site-packages/scipy/sparse/csr.py | 489 + .../site-packages/scipy/sparse/csr.pyc | Bin 0 -> 15339 bytes .../site-packages/scipy/sparse/data.py | 396 + .../site-packages/scipy/sparse/data.pyc | Bin 0 -> 14212 bytes .../site-packages/scipy/sparse/dia.py | 420 + .../site-packages/scipy/sparse/dia.pyc | Bin 0 -> 13116 bytes .../site-packages/scipy/sparse/dok.py | 538 + .../site-packages/scipy/sparse/dok.pyc | Bin 0 -> 21165 bytes .../site-packages/scipy/sparse/extract.py | 171 + .../site-packages/scipy/sparse/extract.pyc | Bin 0 -> 5383 bytes .../scipy/sparse/generate_sparsetools.py | 428 + .../scipy/sparse/generate_sparsetools.pyc | Bin 0 -> 11597 bytes .../site-packages/scipy/sparse/lil.py | 548 + .../site-packages/scipy/sparse/lil.pyc | Bin 0 -> 17132 bytes .../scipy/sparse/linalg/__init__.py | 127 + .../scipy/sparse/linalg/__init__.pyc | Bin 0 -> 3779 bytes .../scipy/sparse/linalg/_expm_multiply.py | 703 + .../scipy/sparse/linalg/_expm_multiply.pyc | Bin 0 -> 22605 bytes .../scipy/sparse/linalg/_norm.py | 184 + .../scipy/sparse/linalg/_norm.pyc | Bin 0 -> 5584 bytes .../scipy/sparse/linalg/_onenormest.py | 468 + .../scipy/sparse/linalg/_onenormest.pyc | Bin 0 -> 14288 bytes .../sparse/linalg/dsolve/SuperLU/License.txt | 29 + .../scipy/sparse/linalg/dsolve/__init__.py | 68 + .../scipy/sparse/linalg/dsolve/__init__.pyc | Bin 0 -> 2212 bytes .../sparse/linalg/dsolve/_add_newdocs.py | 154 + .../sparse/linalg/dsolve/_add_newdocs.pyc | Bin 0 -> 4993 bytes .../scipy/sparse/linalg/dsolve/_superlu.so | Bin 0 -> 1656920 bytes .../scipy/sparse/linalg/dsolve/linsolve.py | 567 + .../scipy/sparse/linalg/dsolve/linsolve.pyc | Bin 0 -> 18091 bytes .../scipy/sparse/linalg/dsolve/setup.py | 58 + .../scipy/sparse/linalg/dsolve/setup.pyc | Bin 0 -> 2003 bytes .../sparse/linalg/dsolve/tests/__init__.py | 0 .../sparse/linalg/dsolve/tests/__init__.pyc | Bin 0 -> 161 bytes .../linalg/dsolve/tests/test_linsolve.py | 716 + .../linalg/dsolve/tests/test_linsolve.pyc | Bin 0 -> 29635 bytes .../scipy/sparse/linalg/eigen/__init__.py | 18 + .../scipy/sparse/linalg/eigen/__init__.pyc | Bin 0 -> 737 bytes .../sparse/linalg/eigen/arpack/ARPACK/COPYING | 45 + .../sparse/linalg/eigen/arpack/__init__.py | 22 + .../sparse/linalg/eigen/arpack/__init__.pyc | Bin 0 -> 878 bytes .../sparse/linalg/eigen/arpack/_arpack.so | Bin 0 -> 867256 bytes .../sparse/linalg/eigen/arpack/arpack.py | 1865 ++ .../sparse/linalg/eigen/arpack/arpack.pyc | Bin 0 -> 57348 bytes .../scipy/sparse/linalg/eigen/arpack/setup.py | 45 + .../sparse/linalg/eigen/arpack/setup.pyc | Bin 0 -> 1675 bytes .../linalg/eigen/arpack/tests/__init__.py | 0 .../linalg/eigen/arpack/tests/__init__.pyc | Bin 0 -> 167 bytes .../linalg/eigen/arpack/tests/test_arpack.py | 965 + .../linalg/eigen/arpack/tests/test_arpack.pyc | Bin 0 -> 34149 bytes .../sparse/linalg/eigen/lobpcg/__init__.py | 18 + .../sparse/linalg/eigen/lobpcg/__init__.pyc | Bin 0 -> 790 bytes .../sparse/linalg/eigen/lobpcg/lobpcg.py | 568 + .../sparse/linalg/eigen/lobpcg/lobpcg.pyc | Bin 0 -> 15570 bytes .../scipy/sparse/linalg/eigen/lobpcg/setup.py | 15 + .../sparse/linalg/eigen/lobpcg/setup.pyc | Bin 0 -> 822 bytes .../linalg/eigen/lobpcg/tests/__init__.py | 0 .../linalg/eigen/lobpcg/tests/__init__.pyc | Bin 0 -> 167 bytes .../linalg/eigen/lobpcg/tests/test_lobpcg.py | 229 + .../linalg/eigen/lobpcg/tests/test_lobpcg.pyc | Bin 0 -> 8165 bytes .../scipy/sparse/linalg/eigen/setup.py | 17 + .../scipy/sparse/linalg/eigen/setup.pyc | Bin 0 -> 836 bytes .../scipy/sparse/linalg/interface.py | 700 + .../scipy/sparse/linalg/interface.pyc | Bin 0 -> 28883 bytes .../scipy/sparse/linalg/isolve/__init__.py | 17 + .../scipy/sparse/linalg/isolve/__init__.pyc | Bin 0 -> 794 bytes .../scipy/sparse/linalg/isolve/_gcrotmk.py | 487 + .../scipy/sparse/linalg/isolve/_gcrotmk.pyc | Bin 0 -> 12203 bytes .../scipy/sparse/linalg/isolve/_iterative.so | Bin 0 -> 489536 bytes .../scipy/sparse/linalg/isolve/iterative.py | 754 + .../scipy/sparse/linalg/isolve/iterative.pyc | Bin 0 -> 22862 bytes .../scipy/sparse/linalg/isolve/lgmres.py | 232 + .../scipy/sparse/linalg/isolve/lgmres.pyc | Bin 0 -> 7813 bytes .../scipy/sparse/linalg/isolve/lsmr.py | 470 + .../scipy/sparse/linalg/isolve/lsmr.pyc | Bin 0 -> 12713 bytes .../scipy/sparse/linalg/isolve/lsqr.py | 568 + .../scipy/sparse/linalg/isolve/lsqr.pyc | Bin 0 -> 17583 bytes .../scipy/sparse/linalg/isolve/minres.py | 362 + .../scipy/sparse/linalg/isolve/minres.pyc | Bin 0 -> 8243 bytes .../scipy/sparse/linalg/isolve/setup.py | 47 + .../scipy/sparse/linalg/isolve/setup.pyc | Bin 0 -> 1577 bytes .../sparse/linalg/isolve/tests/__init__.py | 0 .../sparse/linalg/isolve/tests/__init__.pyc | Bin 0 -> 161 bytes .../sparse/linalg/isolve/tests/demo_lgmres.py | 63 + .../linalg/isolve/tests/demo_lgmres.pyc | Bin 0 -> 2309 bytes .../linalg/isolve/tests/test_gcrotmk.py | 167 + .../linalg/isolve/tests/test_gcrotmk.pyc | Bin 0 -> 6842 bytes .../linalg/isolve/tests/test_iterative.py | 571 + .../linalg/isolve/tests/test_iterative.pyc | Bin 0 -> 21477 bytes .../sparse/linalg/isolve/tests/test_lgmres.py | 203 + .../linalg/isolve/tests/test_lgmres.pyc | Bin 0 -> 7941 bytes .../sparse/linalg/isolve/tests/test_lsmr.py | 180 + .../sparse/linalg/isolve/tests/test_lsmr.pyc | Bin 0 -> 7916 bytes .../sparse/linalg/isolve/tests/test_lsqr.py | 139 + .../sparse/linalg/isolve/tests/test_lsqr.pyc | Bin 0 -> 4942 bytes .../sparse/linalg/isolve/tests/test_minres.py | 65 + .../linalg/isolve/tests/test_minres.pyc | Bin 0 -> 3092 bytes .../sparse/linalg/isolve/tests/test_utils.py | 10 + .../sparse/linalg/isolve/tests/test_utils.pyc | Bin 0 -> 785 bytes .../scipy/sparse/linalg/isolve/utils.py | 123 + .../scipy/sparse/linalg/isolve/utils.pyc | Bin 0 -> 3963 bytes .../scipy/sparse/linalg/matfuncs.py | 863 + .../scipy/sparse/linalg/matfuncs.pyc | Bin 0 -> 29028 bytes .../scipy/sparse/linalg/setup.py | 20 + .../scipy/sparse/linalg/setup.pyc | Bin 0 -> 892 bytes .../scipy/sparse/linalg/tests/__init__.py | 0 .../scipy/sparse/linalg/tests/__init__.pyc | Bin 0 -> 154 bytes .../sparse/linalg/tests/test_expm_multiply.py | 254 + .../linalg/tests/test_expm_multiply.pyc | Bin 0 -> 12010 bytes .../sparse/linalg/tests/test_interface.py | 354 + .../sparse/linalg/tests/test_interface.pyc | Bin 0 -> 19041 bytes .../sparse/linalg/tests/test_matfuncs.py | 546 + .../sparse/linalg/tests/test_matfuncs.pyc | Bin 0 -> 19031 bytes .../scipy/sparse/linalg/tests/test_norm.py | 127 + .../scipy/sparse/linalg/tests/test_norm.pyc | Bin 0 -> 6079 bytes .../sparse/linalg/tests/test_onenormest.py | 254 + .../sparse/linalg/tests/test_onenormest.pyc | Bin 0 -> 9618 bytes .../site-packages/scipy/sparse/setup.py | 64 + .../site-packages/scipy/sparse/setup.pyc | Bin 0 -> 2145 bytes .../site-packages/scipy/sparse/sparsetools.py | 27 + .../scipy/sparse/sparsetools.pyc | Bin 0 -> 796 bytes .../site-packages/scipy/sparse/spfuncs.py | 100 + .../site-packages/scipy/sparse/spfuncs.pyc | Bin 0 -> 2653 bytes .../site-packages/scipy/sparse/sputils.py | 478 + .../site-packages/scipy/sparse/sputils.pyc | Bin 0 -> 15729 bytes .../scipy/sparse/tests/__init__.py | 0 .../scipy/sparse/tests/__init__.pyc | Bin 0 -> 147 bytes .../scipy/sparse/tests/data/csc_py2.npz | Bin 0 -> 846 bytes .../scipy/sparse/tests/data/csc_py3.npz | Bin 0 -> 851 bytes .../scipy/sparse/tests/test_base.py | 4621 ++++ .../scipy/sparse/tests/test_base.pyc | Bin 0 -> 174690 bytes .../scipy/sparse/tests/test_construct.py | 480 + .../scipy/sparse/tests/test_construct.pyc | Bin 0 -> 21558 bytes .../scipy/sparse/tests/test_csc.py | 36 + .../scipy/sparse/tests/test_csc.pyc | Bin 0 -> 1503 bytes .../scipy/sparse/tests/test_csr.py | 60 + .../scipy/sparse/tests/test_csr.pyc | Bin 0 -> 2313 bytes .../scipy/sparse/tests/test_extract.py | 44 + .../scipy/sparse/tests/test_extract.pyc | Bin 0 -> 2479 bytes .../scipy/sparse/tests/test_matrix_io.py | 93 + .../scipy/sparse/tests/test_matrix_io.pyc | Bin 0 -> 4366 bytes .../scipy/sparse/tests/test_sparsetools.py | 327 + .../scipy/sparse/tests/test_sparsetools.pyc | Bin 0 -> 12431 bytes .../scipy/sparse/tests/test_spfuncs.py | 99 + .../scipy/sparse/tests/test_spfuncs.pyc | Bin 0 -> 4330 bytes .../scipy/sparse/tests/test_sputils.py | 153 + .../scipy/sparse/tests/test_sputils.pyc | Bin 0 -> 6138 bytes .../site-packages/scipy/spatial/__init__.py | 108 + .../site-packages/scipy/spatial/__init__.pyc | Bin 0 -> 3588 bytes .../scipy/spatial/_distance_wrap.so | Bin 0 -> 91544 bytes .../site-packages/scipy/spatial/_hausdorff.so | Bin 0 -> 192960 bytes .../site-packages/scipy/spatial/_plotutils.py | 229 + .../scipy/spatial/_plotutils.pyc | Bin 0 -> 6453 bytes .../scipy/spatial/_procrustes.py | 133 + .../scipy/spatial/_procrustes.pyc | Bin 0 -> 4647 bytes .../scipy/spatial/_spherical_voronoi.py | 338 + .../scipy/spatial/_spherical_voronoi.pyc | Bin 0 -> 12576 bytes .../site-packages/scipy/spatial/_voronoi.so | Bin 0 -> 190944 bytes .../site-packages/scipy/spatial/ckdtree.so | Bin 0 -> 652576 bytes .../site-packages/scipy/spatial/distance.py | 2673 ++ .../site-packages/scipy/spatial/distance.pyc | Bin 0 -> 78588 bytes .../site-packages/scipy/spatial/kdtree.py | 987 + .../site-packages/scipy/spatial/kdtree.pyc | Bin 0 -> 33738 bytes .../site-packages/scipy/spatial/qhull.so | Bin 0 -> 3846184 bytes .../scipy/spatial/qhull/COPYING.txt | 38 + .../site-packages/scipy/spatial/setup.py | 85 + .../site-packages/scipy/spatial/setup.pyc | Bin 0 -> 2682 bytes .../scipy/spatial/tests/__init__.py | 0 .../scipy/spatial/tests/__init__.pyc | Bin 0 -> 148 bytes .../scipy/spatial/tests/data/cdist-X1.txt | 10 + .../scipy/spatial/tests/data/cdist-X2.txt | 20 + .../tests/data/degenerate_pointset.npz | Bin 0 -> 22548 bytes .../scipy/spatial/tests/data/iris.txt | 150 + .../spatial/tests/data/pdist-boolean-inp.txt | 20 + .../tests/data/pdist-chebyshev-ml-iris.txt | 1 + .../spatial/tests/data/pdist-chebyshev-ml.txt | 1 + .../tests/data/pdist-cityblock-ml-iris.txt | 1 + .../spatial/tests/data/pdist-cityblock-ml.txt | 1 + .../tests/data/pdist-correlation-ml-iris.txt | 1 + .../tests/data/pdist-correlation-ml.txt | 1 + .../tests/data/pdist-cosine-ml-iris.txt | 1 + .../spatial/tests/data/pdist-cosine-ml.txt | 1 + .../spatial/tests/data/pdist-double-inp.txt | 20 + .../tests/data/pdist-euclidean-ml-iris.txt | 1 + .../spatial/tests/data/pdist-euclidean-ml.txt | 1 + .../spatial/tests/data/pdist-hamming-ml.txt | 1 + .../spatial/tests/data/pdist-jaccard-ml.txt | 1 + .../data/pdist-minkowski-3.2-ml-iris.txt | 1 + .../tests/data/pdist-minkowski-3.2-ml.txt | 1 + .../data/pdist-minkowski-5.8-ml-iris.txt | 1 + .../tests/data/pdist-seuclidean-ml-iris.txt | 1 + .../tests/data/pdist-seuclidean-ml.txt | 1 + .../spatial/tests/data/pdist-spearman-ml.txt | 1 + .../spatial/tests/data/random-bool-data.txt | 100 + .../spatial/tests/data/random-double-data.txt | 100 + .../spatial/tests/data/random-int-data.txt | 100 + .../spatial/tests/data/random-uint-data.txt | 100 + .../tests/data/selfdual-4d-polytope.txt | 27 + .../scipy/spatial/tests/test__plotutils.py | 60 + .../scipy/spatial/tests/test__plotutils.pyc | Bin 0 -> 2855 bytes .../scipy/spatial/tests/test__procrustes.py | 118 + .../scipy/spatial/tests/test__procrustes.pyc | Bin 0 -> 4706 bytes .../scipy/spatial/tests/test_distance.py | 2012 ++ .../scipy/spatial/tests/test_distance.pyc | Bin 0 -> 88346 bytes .../scipy/spatial/tests/test_hausdorff.py | 115 + .../scipy/spatial/tests/test_hausdorff.pyc | Bin 0 -> 5195 bytes .../scipy/spatial/tests/test_kdtree.py | 1332 + .../scipy/spatial/tests/test_kdtree.pyc | Bin 0 -> 60273 bytes .../scipy/spatial/tests/test_qhull.py | 1008 + .../scipy/spatial/tests/test_qhull.pyc | Bin 0 -> 35581 bytes .../spatial/tests/test_spherical_voronoi.py | 166 + .../spatial/tests/test_spherical_voronoi.pyc | Bin 0 -> 7924 bytes .../python2.7/site-packages/scipy/special.pxd | 1 + .../site-packages/scipy/special/__init__.py | 661 + .../site-packages/scipy/special/__init__.pyc | Bin 0 -> 27974 bytes .../site-packages/scipy/special/_comb.so | Bin 0 -> 28696 bytes .../scipy/special/_ellip_harm.py | 210 + .../scipy/special/_ellip_harm.pyc | Bin 0 -> 6112 bytes .../scipy/special/_ellip_harm_2.so | Bin 0 -> 346504 bytes .../scipy/special/_generate_pyx.py | 1376 + .../scipy/special/_generate_pyx.pyc | Bin 0 -> 44185 bytes .../site-packages/scipy/special/_logsumexp.py | 129 + .../scipy/special/_logsumexp.pyc | Bin 0 -> 4075 bytes .../scipy/special/_mptestutils.py | 455 + .../scipy/special/_mptestutils.pyc | Bin 0 -> 16549 bytes .../scipy/special/_precompute/__init__.py | 0 .../scipy/special/_precompute/__init__.pyc | Bin 0 -> 154 bytes .../scipy/special/_precompute/expn_asy.py | 61 + .../scipy/special/_precompute/expn_asy.pyc | Bin 0 -> 2398 bytes .../scipy/special/_precompute/gammainc_asy.py | 119 + .../special/_precompute/gammainc_asy.pyc | Bin 0 -> 4215 bytes .../special/_precompute/gammainc_data.py | 126 + .../special/_precompute/gammainc_data.pyc | Bin 0 -> 4979 bytes .../scipy/special/_precompute/lambertw.py | 72 + .../scipy/special/_precompute/lambertw.pyc | Bin 0 -> 2744 bytes .../scipy/special/_precompute/loggamma.py | 46 + .../scipy/special/_precompute/loggamma.pyc | Bin 0 -> 1917 bytes .../scipy/special/_precompute/setup.py | 13 + .../scipy/special/_precompute/setup.pyc | Bin 0 -> 764 bytes .../special/_precompute/struve_convergence.py | 122 + .../_precompute/struve_convergence.pyc | Bin 0 -> 4688 bytes .../scipy/special/_precompute/utils.py | 46 + .../scipy/special/_precompute/utils.pyc | Bin 0 -> 2008 bytes .../scipy/special/_precompute/zetac.py | 29 + .../scipy/special/_precompute/zetac.pyc | Bin 0 -> 1271 bytes .../scipy/special/_spherical_bessel.py | 205 + .../scipy/special/_spherical_bessel.pyc | Bin 0 -> 5851 bytes .../scipy/special/_test_round.so | Bin 0 -> 184640 bytes .../site-packages/scipy/special/_testutils.py | 317 + .../scipy/special/_testutils.pyc | Bin 0 -> 10061 bytes .../site-packages/scipy/special/_ufuncs.so | Bin 0 -> 3804928 bytes .../scipy/special/_ufuncs_cxx.so | Bin 0 -> 119584 bytes .../scipy/special/add_newdocs.py | 7037 +++++ .../scipy/special/add_newdocs.pyc | Bin 0 -> 172677 bytes .../site-packages/scipy/special/basic.py | 2183 ++ .../site-packages/scipy/special/basic.pyc | Bin 0 -> 70768 bytes .../scipy/special/cython_special.pxd | 236 + .../scipy/special/cython_special.so | Bin 0 -> 9178904 bytes .../site-packages/scipy/special/lambertw.py | 107 + .../site-packages/scipy/special/lambertw.pyc | Bin 0 -> 3395 bytes .../site-packages/scipy/special/orthogonal.py | 2081 ++ .../scipy/special/orthogonal.pyc | Bin 0 -> 68298 bytes .../site-packages/scipy/special/setup.py | 160 + .../site-packages/scipy/special/setup.pyc | Bin 0 -> 4677 bytes .../site-packages/scipy/special/sf_error.py | 15 + .../site-packages/scipy/special/sf_error.pyc | Bin 0 -> 894 bytes .../site-packages/scipy/special/specfun.so | Bin 0 -> 1015552 bytes .../scipy/special/spfun_stats.py | 95 + .../scipy/special/spfun_stats.pyc | Bin 0 -> 2371 bytes .../scipy/special/tests/__init__.py | 0 .../scipy/special/tests/__init__.pyc | Bin 0 -> 148 bytes .../scipy/special/tests/data/README | 578 + .../scipy/special/tests/data/boost.npz | Bin 0 -> 828896 bytes .../scipy/special/tests/data/gsl.npz | Bin 0 -> 51371 bytes .../scipy/special/tests/data/local.npz | Bin 0 -> 179327 bytes .../scipy/special/tests/test_basic.py | 3454 +++ .../scipy/special/tests/test_basic.pyc | Bin 0 -> 180564 bytes .../scipy/special/tests/test_boxcox.py | 108 + .../scipy/special/tests/test_boxcox.pyc | Bin 0 -> 3826 bytes .../scipy/special/tests/test_cdflib.py | 409 + .../scipy/special/tests/test_cdflib.pyc | Bin 0 -> 17913 bytes .../special/tests/test_cython_special.py | 335 + .../special/tests/test_cython_special.pyc | Bin 0 -> 14574 bytes .../scipy/special/tests/test_data.py | 500 + .../scipy/special/tests/test_data.pyc | Bin 0 -> 25000 bytes .../scipy/special/tests/test_digamma.py | 44 + .../scipy/special/tests/test_digamma.pyc | Bin 0 -> 2125 bytes .../scipy/special/tests/test_ellip_harm.py | 273 + .../scipy/special/tests/test_ellip_harm.pyc | Bin 0 -> 16459 bytes .../scipy/special/tests/test_gammainc.py | 46 + .../scipy/special/tests/test_gammainc.pyc | Bin 0 -> 2198 bytes .../scipy/special/tests/test_kolmogorov.py | 242 + .../scipy/special/tests/test_kolmogorov.pyc | Bin 0 -> 14346 bytes .../scipy/special/tests/test_lambertw.py | 103 + .../scipy/special/tests/test_lambertw.pyc | Bin 0 -> 5175 bytes .../scipy/special/tests/test_loggamma.py | 72 + .../scipy/special/tests/test_loggamma.pyc | Bin 0 -> 3905 bytes .../scipy/special/tests/test_logit.py | 81 + .../scipy/special/tests/test_logit.pyc | Bin 0 -> 4090 bytes .../scipy/special/tests/test_logsumexp.py | 143 + .../scipy/special/tests/test_logsumexp.pyc | Bin 0 -> 4917 bytes .../scipy/special/tests/test_mpmath.py | 2053 ++ .../scipy/special/tests/test_mpmath.pyc | Bin 0 -> 104509 bytes .../scipy/special/tests/test_nan_inputs.py | 66 + .../scipy/special/tests/test_nan_inputs.pyc | Bin 0 -> 2577 bytes .../scipy/special/tests/test_orthogonal.py | 756 + .../scipy/special/tests/test_orthogonal.pyc | Bin 0 -> 35878 bytes .../special/tests/test_orthogonal_eval.py | 248 + .../special/tests/test_orthogonal_eval.pyc | Bin 0 -> 13130 bytes .../scipy/special/tests/test_owens_t.py | 44 + .../scipy/special/tests/test_owens_t.pyc | Bin 0 -> 2096 bytes .../scipy/special/tests/test_pcf.py | 24 + .../scipy/special/tests/test_pcf.pyc | Bin 0 -> 1053 bytes .../special/tests/test_precompute_expn_asy.py | 26 + .../tests/test_precompute_expn_asy.pyc | Bin 0 -> 1138 bytes .../special/tests/test_precompute_gammainc.py | 116 + .../tests/test_precompute_gammainc.pyc | Bin 0 -> 5794 bytes .../special/tests/test_precompute_utils.py | 42 + .../special/tests/test_precompute_utils.pyc | Bin 0 -> 2496 bytes .../scipy/special/tests/test_round.py | 18 + .../scipy/special/tests/test_round.pyc | Bin 0 -> 1047 bytes .../scipy/special/tests/test_sf_error.py | 130 + .../scipy/special/tests/test_sf_error.pyc | Bin 0 -> 4685 bytes .../scipy/special/tests/test_sici.py | 38 + .../scipy/special/tests/test_sici.pyc | Bin 0 -> 1845 bytes .../scipy/special/tests/test_spence.py | 34 + .../scipy/special/tests/test_spence.pyc | Bin 0 -> 1611 bytes .../scipy/special/tests/test_spfun_stats.py | 63 + .../scipy/special/tests/test_spfun_stats.pyc | Bin 0 -> 2743 bytes .../scipy/special/tests/test_sph_harm.py | 39 + .../scipy/special/tests/test_sph_harm.pyc | Bin 0 -> 2093 bytes .../special/tests/test_spherical_bessel.py | 377 + .../special/tests/test_spherical_bessel.pyc | Bin 0 -> 20941 bytes .../scipy/special/tests/test_trig.py | 71 + .../scipy/special/tests/test_trig.pyc | Bin 0 -> 2810 bytes .../scipy/special/tests/test_wrightomega.py | 55 + .../scipy/special/tests/test_wrightomega.pyc | Bin 0 -> 2234 bytes .../scipy/special/tests/test_zeta.py | 39 + .../scipy/special/tests/test_zeta.pyc | Bin 0 -> 2174 bytes .../site-packages/scipy/stats/__init__.py | 358 + .../site-packages/scipy/stats/__init__.pyc | Bin 0 -> 9621 bytes .../scipy/stats/_binned_statistic.py | 619 + .../scipy/stats/_binned_statistic.pyc | Bin 0 -> 23457 bytes .../site-packages/scipy/stats/_constants.py | 27 + .../site-packages/scipy/stats/_constants.pyc | Bin 0 -> 578 bytes .../scipy/stats/_continuous_distns.py | 6695 +++++ .../scipy/stats/_continuous_distns.pyc | Bin 0 -> 266719 bytes .../scipy/stats/_discrete_distns.py | 886 + .../scipy/stats/_discrete_distns.pyc | Bin 0 -> 35803 bytes .../scipy/stats/_distn_infrastructure.py | 3408 +++ .../scipy/stats/_distn_infrastructure.pyc | Bin 0 -> 112241 bytes .../scipy/stats/_distr_params.py | 131 + .../scipy/stats/_distr_params.pyc | Bin 0 -> 5574 bytes .../scipy/stats/_multivariate.py | 3774 +++ .../scipy/stats/_multivariate.pyc | Bin 0 -> 124136 bytes .../site-packages/scipy/stats/_stats.so | Bin 0 -> 443008 bytes .../scipy/stats/_stats_mstats_common.py | 258 + .../scipy/stats/_stats_mstats_common.pyc | Bin 0 -> 8894 bytes .../scipy/stats/_tukeylambda_stats.py | 201 + .../scipy/stats/_tukeylambda_stats.pyc | Bin 0 -> 3691 bytes .../site-packages/scipy/stats/contingency.py | 273 + .../site-packages/scipy/stats/contingency.pyc | Bin 0 -> 8964 bytes .../scipy/stats/distributions.py | 24 + .../scipy/stats/distributions.pyc | Bin 0 -> 668 bytes .../site-packages/scipy/stats/kde.py | 564 + .../site-packages/scipy/stats/kde.pyc | Bin 0 -> 18236 bytes .../site-packages/scipy/stats/morestats.py | 2775 ++ .../site-packages/scipy/stats/morestats.pyc | Bin 0 -> 93874 bytes .../site-packages/scipy/stats/mstats.py | 97 + .../site-packages/scipy/stats/mstats.pyc | Bin 0 -> 2063 bytes .../site-packages/scipy/stats/mstats_basic.py | 2617 ++ .../scipy/stats/mstats_basic.pyc | Bin 0 -> 85594 bytes .../scipy/stats/mstats_extras.py | 477 + .../scipy/stats/mstats_extras.pyc | Bin 0 -> 16464 bytes .../site-packages/scipy/stats/mvn.so | Bin 0 -> 154712 bytes .../site-packages/scipy/stats/setup.py | 38 + .../site-packages/scipy/stats/setup.pyc | Bin 0 -> 1207 bytes .../site-packages/scipy/stats/statlib.so | Bin 0 -> 130112 bytes .../site-packages/scipy/stats/stats.py | 5736 ++++ .../site-packages/scipy/stats/stats.pyc | Bin 0 -> 183791 bytes .../scipy/stats/tests/__init__.py | 0 .../scipy/stats/tests/__init__.pyc | Bin 0 -> 146 bytes .../scipy/stats/tests/common_tests.py | 290 + .../scipy/stats/tests/common_tests.pyc | Bin 0 -> 11585 bytes .../stats/tests/data/nist_anova/AtmWtAg.dat | 108 + .../stats/tests/data/nist_anova/SiRstv.dat | 85 + .../stats/tests/data/nist_anova/SmLs01.dat | 249 + .../stats/tests/data/nist_anova/SmLs02.dat | 1869 ++ .../stats/tests/data/nist_anova/SmLs03.dat | 18069 ++++++++++++ .../stats/tests/data/nist_anova/SmLs04.dat | 249 + .../stats/tests/data/nist_anova/SmLs05.dat | 1869 ++ .../stats/tests/data/nist_anova/SmLs06.dat | 18069 ++++++++++++ .../stats/tests/data/nist_anova/SmLs07.dat | 249 + .../stats/tests/data/nist_anova/SmLs08.dat | 1869 ++ .../stats/tests/data/nist_anova/SmLs09.dat | 18069 ++++++++++++ .../tests/data/nist_linregress/Norris.dat | 97 + .../stats/tests/test_binned_statistic.py | 437 + .../stats/tests/test_binned_statistic.pyc | Bin 0 -> 17243 bytes .../scipy/stats/tests/test_contingency.py | 200 + .../scipy/stats/tests/test_contingency.pyc | Bin 0 -> 6414 bytes .../stats/tests/test_continuous_basic.py | 413 + .../stats/tests/test_continuous_basic.pyc | Bin 0 -> 14604 bytes .../scipy/stats/tests/test_discrete_basic.py | 234 + .../scipy/stats/tests/test_discrete_basic.pyc | Bin 0 -> 8084 bytes .../scipy/stats/tests/test_discrete_distns.py | 31 + .../stats/tests/test_discrete_distns.pyc | Bin 0 -> 1141 bytes .../scipy/stats/tests/test_distributions.py | 3435 +++ .../scipy/stats/tests/test_distributions.pyc | Bin 0 -> 153734 bytes .../scipy/stats/tests/test_fit.py | 123 + .../scipy/stats/tests/test_fit.pyc | Bin 0 -> 4059 bytes .../scipy/stats/tests/test_kdeoth.py | 244 + .../scipy/stats/tests/test_kdeoth.pyc | Bin 0 -> 9216 bytes .../scipy/stats/tests/test_morestats.py | 1433 + .../scipy/stats/tests/test_morestats.pyc | Bin 0 -> 66896 bytes .../scipy/stats/tests/test_mstats_basic.py | 1277 + .../scipy/stats/tests/test_mstats_basic.pyc | Bin 0 -> 60292 bytes .../scipy/stats/tests/test_mstats_extras.py | 136 + .../scipy/stats/tests/test_mstats_extras.pyc | Bin 0 -> 6680 bytes .../scipy/stats/tests/test_multivariate.py | 1631 ++ .../scipy/stats/tests/test_multivariate.pyc | Bin 0 -> 59523 bytes .../scipy/stats/tests/test_rank.py | 218 + .../scipy/stats/tests/test_rank.pyc | Bin 0 -> 9801 bytes .../scipy/stats/tests/test_stats.py | 4267 +++ .../scipy/stats/tests/test_stats.pyc | Bin 0 -> 168952 bytes .../stats/tests/test_tukeylambda_stats.py | 88 + .../stats/tests/test_tukeylambda_stats.pyc | Bin 0 -> 2858 bytes .../site-packages/scipy/stats/vonmises.py | 46 + .../site-packages/scipy/stats/vonmises.pyc | Bin 0 -> 1847 bytes .../python2.7/site-packages/scipy/version.py | 10 + .../python2.7/site-packages/scipy/version.pyc | Bin 0 -> 330 bytes .../setuptools-40.5.0.dist-info/INSTALLER | 1 + .../setuptools-40.5.0.dist-info/LICENSE | 19 + .../setuptools-40.5.0.dist-info/METADATA | 76 + .../setuptools-40.5.0.dist-info/RECORD | 186 + .../setuptools-40.5.0.dist-info/WHEEL | 6 + .../dependency_links.txt | 2 + .../entry_points.txt | 65 + .../setuptools-40.5.0.dist-info/top_level.txt | 3 + .../setuptools-40.5.0.dist-info/zip-safe | 1 + .../site-packages/setuptools/__init__.py | 191 + .../site-packages/setuptools/__init__.pyc | Bin 0 -> 7821 bytes .../setuptools/_vendor/__init__.py | 0 .../setuptools/_vendor/__init__.pyc | Bin 0 -> 150 bytes .../setuptools/_vendor/packaging/__about__.py | 21 + .../_vendor/packaging/__about__.pyc | Bin 0 -> 789 bytes .../setuptools/_vendor/packaging/__init__.py | 14 + .../setuptools/_vendor/packaging/__init__.pyc | Bin 0 -> 611 bytes .../setuptools/_vendor/packaging/_compat.py | 30 + .../setuptools/_vendor/packaging/_compat.pyc | Bin 0 -> 1244 bytes .../_vendor/packaging/_structures.py | 68 + .../_vendor/packaging/_structures.pyc | Bin 0 -> 4173 bytes .../setuptools/_vendor/packaging/markers.py | 301 + .../setuptools/_vendor/packaging/markers.pyc | Bin 0 -> 11959 bytes .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/requirements.pyc | Bin 0 -> 5164 bytes .../_vendor/packaging/specifiers.py | 774 + .../_vendor/packaging/specifiers.pyc | Bin 0 -> 25327 bytes .../setuptools/_vendor/packaging/utils.py | 14 + .../setuptools/_vendor/packaging/utils.pyc | Bin 0 -> 594 bytes .../setuptools/_vendor/packaging/version.py | 393 + .../setuptools/_vendor/packaging/version.pyc | Bin 0 -> 14442 bytes .../setuptools/_vendor/pyparsing.py | 5742 ++++ .../setuptools/_vendor/pyparsing.pyc | Bin 0 -> 235315 bytes .../site-packages/setuptools/_vendor/six.py | 868 + .../site-packages/setuptools/_vendor/six.pyc | Bin 0 -> 31599 bytes .../site-packages/setuptools/archive_util.py | 173 + .../site-packages/setuptools/archive_util.pyc | Bin 0 -> 6142 bytes .../site-packages/setuptools/build_meta.py | 182 + .../site-packages/setuptools/build_meta.pyc | Bin 0 -> 7085 bytes .../site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 18 + .../setuptools/command/__init__.pyc | Bin 0 -> 882 bytes .../site-packages/setuptools/command/alias.py | 80 + .../setuptools/command/alias.pyc | Bin 0 -> 3098 bytes .../setuptools/command/bdist_egg.py | 502 + .../setuptools/command/bdist_egg.pyc | Bin 0 -> 18380 bytes .../setuptools/command/bdist_rpm.py | 43 + .../setuptools/command/bdist_rpm.pyc | Bin 0 -> 1914 bytes .../setuptools/command/bdist_wininst.py | 21 + .../setuptools/command/bdist_wininst.pyc | Bin 0 -> 1191 bytes .../setuptools/command/build_clib.py | 98 + .../setuptools/command/build_clib.pyc | Bin 0 -> 2844 bytes .../setuptools/command/build_ext.py | 321 + .../setuptools/command/build_ext.pyc | Bin 0 -> 12156 bytes .../setuptools/command/build_py.py | 270 + .../setuptools/command/build_py.pyc | Bin 0 -> 10667 bytes .../setuptools/command/develop.py | 218 + .../setuptools/command/develop.pyc | Bin 0 -> 7926 bytes .../setuptools/command/dist_info.py | 36 + .../setuptools/command/dist_info.pyc | Bin 0 -> 1799 bytes .../setuptools/command/easy_install.py | 2335 ++ .../setuptools/command/easy_install.pyc | Bin 0 -> 80331 bytes .../setuptools/command/egg_info.py | 706 + .../setuptools/command/egg_info.pyc | Bin 0 -> 26280 bytes .../setuptools/command/install.py | 125 + .../setuptools/command/install.pyc | Bin 0 -> 4953 bytes .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_egg_info.pyc | Bin 0 -> 3185 bytes .../setuptools/command/install_lib.py | 121 + .../setuptools/command/install_lib.pyc | Bin 0 -> 4870 bytes .../setuptools/command/install_scripts.py | 65 + .../setuptools/command/install_scripts.pyc | Bin 0 -> 2891 bytes .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 136 + .../setuptools/command/py36compat.pyc | Bin 0 -> 5550 bytes .../setuptools/command/register.py | 18 + .../setuptools/command/register.pyc | Bin 0 -> 918 bytes .../setuptools/command/rotate.py | 66 + .../setuptools/command/rotate.pyc | Bin 0 -> 3036 bytes .../setuptools/command/saveopts.py | 22 + .../setuptools/command/saveopts.pyc | Bin 0 -> 1129 bytes .../site-packages/setuptools/command/sdist.py | 200 + .../setuptools/command/sdist.pyc | Bin 0 -> 7823 bytes .../setuptools/command/setopt.py | 149 + .../setuptools/command/setopt.pyc | Bin 0 -> 6050 bytes .../site-packages/setuptools/command/test.py | 270 + .../site-packages/setuptools/command/test.pyc | Bin 0 -> 10500 bytes .../setuptools/command/upload.py | 53 + .../setuptools/command/upload.pyc | Bin 0 -> 2048 bytes .../setuptools/command/upload_docs.py | 206 + .../setuptools/command/upload_docs.pyc | Bin 0 -> 7842 bytes .../site-packages/setuptools/config.py | 608 + .../site-packages/setuptools/config.pyc | Bin 0 -> 18424 bytes .../site-packages/setuptools/dep_util.py | 23 + .../site-packages/setuptools/dep_util.pyc | Bin 0 -> 965 bytes .../site-packages/setuptools/depends.py | 186 + .../site-packages/setuptools/depends.pyc | Bin 0 -> 6483 bytes .../site-packages/setuptools/dist.py | 1071 + .../site-packages/setuptools/dist.pyc | Bin 0 -> 41515 bytes .../site-packages/setuptools/extension.py | 57 + .../site-packages/setuptools/extension.pyc | Bin 0 -> 2418 bytes .../setuptools/extern/__init__.py | 73 + .../setuptools/extern/__init__.pyc | Bin 0 -> 2924 bytes .../site-packages/setuptools/glibc.py | 86 + .../site-packages/setuptools/glibc.pyc | Bin 0 -> 1960 bytes .../site-packages/setuptools/glob.py | 174 + .../site-packages/setuptools/glob.pyc | Bin 0 -> 4717 bytes .../site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/launch.py | 35 + .../site-packages/setuptools/launch.pyc | Bin 0 -> 1000 bytes .../site-packages/setuptools/lib2to3_ex.py | 62 + .../site-packages/setuptools/lib2to3_ex.pyc | Bin 0 -> 3004 bytes .../site-packages/setuptools/monkey.py | 179 + .../site-packages/setuptools/monkey.pyc | Bin 0 -> 5684 bytes .../site-packages/setuptools/msvc.py | 1301 + .../site-packages/setuptools/msvc.pyc | Bin 0 -> 40340 bytes .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/namespaces.pyc | Bin 0 -> 5033 bytes .../site-packages/setuptools/package_index.py | 1128 + .../setuptools/package_index.pyc | Bin 0 -> 40088 bytes .../site-packages/setuptools/pep425tags.py | 319 + .../site-packages/setuptools/pep425tags.pyc | Bin 0 -> 9355 bytes .../site-packages/setuptools/py27compat.py | 28 + .../site-packages/setuptools/py27compat.pyc | Bin 0 -> 1045 bytes .../site-packages/setuptools/py31compat.py | 32 + .../site-packages/setuptools/py31compat.pyc | Bin 0 -> 1428 bytes .../site-packages/setuptools/py33compat.py | 55 + .../site-packages/setuptools/py33compat.pyc | Bin 0 -> 1746 bytes .../site-packages/setuptools/py36compat.py | 82 + .../site-packages/setuptools/py36compat.pyc | Bin 0 -> 2862 bytes .../site-packages/setuptools/sandbox.py | 491 + .../site-packages/setuptools/sandbox.pyc | Bin 0 -> 18900 bytes .../setuptools/script (dev).tmpl | 6 + .../site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/site-patch.py | 74 + .../site-packages/setuptools/site-patch.pyc | Bin 0 -> 1739 bytes .../site-packages/setuptools/ssl_support.py | 260 + .../site-packages/setuptools/ssl_support.pyc | Bin 0 -> 8516 bytes .../site-packages/setuptools/unicode_utils.py | 44 + .../setuptools/unicode_utils.pyc | Bin 0 -> 1472 bytes .../site-packages/setuptools/version.py | 6 + .../site-packages/setuptools/version.pyc | Bin 0 -> 322 bytes .../site-packages/setuptools/wheel.py | 210 + .../site-packages/setuptools/wheel.pyc | Bin 0 -> 8850 bytes .../setuptools/windows_support.py | 29 + .../setuptools/windows_support.pyc | Bin 0 -> 1274 bytes .../six-1.11.0.dist-info/DESCRIPTION.rst | 27 + .../six-1.11.0.dist-info/INSTALLER | 1 + .../six-1.11.0.dist-info/METADATA | 43 + .../site-packages/six-1.11.0.dist-info/RECORD | 9 + .../site-packages/six-1.11.0.dist-info/WHEEL | 6 + .../six-1.11.0.dist-info/metadata.json | 1 + .../six-1.11.0.dist-info/top_level.txt | 1 + .../env/lib/python2.7/site-packages/six.py | 891 + .../env/lib/python2.7/site-packages/six.pyc | Bin 0 -> 30370 bytes .../site-packages/werkzeug/__init__.py | 151 + .../site-packages/werkzeug/__init__.pyc | Bin 0 -> 5710 bytes .../site-packages/werkzeug/_compat.py | 206 + .../site-packages/werkzeug/_compat.pyc | Bin 0 -> 9904 bytes .../site-packages/werkzeug/_internal.py | 419 + .../site-packages/werkzeug/_internal.pyc | Bin 0 -> 15107 bytes .../site-packages/werkzeug/_reloader.py | 277 + .../site-packages/werkzeug/_reloader.pyc | Bin 0 -> 10817 bytes .../werkzeug/contrib/__init__.py | 16 + .../werkzeug/contrib/__init__.pyc | Bin 0 -> 763 bytes .../site-packages/werkzeug/contrib/atom.py | 355 + .../site-packages/werkzeug/contrib/atom.pyc | Bin 0 -> 16185 bytes .../site-packages/werkzeug/contrib/cache.py | 913 + .../site-packages/werkzeug/contrib/cache.pyc | Bin 0 -> 37299 bytes .../site-packages/werkzeug/contrib/fixers.py | 254 + .../site-packages/werkzeug/contrib/fixers.pyc | Bin 0 -> 11477 bytes .../site-packages/werkzeug/contrib/iterio.py | 352 + .../site-packages/werkzeug/contrib/iterio.pyc | Bin 0 -> 13684 bytes .../werkzeug/contrib/jsrouting.py | 264 + .../werkzeug/contrib/jsrouting.pyc | Bin 0 -> 9103 bytes .../site-packages/werkzeug/contrib/limiter.py | 41 + .../werkzeug/contrib/limiter.pyc | Bin 0 -> 1957 bytes .../site-packages/werkzeug/contrib/lint.py | 343 + .../site-packages/werkzeug/contrib/lint.pyc | Bin 0 -> 14640 bytes .../werkzeug/contrib/profiler.py | 147 + .../werkzeug/contrib/profiler.pyc | Bin 0 -> 6232 bytes .../werkzeug/contrib/securecookie.py | 323 + .../werkzeug/contrib/securecookie.pyc | Bin 0 -> 11687 bytes .../werkzeug/contrib/sessions.py | 352 + .../werkzeug/contrib/sessions.pyc | Bin 0 -> 15371 bytes .../werkzeug/contrib/testtools.py | 73 + .../werkzeug/contrib/testtools.pyc | Bin 0 -> 3177 bytes .../werkzeug/contrib/wrappers.py | 284 + .../werkzeug/contrib/wrappers.pyc | Bin 0 -> 11757 bytes .../site-packages/werkzeug/datastructures.py | 2762 ++ .../site-packages/werkzeug/datastructures.pyc | Bin 0 -> 119838 bytes .../site-packages/werkzeug/debug/__init__.py | 470 + .../site-packages/werkzeug/debug/__init__.pyc | Bin 0 -> 15600 bytes .../site-packages/werkzeug/debug/console.py | 215 + .../site-packages/werkzeug/debug/console.pyc | Bin 0 -> 9558 bytes .../site-packages/werkzeug/debug/repr.py | 280 + .../site-packages/werkzeug/debug/repr.pyc | Bin 0 -> 10497 bytes .../werkzeug/debug/shared/FONT_LICENSE | 96 + .../werkzeug/debug/shared/console.png | Bin 0 -> 507 bytes .../werkzeug/debug/shared/debugger.js | 205 + .../werkzeug/debug/shared/jquery.js | 5 + .../werkzeug/debug/shared/less.png | Bin 0 -> 191 bytes .../werkzeug/debug/shared/more.png | Bin 0 -> 200 bytes .../werkzeug/debug/shared/source.png | Bin 0 -> 818 bytes .../werkzeug/debug/shared/style.css | 143 + .../werkzeug/debug/shared/ubuntu.ttf | Bin 0 -> 70220 bytes .../site-packages/werkzeug/debug/tbtools.py | 556 + .../site-packages/werkzeug/debug/tbtools.pyc | Bin 0 -> 18740 bytes .../site-packages/werkzeug/exceptions.py | 719 + .../site-packages/werkzeug/exceptions.pyc | Bin 0 -> 26504 bytes .../site-packages/werkzeug/filesystem.py | 66 + .../site-packages/werkzeug/filesystem.pyc | Bin 0 -> 2556 bytes .../site-packages/werkzeug/formparser.py | 534 + .../site-packages/werkzeug/formparser.pyc | Bin 0 -> 18913 bytes .../python2.7/site-packages/werkzeug/http.py | 1158 + .../python2.7/site-packages/werkzeug/http.pyc | Bin 0 -> 38189 bytes .../python2.7/site-packages/werkzeug/local.py | 420 + .../site-packages/werkzeug/local.pyc | Bin 0 -> 24275 bytes .../site-packages/werkzeug/posixemulation.py | 106 + .../site-packages/werkzeug/posixemulation.pyc | Bin 0 -> 3465 bytes .../site-packages/werkzeug/routing.py | 1792 ++ .../site-packages/werkzeug/routing.pyc | Bin 0 -> 67798 bytes .../site-packages/werkzeug/script.py | 318 + .../site-packages/werkzeug/script.pyc | Bin 0 -> 11683 bytes .../site-packages/werkzeug/security.py | 270 + .../site-packages/werkzeug/security.pyc | Bin 0 -> 10214 bytes .../site-packages/werkzeug/serving.py | 862 + .../site-packages/werkzeug/serving.pyc | Bin 0 -> 31855 bytes .../python2.7/site-packages/werkzeug/test.py | 948 + .../python2.7/site-packages/werkzeug/test.pyc | Bin 0 -> 36406 bytes .../site-packages/werkzeug/testapp.py | 230 + .../site-packages/werkzeug/testapp.pyc | Bin 0 -> 10359 bytes .../python2.7/site-packages/werkzeug/urls.py | 1007 + .../python2.7/site-packages/werkzeug/urls.pyc | Bin 0 -> 37799 bytes .../site-packages/werkzeug/useragents.py | 212 + .../site-packages/werkzeug/useragents.pyc | Bin 0 -> 6978 bytes .../python2.7/site-packages/werkzeug/utils.py | 628 + .../site-packages/werkzeug/utils.pyc | Bin 0 -> 24073 bytes .../site-packages/werkzeug/websocket.py | 337 + .../site-packages/werkzeug/websocket.pyc | Bin 0 -> 10028 bytes .../site-packages/werkzeug/wrappers.py | 2028 ++ .../site-packages/werkzeug/wrappers.pyc | Bin 0 -> 85117 bytes .../python2.7/site-packages/werkzeug/wsgi.py | 1364 + .../python2.7/site-packages/werkzeug/wsgi.pyc | Bin 0 -> 50588 bytes .../wheel-0.32.2.dist-info/INSTALLER | 1 + .../wheel-0.32.2.dist-info/LICENSE.txt | 22 + .../wheel-0.32.2.dist-info/METADATA | 60 + .../wheel-0.32.2.dist-info/RECORD | 34 + .../wheel-0.32.2.dist-info/WHEEL | 6 + .../wheel-0.32.2.dist-info/entry_points.txt | 6 + .../wheel-0.32.2.dist-info/top_level.txt | 1 + .../python2.7/site-packages/wheel/__init__.py | 2 + .../site-packages/wheel/__init__.pyc | Bin 0 -> 165 bytes .../python2.7/site-packages/wheel/__main__.py | 19 + .../site-packages/wheel/__main__.pyc | Bin 0 -> 703 bytes .../site-packages/wheel/bdist_wheel.py | 368 + .../site-packages/wheel/bdist_wheel.pyc | Bin 0 -> 13336 bytes .../site-packages/wheel/cli/__init__.py | 87 + .../site-packages/wheel/cli/__init__.pyc | Bin 0 -> 3763 bytes .../site-packages/wheel/cli/convert.py | 269 + .../site-packages/wheel/cli/convert.pyc | Bin 0 -> 7584 bytes .../site-packages/wheel/cli/install.py | 0 .../site-packages/wheel/cli/install.pyc | Bin 0 -> 135 bytes .../python2.7/site-packages/wheel/cli/pack.py | 54 + .../site-packages/wheel/cli/pack.pyc | Bin 0 -> 2788 bytes .../site-packages/wheel/cli/unpack.py | 25 + .../site-packages/wheel/cli/unpack.pyc | Bin 0 -> 1074 bytes .../python2.7/site-packages/wheel/metadata.py | 141 + .../site-packages/wheel/metadata.pyc | Bin 0 -> 4670 bytes .../site-packages/wheel/pep425tags.py | 185 + .../site-packages/wheel/pep425tags.pyc | Bin 0 -> 6021 bytes .../python2.7/site-packages/wheel/pkginfo.py | 43 + .../python2.7/site-packages/wheel/pkginfo.pyc | Bin 0 -> 2025 bytes .../lib/python2.7/site-packages/wheel/util.py | 41 + .../python2.7/site-packages/wheel/util.pyc | Bin 0 -> 1615 bytes .../site-packages/wheel/wheelfile.py | 160 + .../site-packages/wheel/wheelfile.pyc | Bin 0 -> 6713 bytes .../scipy/env/lib/python2.7/stat.pyc | Bin 0 -> 3391 bytes .../scipy/env/lib/python2.7/types.pyc | Bin 0 -> 3173 bytes .../scipy/env/lib/python2.7/warnings.pyc | Bin 0 -> 14982 bytes googleAppEngine/scipy2/app.yaml | 6 + googleAppEngine/scipy2/assets/google_logo.jpg | Bin 0 -> 21568 bytes .../scipy2/assets/resized_google_logo.jpg | Bin 0 -> 8639 bytes .../fixtures/assets/resized_google_logo.jpg | Bin 0 -> 8639 bytes googleAppEngine/scipy2/main.py | 64 + googleAppEngine/scipy2/main_test.py | 35 + googleAppEngine/scipy2/requirements.txt | 5 + googleAppEngine/scipy2/templates/files.html | 29 + googleAppEngine/scipy3/app.yaml | 6 + .../assets/1-paesaggi-naturali-classifica.jpg | Bin 0 -> 91457 bytes .../Parco_Naturale_dei_Monti_Aurunci.jpg | Bin 0 -> 406807 bytes googleAppEngine/scipy3/assets/google_logo.jpg | Bin 0 -> 21568 bytes .../scipy3/assets/resized_google_logo.jpg | Bin 0 -> 8639 bytes .../fixtures/assets/resized_google_logo.jpg | Bin 0 -> 8639 bytes googleAppEngine/scipy3/main.py | 98 + googleAppEngine/scipy3/main_test.py | 35 + googleAppEngine/scipy3/requirements.txt | 5 + googleAppEngine/scipy3/templates/files.html | 29 + googleAppEngine/scipy3/templates/upload.html | 7 + googleAppEngine/scipy4/app.yaml | 6 + .../assets/1-paesaggi-naturali-classifica.jpg | Bin 0 -> 91457 bytes .../Parco_Naturale_dei_Monti_Aurunci.jpg | Bin 0 -> 406807 bytes googleAppEngine/scipy4/assets/google_logo.jpg | Bin 0 -> 21568 bytes ...resized_1-paesaggi-naturali-classifica.jpg | Bin 0 -> 23160 bytes ...sized_Parco_Naturale_dei_Monti_Aurunci.jpg | Bin 0 -> 31669 bytes .../scipy4/assets/resized_google_logo.jpg | Bin 0 -> 8639 bytes .../fixtures/assets/resized_google_logo.jpg | Bin 0 -> 8639 bytes googleAppEngine/scipy4/main.py | 102 + googleAppEngine/scipy4/main_test.py | 35 + googleAppEngine/scipy4/requirements.txt | 6 + googleAppEngine/scipy4/templates/files.html | 29 + googleAppEngine/scipy4/templates/upload.html | 7 + 5201 files changed, 1031484 insertions(+) create mode 100644 googleAppEngine/scipy/env/lib/python2.7/UserDict.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/_abcoll.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/_weakrefset.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/abc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/codecs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/copy_reg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/genericpath.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/linecache.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/ntpath.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/os.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/posixpath.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/re.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/entry_points.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/entry_points.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/metadata.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/LICENSE create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/top_level.txt create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libfreetype-6ed94974.so.6.16.1 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libjpeg-3fe7dfc0.so.9.3.0 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/liblcms2-a6801db4.so.2.0.8 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/liblzma-90de1f11.so.5.2.2 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libopenjp2-e366d6b0.so.2.1.0 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libpng16-8793a1b2.so.16.32.0 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libtiff-8a6d997d.so.5.3.0 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libwebp-8ccd29fd.so.7.0.2 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libwebpdemux-eba3dc32.so.2.0.4 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libwebpmux-1c63fe99.so.3.0.2 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libz-a147dcb0.so.1.2.3 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BdfFontFile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BdfFontFile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BlpImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BlpImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BmpImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BmpImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BufrStubImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BufrStubImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ContainerIO.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ContainerIO.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/CurImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/CurImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/DcxImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/DcxImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/DdsImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/DdsImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/EpsImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/EpsImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ExifTags.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ExifTags.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FitsStubImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FitsStubImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FliImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FliImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FontFile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FontFile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FpxImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FpxImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FtexImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FtexImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GbrImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GbrImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GdImageFile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GdImageFile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GifImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GifImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpGradientFile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpGradientFile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpPaletteFile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpPaletteFile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GribStubImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GribStubImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Hdf5StubImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Hdf5StubImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcnsImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcnsImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcoImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcoImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Image.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Image.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageChops.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageChops.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageCms.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageCms.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageColor.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageColor.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageDraw.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageDraw.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageDraw2.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageDraw2.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageEnhance.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageEnhance.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFilter.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFilter.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFont.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFont.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageGrab.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageGrab.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMath.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMath.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMode.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMode.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMorph.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMorph.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageOps.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageOps.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImagePalette.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImagePalette.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImagePath.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImagePath.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageQt.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageQt.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageSequence.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageSequence.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageShow.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageShow.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageStat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageStat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageTk.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageTk.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageTransform.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageTransform.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageWin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageWin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImtImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImtImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IptcImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IptcImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Jpeg2KImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Jpeg2KImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegPresets.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegPresets.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/McIdasImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/McIdasImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MicImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MicImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpegImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpegImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpoImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpoImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MspImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MspImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/OleFileIO.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/OleFileIO.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PSDraw.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PSDraw.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PaletteFile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PaletteFile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PalmImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PalmImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcdImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcdImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcfFontFile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcfFontFile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcxImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcxImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfParser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfParser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PixarImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PixarImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PngImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PngImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PpmImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PpmImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PsdImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PsdImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PyAccess.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PyAccess.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SgiImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SgiImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SpiderImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SpiderImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SunImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SunImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TarIO.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TarIO.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TgaImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TgaImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffTags.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffTags.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WalImageFile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WalImageFile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WebPImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WebPImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WmfImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WmfImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XVThumbImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XVThumbImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XbmImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XbmImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XpmImagePlugin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XpmImagePlugin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_binary.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_binary.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imaging.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingcms.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingft.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingmath.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingmorph.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingtk.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_tkinter_finder.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_tkinter_finder.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_version.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_webp.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/features.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/features.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/zip-safe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/DESCRIPTION.rst create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/metadata.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_argcomplete.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_argcomplete.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/_py2traceback.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/_py2traceback.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/code.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/code.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/source.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/source.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/rewrite.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/rewrite.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/truncate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/truncate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/cacheprovider.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/cacheprovider.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/capture.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/capture.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/argparsing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/argparsing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/findpaths.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/findpaths.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/debugging.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/debugging.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/deprecated.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/deprecated.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/doctest.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/doctest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/fixtures.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/fixtures.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/freeze_support.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/freeze_support.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/helpconfig.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/helpconfig.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/hookspec.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/hookspec.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/junitxml.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/junitxml.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/logging.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/logging.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/main.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/main.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/mark/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/mark/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/mark/evaluate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/mark/evaluate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/mark/legacy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/mark/legacy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/mark/structures.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/mark/structures.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/monkeypatch.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/monkeypatch.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/nodes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/nodes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/nose.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/nose.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/outcomes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/outcomes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/pastebin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/pastebin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/pathlib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/pathlib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/pytester.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/pytester.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/python.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/python.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/python_api.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/python_api.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/recwarn.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/recwarn.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/reports.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/reports.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/resultlog.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/resultlog.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/runner.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/runner.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/setuponly.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/setuponly.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/setupplan.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/setupplan.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/skipping.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/skipping.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/terminal.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/terminal.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/tmpdir.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/tmpdir.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/unittest.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/unittest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/warning_types.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/warning_types.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/warnings.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/warnings.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/_scandir.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy-2.0.9.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy-2.0.9.dist-info/LICENSE.rst create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy-2.0.9.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy-2.0.9.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy-2.0.9.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy-2.0.9.dist-info/entry_points.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy-2.0.9.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/CITATION create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_compiler.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/_core.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/erfa_generator.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/erfa_generator.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/tests/test_erfa.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/_erfa/tests/test_erfa.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/analytic_functions/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/analytic_functions/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/analytic_functions/blackbody.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/analytic_functions/blackbody.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/analytic_functions/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/analytic_functions/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/analytic_functions/tests/test_blackbody.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/analytic_functions/tests/test_blackbody.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/astropy.cfg create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/affiliated.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/affiliated.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/configuration.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/configuration.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/paths.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/paths.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/data/alias.cfg create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/data/astropy.0.3.cfg create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/data/astropy.0.3.windows.cfg create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/data/deprecated.cfg create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/data/empty.cfg create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/data/not_empty.cfg create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/test_configs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/config/tests/test_configs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/conftest.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/conftest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/astropyconst13.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/astropyconst13.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/astropyconst20.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/astropyconst20.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/cgs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/cgs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/codata2010.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/codata2010.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/codata2014.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/codata2014.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/constant.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/constant.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/iau2012.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/iau2012.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/iau2015.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/iau2015.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/si.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/si.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/tests/test_constant.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/tests/test_constant.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/tests/test_pickle.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/tests/test_pickle.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/tests/test_prior_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/constants/tests/test_prior_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/boundary_extend.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/boundary_fill.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/boundary_none.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/boundary_wrap.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/convolve.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/convolve.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/kernels.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/kernels.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_fft.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_fft.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_kernels.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_kernels.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_nddata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_nddata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_speeds.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_speeds.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_discretize.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_discretize.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_kernel_class.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_kernel_class.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_pickle.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/tests/test_pickle.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/convolution/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/funcs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/funcs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/parameters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/parameters.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/scalar_inv_efuncs.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/tests/test_cosmology.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/tests/test_cosmology.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/tests/test_pickle.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cosmology/tests/test_pickle.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cython_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/cython_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/cds.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/cds.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/connect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/connect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/core.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/cparser.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/daophot.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/daophot.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/ecsv.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/ecsv.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/fastbasic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/fastbasic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/fixedwidth.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/fixedwidth.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/html.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/html.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/ipac.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/ipac.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/latex.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/latex.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/misc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/misc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/rst.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/rst.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/sextractor.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/sextractor.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/apostrophe.rdb create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/apostrophe.tab create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/bad.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/bars_at_ends.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds/description/ReadMe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds/description/table.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds/glob/ReadMe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds/glob/lmxbrefs.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds/multi/ReadMe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds/multi/lhs2065.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds/multi/lp944-20.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds2.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/cds_malformed.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/commented_header.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/commented_header2.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/continuation.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/daophot.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/daophot.dat.gz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/daophot2.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/daophot3.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/daophot4.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/fill_values.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/fixed_width_2_line.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/html.html create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/html2.html create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/ipac.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/ipac.dat.bz2 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/ipac.dat.xz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/latex1.tex create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/latex1.tex.gz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/latex2.tex create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/latex3.tex create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/nls1_stackinfo.dbout create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/no_data_cds.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/no_data_daophot.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/no_data_ipac.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/no_data_sextractor.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/no_data_with_header.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/no_data_without_header.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/sextractor.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/sextractor2.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/sextractor3.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/short.rdb create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/short.rdb.bz2 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/short.rdb.gz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/short.rdb.xz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/short.tab create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/simple.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/simple2.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/simple3.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/simple4.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/simple5.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/simple_csv.csv create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/simple_csv_missing.csv create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/space_delim_blank_lines.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/space_delim_no_header.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/space_delim_no_names.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/test4.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/test5.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/vizier/ReadMe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/vizier/table1.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/vizier/table5.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/vots_spec.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/t/whitespace.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_c_reader.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_c_reader.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_cds_header_from_readme.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_cds_header_from_readme.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_compressed.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_compressed.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_connect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_connect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_ecsv.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_ecsv.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_fixedwidth.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_fixedwidth.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_html.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_html.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_ipac_definitions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_ipac_definitions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_read.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_read.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_rst.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_rst.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_types.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_types.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_write.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/tests/test_write.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/ui.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/ascii/ui.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/_numpy_hacks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/_numpy_hacks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/card.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/card.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/column.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/column.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/compression.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/connect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/connect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/convenience.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/convenience.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/diff.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/diff.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/file.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/file.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/fitsrec.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/fitsrec.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/compressed.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/compressed.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/groups.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/groups.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/hdulist.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/hdulist.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/image.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/image.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/nonstandard.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/nonstandard.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/streaming.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/streaming.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/table.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/hdu/table.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/header.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/header.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/py3compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/py3compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/fitscheck.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/fitscheck.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/fitsdiff.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/fitsdiff.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/fitsheader.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/fitsheader.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/fitsinfo.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/scripts/fitsinfo.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/arange.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/ascii.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/blank.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/btable.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/checksum.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/comp.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/compressed_float_bzero.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/compressed_image.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/fixed-1890.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/group.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/history_header.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/memtest.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/o4sp040b0_raw.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/random_groups.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/scale.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/stddata.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/table.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/tb.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/tdim.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/test0.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/variable_length_table.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/data/zerowidth.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_checksum.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_checksum.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_convenience.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_convenience.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_division.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_division.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_fitsdiff.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_fitsdiff.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_fitsheader.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_fitsheader.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_fitsinfo.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_fitsinfo.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_hdulist.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_hdulist.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_header.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_image.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_nonstandard.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_nonstandard.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_structured.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_structured.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_table.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_uint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_uint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/tests/test_util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/verify.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/fits/verify.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/connect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/connect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/hdf5.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/hdf5.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/pickle_helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/pickle_helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/tests/test_pickle_helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/tests/test_pickle_helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/tests/test_yaml.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/tests/test_yaml.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/yaml.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/misc/yaml.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/registry.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/registry.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/tests/test_registry.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/tests/test_registry.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/connect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/connect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/converters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/converters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/data/VOTable.dtd create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/data/VOTable.v1.1.xsd create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/data/VOTable.v1.2.xsd create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/data/VOTable.v1.3.xsd create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/data/ucd1p-words.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/table.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/table.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tablewriter.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/converter_test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/converter_test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/custom_datatype.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/empty_table.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/gemini.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/irsa-nph-error.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/irsa-nph-m31.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/names.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/no_resource.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/no_resource.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/nonstandard_units.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/regression.bin.tabledata.truth.1.1.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/regression.bin.tabledata.truth.1.3.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/regression.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/tb.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/too_many_columns.xml.gz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/data/validation.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/exception_test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/exception_test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/table_test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/table_test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/tree_test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/tree_test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/ucd_test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/ucd_test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/util_test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/util_test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/vo_test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tests/vo_test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tree.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/tree.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/ucd.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/ucd.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/html.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/html.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/main.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/main.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/result.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/result.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/urls/cone.big.dat.gz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/urls/cone.broken.dat.gz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/urls/cone.good.dat.gz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/validator/urls/cone.incorrect.dat.gz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/volint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/volint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/xmlutil.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/io/votable/xmlutil.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/logger.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/logger.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/_projections.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/blackbody.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/blackbody.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/fitting.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/fitting.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/functional_models.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/functional_models.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/mappings.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/mappings.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/models.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/models.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/optimizers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/optimizers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/parameters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/parameters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/polynomial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/polynomial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/powerlaws.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/powerlaws.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/projections.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/projections.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/rotations.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/rotations.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/statistic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/statistic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tabular.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tabular.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/data/1904-66_AZP.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/data/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/data/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/data/hst_sip.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/data/idcompspec.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/data/irac_sip.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/example_models.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/example_models.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/irafutil.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/irafutil.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_blackbody.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_blackbody.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_compound.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_compound.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_constraints.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_constraints.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_fitters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_fitters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_functional_models.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_functional_models.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_input.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_input.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_mappings.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_mappings.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_models.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_models.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_models_quantities.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_models_quantities.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_polynomial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_polynomial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_projections.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_projections.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_fitting.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_fitting.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_model.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_model.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_parameters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_parameters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_rotations.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_rotations.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_rotations.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_rotations.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/test_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/tests/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/modeling/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/ccddata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/ccddata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/decorators.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/decorators.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/flag_collection.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/flag_collection.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/ndarithmetic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/ndarithmetic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/ndio.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/ndio.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/ndslicing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/ndslicing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/tests/test_ndarithmetic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/tests/test_ndarithmetic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/tests/test_ndio.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/tests/test_ndio.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/tests/test_ndslicing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/mixins/tests/test_ndslicing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/nddata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/nddata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/nddata_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/nddata_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/nddata_withmixins.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/nddata_withmixins.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/nduncertainty.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/nduncertainty.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/data/sip-wcs.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_ccddata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_decorators.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_decorators.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_flag_collection.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_flag_collection.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_nddata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_nddata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_nddata_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_nddata_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_nduncertainty.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/tests/test_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/nddata/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/client.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/client.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/constants.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/constants.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/data/astropy_icon.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/data/clientaccesspolicy.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/data/crossdomain.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/errors.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/errors.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/hub.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/hub.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/hub_proxy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/hub_proxy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/hub_script.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/hub_script.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/integrated_client.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/integrated_client.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/lockfile_helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/lockfile_helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/standard_profile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/standard_profile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_client.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_client.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_errors.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_errors.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_hub.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_hub.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_hub_proxy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_hub_proxy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_hub_script.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_hub_script.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_standard_profile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_standard_profile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_web_profile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/test_web_profile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/web_profile_test_helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/tests/web_profile_test_helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/web_profile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/samp/web_profile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/bayesian_blocks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/bayesian_blocks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/biweight.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/biweight.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/circstats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/circstats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/funcs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/funcs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/histogram.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/histogram.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/info_theory.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/info_theory.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/jackknife.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/jackknife.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/chi2_impl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/chi2_impl.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/cython_impl.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/fast_impl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/fast_impl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/fastchi2_impl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/fastchi2_impl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/main.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/main.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/mle.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/mle.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/scipy_impl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/scipy_impl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/slow_impl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/slow_impl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/tests/test_mle.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/tests/test_mle.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/tests/test_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/tests/test_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/implementations/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/tests/test_lombscargle.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/lombscargle/tests/test_lombscargle.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/sigma_clipping.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/sigma_clipping.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/spatial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/spatial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_bayesian_blocks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_bayesian_blocks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_biweight.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_biweight.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_circstats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_circstats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_funcs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_funcs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_histogram.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_histogram.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_info_theory.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_info_theory.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_jackknife.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_jackknife.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_sigma_clipping.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_spatial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/stats/tests/test_spatial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/_column_mixins.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/_np_utils.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/bst.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/bst.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/column.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/column.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/groups.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/groups.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/index.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/index.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/jsviewer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/jsviewer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/meta.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/meta.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/np_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/np_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/operations.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/operations.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/pprint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/pprint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/row.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/row.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/serialize.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/serialize.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/sorted_array.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/sorted_array.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/table.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/table.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/table_helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/table_helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/conftest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_column.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_groups.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_index.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_item_access.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_jsviewer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_masked.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_pickle.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_pprint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_row.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/table/tests/test_subclass.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/command.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/command.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/coveragerc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/disable_internet.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/disable_internet.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/helper.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/helper.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/image_tests.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/image_tests.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/output_checker.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/output_checker.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/pytest_plugins.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/pytest_plugins.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/pytest_repeat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/pytest_repeat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/runner.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/runner.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/test_logger.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/test_logger.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/data/open_file_detection.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_imports.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_imports.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_open_file_detection.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_open_file_detection.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_quantity_helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_quantity_helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_run_tests.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_run_tests.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_runner.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_runner.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_skip_remote_data.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_skip_remote_data.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_socketblocker.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/tests/tests/test_socketblocker.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/formats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/formats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_comparisons.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_comparisons.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_corrs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_corrs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_delta.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_delta.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_guess.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_guess.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_methods.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_methods.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_pickle.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_pickle.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_precision.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_precision.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_quantity_interaction.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_quantity_interaction.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_sidereal.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_ut1.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/tests/test_ut1.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/time/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/hist.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/hist.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/interval.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/interval.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/lupton_rgb.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/lupton_rgb.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/mpl_normalize.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/mpl_normalize.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/mpl_style.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/mpl_style.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/scripts/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/scripts/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/scripts/fits2bitmap.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/scripts/fits2bitmap.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/scripts/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/scripts/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/scripts/tests/test_fits2bitmap.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/scripts/tests/test_fits2bitmap.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/stretch.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/stretch.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_histogram.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_histogram.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_interval.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_interval.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_lupton_rgb.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_lupton_rgb.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_norm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_norm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_stretch.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_stretch.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_units.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/tests/test_units.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/transform.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/transform.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/units.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/units.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/axislabels.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/axislabels.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/coordinate_helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/coordinate_helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/coordinate_range.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/coordinate_range.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/coordinates_map.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/coordinates_map.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/formatter_locator.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/formatter_locator.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/frame.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/frame.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/grid_paths.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/grid_paths.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/patches.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/patches.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/data/2MASS_k_header create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/data/cube_header create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/data/msx_header create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/data/rosat_header create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/data/slice_header create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/datasets.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/datasets.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_coordinate_helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_coordinate_helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_display_world_coordinates.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_display_world_coordinates.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_formatter_locator.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_formatter_locator.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_frame.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_frame.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_images.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_images.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_misc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_misc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_transform_coord_meta.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_transform_coord_meta.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_transforms.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_transforms.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/tests/test_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticklabels.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/ticks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/transforms.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/transforms.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/visualization/wcsaxes/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/conesearch.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/conesearch.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/data/basic.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/data/conesearch_error1.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/data/conesearch_error2.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/data/conesearch_error3.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/data/conesearch_error4.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/test_conesearch.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/test_conesearch.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/test_vos_catalog.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/tests/test_vos_catalog.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/vo_async.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/vo_async.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/vos_catalog.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/client/vos_catalog.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/samp/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/samp/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/data/conesearch_urls.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/inspect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/inspect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/data/conesearch_error.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/data/conesearch_exception.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/data/conesearch_good.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/data/conesearch_warn.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/data/listcats1.out create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/data/listcats2.out create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/data/printcat.out create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/data/tally.out create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/data/vao_conesearch_sites_121107_subset.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/test_inpect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/test_inpect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/test_validate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tests/test_validate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tstquery.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/tstquery.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/validate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/vo/validator/validate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/_docutil.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/_docutil.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/_wcs.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/docstrings.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/docstrings.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs/astropy_wcs.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs/astropy_wcs_api.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs/distortion.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs/isnan.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs/pipeline.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs/pyutil.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs/sip.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs/util.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs/wcsconfig.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/astropy_wcs_api.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/cel.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/lin.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/prj.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/spc.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/spx.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/tab.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/wcs.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/wcserr.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/wcsmath.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/include/wcslib/wcsprintf.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/setup_package.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/setup_package.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/2wcses.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/3d_cd.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/defunct_keywords.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/dist.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/dist_lookup.fits.gz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/header_newlines.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/invalid_header.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/irac_sip.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/j94f05bgq_flt.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/locale.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/nonstandard_units.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/outside_sky.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/sip-broken.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/sip.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/sip2.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/siponly.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/sub-segfault.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/too_many_pv.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/tpvonly.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/unit.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/validate.5.0.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/validate.5.13.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/validate.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/validate.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/data/zpn-hole.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/extension/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/extension/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/extension/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/extension/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/extension/test_extension.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/extension/test_extension.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/extension/wcsapi_test.c create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_AIR.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_AIT.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_ARC.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_AZP.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_BON.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_CAR.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_CEA.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_COD.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_COE.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_COO.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_COP.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_CSC.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_CYP.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_HPX.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_MER.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_MOL.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_NCP.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_PAR.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_PCO.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_QSC.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_SFL.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_SIN.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_STG.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_SZP.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_TAN.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_TSC.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_ZEA.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/maps/1904-66_ZPN.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/spectra/orion-freq-1.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/spectra/orion-freq-4.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/spectra/orion-velo-1.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/spectra/orion-velo-4.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/spectra/orion-wave-1.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/spectra/orion-wave-4.hdr create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_pickle.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_pickle.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_profiling.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_profiling.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_wcs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_wcsprm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/tests/test_wcsprm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/wcs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/wcs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/wcslint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/astropy/wcs/wcslint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/atomicwrites-1.2.1.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/atomicwrites-1.2.1.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/atomicwrites-1.2.1.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/atomicwrites-1.2.1.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/atomicwrites-1.2.1.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/atomicwrites/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/atomicwrites/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/__init__.pyi create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/_config.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/_config.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/_funcs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/_funcs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/_make.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/_make.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/converters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/converters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/converters.pyi create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/exceptions.pyi create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/filters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/filters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/filters.pyi create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/py.typed create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/validators.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/validators.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attr/validators.pyi create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attrs-18.2.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attrs-18.2.0.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attrs-18.2.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attrs-18.2.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attrs-18.2.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/attrs-18.2.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_bashcomplete.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_bashcomplete.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_termui_impl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_termui_impl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_textwrap.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_textwrap.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_unicodefun.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_unicodefun.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_winconsole.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/_winconsole.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/decorators.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/decorators.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/formatting.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/formatting.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/globals.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/globals.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/parser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/parser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/termui.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/termui.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/testing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/testing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/types.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/types.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/click/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/easy_install.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/easy_install.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/__main__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/__main__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/app.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/app.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/blueprints.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/blueprints.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/cli.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/cli.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/config.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/config.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/ctx.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/ctx.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/debughelpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/debughelpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/globals.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/globals.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/json/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/json/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/json/tag.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/json/tag.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/logging.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/logging.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/sessions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/sessions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/signals.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/signals.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/templating.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/templating.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/testing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/testing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/views.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/views.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/wrappers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/flask/wrappers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs-1.0.2.dist-info/DESCRIPTION.rst create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs-1.0.2.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs-1.0.2.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs-1.0.2.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs-1.0.2.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs-1.0.2.dist-info/metadata.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs-1.0.2.dist-info/pbr.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs-1.0.2.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/funcsigs/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn-19.9.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn-19.9.0.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn-19.9.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn-19.9.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn-19.9.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn-19.9.0.dist-info/entry_points.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn-19.9.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/app/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/app/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/app/base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/app/base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/app/pasterapp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/app/pasterapp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/app/wsgiapp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/arbiter.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/arbiter.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/argparse_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/argparse_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/config.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/config.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/debug.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/debug.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/errors.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/errors.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/glogging.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/glogging.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/_sendfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/_sendfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/body.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/body.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/errors.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/errors.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/message.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/message.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/parser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/parser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/unreader.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/unreader.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/wsgi.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/http/wsgi.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/instrument/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/instrument/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/instrument/statsd.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/instrument/statsd.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/pidfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/pidfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/reloader.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/reloader.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/selectors.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/selectors.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/six.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/six.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/sock.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/sock.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/systemd.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/systemd.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/_gaiohttp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/base_async.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/base_async.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/gaiohttp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/gaiohttp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/geventlet.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/geventlet.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/ggevent.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/ggevent.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/gthread.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/gthread.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/gtornado.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/gtornado.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/sync.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/sync.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/workertmp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/gunicorn/workers/workertmp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous-1.1.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous-1.1.0.dist-info/LICENSE.rst create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous-1.1.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous-1.1.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous-1.1.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous-1.1.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/_json.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/_json.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/encoding.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/encoding.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/exc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/exc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/jws.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/jws.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/serializer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/serializer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/signer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/signer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/timed.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/timed.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/url_safe.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/itsdangerous/url_safe.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/_identifier.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/_identifier.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/asyncfilters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/asyncsupport.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/bccache.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/bccache.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/compiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/compiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/constants.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/constants.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/debug.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/debug.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/defaults.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/defaults.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/environment.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/environment.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/ext.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/ext.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/filters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/filters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/idtracking.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/idtracking.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/lexer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/lexer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/loaders.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/loaders.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/meta.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/meta.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/nativetypes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/nativetypes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/nodes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/nodes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/optimizer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/optimizer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/parser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/parser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/runtime.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/runtime.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/sandbox.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/sandbox.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/tests.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/tests.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/visitor.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/jinja2/visitor.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/magic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/magic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/_constants.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/_constants.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/_native.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/_native.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/_speedups.c create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/markupsafe/_speedups.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools-4.3.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools-4.3.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools-4.3.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools-4.3.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools-4.3.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/more.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/more.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/recipes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/recipes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/tests/test_more.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/tests/test_more.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/tests/test_recipes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/more_itertools/tests/test_recipes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy-1.15.1.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy-1.15.1.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy-1.15.1.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy-1.15.1.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy-1.15.1.dist-info/top_level.txt create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/.libs/libgfortran-ed201abd.so.3.0.0 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/.libs/libopenblasp-r0-8dca6697.3.0.dev.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/__config__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/__config__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/_distributor_init.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/_distributor_init.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/_globals.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/_globals.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/_import_tools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/_import_tools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/add_newdocs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/add_newdocs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/_inspect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/_inspect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/py3k.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/py3k.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/tests/test_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/compat/tests/test_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/conftest.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/conftest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_dummy.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_internal.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_internal.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_methods.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_methods.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_multiarray_tests.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_operand_flag_tests.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_rational_tests.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_struct_ufunc_tests.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/_umath_tests.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/arrayprint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/arrayprint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/cversions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/cversions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/defchararray.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/defchararray.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/einsumfunc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/einsumfunc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/fromnumeric.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/fromnumeric.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/function_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/function_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/generate_numpy_api.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/generate_numpy_api.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/getlimits.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/getlimits.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/__multiarray_api.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/__ufunc_api.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/_neighborhood_iterator_imp.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/_numpyconfig.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/arrayscalars.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/halffloat.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/multiarray_api.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/ndarraytypes.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/noprefix.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/npy_3kcompat.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/npy_common.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/npy_cpu.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/npy_endian.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/npy_interrupt.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/npy_math.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/npy_no_deprecated_api.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/npy_os.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/numpyconfig.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/old_defines.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/oldnumeric.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/ufunc_api.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/ufuncobject.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/include/numpy/utils.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/lib/libnpymath.a create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/lib/npy-pkg-config/mlib.ini create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/lib/npy-pkg-config/npymath.ini create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/machar.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/machar.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/memmap.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/memmap.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/multiarray.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/numeric.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/numeric.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/numerictypes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/numerictypes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/records.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/records.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/setup_common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/setup_common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/shape_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/shape_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/_locales.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/_locales.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/data/astype_copy.pkl create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/data/recarray_from_file.fits create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_abc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_abc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_api.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_api.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_arrayprint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_arrayprint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_datetime.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_datetime.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_defchararray.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_defchararray.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_deprecations.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_deprecations.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_dtype.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_dtype.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_einsum.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_einsum.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_errstate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_errstate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_extint128.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_extint128.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_function_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_function_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_getlimits.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_getlimits.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_half.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_half.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_indexerrors.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_indexerrors.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_indexing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_indexing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_item_selection.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_item_selection.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_longdouble.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_longdouble.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_machar.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_machar.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_mem_overlap.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_mem_overlap.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_memmap.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_memmap.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_multiarray.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_multiarray.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_nditer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_nditer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_numeric.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_numeric.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_numerictypes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_numerictypes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_print.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_print.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_records.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_records.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalar_ctors.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalar_ctors.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalarbuffer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalarbuffer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalarinherit.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalarinherit.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalarmath.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalarmath.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalarprint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_scalarprint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_shape_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_shape_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_ufunc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_ufunc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_umath.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_umath.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_unicode.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/tests/test_unicode.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/umath.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/umath_tests.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/core/umath_tests.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ctypeslib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ctypeslib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/__config__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/__config__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/__version__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/__version__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/ccompiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/ccompiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/autodist.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/autodist.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/bdist_rpm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/bdist_rpm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_clib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_clib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_ext.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_ext.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_py.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_py.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_scripts.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_scripts.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_src.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/build_src.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/config.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/config.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/config_compiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/config_compiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/develop.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/develop.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/egg_info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/egg_info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/install.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/install.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/install_clib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/install_clib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/install_data.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/install_data.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/install_headers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/install_headers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/sdist.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/command/sdist.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/conv_template.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/conv_template.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/cpuinfo.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/cpuinfo.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/environment.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/environment.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/exec_command.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/exec_command.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/extension.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/extension.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/absoft.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/absoft.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/compaq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/compaq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/g95.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/g95.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/gnu.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/hpux.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/hpux.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/ibm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/ibm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/intel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/intel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/lahey.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/lahey.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/mips.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/mips.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/nag.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/nag.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/none.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/none.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/pathf95.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/pathf95.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/pg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/pg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/sun.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/sun.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/vast.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/fcompiler/vast.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/from_template.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/from_template.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/intelccompiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/intelccompiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/lib2def.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/lib2def.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/line_endings.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/line_endings.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/log.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/log.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/mingw/gfortran_vs2003_hack.c create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/mingw32ccompiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/mingw32ccompiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/misc_util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/misc_util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/msvc9compiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/msvc9compiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/msvccompiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/msvccompiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/npy_pkg_config.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/npy_pkg_config.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/numpy_distribution.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/numpy_distribution.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/pathccompiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/pathccompiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/system_info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/system_info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_exec_command.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_fcompiler_gnu.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_fcompiler_gnu.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_fcompiler_intel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_fcompiler_intel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_fcompiler_nagfor.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_fcompiler_nagfor.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_from_template.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_from_template.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_misc_util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_misc_util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_npy_pkg_config.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_npy_pkg_config.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/unixccompiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/distutils/unixccompiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/basics.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/basics.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/broadcasting.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/broadcasting.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/byteswapping.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/byteswapping.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/constants.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/constants.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/creation.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/creation.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/glossary.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/glossary.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/indexing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/indexing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/internals.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/internals.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/misc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/misc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/structured_arrays.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/structured_arrays.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/subclassing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/subclassing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/ufuncs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/doc/ufuncs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/dual.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/dual.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/__main__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/__main__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/__version__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/__version__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/auxfuncs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/auxfuncs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/capi_maps.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/capi_maps.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/cb_rules.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/cb_rules.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/cfuncs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/cfuncs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/common_rules.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/common_rules.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/crackfortran.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/crackfortran.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/diagnose.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/diagnose.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/f2py2e.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/f2py2e.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/f2py_testing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/f2py_testing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/f90mod_rules.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/f90mod_rules.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/func2subr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/func2subr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/rules.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/rules.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.c create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/assumed_shape/foo_free.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/assumed_shape/foo_mod.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/assumed_shape/foo_use.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/assumed_shape/precision.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/common/block.f create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/kind/foo.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/mixed/foo.f create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/mixed/foo_fixed.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/mixed/foo_free.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/parameter/constant_both.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/parameter/constant_compound.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/parameter/constant_integer.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/parameter/constant_non_compound.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/parameter/constant_real.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/regression/inout.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/size/foo.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/src/string/char.f90 create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_array_from_pyobj.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_array_from_pyobj.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_assumed_shape.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_assumed_shape.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_block_docstring.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_block_docstring.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_callback.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_callback.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_kind.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_kind.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_mixed.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_mixed.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_parameter.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_parameter.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_character.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_character.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_complex.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_complex.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_integer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_integer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_logical.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_logical.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_real.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_return_real.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_semicolon_split.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_semicolon_split.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_size.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_size.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_string.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/test_string.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/tests/util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/use_rules.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/f2py/use_rules.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/fftpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/fftpack.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/fftpack_lite.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/helper.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/helper.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/tests/test_fftpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/tests/test_fftpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/tests/test_helper.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/fft/tests/test_helper.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/_datasource.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/_datasource.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/_iotools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/_iotools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/arraypad.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/arraypad.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/arraysetops.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/arraysetops.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/arrayterator.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/arrayterator.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/financial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/financial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/format.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/format.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/function_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/function_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/histograms.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/histograms.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/index_tricks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/index_tricks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/mixins.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/mixins.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/nanfunctions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/nanfunctions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/npyio.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/npyio.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/polynomial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/polynomial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/recfunctions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/recfunctions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/scimath.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/scimath.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/shape_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/shape_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/stride_tricks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/stride_tricks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/data/py2-objarr.npy create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/data/py2-objarr.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/data/py3-objarr.npy create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/data/py3-objarr.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/data/python3.npy create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/data/win64python2.npy create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test__datasource.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test__datasource.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test__iotools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test__iotools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test__version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test__version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_arraypad.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_arraypad.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_arraysetops.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_arraysetops.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_arrayterator.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_arrayterator.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_financial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_financial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_format.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_format.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_function_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_function_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_histograms.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_histograms.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_index_tricks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_index_tricks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_io.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_io.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_mixins.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_mixins.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_nanfunctions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_nanfunctions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_packbits.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_packbits.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_polynomial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_polynomial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_recfunctions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_recfunctions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_shape_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_shape_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_stride_tricks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_stride_tricks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_twodim_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_twodim_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_type_check.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_type_check.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_ufunclike.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_ufunclike.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/tests/test_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/twodim_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/twodim_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/type_check.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/type_check.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/ufunclike.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/ufunclike.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/user_array.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/user_array.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/lib/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/_umath_linalg.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/info.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/lapack_lite.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/linalg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/linalg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/test_build.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/test_build.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/test_deprecations.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/test_deprecations.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/test_linalg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/test_linalg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/linalg/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/bench.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/bench.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/extras.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/extras.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/mrecords.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/mrecords.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_deprecations.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_deprecations.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_extras.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_extras.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_mrecords.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_mrecords.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_old_ma.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_old_ma.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_subclassing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/tests/test_subclassing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/testutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/testutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/timer_comparison.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/timer_comparison.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/ma/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matlib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matlib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/defmatrix.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/defmatrix.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_defmatrix.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_defmatrix.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_interaction.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_interaction.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_masked_matrix.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_masked_matrix.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_matrix_linalg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_matrix_linalg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_multiarray.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_multiarray.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_numeric.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_numeric.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/matrixlib/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/_polybase.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/_polybase.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/chebyshev.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/chebyshev.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/hermite.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/hermite.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/hermite_e.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/hermite_e.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/laguerre.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/laguerre.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/legendre.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/legendre.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/polynomial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/polynomial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/polyutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/polyutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_chebyshev.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_chebyshev.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_classes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_classes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_hermite.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_hermite.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_hermite_e.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_hermite_e.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_laguerre.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_laguerre.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_legendre.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_legendre.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_polynomial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_polynomial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_polyutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_polyutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_printing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/polynomial/tests/test_printing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/info.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/mtrand.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/randomkit.h create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/tests/test_random.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/tests/test_random.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/random/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/decorators.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/decorators.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/noseclasses.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/noseclasses.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/nosetester.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/nosetester.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/parameterized.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/parameterized.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/pytesttester.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/pytesttester.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/_private/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/decorators.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/decorators.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/noseclasses.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/noseclasses.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/nosetester.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/nosetester.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/print_coercion_tables.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/print_coercion_tables.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/tests/test_decorators.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/tests/test_decorators.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/tests/test_doctesting.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/tests/test_doctesting.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/tests/test_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/tests/test_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/testing/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_ctypeslib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_ctypeslib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_matlib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_matlib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_numpy_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_numpy_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_reloading.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_reloading.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_scripts.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_scripts.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_warnings.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/tests/test_warnings.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/numpy/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pathlib2-2.3.2.dist-info/DESCRIPTION.rst create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pathlib2-2.3.2.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pathlib2-2.3.2.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pathlib2-2.3.2.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pathlib2-2.3.2.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pathlib2-2.3.2.dist-info/metadata.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pathlib2-2.3.2.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pathlib2/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pathlib2/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip-18.1.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip-18.1.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip-18.1.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip-18.1.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip-18.1.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip-18.1.dist-info/entry_points.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip-18.1.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/__main__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/__main__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/build_env.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/build_env.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cache.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cache.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/autocompletion.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/base_command.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/base_command.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/cmdoptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/main_parser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/main_parser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/parser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/parser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/status_codes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/cli/status_codes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/check.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/check.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/completion.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/completion.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/configuration.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/configuration.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/download.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/download.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/freeze.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/freeze.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/hash.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/hash.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/help.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/help.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/install.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/install.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/list.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/list.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/search.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/search.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/show.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/show.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/uninstall.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/uninstall.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/wheel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/commands/wheel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/configuration.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/configuration.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/download.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/download.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/index.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/index.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/locations.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/locations.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/candidate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/candidate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/format_control.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/format_control.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/index.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/index.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/link.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/models/link.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/operations/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/operations/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/operations/check.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/operations/check.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/operations/freeze.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/operations/freeze.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/operations/prepare.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/operations/prepare.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/pep425tags.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/pep425tags.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/pyproject.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/pyproject.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/constructors.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/constructors.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_file.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_file.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_install.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_install.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_set.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_set.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_tracker.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/req/req_uninstall.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/resolve.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/resolve.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/appdirs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/appdirs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/deprecation.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/deprecation.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/encoding.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/encoding.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/filesystem.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/filesystem.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/glibc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/glibc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/hashes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/hashes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/logging.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/logging.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/misc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/misc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/models.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/models.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/outdated.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/outdated.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/packaging.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/packaging.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/setuptools_build.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/temp_dir.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/typing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/typing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/ui.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/utils/ui.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/bazaar.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/git.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/git.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/mercurial.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/subversion.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/vcs/subversion.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/wheel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_internal/wheel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/appdirs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/appdirs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/_cmd.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/cache.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/file_cache.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/filewrapper.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/heuristics.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/wrapper.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/certifi/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/certifi/__main__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/certifi/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/certifi/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/big5freq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/big5prober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/chardistribution.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/charsetgroupprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/charsetprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/cli/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/cli/chardetect.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/codingstatemachine.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/cp949prober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/enums.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/enums.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/escprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/escsm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/eucjpprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/euckrfreq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/euckrprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/euctwfreq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/euctwprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/gb2312freq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/gb2312prober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/hebrewprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/jisfreq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/jpcntx.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langbulgarianmodel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langcyrillicmodel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langcyrillicmodel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langgreekmodel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langhebrewmodel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langhungarianmodel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langthaimodel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/langturkishmodel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/latin1prober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/mbcharsetprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/mbcsgroupprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/mbcssm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/sbcharsetprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/sbcsgroupprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/sjisprober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/universaldetector.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/utf8prober.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/chardet/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/ansi.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/ansitowin32.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/initialise.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/win32.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/win32.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/colorama/winterm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/misc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/shutil.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/sysconfig.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/_backport/tarfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/database.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/database.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/index.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/index.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/locators.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/locators.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/markers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/metadata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/resources.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/resources.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/scripts.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distro.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/distro.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_ihatexml.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_inputstream.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_tokenizer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/datrie.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/datrie.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_trie/py.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/constants.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/lint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/optionaltags.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/sanitizer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/filters/whitespace.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/html5parser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/serializer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/genshi.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treeadapters/sax.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/dom.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/etree.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/dom.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/etree.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/html5lib/treewalkers/genshi.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/codec.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/codec.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/idnadata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/intranges.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/intranges.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/package_data.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/package_data.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/idna/uts46data.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/ipaddress.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/ipaddress.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/linklockfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/linklockfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/mkdirlockfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/mkdirlockfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/pidlockfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/pidlockfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/sqlitelockfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/sqlitelockfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/symlinklockfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/lockfile/symlinklockfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/msgpack/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/msgpack/_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/msgpack/_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/msgpack/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/msgpack/fallback.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/__about__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/_structures.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/markers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/markers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/requirements.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/specifiers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/packaging/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/_in_process.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/_in_process.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/check.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/check.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/colorlog.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/colorlog.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/envbuild.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/envbuild.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/wrappers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pep517/wrappers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pkg_resources/py31compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/bar.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/bar.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/counter.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/counter.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/helpers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/helpers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/spinner.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/progress/spinner.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pyparsing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pyparsing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pytoml/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pytoml/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pytoml/core.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pytoml/core.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pytoml/parser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pytoml/parser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pytoml/writer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/pytoml/writer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/__version__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/__version__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/_internal_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/adapters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/adapters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/api.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/api.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/auth.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/certs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/certs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/cookies.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/cookies.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/help.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/help.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/hooks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/hooks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/models.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/models.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/packages.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/packages.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/sessions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/status_codes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/structures.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/structures.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/requests/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/retrying.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/retrying.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/six.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/six.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/_collections.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/connection.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/connectionpool.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/appengine.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/securetransport.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/socks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/fields.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/filepost.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/backports/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/backports/makefile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ordered_dict.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ordered_dict.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/six.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/poolmanager.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/request.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/request.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/response.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/response.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/connection.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/queue.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/request.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/response.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/retry.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/ssl_.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/timeout.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/url.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/urllib3/util/wait.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/labels.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/mklabels.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/tests.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pip/_vendor/webencodings/x_user_defined.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources-0.0.0.dist-info/DESCRIPTION.rst create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources-0.0.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources-0.0.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources-0.0.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources-0.0.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources-0.0.0.dist-info/metadata.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/appdirs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__about__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/_structures.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/six.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/_vendor/six.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/extern/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/extern/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/py31compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pkg_resources/py31compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy-0.8.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy-0.8.0.dist-info/LICENSE create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy-0.8.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy-0.8.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy-0.8.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy-0.8.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/_tracing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/_tracing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/callers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/callers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/hooks.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/hooks.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/manager.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pluggy/manager.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/__metainfo.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/__metainfo.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_builtin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_builtin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/_assertionnew.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/_assertionnew.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/_assertionold.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/_assertionold.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/_py2traceback.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/_py2traceback.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/assertion.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/assertion.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/code.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/code.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/source.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_code/source.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_error.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_error.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_io/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_io/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_io/capture.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_io/capture.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_io/saferepr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_io/saferepr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_io/terminalwriter.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_io/terminalwriter.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_log/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_log/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_log/log.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_log/log.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_log/warning.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_log/warning.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/cacheutil.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/cacheutil.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/local.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/local.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/svnurl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/svnurl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/svnwc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_path/svnwc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_process/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_process/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_process/cmdexec.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_process/cmdexec.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_process/forkedfunc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_process/forkedfunc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_process/killproc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_process/killproc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_std.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_std.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_vendored_packages/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_vendored_packages/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_vendored_packages/apipkg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_vendored_packages/apipkg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_vendored_packages/iniconfig.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_vendored_packages/iniconfig.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_xmlgen.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/_xmlgen.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/py/test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pytest-3.9.3.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pytest-3.9.3.dist-info/LICENSE create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pytest-3.9.3.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pytest-3.9.3.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pytest-3.9.3.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pytest-3.9.3.dist-info/entry_points.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pytest-3.9.3.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pytest.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/pytest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/python_magic-0.4.15.dist-info/DESCRIPTION.rst create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/python_magic-0.4.15.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/python_magic-0.4.15.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/python_magic-0.4.15.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/python_magic-0.4.15.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/python_magic-0.4.15.dist-info/metadata.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/python_magic-0.4.15.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scandir-1.9.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scandir-1.9.0.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scandir-1.9.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scandir-1.9.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scandir-1.9.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scandir-1.9.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scandir.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scandir.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy-1.1.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy-1.1.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy-1.1.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy-1.1.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy-1.1.0.dist-info/top_level.txt create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/.libs/libgfortran-ed201abd.so.3.0.0 create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/.libs/libopenblasp-r0-39a31c03.2.18.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/BENTO_BUILD.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/HACKING.rst.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/INSTALL.rst.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/THANKS.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/__config__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/__config__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_build_utils/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_build_utils/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_build_utils/_fortran.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_build_utils/_fortran.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_distributor_init.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_distributor_init.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_ccallback.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_ccallback.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_ccallback_c.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_fpumode.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_gcutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_gcutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_numpy_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_numpy_compat.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_test_ccallback.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_testutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_testutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_threadsafety.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_threadsafety.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_tmpdirs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_tmpdirs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/decorator.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/decorator.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/messagestream.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/six.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/six.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__gcutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__gcutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__testutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__testutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__threadsafety.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__threadsafety.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test__version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test_ccallback.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test_ccallback.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test_import_cycles.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test_import_cycles.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test_tmpdirs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test_tmpdirs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/_hierarchy.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/_optimal_leaf_ordering.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/_vq.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/hierarchy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/hierarchy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/tests/hierarchy_test_data.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/tests/hierarchy_test_data.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/tests/test_hierarchy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/tests/test_hierarchy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/tests/test_vq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/tests/test_vq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/vq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/cluster/vq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/conftest.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/conftest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/codata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/codata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/constants.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/constants.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/tests/test_codata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/tests/test_codata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/tests/test_constants.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/constants/tests/test_constants.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/_fftpack.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/basic.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/convolve.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/helper.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/helper.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/pseudo_diffs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/pseudo_diffs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/realtransforms.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/realtransforms.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/Makefile create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/fftw_dct.c create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/fftw_double_ref.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/fftw_single_ref.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/gen_fftw_ref.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/gen_fftw_ref.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/gendata.m create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/gendata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/gendata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_helper.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_helper.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_import.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_import.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_pseudo_diffs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_pseudo_diffs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_real_transforms.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/fftpack/tests/test_real_transforms.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_bvp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_bvp.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_dop.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/bdf.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/bdf.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/ivp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/ivp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/lsoda.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/lsoda.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/radau.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/radau.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/rk.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ivp/rk.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ode.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_ode.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_odepack.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_quadpack.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_test_multivariate.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/_test_odeint_banded.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/lsoda.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/odepack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/odepack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/quadpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/quadpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/quadrature.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/quadrature.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/_test_multivariate.c create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/banded5x5.f create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_banded_ode_solvers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_banded_ode_solvers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_bvp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_bvp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_integrate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_integrate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_ivp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_ivp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_odeint_jac.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_odeint_jac.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_quadpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_quadpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_quadrature.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/tests/test_quadrature.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/integrate/vode.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_bspl.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_bsplines.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_bsplines.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_cubic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_cubic.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_fitpack.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_fitpack_impl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_fitpack_impl.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_interpolate.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_pade.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_pade.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/_ppoly.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/dfitpack.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/fitpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/fitpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/fitpack2.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/fitpack2.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/interpnd.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/interpnd_info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/interpnd_info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/interpolate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/interpolate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/interpolate_wrapper.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/interpolate_wrapper.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/ndgriddata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/ndgriddata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/polyint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/polyint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/rbf.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/rbf.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/data/bug-1310.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/data/estimate_gradients_hang.npy create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_bsplines.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_bsplines.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack2.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_fitpack2.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_gil.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_gil.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_interpnd.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_interpnd.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_interpolate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_interpolate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_interpolate_wrapper.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_interpolate_wrapper.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_ndgriddata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_ndgriddata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_pade.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_pade.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_polyint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_polyint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_rbf.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_rbf.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/interpolate/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/_fortran.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/_fortran.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/_test_fortran.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/arffread.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/arffread.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/iris.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/missing.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/nodata.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/test1.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/test2.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/test3.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/test4.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/test5.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/test6.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/test7.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/data/test8.arff create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/test_arffread.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/arff/tests/test_arffread.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/_fortran_format_parser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/_fortran_format_parser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/hb.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/hb.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/tests/test_fortran_format.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/tests/test_fortran_format.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/tests/test_hb.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/harwell_boeing/tests/test_hb.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/idl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/idl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/byteordercodes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/byteordercodes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio4.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio4.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio5.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio5.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio5_params.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio5_params.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio5_utils.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/mio_utils.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/miobase.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/miobase.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/setup.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/streams.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/afunc.m create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/bad_miuint32.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/bad_miutf8_array_name.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/big_endian.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/broken_utf8.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/corrupted_zlib_checksum.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/corrupted_zlib_data.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/japanese_utf8.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/little_endian.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/logical_sparse.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/malformed1.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/miuint32_for_miint32.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/miutf8_array_name.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/nasty_duplicate_fieldnames.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/one_by_zero_char.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/parabola.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/single_empty_string.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/some_functions.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/sqr.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/test3dmatrix_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/test3dmatrix_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/test3dmatrix_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/test3dmatrix_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/test_empty_struct.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/test_mat4_le_floats.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/test_skip_variable.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testbool_8_WIN64.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcell_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcell_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcell_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcell_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcellnest_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcellnest_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcellnest_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcellnest_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcomplex_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcomplex_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcomplex_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcomplex_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testcomplex_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testdouble_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testdouble_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testdouble_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testdouble_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testdouble_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testemptycell_5.3_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testemptycell_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testemptycell_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testemptycell_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testfunc_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testhdf5_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testmatrix_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testmatrix_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testmatrix_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testmatrix_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testmatrix_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testminus_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testminus_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testminus_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testminus_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testminus_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testmulti_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testmulti_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testmulti_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testobject_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testobject_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testobject_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testobject_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testonechar_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testonechar_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testonechar_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testonechar_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testonechar_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testscalarcell_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparse_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparse_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparse_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparse_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparse_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparsecomplex_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparsecomplex_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparsecomplex_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparsecomplex_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparsecomplex_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testsparsefloat_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststring_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststring_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststring_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststring_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststring_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststringarray_4.2c_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststringarray_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststringarray_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststringarray_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststringarray_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststruct_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststruct_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststruct_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststruct_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststructarr_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststructarr_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststructarr_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststructarr_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststructnest_6.1_SOL2.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststructnest_6.5.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststructnest_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/teststructnest_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testunicode_7.1_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testunicode_7.4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/data/testvec_4_GLNX86.mat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/gen_mat4files.m create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/gen_mat5files.m create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/save_matfile.m create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_byteordercodes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_byteordercodes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_mio.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_mio.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_mio5_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_mio5_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_mio_funcs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_mio_funcs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_mio_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_mio_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_miobase.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_miobase.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_pathological.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_pathological.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_streams.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/matlab/tests/test_streams.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/mmio.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/mmio.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/netcdf.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/netcdf.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_1d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_2d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_3d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_4d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_5d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_6d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_7d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_8d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_pointer_1d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_pointer_2d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_pointer_3d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_pointer_4d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_pointer_5d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_pointer_6d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_pointer_7d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/array_float32_pointer_8d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/example_1.nc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/example_2.nc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/example_3_maskedvals.nc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-3x3d-2i.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-mixed.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-sf8-11x1x10.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-sf8-15x10x22.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-sf8-1x1x1.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-sf8-1x1x5.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-sf8-1x1x7.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-sf8-1x3x5.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-si4-11x1x10.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-si4-15x10x22.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-si4-1x1x1.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-si4-1x1x5.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-si4-1x1x7.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/fortran-si4-1x3x5.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/invalid_pointer.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/null_pointer.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_byte.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_byte_descr.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_complex32.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_complex64.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_float32.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_float64.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_heap_pointer.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_int16.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_int32.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_int64.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_string.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_uint16.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_uint32.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/scalar_uint64.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_arrays.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_arrays_byte_idl80.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_arrays_replicated.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_arrays_replicated_3d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_inherit.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_pointer_arrays.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_pointer_arrays_replicated.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_pointer_arrays_replicated_3d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_pointers.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_pointers_replicated.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_pointers_replicated_3d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_scalars.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_scalars_replicated.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/struct_scalars_replicated_3d.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/test-44100Hz-2ch-32bit-float-be.wav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/test-44100Hz-2ch-32bit-float-le.wav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-early-eof.wav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-incomplete-chunk.wav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/test-44100Hz-le-1ch-4bytes.wav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/test-48000Hz-2ch-64bit-float-le-wavex.wav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/test-8000Hz-le-2ch-1byteu.wav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/data/various_compressed.sav create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_fortran.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_fortran.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_idl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_idl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_mmio.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_mmio.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_netcdf.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_netcdf.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_paths.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_paths.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_wavfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/tests/test_wavfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/wavfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/io/wavfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg.pxd create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_cython_signature_generator.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_cython_signature_generator.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_decomp_ldl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_decomp_ldl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_decomp_polar.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_decomp_polar.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_decomp_qz.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_decomp_qz.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_decomp_update.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_expm_frechet.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_expm_frechet.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_fblas.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_flapack.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_flinalg.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_generate_pyx.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_generate_pyx.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_interpolative.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_interpolative_backend.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_interpolative_backend.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_matfuncs_inv_ssq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_matfuncs_inv_ssq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_matfuncs_sqrtm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_matfuncs_sqrtm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_procrustes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_procrustes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_sketches.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_sketches.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_solve_toeplitz.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_solvers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_solvers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_testutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/_testutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/blas.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/blas.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/cython_blas.pxd create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/cython_blas.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/cython_lapack.pxd create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/cython_lapack.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_cholesky.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_cholesky.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_lu.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_lu.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_qr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_qr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_schur.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_schur.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_svd.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/decomp_svd.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/flinalg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/flinalg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/interpolative.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/interpolative.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/lapack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/lapack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/linalg_version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/linalg_version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/matfuncs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/matfuncs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/misc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/misc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/special_matrices.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/special_matrices.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/src/id_dist/doc/doc.tex create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/src/lapack_deprecations/LICENSE create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/data/carex_15_data.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/data/carex_18_data.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/data/carex_19_data.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/data/carex_20_data.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/data/carex_6_data.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/data/gendare_20170120_data.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_blas.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_blas.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_build.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_build.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_cython_blas.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_cython_blas.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_cython_lapack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_cython_lapack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_cholesky.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_cholesky.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_ldl.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_ldl.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_polar.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_polar.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_update.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_update.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_fblas.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_fblas.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_interpolative.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_interpolative.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_lapack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_matfuncs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_matfuncs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_procrustes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_procrustes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_sketches.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_sketches.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_solve_toeplitz.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_solve_toeplitz.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_solvers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_solvers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_special_matrices.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/linalg/tests/test_special_matrices.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/ascent.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/doccer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/doccer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/ecg.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/face.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/pilutil.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/pilutil.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/3x3x3.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/3x3x4.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/3x4x3.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/3x4x4.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/3x5x3.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/3x5x4.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/4x3x3.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/4x3x4.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/4x4x3.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/4x4x4.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/4x5x3.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/4x5x4.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/5x3x3.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/5x3x4.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/5x4x3.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/5x4x4.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/5x5x3.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/5x5x4.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/blocks2bit.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/box1.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/foo3x5x4indexed.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/icon.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/icon_mono.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/icon_mono_flat.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/data/pattern4bit.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/test_common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/test_common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/test_doccer.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/test_doccer.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/test_pilutil.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/misc/tests/test_pilutil.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/_ctest.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/_ctest_oldapi.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/_cytest.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/_nd_image.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/_ni_docstrings.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/_ni_docstrings.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/_ni_label.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/_ni_support.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/_ni_support.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/filters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/filters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/fourier.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/fourier.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/interpolation.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/interpolation.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/io.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/io.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/measurements.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/measurements.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/morphology.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/morphology.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/data/README.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/data/label_inputs.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/data/label_results.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/data/label_strels.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/dots.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_c_api.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_c_api.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_datatypes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_datatypes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_filters.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_filters.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_io.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_io.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_measurements.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_measurements.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_ndimage.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_ndimage.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_splines.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/ndimage/tests/test_splines.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/__odrpack.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/add_newdocs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/add_newdocs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/models.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/models.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/odrpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/odrpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/tests/test_odr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_basinhopping.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_basinhopping.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_cobyla.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_constraints.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_constraints.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_differentiable_functions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_differentiable_functions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_differentialevolution.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_differentialevolution.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_group_columns.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_hessian_update_strategy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_hessian_update_strategy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_hungarian.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_hungarian.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lbfgsb.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_linprog.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_linprog.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_linprog_ip.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_linprog_ip.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/bvls.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/bvls.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/dogbox.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/dogbox.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/givens_elimination.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/least_squares.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/least_squares.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/lsq_linear.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/lsq_linear.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/trf.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/trf.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/trf_linear.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_lsq/trf_linear.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_minimize.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_minimize.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_minpack.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_nnls.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_numdiff.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_numdiff.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_remove_redundancy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_remove_redundancy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_root.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_root.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_slsqp.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_spectral.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_spectral.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trlib/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trlib/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trlib/_trlib.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trlib/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trlib/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/canonical_constraint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/canonical_constraint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/equality_constrained_sqp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/equality_constrained_sqp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/minimize_trustregion_constr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/projections.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/projections.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/qp_subproblem.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/qp_subproblem.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/report.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/report.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tests/test_canonical_constraint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tests/test_canonical_constraint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tests/test_projections.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tests/test_projections.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tr_interior_point.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_constr/tr_interior_point.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_dogleg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_dogleg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_exact.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_exact.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_krylov.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_krylov.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_ncg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_trustregion_ncg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_tstutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_tstutils.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/_zeros.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/cobyla.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/cobyla.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/lbfgsb.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/lbfgsb.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/lbfgsb/README create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/linesearch.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/linesearch.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/minpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/minpack.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/minpack2.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/moduleTNC.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/nnls.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/nnls.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/nonlin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/nonlin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/optimize.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/optimize.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/slsqp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/slsqp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__basinhopping.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__basinhopping.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__differential_evolution.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__differential_evolution.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__linprog_ip_clean_inputs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__linprog_ip_clean_inputs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__numdiff.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__numdiff.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__remove_redundancy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__remove_redundancy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__root.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__root.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__spectral.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test__spectral.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_cobyla.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_cobyla.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_constraints.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_constraints.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_differentiable_functions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_differentiable_functions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_hessian_update_strategy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_hessian_update_strategy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_hungarian.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_hungarian.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_lbfgsb_hessinv.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_lbfgsb_hessinv.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_least_squares.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_least_squares.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_linesearch.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_linesearch.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_linprog.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_linprog.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_lsq_common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_lsq_common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_lsq_linear.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_lsq_linear.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_minimize_constrained.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_minimize_constrained.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_minpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_minpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_nnls.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_nnls.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_nonlin.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_nonlin.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_optimize.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_regression.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_regression.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_slsqp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_slsqp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_tnc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_exact.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_trustregion_krylov.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tnc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/tnc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/zeros.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/optimize/zeros.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/pip-delete-this-directory.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_arraytools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_arraytools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_max_len_seq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_max_len_seq.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_max_len_seq_inner.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_peak_finding.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_peak_finding.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_peak_finding_utils.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_savitzky_golay.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_savitzky_golay.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_spectral.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_upfirdn.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_upfirdn.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/_upfirdn_apply.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/bsplines.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/bsplines.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/filter_design.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/filter_design.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/fir_filter_design.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/fir_filter_design.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/lti_conversion.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/lti_conversion.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/ltisys.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/ltisys.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/signaltools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/signaltools.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/sigtools.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/spectral.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/spectral.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/spline.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/mpsig.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/mpsig.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_array_tools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_array_tools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_cont2discrete.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_cont2discrete.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_dltisys.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_dltisys.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_filter_design.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_filter_design.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_fir_filter_design.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_fir_filter_design.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_ltisys.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_ltisys.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_max_len_seq.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_max_len_seq.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_peak_finding.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_peak_finding.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_savitzky_golay.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_savitzky_golay.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_signaltools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_signaltools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_spectral.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_spectral.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_upfirdn.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_upfirdn.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_waveforms.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_waveforms.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_wavelets.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_wavelets.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_windows.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/tests/test_windows.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/waveforms.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/waveforms.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/wavelets.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/wavelets.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/windows/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/windows/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/windows/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/windows/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/windows/windows.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/signal/windows/windows.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/_csparsetools.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/_matrix_io.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/_matrix_io.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/_sparsetools.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/bsr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/bsr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/compressed.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/compressed.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/construct.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/construct.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/coo.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/coo.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/_laplacian.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/_laplacian.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/_min_spanning_tree.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/_reordering.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/_shortest_path.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/_tools.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/_traversal.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/_validation.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/_validation.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_connected_components.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_connected_components.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_conversions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_conversions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_graph_laplacian.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_graph_laplacian.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_reordering.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_reordering.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_shortest_path.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_shortest_path.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_spanning_tree.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_spanning_tree.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_traversal.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csgraph/tests/test_traversal.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/csr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/data.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/data.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/dia.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/dia.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/dok.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/dok.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/extract.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/extract.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/generate_sparsetools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/generate_sparsetools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/lil.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/lil.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/_expm_multiply.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/_expm_multiply.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/_norm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/_norm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/_onenormest.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/_onenormest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/SuperLU/License.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/_add_newdocs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/_add_newdocs.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/_superlu.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/linsolve.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/linsolve.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/tests/test_linsolve.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/tests/test_linsolve.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/ARPACK/COPYING create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/arpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/tests/test_arpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/lobpcg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/lobpcg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/tests/test_lobpcg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/lobpcg/tests/test_lobpcg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/interface.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/interface.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_gcrotmk.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_gcrotmk.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/iterative.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/lgmres.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/lgmres.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/lsmr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/lsmr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/lsqr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/lsqr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/minres.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/minres.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/demo_lgmres.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/demo_lgmres.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_gcrotmk.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_gcrotmk.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_iterative.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_iterative.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_lgmres.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_lgmres.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_lsmr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_lsmr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_lsqr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_lsqr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_minres.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_minres.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/tests/test_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/matfuncs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/matfuncs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_expm_multiply.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_expm_multiply.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_interface.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_interface.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_matfuncs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_matfuncs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_norm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_norm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_onenormest.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/linalg/tests/test_onenormest.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/sparsetools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/sparsetools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/spfuncs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/spfuncs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/sputils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/sputils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/data/csc_py2.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/data/csc_py3.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_base.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_base.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_construct.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_construct.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_csc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_csc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_csr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_csr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_extract.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_extract.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_matrix_io.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_matrix_io.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_sparsetools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_sparsetools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_spfuncs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_spfuncs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_sputils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/sparse/tests/test_sputils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/_distance_wrap.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/_hausdorff.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/_plotutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/_plotutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/_procrustes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/_procrustes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/_spherical_voronoi.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/_spherical_voronoi.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/_voronoi.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/ckdtree.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/distance.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/distance.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/kdtree.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/kdtree.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/qhull.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/qhull/COPYING.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/cdist-X1.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/cdist-X2.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/degenerate_pointset.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/iris.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-boolean-inp.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-chebyshev-ml-iris.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-chebyshev-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-cityblock-ml-iris.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-cityblock-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-correlation-ml-iris.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-correlation-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-cosine-ml-iris.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-cosine-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-double-inp.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-euclidean-ml-iris.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-euclidean-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-hamming-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-jaccard-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-minkowski-3.2-ml-iris.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-minkowski-3.2-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-minkowski-5.8-ml-iris.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-seuclidean-ml-iris.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-seuclidean-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/pdist-spearman-ml.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/random-bool-data.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/random-double-data.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/random-int-data.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/random-uint-data.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/data/selfdual-4d-polytope.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test__plotutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test__plotutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test__procrustes.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test__procrustes.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_distance.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_distance.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_hausdorff.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_hausdorff.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_kdtree.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_kdtree.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_qhull.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_qhull.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_spherical_voronoi.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/spatial/tests/test_spherical_voronoi.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special.pxd create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/__init__.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_comb.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_ellip_harm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_ellip_harm.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_ellip_harm_2.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_generate_pyx.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_generate_pyx.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_logsumexp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_logsumexp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_mptestutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_mptestutils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/expn_asy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/expn_asy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/gammainc_asy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/gammainc_asy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/gammainc_data.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/gammainc_data.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/lambertw.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/lambertw.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/loggamma.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/loggamma.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/struve_convergence.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/struve_convergence.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/zetac.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_precompute/zetac.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_spherical_bessel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_spherical_bessel.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_test_round.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_testutils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_testutils.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_ufuncs.so create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/_ufuncs_cxx.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/add_newdocs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/add_newdocs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/cython_special.pxd create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/cython_special.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/lambertw.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/lambertw.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/orthogonal.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/orthogonal.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/setup.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/sf_error.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/sf_error.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/specfun.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/spfun_stats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/spfun_stats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/data/README create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/data/boost.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/data/gsl.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/data/local.npz create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_boxcox.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_boxcox.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_cdflib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_cdflib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_cython_special.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_cython_special.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_data.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_data.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_digamma.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_digamma.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_ellip_harm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_ellip_harm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_gammainc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_gammainc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_kolmogorov.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_kolmogorov.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_lambertw.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_lambertw.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_loggamma.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_loggamma.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_logit.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_logit.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_logsumexp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_logsumexp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_mpmath.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_mpmath.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_nan_inputs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_nan_inputs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_orthogonal.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_orthogonal.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_orthogonal_eval.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_orthogonal_eval.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_owens_t.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_owens_t.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_pcf.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_pcf.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_precompute_expn_asy.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_precompute_expn_asy.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_precompute_gammainc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_precompute_gammainc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_precompute_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_precompute_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_round.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_round.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_sf_error.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_sf_error.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_sici.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_sici.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_spence.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_spence.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_spfun_stats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_spfun_stats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_sph_harm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_sph_harm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_spherical_bessel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_spherical_bessel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_trig.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_trig.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_wrightomega.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_wrightomega.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_zeta.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/special/tests/test_zeta.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_binned_statistic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_binned_statistic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_constants.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_constants.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_continuous_distns.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_continuous_distns.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_discrete_distns.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_discrete_distns.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_distn_infrastructure.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_distn_infrastructure.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_distr_params.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_distr_params.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_multivariate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_multivariate.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_stats.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_stats_mstats_common.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_stats_mstats_common.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_tukeylambda_stats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/_tukeylambda_stats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/contingency.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/contingency.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/distributions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/distributions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/kde.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/kde.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/morestats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/morestats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/mstats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/mstats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/mstats_basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/mstats_basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/mstats_extras.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/mstats_extras.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/mvn.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/setup.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/setup.pyc create mode 100755 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/statlib.so create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/stats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/stats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/common_tests.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/common_tests.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/AtmWtAg.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SiRstv.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SmLs01.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SmLs02.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SmLs03.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SmLs04.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SmLs05.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SmLs06.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SmLs07.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SmLs08.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_anova/SmLs09.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/data/nist_linregress/Norris.dat create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_binned_statistic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_binned_statistic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_contingency.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_contingency.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_continuous_basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_continuous_basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_discrete_distns.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_discrete_distns.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_distributions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_distributions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_fit.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_fit.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_morestats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_morestats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_mstats_basic.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_mstats_basic.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_mstats_extras.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_mstats_extras.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_multivariate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_multivariate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_rank.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_rank.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_stats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_stats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_tukeylambda_stats.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/tests/test_tukeylambda_stats.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/vonmises.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/stats/vonmises.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/scipy/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools-40.5.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools-40.5.0.dist-info/LICENSE create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools-40.5.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools-40.5.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools-40.5.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools-40.5.0.dist-info/dependency_links.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools-40.5.0.dist-info/entry_points.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools-40.5.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools-40.5.0.dist-info/zip-safe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/__about__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/_structures.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/markers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/requirements.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/packaging/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/pyparsing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/six.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/_vendor/six.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/archive_util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/archive_util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/build_meta.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/build_meta.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/cli-32.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/cli-64.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/cli.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/alias.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/alias.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/bdist_egg.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/bdist_egg.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/bdist_rpm.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/bdist_rpm.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/bdist_wininst.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/bdist_wininst.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/build_clib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/build_clib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/build_ext.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/build_ext.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/build_py.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/build_py.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/develop.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/develop.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/dist_info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/dist_info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/easy_install.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/easy_install.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/egg_info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/egg_info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/install.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/install.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/install_egg_info.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/install_egg_info.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/install_lib.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/install_lib.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/install_scripts.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/install_scripts.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/launcher manifest.xml create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/py36compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/py36compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/register.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/register.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/rotate.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/rotate.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/saveopts.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/saveopts.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/sdist.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/sdist.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/setopt.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/setopt.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/upload.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/upload.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/upload_docs.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/command/upload_docs.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/config.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/config.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/dep_util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/dep_util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/depends.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/depends.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/dist.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/dist.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/extension.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/extension.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/extern/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/extern/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/glibc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/glibc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/glob.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/glob.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/gui-32.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/gui-64.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/gui.exe create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/launch.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/launch.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/lib2to3_ex.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/lib2to3_ex.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/monkey.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/monkey.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/msvc.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/msvc.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/namespaces.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/namespaces.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/package_index.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/package_index.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/pep425tags.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/pep425tags.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/py27compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/py27compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/py31compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/py31compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/py33compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/py33compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/py36compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/py36compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/sandbox.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/sandbox.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/script (dev).tmpl create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/script.tmpl create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/site-patch.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/site-patch.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/ssl_support.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/ssl_support.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/unicode_utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/unicode_utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/version.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/version.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/wheel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/wheel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/windows_support.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/setuptools/windows_support.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/six-1.11.0.dist-info/DESCRIPTION.rst create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/six-1.11.0.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/six-1.11.0.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/six-1.11.0.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/six-1.11.0.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/six-1.11.0.dist-info/metadata.json create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/six-1.11.0.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/six.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/six.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/_compat.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/_compat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/_internal.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/_internal.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/_reloader.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/_reloader.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/atom.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/atom.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/cache.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/cache.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/fixers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/fixers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/iterio.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/iterio.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/jsrouting.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/jsrouting.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/limiter.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/limiter.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/lint.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/lint.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/profiler.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/profiler.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/securecookie.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/securecookie.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/sessions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/sessions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/testtools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/testtools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/wrappers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/contrib/wrappers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/datastructures.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/datastructures.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/console.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/console.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/repr.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/repr.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/shared/FONT_LICENSE create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/shared/console.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/shared/debugger.js create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/shared/jquery.js create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/shared/less.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/shared/more.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/shared/source.png create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/shared/style.css create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/shared/ubuntu.ttf create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/tbtools.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/debug/tbtools.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/exceptions.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/exceptions.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/filesystem.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/filesystem.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/formparser.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/formparser.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/http.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/http.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/local.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/local.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/posixemulation.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/posixemulation.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/routing.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/routing.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/script.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/script.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/security.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/security.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/serving.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/serving.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/test.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/test.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/testapp.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/testapp.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/urls.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/urls.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/useragents.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/useragents.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/utils.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/utils.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/websocket.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/websocket.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/wrappers.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/wrappers.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/wsgi.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/werkzeug/wsgi.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel-0.32.2.dist-info/INSTALLER create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel-0.32.2.dist-info/LICENSE.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel-0.32.2.dist-info/METADATA create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel-0.32.2.dist-info/RECORD create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel-0.32.2.dist-info/WHEEL create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel-0.32.2.dist-info/entry_points.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel-0.32.2.dist-info/top_level.txt create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/__main__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/__main__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/bdist_wheel.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/bdist_wheel.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/__init__.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/__init__.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/convert.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/convert.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/install.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/install.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/pack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/pack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/unpack.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/cli/unpack.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/metadata.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/metadata.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/pep425tags.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/pep425tags.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/pkginfo.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/pkginfo.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/util.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/util.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/wheelfile.py create mode 100644 googleAppEngine/scipy/env/lib/python2.7/site-packages/wheel/wheelfile.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/stat.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/types.pyc create mode 100644 googleAppEngine/scipy/env/lib/python2.7/warnings.pyc create mode 100644 googleAppEngine/scipy2/app.yaml create mode 100644 googleAppEngine/scipy2/assets/google_logo.jpg create mode 100644 googleAppEngine/scipy2/assets/resized_google_logo.jpg create mode 100644 googleAppEngine/scipy2/fixtures/assets/resized_google_logo.jpg create mode 100644 googleAppEngine/scipy2/main.py create mode 100644 googleAppEngine/scipy2/main_test.py create mode 100644 googleAppEngine/scipy2/requirements.txt create mode 100644 googleAppEngine/scipy2/templates/files.html create mode 100644 googleAppEngine/scipy3/app.yaml create mode 100644 googleAppEngine/scipy3/assets/1-paesaggi-naturali-classifica.jpg create mode 100644 googleAppEngine/scipy3/assets/Parco_Naturale_dei_Monti_Aurunci.jpg create mode 100644 googleAppEngine/scipy3/assets/google_logo.jpg create mode 100644 googleAppEngine/scipy3/assets/resized_google_logo.jpg create mode 100644 googleAppEngine/scipy3/fixtures/assets/resized_google_logo.jpg create mode 100644 googleAppEngine/scipy3/main.py create mode 100644 googleAppEngine/scipy3/main_test.py create mode 100644 googleAppEngine/scipy3/requirements.txt create mode 100644 googleAppEngine/scipy3/templates/files.html create mode 100644 googleAppEngine/scipy3/templates/upload.html create mode 100644 googleAppEngine/scipy4/app.yaml create mode 100644 googleAppEngine/scipy4/assets/1-paesaggi-naturali-classifica.jpg create mode 100644 googleAppEngine/scipy4/assets/Parco_Naturale_dei_Monti_Aurunci.jpg create mode 100644 googleAppEngine/scipy4/assets/google_logo.jpg create mode 100644 googleAppEngine/scipy4/assets/resized_1-paesaggi-naturali-classifica.jpg create mode 100644 googleAppEngine/scipy4/assets/resized_Parco_Naturale_dei_Monti_Aurunci.jpg create mode 100644 googleAppEngine/scipy4/assets/resized_google_logo.jpg create mode 100644 googleAppEngine/scipy4/fixtures/assets/resized_google_logo.jpg create mode 100644 googleAppEngine/scipy4/main.py create mode 100644 googleAppEngine/scipy4/main_test.py create mode 100644 googleAppEngine/scipy4/requirements.txt create mode 100644 googleAppEngine/scipy4/templates/files.html create mode 100644 googleAppEngine/scipy4/templates/upload.html diff --git a/googleAppEngine/scipy/env/lib/python2.7/UserDict.pyc b/googleAppEngine/scipy/env/lib/python2.7/UserDict.pyc new file mode 100644 index 0000000000000000000000000000000000000000..74a349ca06489508a038474742b0c30ddf63f40c GIT binary patch literal 12591 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/_abcoll.pyc b/googleAppEngine/scipy/env/lib/python2.7/_abcoll.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7c9336694f3b68546d1078b407bd1205b828468 GIT binary patch literal 32338 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/_weakrefset.pyc b/googleAppEngine/scipy/env/lib/python2.7/_weakrefset.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0feb35f1ed1a5340023c172080ae5a3fcc9deb27 GIT binary patch literal 12750 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 K>aDBSzV&Z9=B0@M literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/codecs.pyc b/googleAppEngine/scipy/env/lib/python2.7/codecs.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14858bcfba8149c96063164b9bc4fcc389e4d140 GIT binary patch literal 42840 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 P-^mfCyGN!f_f-BL(jJ2D literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/copy_reg.pyc b/googleAppEngine/scipy/env/lib/python2.7/copy_reg.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0377b17e0be3b36a864133e6b915359df9ac9f3 GIT binary patch literal 5871 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/genericpath.pyc b/googleAppEngine/scipy/env/lib/python2.7/genericpath.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f9fe699e51674a795c188a5b267f20020ff20183 GIT binary patch literal 4221 zcmc&%OK%)S5U!bhIJ>sv7a;_MXjvdODA`qVAcur!oJ5fjpxH#pHh!D!Bo6Yn?5BqO6rs}C}~nMN68sVT9mYDbcQx-G-;Ep(`JM2 z=WkP8Hfg6#r6$kwl6jJIG{i~^^c~T+L|t(X1V*Fm-#q9g0w%6?3U1lEF-IQZbYoJOy|OCk?B$j zyA|a^=TdyuZ*ORkYb(Y^ibRz%w&|oR#Jw%<6sC}|8mbu6l5r}HP+6f%iv^^JilWp- zsUj=e!*L#0I}J;np<9{h6dsxxneIx{ZL7cV`_wK##7d%~ltZ;=n`n@G%2;DrEhA|m zcP3{QEPYhTTxG5rX4E&*Hoz+b;oUmQ3{_f94ad2Pbs`US?qTG|D28{DP=H54zXP5+ zK8V{d4D%?HVQAZE3B&5(VOWiFLzx&}v$v%)*&C^Gs-j%?MscdgNw1jLEuCLZbZjo0 zC@TP44_L{3q;lCCra0&zl|2)yV$zfOZZB1X>7=XOYrT=oWvSu<8tfL6fF)h!4OzgZ z7xNLg@S$&_n9CrO6|zLz9__=*Jo4`6=cvvtzB9%S8>6jJ|ADQ;OnAE40J$fP6<=>j zsHhZ?;4MX^23SBK?YM;L+>TP1#!#1HQ0g6-3p2?EI)zQ7D&H|37R0h}+F*684Ba`E z$g+f~aJO5+b>1t-((UhRyx|e9Ck82>|2#{|8YaKyt$52`qk@(XatQ5pR3>XrKzrc9 z&7T1Gog;8P+OE?+XoIyd1^O*4@+_d?A(1HMXq-l+V3X~z7XOzf1nh2AJaC>8tZ^NsA}401Yz|$NXF@Mj%w-}56QNC)J-2hQ+o|!aLpz*V98a!XmqQXS zz>uE;F6^GyP+UYL|1cu{3p^OEV|b(y;vYPTZ#Z{R3cg$ZJ3|AU`>?!6U2r>!;AY{XR4!au$xES#@(>sXkY6 zEToc-#;4%E*qlB=F&xp!Z&KY`z~2R2sS94rYT-!3N4tq)eg%O>wm}{E47pF`yR$~0 zHFD5!%0d^C5@@DQ`QfaZ8_=YE{MTuxPUX+cK-uRH=4kH&+MnaT9is9lUKG^}&>(B` zdslCg;N~X1F~psNZcM#~sgJ)xmgKg5IdOyfLD|3VAiEwX*D*xm= zrQ2=`{B9lgBUO^SvP53Z>YlzZU=AF<6TDq;-?MqhJh>#)DAy&1xg};6fS z!8V?qfdid~2QCq2&;z#lfCG5IRv(~Hzz?1ycpP_9IhoVwjp|AGJ_~5pL7MEPfM=;z X^V;5G?bSwWzO~S5wHofP*;@G<3~CJ4 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/linecache.pyc b/googleAppEngine/scipy/env/lib/python2.7/linecache.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5926d72d92877a1b91921e89e883593a86818ad3 GIT binary patch literal 3656 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/os.pyc b/googleAppEngine/scipy/env/lib/python2.7/os.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dcb0bd3d1cc9b7d5a9385173713be764f09f5e11 GIT binary patch literal 29081 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 D{B0n> literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/posixpath.pyc b/googleAppEngine/scipy/env/lib/python2.7/posixpath.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6229df37124c951f63ff23f322675f2006c958d GIT binary patch literal 12903 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/re.pyc b/googleAppEngine/scipy/env/lib/python2.7/re.pyc new file mode 100644 index 0000000000000000000000000000000000000000..992bd0319f2cc410ea6508940513a4f77ba8c0d6 GIT binary patch literal 14757 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.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* + +\$ click\_ +========== + +Click is a Python package for creating beautiful command line interfaces +in a composable way with as little code as necessary. It's the "Command +Line Interface Creation Kit". It's highly configurable but comes with +sensible defaults out of the box. + +It aims to make the process of writing command line tools quick and fun +while also preventing any frustration caused by the inability to +implement an intended CLI API. + +Click in three points: + +- Arbitrary nesting of commands +- Automatic help page generation +- Supports lazy loading of subcommands at runtime + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + $ pip install click + +Click supports Python 3.4 and newer, Python 2.7, and PyPy. + +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + +A Simple Example +---------------- + +What does it look like? Here is an example of a simple Click program: + +.. code-block:: python + + import click + + @click.command() + @click.option("--count", default=1, help="Number of greetings.") + @click.option("--name", prompt="Your name", + help="The person to greet.") + def hello(count, name): + """Simple program that greets NAME for a total of COUNT times.""" + for _ in range(count): + click.echo("Hello, %s!" % name) + + if __name__ == '__main__': + hello() + +And what it looks like when run: + +.. code-block:: text + + $ python hello.py --count=3 + Your name: Click + Hello, Click! + Hello, Click! + Hello, Click! + + +Donate +------ + +The Pallets organization develops and supports Click and other popular +packages. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, `please +donate today`_. + +.. _please donate today: https://palletsprojects.com/donate + + +Links +----- + +* Website: https://palletsprojects.com/p/click/ +* Documentation: https://click.palletsprojects.com/ +* License: `BSD `_ +* Releases: https://pypi.org/project/click/ +* Code: https://github.com/pallets/click +* Issue tracker: https://github.com/pallets/click/issues +* Test status: + + * Linux, Mac: https://travis-ci.org/pallets/click + * Windows: https://ci.appveyor.com/project/pallets/click + +* Test coverage: https://codecov.io/gh/pallets/click + + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/RECORD b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/RECORD new file mode 100644 index 0000000..0dac843 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/RECORD @@ -0,0 +1,40 @@ +Click-7.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Click-7.0.dist-info/LICENSE.txt,sha256=4hIxn676T0Wcisk3_chVcECjyrivKTZsoqSNI5AlIlw,1876 +Click-7.0.dist-info/METADATA,sha256=-r8jeke3Zer4diRvT1MjFZuiJ6yTT_qFP39svLqdaLI,3516 +Click-7.0.dist-info/RECORD,, +Click-7.0.dist-info/WHEEL,sha256=gduuPyBvFJQSQ0zdyxF7k0zynDXbIbvg5ZBHoXum5uk,110 +Click-7.0.dist-info/top_level.txt,sha256=J1ZQogalYS4pphY_lPECoNMfw0HzTSrZglC4Yfwo4xA,6 +click/__init__.py,sha256=HjGThQ7tef9kkwCV371TBnrf0SAi6fKfU_jtEnbYTvQ,2789 +click/__init__.pyc,, +click/_bashcomplete.py,sha256=iaNUmtxag0YPfxba3TDYCNietiTMQIrvhRLj-H8okFU,11014 +click/_bashcomplete.pyc,, +click/_compat.py,sha256=vYmvoj4opPxo-c-2GMQQjYT_r_QkOKybkfGoeVrt0dA,23399 +click/_compat.pyc,, +click/_termui_impl.py,sha256=xHmLtOJhKUCVD6168yucJ9fknUJPAMs0eUTPgVUO-GQ,19611 +click/_termui_impl.pyc,, +click/_textwrap.py,sha256=gwS4m7bdQiJnzaDG8osFcRb-5vn4t4l2qSCy-5csCEc,1198 +click/_textwrap.pyc,, +click/_unicodefun.py,sha256=QHy2_5jYlX-36O-JVrTHNnHOqg8tquUR0HmQFev7Ics,4364 +click/_unicodefun.pyc,, +click/_winconsole.py,sha256=PPWVak8Iikm_gAPsxMrzwsVFCvHgaW3jPaDWZ1JBl3U,8965 +click/_winconsole.pyc,, +click/core.py,sha256=q8FLcDZsagBGSRe5Y9Hi_FGvAeZvusNfoO5EkhkSQ8Y,75305 +click/core.pyc,, +click/decorators.py,sha256=idKt6duLUUfAFftrHoREi8MJSd39XW36pUVHthdglwk,11226 +click/decorators.pyc,, +click/exceptions.py,sha256=CNpAjBAE7qjaV4WChxQeak95e5yUOau8AsvT-8m6wss,7663 +click/exceptions.pyc,, +click/formatting.py,sha256=eh-cypTUAhpI3HD-K4ZpR3vCiURIO62xXvKkR3tNUTM,8889 +click/formatting.pyc,, +click/globals.py,sha256=oQkou3ZQ5DgrbVM6BwIBirwiqozbjfirzsLGAlLRRdg,1514 +click/globals.pyc,, +click/parser.py,sha256=m-nGZz4VwprM42_qtFlWFGo7yRJQxkBlRcZodoH593Y,15510 +click/parser.pyc,, +click/termui.py,sha256=o_ZXB2jyvL2Rce7P_bFGq452iyBq9ykJyRApIPMCZO0,23207 +click/termui.pyc,, +click/testing.py,sha256=aYGqY_iWLu2p4k7lkuJ6t3fqpf6aPGqTsyLzNY_ngKg,13062 +click/testing.pyc,, +click/types.py,sha256=2Q929p-aBP_ZYuMFJqJR-Ipucofv3fmDc5JzBDPmzJU,23287 +click/types.pyc,, +click/utils.py,sha256=6-D0WkAxvv9FkgHXSHwDIv0l9Gdx9Mm6Z5vuKNLIfZI,15763 +click/utils.pyc,, diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/WHEEL b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/WHEEL new file mode 100644 index 0000000..1316c41 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.31.1) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/top_level.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/top_level.txt new file mode 100644 index 0000000..dca9a90 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Click-7.0.dist-info/top_level.txt @@ -0,0 +1 @@ +click diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/INSTALLER b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/LICENSE.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/LICENSE.txt new file mode 100644 index 0000000..8f9252f --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/LICENSE.txt @@ -0,0 +1,31 @@ +Copyright © 2010 by the Pallets team. + +Some rights reserved. + +Redistribution and use in source and binary forms of the software as +well as documentation, 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 of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE AND DOCUMENTATION 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 AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/METADATA b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/METADATA new file mode 100644 index 0000000..c600e73 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/METADATA @@ -0,0 +1,130 @@ +Metadata-Version: 2.1 +Name: Flask +Version: 1.0.2 +Summary: A simple framework for building complex web applications. +Home-page: https://www.palletsprojects.com/p/flask/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +Maintainer: Pallets team +Maintainer-email: contact@palletsprojects.com +License: BSD +Project-URL: Documentation, http://flask.pocoo.org/docs/ +Project-URL: Code, https://github.com/pallets/flask +Project-URL: Issue tracker, https://github.com/pallets/flask/issues +Platform: any +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Framework :: Flask +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.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application +Classifier: Topic :: Software Development :: Libraries :: Application Frameworks +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Provides-Extra: dev +Provides-Extra: docs +Provides-Extra: dotenv +Requires-Dist: Werkzeug (>=0.14) +Requires-Dist: Jinja2 (>=2.10) +Requires-Dist: itsdangerous (>=0.24) +Requires-Dist: click (>=5.1) +Provides-Extra: dev +Requires-Dist: pytest (>=3); extra == 'dev' +Requires-Dist: coverage; extra == 'dev' +Requires-Dist: tox; extra == 'dev' +Requires-Dist: sphinx; extra == 'dev' +Requires-Dist: pallets-sphinx-themes; extra == 'dev' +Requires-Dist: sphinxcontrib-log-cabinet; extra == 'dev' +Provides-Extra: docs +Requires-Dist: sphinx; extra == 'docs' +Requires-Dist: pallets-sphinx-themes; extra == 'docs' +Requires-Dist: sphinxcontrib-log-cabinet; extra == 'docs' +Provides-Extra: dotenv +Requires-Dist: python-dotenv; extra == 'dotenv' + +Flask +===== + +Flask is a lightweight `WSGI`_ web application framework. It is designed +to make getting started quick and easy, with the ability to scale up to +complex applications. It began as a simple wrapper around `Werkzeug`_ +and `Jinja`_ and has become one of the most popular Python web +application frameworks. + +Flask offers suggestions, but doesn't enforce any dependencies or +project layout. It is up to the developer to choose the tools and +libraries they want to use. There are many extensions provided by the +community that make adding new functionality easy. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + pip install -U Flask + + +A Simple Example +---------------- + +.. code-block:: python + + from flask import Flask + + app = Flask(__name__) + + @app.route('/') + def hello(): + return 'Hello, World!' + +.. code-block:: text + + $ FLASK_APP=hello.py flask run + * Serving Flask app "hello" + * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) + + +Donate +------ + +The Pallets organization develops and supports Flask and the libraries +it uses. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, `please +donate today`_. + +.. _please donate today: https://psfmember.org/civicrm/contribute/transact?reset=1&id=20 + + +Links +----- + +* Website: https://www.palletsprojects.com/p/flask/ +* Documentation: http://flask.pocoo.org/docs/ +* License: `BSD `_ +* Releases: https://pypi.org/project/Flask/ +* Code: https://github.com/pallets/flask +* Issue tracker: https://github.com/pallets/flask/issues +* Test status: + + * Linux, Mac: https://travis-ci.org/pallets/flask + * Windows: https://ci.appveyor.com/project/pallets/flask + +* Test coverage: https://codecov.io/gh/pallets/flask + +.. _WSGI: https://wsgi.readthedocs.io +.. _Werkzeug: https://www.palletsprojects.com/p/werkzeug/ +.. _Jinja: https://www.palletsprojects.com/p/jinja/ +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/RECORD b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/RECORD new file mode 100644 index 0000000..42bc7ac --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/RECORD @@ -0,0 +1,48 @@ +../../../bin/flask,sha256=96l5zVShoR5xhkJCakUhZD8arIC-TytHxzbMuChkz0U,278 +Flask-1.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Flask-1.0.2.dist-info/LICENSE.txt,sha256=ziEXA3AIuaiUn1qe4cd1XxCESWTYrk4TjN7Qb06J3l8,1575 +Flask-1.0.2.dist-info/METADATA,sha256=iA5tiNWzTtgCVe80aTZGNWsckj853fJyfvHs9U-WZRk,4182 +Flask-1.0.2.dist-info/RECORD,, +Flask-1.0.2.dist-info/WHEEL,sha256=J3CsTk7Mf2JNUyhImI-mjX-fmI4oDjyiXgWT4qgZiCE,110 +Flask-1.0.2.dist-info/entry_points.txt,sha256=gBLA1aKg0OYR8AhbAfg8lnburHtKcgJLDU52BBctN0k,42 +Flask-1.0.2.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6 +flask/__init__.py,sha256=qq8lK6QQbxJALf1igz7qsvUwOTAoKvFGfdLm7jPNsso,1673 +flask/__init__.pyc,, +flask/__main__.py,sha256=pgIXrHhxM5MAMvgzAqWpw_t6AXZ1zG38us4JRgJKtxk,291 +flask/__main__.pyc,, +flask/_compat.py,sha256=UDFGhosh6mOdNB-4evKPuneHum1OpcAlwTNJCRm0irQ,2892 +flask/_compat.pyc,, +flask/app.py,sha256=ahpe3T8w98rQd_Er5d7uDxK57S1nnqGQx3V3hirBovU,94147 +flask/app.pyc,, +flask/blueprints.py,sha256=Cyhl_x99tgwqEZPtNDJUFneAfVJxWfEU4bQA7zWS6VU,18331 +flask/blueprints.pyc,, +flask/cli.py,sha256=30QYAO10Do9LbZYCLgfI_xhKjASdLopL8wKKVUGS2oA,29442 +flask/cli.pyc,, +flask/config.py,sha256=kznUhj4DLYxsTF_4kfDG8GEHto1oZG_kqblyrLFtpqQ,9951 +flask/config.pyc,, +flask/ctx.py,sha256=leFzS9fzmo0uaLCdxpHc5_iiJZ1H0X_Ig4yPCOvT--g,16224 +flask/ctx.pyc,, +flask/debughelpers.py,sha256=1ceC-UyqZTd4KsJkf0OObHPsVt5R3T6vnmYhiWBjV-w,6479 +flask/debughelpers.pyc,, +flask/globals.py,sha256=pGg72QW_-4xUfsI33I5L_y76c21AeqfSqXDcbd8wvXU,1649 +flask/globals.pyc,, +flask/helpers.py,sha256=YCl8D1plTO1evEYP4KIgaY3H8Izww5j4EdgRJ89oHTw,40106 +flask/helpers.pyc,, +flask/json/__init__.py,sha256=Ns1Hj805XIxuBMh2z0dYnMVfb_KUgLzDmP3WoUYaPhw,10729 +flask/json/__init__.pyc,, +flask/json/tag.py,sha256=9ehzrmt5k7hxf7ZEK0NOs3swvQyU9fWNe-pnYe69N60,8223 +flask/json/tag.pyc,, +flask/logging.py,sha256=qV9h0vt7NIRkKM9OHDWndzO61E5CeBMlqPJyTt-W2Wc,2231 +flask/logging.pyc,, +flask/sessions.py,sha256=2XHV4ASREhSEZ8bsPQW6pNVNuFtbR-04BzfKg0AfvHo,14452 +flask/sessions.pyc,, +flask/signals.py,sha256=BGQbVyCYXnzKK2DVCzppKFyWN1qmrtW1QMAYUs-1Nr8,2211 +flask/signals.pyc,, +flask/templating.py,sha256=FDfWMbpgpC3qObW8GGXRAVrkHFF8K4CHOJymB1wvULI,4914 +flask/templating.pyc,, +flask/testing.py,sha256=XD3gWNvLUV8dqVHwKd9tZzsj81fSHtjOphQ1wTNtlMs,9379 +flask/testing.pyc,, +flask/views.py,sha256=Wy-_WkUVtCfE2zCXYeJehNgHuEtviE4v3HYfJ--MpbY,5733 +flask/views.pyc,, +flask/wrappers.py,sha256=1Z9hF5-hXQajn_58XITQFRY8efv3Vy3uZ0avBfZu6XI,7511 +flask/wrappers.pyc,, diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/WHEEL b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/WHEEL new file mode 100644 index 0000000..f21b51c --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.31.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/entry_points.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/entry_points.txt new file mode 100644 index 0000000..1eb0252 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +flask = flask.cli:main + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/top_level.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/top_level.txt new file mode 100644 index 0000000..7e10602 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Flask-1.0.2.dist-info/top_level.txt @@ -0,0 +1 @@ +flask diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..1594da5 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/DESCRIPTION.rst @@ -0,0 +1,37 @@ + +Jinja2 +~~~~~~ + +Jinja2 is a template engine written in pure Python. It provides a +`Django`_ inspired non-XML syntax but supports inline expressions and +an optional `sandboxed`_ environment. + +Nutshell +-------- + +Here a small example of a Jinja template:: + + {% extends 'base.html' %} + {% block title %}Memberlist{% endblock %} + {% block content %} +

+ {% endblock %} + +Philosophy +---------- + +Application logic is for the controller but don't try to make the life +for the template designer too hard by giving him too few functionality. + +For more informations visit the new `Jinja2 webpage`_ and `documentation`_. + +.. _sandboxed: https://en.wikipedia.org/wiki/Sandbox_(computer_security) +.. _Django: https://www.djangoproject.com/ +.. _Jinja2 webpage: http://jinja.pocoo.org/ +.. _documentation: http://jinja.pocoo.org/2/documentation/ + + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/INSTALLER b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/LICENSE.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/LICENSE.txt new file mode 100644 index 0000000..10145a2 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/LICENSE.txt @@ -0,0 +1,31 @@ +Copyright (c) 2009 by the Jinja Team, see AUTHORS for more details. + +Some 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. + + * 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. diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/METADATA b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/METADATA new file mode 100644 index 0000000..40f2b46 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/METADATA @@ -0,0 +1,68 @@ +Metadata-Version: 2.0 +Name: Jinja2 +Version: 2.10 +Summary: A small but fast and easy to use stand-alone template engine written in pure python. +Home-page: http://jinja.pocoo.org/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +License: BSD +Description-Content-Type: UNKNOWN +Platform: UNKNOWN +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: Programming Language :: Python :: 3.6 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup :: HTML +Requires-Dist: MarkupSafe (>=0.23) +Provides-Extra: i18n +Requires-Dist: Babel (>=0.8); extra == 'i18n' + + +Jinja2 +~~~~~~ + +Jinja2 is a template engine written in pure Python. It provides a +`Django`_ inspired non-XML syntax but supports inline expressions and +an optional `sandboxed`_ environment. + +Nutshell +-------- + +Here a small example of a Jinja template:: + + {% extends 'base.html' %} + {% block title %}Memberlist{% endblock %} + {% block content %} + + {% endblock %} + +Philosophy +---------- + +Application logic is for the controller but don't try to make the life +for the template designer too hard by giving him too few functionality. + +For more informations visit the new `Jinja2 webpage`_ and `documentation`_. + +.. _sandboxed: https://en.wikipedia.org/wiki/Sandbox_(computer_security) +.. _Django: https://www.djangoproject.com/ +.. _Jinja2 webpage: http://jinja.pocoo.org/ +.. _documentation: http://jinja.pocoo.org/2/documentation/ + + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/RECORD b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/RECORD new file mode 100644 index 0000000..6151967 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/RECORD @@ -0,0 +1,61 @@ +Jinja2-2.10.dist-info/DESCRIPTION.rst,sha256=b5ckFDoM7vVtz_mAsJD4OPteFKCqE7beu353g4COoYI,978 +Jinja2-2.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Jinja2-2.10.dist-info/LICENSE.txt,sha256=JvzUNv3Io51EiWrAPm8d_SXjhJnEjyDYvB3Tvwqqils,1554 +Jinja2-2.10.dist-info/METADATA,sha256=18EgU8zR6-av-0-5y_gXebzK4GnBB_76lALUsl-6QHM,2258 +Jinja2-2.10.dist-info/RECORD,, +Jinja2-2.10.dist-info/WHEEL,sha256=kdsN-5OJAZIiHN-iO4Rhl82KyS0bDWf4uBwMbkNafr8,110 +Jinja2-2.10.dist-info/entry_points.txt,sha256=NdzVcOrqyNyKDxD09aERj__3bFx2paZhizFDsKmVhiA,72 +Jinja2-2.10.dist-info/metadata.json,sha256=NPUJ9TMBxVQAv_kTJzvU8HwmP-4XZvbK9mz6_4YUVl4,1473 +Jinja2-2.10.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7 +jinja2/__init__.py,sha256=xJHjaMoy51_KXn1wf0cysH6tUUifUxZCwSOfcJGEYZw,2614 +jinja2/__init__.pyc,, +jinja2/_compat.py,sha256=xP60CE5Qr8FTYcDE1f54tbZLKGvMwYml4-8T7Q4KG9k,2596 +jinja2/_compat.pyc,, +jinja2/_identifier.py,sha256=W1QBSY-iJsyt6oR_nKSuNNCzV95vLIOYgUNPUI1d5gU,1726 +jinja2/_identifier.pyc,, +jinja2/asyncfilters.py,sha256=cTDPvrS8Hp_IkwsZ1m9af_lr5nHysw7uTa5gV0NmZVE,4144 +jinja2/asyncsupport.py,sha256=UErQ3YlTLaSjFb94P4MVn08-aVD9jJxty2JVfMRb-1M,7878 +jinja2/bccache.py,sha256=nQldx0ZRYANMyfvOihRoYFKSlUdd5vJkS7BjxNwlOZM,12794 +jinja2/bccache.pyc,, +jinja2/compiler.py,sha256=BqC5U6JxObSRhblyT_a6Tp5GtEU5z3US1a4jLQaxxgo,65386 +jinja2/compiler.pyc,, +jinja2/constants.py,sha256=uwwV8ZUhHhacAuz5PTwckfsbqBaqM7aKfyJL7kGX5YQ,1626 +jinja2/constants.pyc,, +jinja2/debug.py,sha256=WTVeUFGUa4v6ReCsYv-iVPa3pkNB75OinJt3PfxNdXs,12045 +jinja2/debug.pyc,, +jinja2/defaults.py,sha256=Em-95hmsJxIenDCZFB1YSvf9CNhe9rBmytN3yUrBcWA,1400 +jinja2/defaults.pyc,, +jinja2/environment.py,sha256=VnkAkqw8JbjZct4tAyHlpBrka2vqB-Z58RAP-32P1ZY,50849 +jinja2/environment.pyc,, +jinja2/exceptions.py,sha256=_Rj-NVi98Q6AiEjYQOsP8dEIdu5AlmRHzcSNOPdWix4,4428 +jinja2/exceptions.pyc,, +jinja2/ext.py,sha256=atMQydEC86tN1zUsdQiHw5L5cF62nDbqGue25Yiu3N4,24500 +jinja2/ext.pyc,, +jinja2/filters.py,sha256=yOAJk0MsH-_gEC0i0U6NweVQhbtYaC-uE8xswHFLF4w,36528 +jinja2/filters.pyc,, +jinja2/idtracking.py,sha256=2GbDSzIvGArEBGLkovLkqEfmYxmWsEf8c3QZwM4uNsw,9197 +jinja2/idtracking.pyc,, +jinja2/lexer.py,sha256=ySEPoXd1g7wRjsuw23uimS6nkGN5aqrYwcOKxCaVMBQ,28559 +jinja2/lexer.pyc,, +jinja2/loaders.py,sha256=xiTuURKAEObyym0nU8PCIXu_Qp8fn0AJ5oIADUUm-5Q,17382 +jinja2/loaders.pyc,, +jinja2/meta.py,sha256=fmKHxkmZYAOm9QyWWy8EMd6eefAIh234rkBMW2X4ZR8,4340 +jinja2/meta.pyc,, +jinja2/nativetypes.py,sha256=_sJhS8f-8Q0QMIC0dm1YEdLyxEyoO-kch8qOL5xUDfE,7308 +jinja2/nativetypes.pyc,, +jinja2/nodes.py,sha256=L10L_nQDfubLhO3XjpF9qz46FSh2clL-3e49ogVlMmA,30853 +jinja2/nodes.pyc,, +jinja2/optimizer.py,sha256=MsdlFACJ0FRdPtjmCAdt7JQ9SGrXFaDNUaslsWQaG3M,1722 +jinja2/optimizer.pyc,, +jinja2/parser.py,sha256=lPzTEbcpTRBLw8ii6OYyExHeAhaZLMA05Hpv4ll3ULk,35875 +jinja2/parser.pyc,, +jinja2/runtime.py,sha256=DHdD38Pq8gj7uWQC5usJyWFoNWL317A9AvXOW_CLB34,27755 +jinja2/runtime.pyc,, +jinja2/sandbox.py,sha256=TVyZHlNqqTzsv9fv2NvJNmSdWRHTguhyMHdxjWms32U,16708 +jinja2/sandbox.pyc,, +jinja2/tests.py,sha256=iJQLwbapZr-EKquTG_fVOVdwHUUKf3SX9eNkjQDF8oU,4237 +jinja2/tests.pyc,, +jinja2/utils.py,sha256=q24VupGZotQ-uOyrJxCaXtDWhZC1RgsQG7kcdmjck2Q,20629 +jinja2/utils.pyc,, +jinja2/visitor.py,sha256=JD1H1cANA29JcntFfN5fPyqQxB4bI4wC00BzZa-XHks,3316 +jinja2/visitor.pyc,, diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/WHEEL b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/WHEEL new file mode 100644 index 0000000..7332a41 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/WHEEL @@ -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 + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/entry_points.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/entry_points.txt new file mode 100644 index 0000000..32e6b75 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/entry_points.txt @@ -0,0 +1,4 @@ + + [babel.extractors] + jinja2 = jinja2.ext:babel_extract[i18n] + \ No newline at end of file diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/metadata.json b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/metadata.json new file mode 100644 index 0000000..7f5dc38 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/metadata.json @@ -0,0 +1 @@ +{"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", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup :: HTML"], "description_content_type": "UNKNOWN", "extensions": {"python.details": {"contacts": [{"email": "armin.ronacher@active-4.com", "name": "Armin Ronacher", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "http://jinja.pocoo.org/"}}, "python.exports": {"babel.extractors": {"jinja2": "jinja2.ext:babel_extract [i18n]"}}}, "extras": ["i18n"], "generator": "bdist_wheel (0.30.0)", "license": "BSD", "metadata_version": "2.0", "name": "Jinja2", "run_requires": [{"extra": "i18n", "requires": ["Babel (>=0.8)"]}, {"requires": ["MarkupSafe (>=0.23)"]}], "summary": "A small but fast and easy to use stand-alone template engine written in pure python.", "version": "2.10"} \ No newline at end of file diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/top_level.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/top_level.txt new file mode 100644 index 0000000..7f7afbf --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Jinja2-2.10.dist-info/top_level.txt @@ -0,0 +1 @@ +jinja2 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/INSTALLER b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/LICENSE b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/LICENSE new file mode 100644 index 0000000..5d26938 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/LICENSE @@ -0,0 +1,33 @@ +Copyright (c) 2010 by Armin Ronacher and contributors. See AUTHORS +for more details. + +Some rights reserved. + +Redistribution and use in source and binary forms of the software as well +as documentation, 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 AND DOCUMENTATION 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 AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/METADATA b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/METADATA new file mode 100644 index 0000000..25a3ad1 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/METADATA @@ -0,0 +1,135 @@ +Metadata-Version: 2.1 +Name: MarkupSafe +Version: 1.0 +Summary: Implements a XML/HTML/XHTML Markup safe string for Python +Home-page: http://github.com/pallets/markupsafe +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +License: BSD +Platform: UNKNOWN +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 :: 3 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup :: HTML + +MarkupSafe +========== + +Implements a unicode subclass that supports HTML strings: + +.. code-block:: python + + >>> from markupsafe import Markup, escape + >>> escape("") + Markup(u'<script>alert(document.cookie);</script>') + >>> tmpl = Markup("%s") + >>> tmpl % "Peter > Lustig" + Markup(u'Peter > Lustig') + +If you want to make an object unicode that is not yet unicode +but don't want to lose the taint information, you can use the +``soft_unicode`` function. (On Python 3 you can also use ``soft_str`` which +is a different name for the same function). + +.. code-block:: python + + >>> from markupsafe import soft_unicode + >>> soft_unicode(42) + u'42' + >>> soft_unicode(Markup('foo')) + Markup(u'foo') + +HTML Representations +-------------------- + +Objects can customize their HTML markup equivalent by overriding +the ``__html__`` function: + +.. code-block:: python + + >>> class Foo(object): + ... def __html__(self): + ... return 'Nice' + ... + >>> escape(Foo()) + Markup(u'Nice') + >>> Markup(Foo()) + Markup(u'Nice') + +Silent Escapes +-------------- + +Since MarkupSafe 0.10 there is now also a separate escape function +called ``escape_silent`` that returns an empty string for ``None`` for +consistency with other systems that return empty strings for ``None`` +when escaping (for instance Pylons' webhelpers). + +If you also want to use this for the escape method of the Markup +object, you can create your own subclass that does that: + +.. code-block:: python + + from markupsafe import Markup, escape_silent as escape + + class SilentMarkup(Markup): + __slots__ = () + + @classmethod + def escape(cls, s): + return cls(escape(s)) + +New-Style String Formatting +--------------------------- + +Starting with MarkupSafe 0.21 new style string formats from Python 2.6 and +3.x are now fully supported. Previously the escape behavior of those +functions was spotty at best. The new implementations operates under the +following algorithm: + +1. if an object has an ``__html_format__`` method it is called as + replacement for ``__format__`` with the format specifier. It either + has to return a string or markup object. +2. if an object has an ``__html__`` method it is called. +3. otherwise the default format system of Python kicks in and the result + is HTML escaped. + +Here is how you can implement your own formatting: + +.. code-block:: python + + class User(object): + + def __init__(self, id, username): + self.id = id + self.username = username + + def __html_format__(self, format_spec): + if format_spec == 'link': + return Markup('{1}').format( + self.id, + self.__html__(), + ) + elif format_spec: + raise ValueError('Invalid format spec') + return self.__html__() + + def __html__(self): + return Markup('{0}').format(self.username) + +And to format that user: + +.. code-block:: python + + >>> user = User(1, 'foo') + >>> Markup('

User: {0:link}').format(user) + Markup(u'

User: foo') + +Markupsafe supports Python 2.6, 2.7 and Python 3.3 and higher. + + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/RECORD b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/RECORD new file mode 100644 index 0000000..af860f3 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/RECORD @@ -0,0 +1,16 @@ +MarkupSafe-1.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +MarkupSafe-1.0.dist-info/LICENSE,sha256=C76IIo_WPSDsCX9k5Y1aCkZRI64TkUChjUBsYLSIJLU,1582 +MarkupSafe-1.0.dist-info/METADATA,sha256=RTBfxOEfHqiY9goR2QvR2sG0-pRm52r0QWcGi_pUYCQ,4182 +MarkupSafe-1.0.dist-info/RECORD,, +MarkupSafe-1.0.dist-info/WHEEL,sha256=-Crjs1WwpTj5CCeFg4GKXWPpZsiCLs9UbQGH1WBfXpw,105 +MarkupSafe-1.0.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 +markupsafe/__init__.py,sha256=xtkRdxhzJzgp65wUo1D4DjnazxHU88pPldaAuDekBeY,10697 +markupsafe/__init__.pyc,, +markupsafe/_compat.py,sha256=r1HE0CpcAZeb-AiTV9wITR91PeLHn0CzZ_XHkYoozpI,565 +markupsafe/_compat.pyc,, +markupsafe/_constants.py,sha256=U_xybFQsyXKCgHSfranJnFzo-z9nn9fuBeSk243sE5Q,4795 +markupsafe/_constants.pyc,, +markupsafe/_native.py,sha256=E2Un1ysOf-w45d18YCj8UelT5UP7Vt__IuFPYJ7YRIs,1187 +markupsafe/_native.pyc,, +markupsafe/_speedups.c,sha256=B6Mf6Fn33WqkagfwY7q5ZBSm_vJoHDYxDB0Jp_DP7Jw,5936 +markupsafe/_speedups.so,sha256=45IyeMuudiT9zUlxOrXabD_Xz-GRanw8Wk4pJV7-pbc,34864 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/WHEEL b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/WHEEL new file mode 100644 index 0000000..c124558 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.32.2) +Root-Is-Purelib: false +Tag: cp27-cp27mu-linux_x86_64 + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/top_level.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/top_level.txt new file mode 100644 index 0000000..75bf729 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/MarkupSafe-1.0.dist-info/top_level.txt @@ -0,0 +1 @@ +markupsafe diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libfreetype-6ed94974.so.6.16.1 b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libfreetype-6ed94974.so.6.16.1 new file mode 100755 index 0000000000000000000000000000000000000000..863b3810411e495d4845f5664ff07a6bc2b1e15c GIT binary patch literal 1254200 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

DiPMvMJBZrsx=rV`DqTIs%Yj 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

x=48z`hPY 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˦g(S!x!t#@B$-@C76kmNX8&9K6w3 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 LXNvaNa@+q0#5Utk literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libjpeg-3fe7dfc0.so.9.3.0 b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libjpeg-3fe7dfc0.so.9.3.0 new file mode 100755 index 0000000000000000000000000000000000000000..835b57be5527bfce56e507d8ae10bcd248aaaed2 GIT binary patch literal 344704 zcmeFa3w&Hv)i*q86PlL71ZXv4)qq7)Knz&5SSl09$h5Q?q0u6@%B9u|S}}q0NG^~> zau`DMs%X9U71TU}4}FwN=!0c?p$S-d0#=DoHI}L~Ox19CWYlWk|9`D@&e?M^X$$!N zzVG*aMCqLU-)pbE_S$Q&eLefMCl|kGQdwEd|C=0pcZ{LBvlK~KM8~WOdy2&pv3ap6 z`1iH3R|{_ouTRc-!YTl z|E;v-L4I|XUybEwza2*^q5m5*#VmW}?-dQaqJdX5@QMarvIcw)KGE-F^m+ql6vw8g z$71G^iz0qEr8GW@{-PB9tB|^;h=T^6nSjr$&|#F~vj)jZ;cr2QRtoQo!ebvC)t9D*d~S&mp3psj>S~ihs=bT#w-e z`CL3j@yiW=4uc)y-#Sb2qxC0ti^>1Y+f@EP+u-d;!*7Wx{&yS5bc-Iwx0h{VhtTIQ zG{ecp|9z&nn@w-Wnmk7!p7OlzYz1;g|BRLQ^6NC;6_)RIlRtK*68idSo2qR)*>%IacAHQE_6o8=sbIm2lAN@dV>D@LA2b$LK#|ayBki`o~PpzZrhYVrB3Z zqkoIxvrbn&GxaBSI+C-zAAgnd`IF&W%}y?_RQca-d=5oC=`U+j{)@~WI!!-s{iNax zO+SZN{nlCizTWtJ3cp8S@SOOPX4t3M$KqBmmwmzHf!zFSH9loVA6Gc`DZ{G_H}cr& z#^;=Sl+Tr*;~&*d`G>!za_+EvudwoNtx&x^L6*$H4yR2S*e})3Sy`5t8 zy{3T0M*kzr_q!W4-^GxRe_M?H)t^wpw;BCMAs6LL*QkJ=lEGpSi~Wx(NOZ;wjIy<;v$;qd&p;KXsPM|7DGiea`guniEt3Bi8QT zXY`3{)t=c8@$W**_p%`kf7A^07~|77Rr&nY+R?LSx34mX^j)))r;Ps}Kce)1GWz$J z{wuE0d@nHl&$M>2D$?!-jel*G(yul8Uc>MHi}GJ;<@!GORK;e-3P&HO1+agw_RD2{ z>5YcpXL9~(wenf3Kd}o;&b=Se3~NlEpRsmyV!Z+z4A0}2_0nw>a)aSln_aCwTN%^; z^6w3X?|Y|~>vd>X{QIW0uX`Jn!H*P<%`^U^OB7&#%)d1z|LzXuf1Sdy$Bn+}(+cz( zKFjFOYgYcWC;lxodA282o)Lv(pT#fBH7{j=>A%VJu;Crb=YyIo){S`5|JKGKf3tf3 zHR9<%*KJY4Mq{_d+4MBm|dOoP0g?hcEG=rj6P=c!wSdVXY^Y)D}AG_&wSMM z(DG$f*!h}G><4C7JFiy!b0+^8zB~^op*8Q=UgX2_eqxbk_@9<<9@!DEyixf)Z+iZM z<@@9vis#L)zK3+8hmFcVVfmhJ^p|{F>8I*XY>VN~TF3r2)5CLy_vVyv(E6#bnEjmo zq%vM%{I??A5%^z?zaC|J7&7|a$;zkO=r>upwkK7e^Ykb7Cd9M6hnW38VR}egdpZ4m z%3!te`8x6;ebzd_qm9oH=1*d;JuaZ-!v_3E{`0I} z{QmT4|+A9+v(^^-~Xh@$WFx|D+xb zpKJBL5B5VowTG$T--2E8?>6Hz`Yu(#G^4*&$~9x0pS<1d`HhEYMg1Op`S&TqkGFy0 zxn}3z06*sY_JZbX-C^u%%XbDl4*XS^{8jiR{jNIY@B2NrC*lP&{IeugEcSCN*D=$S zf4Qn7w#)MU<$Dz0X7n^C^0~qM{Kp?+1<9Oa5K?jG_GeyV&p$ z?=e0aKYdIIpR)S(jL)AID*X!@9s9D$zt!f^A2R$$R^F!*THak+ z{jrz4IQ2@xS2Xa7242y?D;ju31FvY{6%D+ifmbx}iUwZM!2ioM!0FFq`JeyGkpEo# zJ1O?c|Nd`jpe&~UyXJ_8r_X@?XW_s9vN<}Zw384&`p=)1Gmd{;zvCZMeFe{4SL0vH z(I3T3dU9-s#m8*D5z7erm(rig2%fQtyuUu_(~thUPK0YC^aaD~B6#)pm403XUtoA5 zf-f^X6~V7IyfK2`WcacOzTWWV5q#9}l@Yw=c9nBg1V7#I)e-yyhId5pPZ-`4!8;7^ zi{Kf<*GBL$!`DUdsykH9{s=zL@bwXVmEi*s{CkFHB6!B|p$I-|_;3WT`hm(b62UJt zd^CcuHar`_Z#8@@f@cgbMDVQPu_KNX1NQB+iW?#LtBl}pH@qr>rwp%-;1?QR6Tw#* zUK_!C46lpeKQMe=1mA3UB7%G+oP7~|nc-_Ac!%NZBKY?V?~mXa!`DafF~bKUc=dm(JedeS z&+wrLzTEKP2;O7(NCY1+d^CbTWq3A%SN>4t8H?ca3@=3R<%Y+OEVln1!z&~BfZa-!D|d3ir^{3ha>nZ!$%_cfZ?MNykK}X zg4f-z@{C3BWri0b_~#6d*?TGe_^03S$_PGccvS?i`myF)6T$s(^{cdfar^OuGP2Tt zY8?FE9K6=SuXgY{2fxz6=Q;SlJ9xsuZ*}mLgI73sql3?N@MRAEDhFTg;CDFqN(cA% zEE&DZ!RI*is~vo$gLgRi*B!ja!7p|2J_oDH!J8et-@)JF;Oiay0S6y& zaDVTU(HRH-vO_=Q;QkpbMh`pqF%JERgMZq=M;-hF4xV*z|I90+#~ggVLtk+4_c(a$ z)uG*f(!nboywky}9Q=F-uXb>r`SSm29Q?;Vh~HWVKi$FW9Q+0cpXcDmI(Wjt?dXNX zrW|~=L*MA&9S*+C!P^{sxr6&>YZ$%K!LM@YS2=i>gRge*ZU^sh@M|2r$H8CY;C&8W z=iqA{+&^2u=yeXh+@bGx@b5eLdI$figAX|PT@IdcaQ|!>qlX;)yAJ)ZgEu(%h=UI} z_^5;1(MXBSI`~H%`Y{K;z`+X+{zV6mRfqQfZU?V)@Z%l4%E7m2-@4*fg_U*zBk2miQ(ryP8tgEu<3=itj6{9O*d+`+dv_(}&q%E4DT z`27yP+QIL0@D2yR-obku+&>%5=spKO#i3v8;P*QCItM?&!TTM2hJ&wn@R<%iZ1@yl z-*oU12iFrb8ae9VuXE_L4nEnz#~l3q4qk9@9f4TnYt(Kj&w7Wx(!rAsUgh8yIe4{$ zf6l>c9Gqhs|F71;nYaH}=inFmAb#gL__rK9;ox6z@RWl$Ie4Rk&vx)-4t|M)FL&@7 z2Vd#nUvltO4t}14uXb?NxJGt3_$M6t9tUr9@ID8>#lhD)xIZ>!^g0KBt3%)K;28&B z@8G98_<)1YbMTCVpXlI24t}(Q4?B2|gO51)R0kh*@N*qJ>)_Q6KIY(;Ie5Xr?dY1u z+WCCi;Mop+rGx)(2d{GQ#SUKW;4Kbb7j=ray}q=OGR_%a6{cJP}Ve8j;|bMR3I zU+Uml2jAr2V-D{2N2$&|mDx|h^QStuRyrN;-vkS_tm+-?3vx~{ClkjGSD;VyR@CJt2734Z3{6mJ> z{Bo-#{C$S$!g9+c{B4Hm5^{|a{wl+4!nuTmKhN-?4A)8cMuyo$ay1gZo?$kPT$P0X zjbWN{E+*kC8RpO_H}+2e$9;@pR()<%!j~}2D$fl|_(Ke{s&g3$pTjVRF1hs*Uc@j} zpIay4GZ^L&AlE11cQO1bhC3vD3d3v?xm6NAo?*JQ+;RyY%P@!Txkd>e%`jbRE+OF~ z8GbFpbrPP&@GORFBs_^>4jpn;68_r`gkR5aOv2AH{04@{{=xD;&2SCFqY~c5FsGQg zVF^FM@UaYMB>Wh|Z)AAAgdb*@U2ATggf}zHE-%+7;SCJGiQx_j|B&G~GrUT|-)Fd% z;pGzkHp6omZj|s>8Rk$rmyq!18Rn2IS0~{c89tHW8VO&|@LL$JlJLJVd=kSk317)D zyT;tuUa5bE>lhxD@Ffh>b>xO6{2_)pWXxqGd=A5JV|cxU7co4S;dK%|gWyYp%40DK{TP5M+8Da8D>|UYn1TO40C9mOGx-ghUYU}C*f%f(}m<} zBs_^>y82v|g#Y$4ggHgY#U%VJ!<;(j#{Mq#&v1g_Q3>y2xSru*2|vN`84PD6{20S$ zGQ3{G4>R1r@H&L)cT(w!is9L@RClI%(!ODFKr7;J=mH7cQEx>*5~O+;d=)=UsX2v| z_q$YQ;qa>`UAP4acRZpApS^J3DE$-YKdtm1bLck}Ca1j3sZCFxo+=woJz8jy#53=e zTpw$G_QI66ZQm}Y?^tj$(#2Zdoa$WgIHHlI_q*ol$p4J(vt!u>&_H%2{<&~lMI{K! zp4+m5esp6WaLdgLf^@a?GC}A>#s&$Sh9+P`p}^Kljwx-T8qZliZyV2Rkl?4_(+ zA#NH=c~$n9O?i#gd>%~H2qh^%eTz>$n2=so$WhLKW-zgm&x6Um{K>zS1nH)|sY@SA zb#6X9HCR4Oya=5=Sl)LTz|Q2}vd-4MliPmcrxyJLsb`c-UG1Ym@`pw44!*$4IuQ}m zGt)FcuWuBn#%J-w<|6Tf9rK_R{z*j)==0d=DesJgkSAtS#D})f%uxSTsQ&^YVC93^ zzQVqJrDIn7HHcAr@k@3RnFb|0Je4jVma6J(9g8&|hR87*NM8r?49d0LPrR%s@eE6x zO?9?rHE~uF&#6 z7yyW}^ts=HFt;Dis5jY&ucuL@mUwDF$J)+y4?+X6K$dR*%DF%SQI?3 zXnuF_{E_BU_^kDQuob2$I!x%=bkk@W`KOn_9R52n6N`m-$wL11NHP+?ClucQHA|(>S}J|kQlX90nypj} zA@4$9h6)Jgn>Qe*RAcFu=TR!S36yG_RLnReuS+ihZIfTBV(LJ~%S7AE_(jVFImHqn zjW$Ja5%YjmH#s28;~US56*|(@6w_$J5PWFMiaysjLgz0}nFsl%8|N}wo70@l-msV4n@;Y81H0;wbaJnk+&P#mKzJ$@ zLUt6umL*6p*_rBv_R}q+sdQ^r8@eh0+ArHoa!>Su;QsZ!;-z|>sJ>5D8QGlnt8W<- z|@1nCZ5nG(NqbD(>-|E&&`4{`DTqCUatvgqv@r=AqPbBdHRKZ}L* zYi4h8&Fp<>i{I93yw*Kz382P*a3=87c*cJi;iu5Iv8hcpB~qfmN`lb}?5&P{VIT^eo}VXd8#4>cV%dmfXw3Yp zQ>P}!T4y4!u~ctgtV608f;U#@IpzTg$Hp=s#vx!n2U72^@M3kF3P;87$%IPyUYNQ%WswUg zeWYUB9Xd!hMW*CQUsj|%w1_R&8={e=*w%thn^XM<>pxK6RKN6GOm)zvF(dU_GG5dD z;4+j-ua)MNPG&F~Ylz>IZSbD%+|`~+SM1ARj&1Dy1GXI3xvE+tv#Xot7C!7H3R?6G6W z^i<`~5UK_H+GDY{irf)0;sxhZM_c#LV=UyM`D7>x9^no6Se-s|UT3zdXs-!M8c&4<|25%Hq>z#R8?oW`!#G-Y8vNOXRYjZn% z8Cx)~q$GmZ<yzXOf#NCYWAh zPTw$GiEbs!1nG|Lupt!S!y4M5p>q++rWjZW`Gx5!VIoJ1~&ObQr_Lf$>*9AbvikQ$ zBs)CU@ckHJXx)W9*ZDMqiFsVPCp?%qjYHI+TTb}y1Cj6@e%Cz8V7lWp6&j|L98D*d zLtUJWjiwtfW4!kZR?ex~jSZ#yNX=-kak(bAOq&z{(u2cgougC4TZGVZb;C?Fn0%fR z=bjM9f&81E*E(34Zs;q=sFj(fF{qc-Dy`3SVupv>Og^7lo9dnMpp`hocA1XF?~TPD zzypgi0^z((Kl>X8!?b`=uILFP)bLUm1|f`pFMTN0xoJkayax=~xH-HavE^EoF7LyL zOb69tTn}o&XaO@wWFi}DGFBVRHc3l#68hGV)4_HS)4K?38(D8gPrwC&q77lhH<*os z3-f532mS>evK8m^M>dVlWMNW~l+3IgZ1ShRa3Nb!nABnZLrXe&TvD#f4JNZxX6F@S zSoOoI*T+lA_bF*`T&jz~w!GvXWfdxxEv_>&gKEszl;ZFfaCr1`EO}vm@o4Lw&elD# zmd67^N?@uer?hZ%bO~$Y_jFAfMI4;1+{mUwJ&$YB^OM=OSC1Z-&gLhdkFPljG!Xk+4aQXpLcb<9yCS>+(fQ9#P;~A%lw_LwAL)*Yn1Z?Aavnx> zo}-B{vDAvXm^+vlmONSZX~mTcCU=vd^NKxa`g>yWE}qZ|H0E$#g|r|hl1}b{Uo}II zcTsnxQoI`}9=&`wgo)M>+U7tSRwQkkogvyb8pyR%27U})SnByDS!(SCuB1q}yRei* z-s(!U#rdwJNXz$e&B<@Pd(ut2$2DFwKk>h7$g*{JXX|b>Uf9L_3tRt~w*C=q{rzTRLF*sW){g|% z`T?-@6YyJq2wCg*6QwG|P=jHUG}Pp7f3xF^baHP|*UOe3biL{1ZtZhBN6XmnWBr(= zQstiVoIA)-hq$->&SG^;;0#B>r`Q>eAD@^r{0a@6)GvE{LN1{*MCJI-kafkF)u`Dt zo#A%LQ0$|GGaT`q;c(~-hdNt_#yLX))ftMv4c(;16gflffb+}I5{q2#0dwQf7q!$n zKDXi+$xU5C`*_#O8x&D$jFh(T-}Oo}+H-An;2zMfeOL8{XG*)^3Cj@g`5aTTdV?-R z$`S9{g9!9Dj}|Z&nvDlDLGgkdE%|Ny_OX5Ya=%k9p@($Z=#3y?$tLjGA7}dSApHv$ zmaL?Y_(B}BA0gfZCizQ|OGybTOGw}dnEUho9Q;oZs}BC#7^(YC?EN}wk2tXd*IrO- zPW~T74#ll@IfgL(aANCFqW;i{vB~rwU8Ud_T>y=D1twP8BC6%u41`c zD`+00MZRmD`Ys#Z^mCz8W(YR_;1CC(4K0HCBw9YqkMoeb@PvNtE=?88D@M{wkfzkU zVknrQgfy68^yu_LN5lT~qTd}T{N<0Lp0E=QrWgCP9hT%A&NBMlLCL>^89Vx-Sw>NI zH!wT&m~1!2dHS;q4%U3zEn>ddl5&<&oK$BSMMI5XmQloFDp(W^GoorPHOnaCFt}&p zp+QkWzX?K&MEcXH%l*$XcFQcIxI{E8nPr6OC!A&MmRW|AKA2@Vm^;fTIZ#0(lYz?b z^Ugp8>Om{xtPGuxOi?Rx>vd!dJ4N?&*8zv;E8sNU-sKU0ZmxU2j+Gx^gk7ZF1fE)wYnAj%)BBkm#^hmi*wvHtxH zjEn5;gGfYE zj1G)<>%iD-&lwmOm1n}qSdq*#Wd&@Mvt{tp!Qp6p%_7Wfi@O>bFY~Au>o^=PYsI+W* z8%vjV*7(vYqvB=VFa6A&@ic>%EbAVwW3hk1vMwtqnCJL2xWU9_&{Vj-RD;18O$q<` zRhiwes-O+fbtYe~z0~UKQ&Mp_*M{yH);d5MvcqxYgzK)F5=pyo=yj z0c?lb;%!4D*w(?B=BFRp5`Tl9;|#>q4RKwH&FXr1XQ8Z(2k{DniCL_Zd;RQ)`&3~&LuU@%5yh4gclpkpTWco6B&=P%pPo0h~{_@OVi59GL;IX zRh9}08_aT%9h2YA!lZZ?&$M+GCO0qQ&Q%5h<^tWX;w}wc6y#vba!CL03$V9+Y28Tnpz7{nn zD|htX2-659Jd7~bCNWgW=I-;?^f@cH~=E@+KN3yD<4J&O%@OLF5*x)$=4s`UO=xdP@gYvAMxrTr9 z8fOf!&hqc43sWHJCjVC%2t} z&AF-T_Vmywyw)DfqdP#>13|6%&>nl7=5m(}OqD9J5(Ye+;}@6=K*16T6lyqq&UEil zJPf3-M9vb9-}wvJ*+9A#y)*`YgNLWmbN>me>!}xUV00cNlo>9p{I1W?gAS(?)3F_w zKT)5lFJ&!L)EA!N9^1~&)}67IX(6>f&GM4B=~JbbT$f(5E}gv1Nj1{hIudI;O!U1@ zXTkIpEIZqRyrq=ro<)DrZfh2uJ{Q=VN9v%!kP%dbo)*I5C28)=gn=bk9LMdt@SIQyfuXi$A1TpKp15#J?o3a~cVcMeA0unLmXLlifp zk!V92PPf5{w!mw;jcIMYxQl)Ct?YojhM%u9H@en$Nzb=;A{W2cTO9N)((Anz!JyaE zUGh6wz6qs;%I0b3h4&J)_C5`Fi`q*!Jh%?dEWKn;*~64&)2_+dRJd}xY1b46U`f`w z=1)Ku(R&7V*Jv(W1MOhGatwV*&}(?*kD7;NzSt#cf5^Nr!t}!Jo#TodU-ND?Zq`Ey z4~%LGPCf3&1240463`=u6LLuZF&$7(wn&r!KoU1dze9 zT13+H>%9l7MG9Z{05R`#H+H`-?%O$;0?@{r$CiLLG zpP}7kf|C!2r@ZoqJCi$uCe|-aY-fDUrKqj^O5{U%As+vO0%BN4EmFY1U~)T4mOnm? zeGtdp4WxRfPeS@kutiXw@}>`WCbwgoar@LZ7A=G0EUTCr=Y&#nPAF))b*O<6kl??L zYW8h1M`4hXur@|E#1au>3KX6{0XLKehigCj*jrzRnCmvjI!Ik*OgR!SqNdLUb>I&>I0j2`zHRq*!dfXdjhy2rC)?K-H-?l&Pjm&(|&o}Gjy9jnzrjore|2PfBeZY^t= zfBE+K^?yKJc3#nsX4xN$d!Ixoa%3+&fO=3>yg0qmt>W)O`KY0wic{%ot>Vgb@(v7* zy{0?hy+p{N#pyb&t^5`7dnQXorFzd~Me%tM&sI|fD0pG-j64U zQL82&HASR4w*-o~vNu%1VtBuor-X=|KlFdu&aDYRv(YAi5mwLyPIa2V1~z1jxqo3T z0SY##-h14dgp2(`Od3@%V+vc*WV7-AUo@8Tu(ABOsIkm>@r^|s-;Ug-NUK9apXk8_dZi8jKuS_gXQ& z#KMNxl<}6_k4|9#qI1}Yl@)zLKQNka#Pg7K0`LOV1$vH3tX+tQxZm**wOY8>P|T$j zbm`@@dnU;|Z(-S15pDF!U7c49z@ZJquKBJrt~ih*v%2}>LDh|RRM8$Oth3^}L7jya zb8@llqVPjd5Y!QMPW4M@QqLqu-4BQAzNmz{?HvJoKY*R7x8yD;d_7g$kY0HKf2D*Y z`OnyRG=IJ-x(f5j)Y`?pv!O>kppidF3qs_8KU=uVdSet&E8x|Oy|Kl;tI8nhjM+U^ z3om`pSO3VBSe4mX)^O?-JFoo~1`e6Z&g5NXomZ?!jjWGd(`la7#(H>nI~euVVAKas z&NWhhn3vtaRoS93XF&#Ar1JV?Y$$`fng0Q$=(s0~X-H>bO8kcBkQAoVJEL2Q(_3-L z5#_OT`6LdUdn=j{K=JmCGDnysR+;4-K62*@txPFJ7AOM$x3{)(KLxMc5dI00O+J`p z7(m8y|EoCJ8?~(a$t{0LetD2jdGkReI9cBFXL-6a?FT_0>l6MROVK%CiTYH{Z8;XR zo8J;VAL1@u&$2>@Rzk%D#85mxSYM?0sa1~R_r{A9e*qPL43n$k?escBuHuzHDt1!y zoAJ-pQOW?<;uOv#vh>BHD$x?=<-X0fn8#T-I-ZFn3xNjmO{gytV~s85DG!+{$?ILvbj?4%oF{R zTuentnuBBWSsuY=jU7aZFM&+C3-M1-8RZ9SQml;fmKmnzLoCx=l`+%SGl8Y#o;For zh7T?;DofUXgcO8BjyzZ~dPw!fS>29I4 z?Ibx4-_1nnMlAVZA}f1OSn=itvYe2YSQyPR1T$&jrPG>jW@0^VZX2p0eT(LBx8&a2 zo00r50OG|2?16Q62O?0e#l3SU)$>?%EPo|>*`PP$5UFgqAzcG7{q=4#>3;H>V_tX? zBlSlMWm_6fed^k2-pE(#U)bwy$yZ3P{lb&^*X}2p?8`EoSa~B@r>^gOu&loGAE&qV z$Qn^v%b%EC)=l{#==@|={Q8sF?_Rf+>MiQo`Nm?P^&u9~yIV@?-6ERxdZ|umor?(# zUau%4-7S=X)<>ZPCQ_~22|cs`)%u9Vn%0NY!ppSIO#IEeuZz|-hr1>B-rixvqb5g8 z>w7}2Q!WmMbfB{+b?KJp;#D_wOM*+cI2FL-&xndW7e5cLI&4whl>@1mI;|Y&vQ5v$ zPt2@%ODw@v|1D*me?PtLKXt8COGRB$Dp>-DE|(SQG8h*v=XxY$#ecfHiMODvXto)z zk#KTYC(C^tLl*#JxC>#^Xr(L%;<>hLc)=7b2*kViIe2|s!ySYLlh9koySCw9d2GLE z!6Z<`yY5Go%47SR7Vs0)@vZ_^9u|~IB=1~bz%{3M*C+9B?slv|EZ~>T<6Ylpx%tg6Z5%9p#46qPt-5bs(vMWOMu2NJjQC_U6aXH=_<@G1%Z5-9YD6gSXR8K~!zFmsy z8`npqzqS3axrP)nQTTcf(@F@fs)B#!^)O`?^RO*OsEX zG%DAXrKnyPrCMBy>gp)fn@Umruc%zIq#3osd`Cojd%3gNR>#T3&!vyk*S=_uHFp-|dky{srxIob>fks^L;pKZ{b)bB^QnjVP6^nip&J z)lq$2REpPcqh*{|it5%V)sdyBej1gFo(IzRr#r}%)3dkYpDQtXoYb7ke{@{ImPQ!J zhEs8={0u>f(nbt#0otnXVrEPlp&o;_RA@&J~=>UG;sPNwGxb_ z{cFuM5l%UtQ>&L*jN^g=pnzZ#qE40gLis9;d|aGP`dI z#d|6(#Jl0-4z(!n5==12#4rI0jd%5d1E)M)N$7+J&EBh)I_3{QZSO0;kW);q=X4_l zGsR-a+)4Ny;(nFBoEg7&7yt?~7t{YK@`)b2fCneQ_k?!gbjKmw`{`^gVC(|IK>3Hs zy;L6FxXeAH<`K<4cO942MTBP&<>-^gT-(!Z@(dTePHz{GziIyWrOy9wp)!9URg4cJa+ zkxDbq#*fD#3!VV+7t?wx?%Fpw_H4Xr`lM&$=WQxJnbKSFWj8V`*z}YfCcwuB68UNV zb4>!{ymesJgn!Q4jEBS4N%D(^R>W&Jt%%RatcZUo^IZIhGO0TpqQJ@EDe;?myDv|l zbhc&@vhyZkjV5I(2b~;D8ri&<-Dvc zt)XhLoX2B7V3)!(_hq*-ct)#B))M5J*c( zY05s0$aae);K9z$A2Wwo^U;<_Q>c@G7b_pmSC@zZ2KRv#@>FN*XsqSsi2(jA7zI;@ zWTKiLdns#lhaXc_Ch_1ig2XcU*o*R`i98R@$MV;r3PNpw; z#;KTju!`Dngv?hD{2<2BjtV3C%D*~4Go9Qk%l~_MkY;Vq7b|2Ym@MED39kun`nCL; z=S*-pT~++%e}iR%KDBmRmyn^E;wYAx=?^1j%; z9;MYYNnnMG2ZR@r;gn1BV<3T}6hotn`F+Y8OP#v;+T#ztRF7W1heu~bP@j7j{P&gS zov>30&sKbn{Jr0yF{<@U8Nf_|ZjQTmSd*}#*=D&cjg1RPmy$0=wW zOl60_8x@#QSEl(z2rtajH;Inam9h)LTT7PfO`@zIlb)L-59iF}P3NJQfp@5J7W?ba znrmU_1@Ogx3D`ZB+tcU3gXpPDy9tdeqKK~&A7SfuX&fD(%fR}ZbCd^{B{>;%jEI6t zBJ}AZWl6#y~Y#HOv{M zy*_1`RHdeF$=%N^yb&H(I8Kdek4B>hPL;6|ox9>Fh<{fca4D8zXoMW_036KD#zF?d zR#mOnweBI~mL=o)Zezoj0w0*`BREJKa(#1Z(^Hl8xc|DobMKV+ns@o_#*Z3zqf;zd8LH`aviqGK*c1~?6E4(AgVxT%6;*|>8jn_H+TH)PCOkRR}P&+S% zcMo3`DXJS;7nGcrRWmcxO-)g?xK}rC;3#}!JIew~`Wcvobv_HJ3pgrq91sjJLr?>RTtE#Ou3wC+_{UR+pTtCQ4 zgD0iVIl#tLri-sfga{5h>MAS`9n?R%H`%?r<$pT=et6q>Pi;;U?2212fUxy?Pi)%7 z_4{nPXVfxM^>@;FJ;~u2<0uTDyeBmF9&TwNJSbu!Qbp{`+EXgsGv+^PiU+|@Q;>## zu>GpQCHdVGtd3MP`kWg5v;h+5e#I1w!DvkzKZvGniwRT59ZSEbgmBSlG*SZcy9Ik8 z2pc~;Z5rVRi|u^6PVNImOyJ|kG1d2~z%-#u&BxF8hf=CG|5dQ^!G=C8c4CfdS8B6o z^G`nSZU0$u!=+!&I(qoEw%DK<#=G@K8r9O_G$_%F>$)JYIL1IfuIoai?-o%=jWM@~ zsKM+{xgk6u%VHJ17``nbUydh&OX&8awHd`)6GILaH>@|o78~JUhi_okube~*iE1LhjsqqZ_FSGsLi(5?*8^Y-%g>QMC9$$D(8!199&6ClJ0I$G~%Sd#d= zb+mp&(UMk0q$MUH>1JJV@vFi7oM!|{G*)%%^$+UT#x>}`^lESU<`3+ z8xJ0!=p1%o_dw*9ULQ|Q&>x1M@~#MmQ{FCZ+S{#z!0tfJWe!{>Myyq^ws`w5>wgR(V|g4Yd@!)We@qiA zgc=K(F;gf7(m*O!H9xfC7_o~wMvPkIEs+=} z(}>LgXvF=25f7;mBhJ5(RgIW{Z^WRXT{FEJF%uOV@%Z~iVZR({jidt4H>N?~e#b)l z1yNwXgw1|O0`Y5*6bqzmgYgro#N>-FAmoK;3-_MhP7PS z9B-)HL|)FAX(3i7t>*+&bt8M*f5<#kP`;||Xx~L0?T6x1`zAiMKN4tvOtp_V(>?$x znWOy>GVL>wXy5H`uG_N=HI3CYo(#Z7f1mg~IVTX-K!%G*65&@uCa44_Li`A0v>x=Z zfp1By3cNkwS4BpvBBNFDed%#6fqIksEll+9XtmORe@ zIBtdAlem?Bb1Mz;2S(AXu9;l_!cO>TZ&Urx@LK$q2JbdG!hxn=)-u_hGQV{wu<=|?ri%y3)A)n zyzV1wbK5#53p6ZF0yM}Q-5nI0`yH{(d8Ssuz|`28#Qh2a&OvTz+#(H)$q3(s4SZrI zEkk`2S~eXrol&di7qHYJX(?lStNNd8V@vsR;Bf?g!b?+Ph zQjt)Mf1Ym_{*_r7ZOdpI)|LUVEferPX$Vl#<&nBY>WCrAJP60AzKJTN3?F? zrCa^wOr2Z<*{(C|0X4C1+~N{Wg#I1H?Y%H z@tRdAV+Aws{1b)@|BSce+V!GQET!T2!5PI)YkP5eYw*ToEHSGF8eEI!SFAxGKPl4S znJS&l`aTxb-0Y(0vrTQCgBWwPZjax*Og#AA!51U&h8lirct#$-wfKdl!f^GX zTX3e=#hbx?v*X^a^`BgTmhQhdxla3>li-2En!5?L<1fl%9gTK@odvrh#il`f6x^em zKROLUo}++q*>*K^&?vZ%(SfbJ-o7fH zC=M6DL_FcaGC0#VDWB>B&K&hb&>%~qv z^wx$*Idnp|Gk){i(H7C&wDHh%Kb4_Fmwr}f=hlRD==B!`CrRPt@LqN4xl!QnE(S02 zcW3%1Nw~r{riVtLQLgaWS`}UkmdQ^u3OzqrXn$OS{-}hL1>>f3Hv+zc+@j_`5_OO; zIvz9O?jrIE9Ap-7w#Y%kD~f{z>NrT)@pRgiBW`+W-;Ai2M3s-xOCm4xlBZzhG3pm- z7*MMigECzLxp?VWxwo`u#<+P}e9iHw5$U|NY2XZWUnR`N`*9CvC*Iv1@^i~-{`4l- zZ#V{82yX28@C`(}`IXlVJpLL)q!8iX(tx7i!u7$fZZ0_Sj|=SA;og2!K^u1Yx`lTI zzqpwiB*-p_ba*FzH1_aUu>i^8eJqdLYW3!J>p3)`6c|g%&A66m!f4#k(TL⪻R^hldodISgWnK62lJt|A8D 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⪚liH`3N!!g2P#~lUYvp6fboeA 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%0Dkw>PQPHH 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�)z;nK7Y)EA01xF>p9P{3;@HdrxS7cJsOI4pM0O%ae}QUD?AwhA zhjWn0klshWel|LbjBqN3=ZOwxDS*=kzj5?)rwxWPz^QL&Su%oh){x1meN5igGC%OWHpexVEmr{9M5#UZ;xuKV?q%vMCpsE#4 z4#>TO5~*mCymzVKap5xAtMWR=rx@xqMR%O zi|5SOuq0(Xg%JaRocUsWBx{2s*WAEu{gm6l=Mx85MxCoLuos9R&(uPPtH*u2x^40p z$Ppb{Bv;W3MzqV~uly4)1-l>xE0BWXyRUC~tVjVWV0T}$nyig}(PsC7qnf&goZ+k> zeh#b`c0*doOp5hNjfQ|dhMT!h`U|^<{FT{Pt?kv%@W#oH+L01|aCfLMXGX&)hid?? z5W)1;Y|>KrIO`xO@LY64atcquAu!g}9I53kg{Lkw813+(oD)_G8AHS9n{TP{&p?Ae z2a%Tis~hetBE$=v4oURY5j0tf--OE&^6<28d%Q~YZIP$y+a^!NRxO}aGAecOG@c}& z9*ioHA62{gX*9?U`VF4WgOVwR@k_^Vmn+QoAM_hMD4-$(m(?hdz2raO8%2Z6jLJ8N z%JNaJgQiT=#H&G5ra>XZw?EESPw8-$<`3WeOx&4P;AP ziQIw=xD7@qib(G!V1glw0 zU-Ze6Q`T|Z>nXY%jz2huXExFNtv-X`))TC+UZ`MKz2?c>)VRTj7lK=I+xDSoolkX$vdQ9P%gEX`_c#*$p@n6FV)V>>?9#U#s~UO1QB z#5_Yx-`(movT{PZfL!&}(dg2ytZB4@oTF~hws2iSmMw%?5Pq}{=-lPAU#ER@%=c>E zgZ)0fEzRxf03To21wJ;@)aiF)J{A>4=MFVJE2X2ubWe|t@aYS>!o^ut=eIgr9!i-8O(PVyY9%<~G$CHh@~&YTqjqQ2U_jtLZl$e@Y^3|L6;cpY z#_tMuO2iVx@>klnF}#Wd4Xupd81D98kXqEqf8PoroWKXlwqGdh4L99FzfWSR)Fg*L z^Z<|Z2ZQDtdfSe4Q#AopqHi@H3E`byzm7^mH zU%58$=J$yUU+EFXQ2QlV__+TWK85gw?r^vLbg>|+GXS}#GR3(Ogu(;Fx5p2KkC?7n zYbXeu6~}R;iXW^>@ufb)uyly>s7Df#de5?*`4ZhBRblC#D$z$pKBzWl!zifY5-zIh z$Ua7Hh{&w2@Dm~)?w6QoA4lk#8ye`{RwaAAo-H_!ycyw+ZK!0jKhhr>C>Re!?!-XR z#T0MMTd}OIbBh%{p<-1L2Z^n&O6Nmob5M5KIEjJAf;@Fdcn}wPIvnr-DPUog+7>TBZHj zOHhb)ksgUgMdU2w_XOn<$Yv+Ls=Coj%rvMidg3eecVKlFn<|j)dWCF8u)cb24ze{t z?tqRoB8F@+>>@v7z$ObgU^u}X*eP*S9#&y4(&A<{Er+ z(8WWq*o9p5v4wo}u~`u(eJmHcs4vpa@3MH4*fI-Z^cuBG#S-bOyvKpr%+Q1|$&!!Cl#l z<2zMe{n@Z__VoS2cC|B{Nwia8+2%#O+NrP*W)4JQxwK?mi(&1S718ODu%;S7U4rPs zsjy7XdN#G5ctzjI4rt<)a4IYTPB;}du4+4!rKiGLS?Rvla5gMDoFy7W@x`%Q{n@Z8 zxAF0?afwVlhFmB*i&|M2V)B+i&YunI*c*HiNW*6w_O6= zpG4)tZI^LsG}XamyX`VVUW)+0cH5<>w1NT*J=|@V7K$>18LDJ<+okJZby<4dq>eox zDn$2W8NddAXyT*WE&)QLYcB25OS|oo74u?L$?UevHbPMi9qX_*l`PzLIght++a>D- z_B&Fb{4CsdNz!oJC1sjr`JqocciSZdz@{m(aN8y8;=CCrYGXz-dC~%f3&o7sE=-rLjye4l~WH12#4UAT-p?^C~J1na9`$os7@3MA7bW9|J9 z+01Y?(|P~1Xt7g;-Umv^w83{ZA=^IZCSvgy`zC#Lo&{pb*YdttK_PDAphZOoa+@3zog^V&%9 z33%qnCtoOe&>4{QN}+S$an16c0NaLt1rtMVd%^A1-1gJd^uP2p*L=02Le!n% zV_$pIMjq0LjJen>jwSaJ6V!}jGmCWwD4zaXLLB~-U%J1AjMgA$Heo#Imo+02(L|um4(cX5a!c9^@X#et zEr!l+YG?aBkWqkSs=}veV31|xvj{;ZLsC^P5*j7 z)h^je_+{jsw{XG>YnxouE@$}CltQ&PqIIYHzt z)lTUHn*|Yo8tq;-yCh-e|`aI2`5=9U8; z1zSITTPvA;ddMa_!PjmiJaC@|W`#c9bRzC^cpUfrWWIh)tsgUY2CjGhk=|fmZS?8k zp$)d5KKK6J>zoYFn{jE_1Rn_B+`V8cPcwOxI8n7-sY($V0L?J#va zOYdh3fIo)2V%AaF`sDq*Q5F5yy~T8_KDl0>xc|btYacrLdD&vxm>jQtar~+^yQS@o z#6mddL4FQjCO>mi_}Np_E7-80$H01Zi2`zwm`c6;S&5-yI3Y|(O8X&aC&%YzWS>E; zymG93d>C@D`bV4;CR-0>qa*Jd__djAWag2~PQ%7r*iZ=D<-)#Uf`qgs7xs@KY@Z9e zGlWgKup=Stau@av3&Z>TeIrlEP=}NEjf@W8H}XqI?;F`#z6TnyQZL^l9lb)o8NZa` zm#OGQY*qZ;L^<($mV58`cgPEc<|KE6ten33azmoMDoFb(iVzc!J8>)SG9t3fH*g@+%Mxv8FNE?RY7-?;F`)ZjnKmy&lllTljhxV?npIykxHj_&U1fH-2jnd6BaR z7`3&0Bjb_9etku@@@lbC6mr~8x~dO%;VY_~v%0$G3moabhbOZ0d2`ho-_G z)Z>mG6wr)^q#pN;JTV)ef82Lz)D@pVfJSZ_MZ;%j-?*j5AoV`OA_{#5Jo30VV?|P z^h^?VTL`0{maxALVRTIr_Qw{6_mTIvAuQPUHS+G;Y6LXpmHOm8_SwW1Ryiy{p14>+E*5_~Fh1rJF&HRk`pB_Dt$a(pe0zQJ zE`~4Zqm3bOgc5u1==$)^@=~pQBPMn*h9zBFA2mJly|F%d3&ZcyM-6xN8I9`02}7;z zqP3L0?`kW<8|k4KjkwsMCi>G-FIZ~!wU6(F`0Me-A@*IfPECE(I$c*UUyo@vhR^Gx zhF^=xE37Lp97*}eaCo}F17Xy)^~vjGjs?4gj5k=Msh6)6((^0`r%`FP;PZ77^LCy5 z81^w>CMt5Hk}Y8N102+s8>GIOzAOq^Th^jiOk9Vgos-vNgv~*Wg_5(A3-yV+23?5u zy@VxnrTXLz*gF#Fn&g{=C3I6@RDI%hPsbS#2{Ec(=;484^zc-Scpe0Ls1FQ{mIelN z35-7X^!fk?Nj8dR$gqZd71f70Fl4iad?tj9YKRSm#CL1R`vT2&4S8n>IbTEm2qD-) zd~|)Nz+Vl_mfwbAXGdN7vSNvBZ!m5yGKrLxqplS}}Pcz@dGBW^YJ%h7z7i zo||Z9U0HDc<6uNJ&97;p}~nuM8g zqEGjj=2L2D7`D&RaXba_V3@}=?+Ib_bCTcNEiCvw@rc|P^6w98{?@=>u5vIeZrNM8 z;5@d>p~K$`K{kH$Rjn=fC)Vy4VTiF%Ao(mDNeV57 zL{@B6h@bi-zQ9zbJFRj-Yd|xGMW(h*a9Su06=L+e5cOC3>Z&;l0ubryp5A$&uSO8| z%^%8&0gcpj3E4QAaU2|KLLNeU9YZL7j>Lf~$%8Fm9-|3?VlpAfHHH{2s(OZ3{JE`V zwoquyaw~#N!=*So#D{6XDK3D>FW;FZwjpsH;mKd11|tTL60gyUAiMXPUeu0oVa@o>W1j(8vUTwXwiC4D7vS4gf0ApE4*;&9-*>6LD!(Yj+hlXFp zJ*T#bM4TSQFLIcu>H@8ga0|2==T?7xw9Lw*BD$4b7V>?Z+k@w$yHii0)FqTUn=iEr z5%FT~e1PaeS0)UqD|MZ)0A_~{U0IIg83+!|4gk0$H>k0$T>k0$f>k0$r>k0$%b72Dh%)YYq;D_jIhPLBR zHS%a@OM#u#P)Lp-GB8^bLfYjWsIWVue_uPu_MzvbT99a|<~DnG&47eReAD6~Rr2m^ zfmj#yI#gsa4GNS!x9|zz;~+ckJPp62ft>lzWxviX7`{01j^+GJv>e=;2u3ZW%;8d} z27^d~K5({fL;5p3y|Y9cCZSnHw?}4i!z4p-l2b0|G^B#OISaaBDO?Cv`i+W6q3rwO zZ-4HmZK~b6Akg(lQ+^K5%g{&&!qH|W2OcB)UtL% zqy@A?DJB*RAkz7WL!J1AH@$MeIag~sjdN<{qxW5mbSPPmT8+}}yWB@~CwdX$c&;L{ z;UqbCBSfpqSn|U6cwfYv`S{#SUSpmCjmcvkYNf+GqM9N~RTPo}9@8lGUwOA1`)~R? z=Z4wi+EK1=<%%HPvImLrqaXj#`~p(o?>~%EurBp4V z=}v!o`bp|jFDiJu^KCT>nssZ~4tdquEmZH?tt;Y~j&$Vb@Ur~OwebUQcNgF4GeT0} z?UWdXvpyrqgSR^=*#vL*g5pIM@jZp!uBS7j7{eiCvd_^OM%$Vl<|W!@b$3FfVQk=D z7Ll&68>K$br^q*_`fXwxs%+quvHI%F`GRHGbNJpgf}TzX61tJoft*p+bo;G+#Hy`C zVhxoc1r@<+idu>@aE>P*PX=mYZOKj)fGH~*tgwyPdq|PWjkNc@5eX4J0gPaqrGqcn zj=04dRcpzlvGt}f#nu}=m{{)y-tqTuFDPzQ3rTQ- z5^PUukHh>rO(qgVq7%~O?Xm140R58KZ-FHJi5>Jm6=ToLX^$i6>z_I8s}ehj>_rbt zyWK1;Wb;jsP1{#_)tUgQ+O69;u~9oRDnEyZ+h}azxfZq+ zph%mTzy=EGV*;J|B1dR`oJk}v@b~@d`q&b(r(;XFfOq^od>tDUJT+$xftL+f5Lz5? zB@B~ zt5MpeM(K%stILPrMLVpOSd3ChC`)d#W1nObjM6Ln8YR`-zIF)QR=c4{h2p0{YAgbN zp$&N0j70M7mo7ZgSl9=C7%z)@!eF#f9~ul>jEZ7V%W_tuAaSz~fBn+MzFiVWfsvKx z8XXg1(FI`@-lgwo5Byk!U4Xyqs$7v zd=O&M%gcq*=_SUxwV;%z^;OCTI|KP(0WuY%ud-5}dLicS!3hT-?9{;bFgV#P9Vo7~ zSZDCT(|w{dDT6L7P#E@rQyA$6QJ6)PaEe~^q3|hIp#E$L!bVdQrbZS;`WH<=Q$~d} zdEZ5PmHysh5BIX!#29S+ND$-N75H|2IvcNH2wj_4+*8B71ENT&z^)?@Z88ys;mZNn z8jg@B1S>Y{5a+APYp3J8D0aZ)8aFE)*GJu+)Um{yLbk{Xb7Hc!(Pe#Z5_^Hgu7o`A zjq_Yap6GGx__CW6+V%3i^~vLd*lToJvb?hnQPH`nwsb(73?=czaoukd$jN(<`_0sg zw6?iImhm;*DHpPguj2X^^3o5;p5)pU%jhS-UVypUM23Fib~UuIyPqI8zMoowWsaHF z6G)8?1$S=2ngDJ9h?$bK(kgJ(8a_(kOw`5H!P=2s@^g5H{LGEv2PW@)zSU=hBv&(3 zbw-K7!1|0NclDf`DM>cL>Mi{TTzB!aS+pbgi-$=1sxW6KB6Xw$21m2cHW!BOp$*gl zijJT3)uraxrlH;Ako()7K-LR@p=Em4W8}3dM3wAb++~E=May`BmQO1&>w}OvmmS3p zR^^dnItj(v5Q>bq)bxaA&K>leEJKUYy}C=wFJd(@g&BsoOGa{e5KVV}sBLW0l~VO9 zA6urh32Z?^$B!SkGLBnf#Da)C3Yeln=Qf3aa0T%on1)xP6kGB=9`^D*T_O5ELw#cq(n3G;z290A z<89~2|MqGZAW{OW-C0BJ_+%as$u`R0apa~g`{d5Do5`M z%;zwKOR@>Ukv4Bg|6uloh%V`vDpmXqOL>s{LaZQ8z0g4P${ujkeSI~I>%nBBvVD4W zouZ6k0R%?|iyl#|T$?o4GuXK4C+=K0*Ko@Y{9Ixt4!Yr$EKy%v$K!bSkCdd$iA%3;z z^b3oieEh+CV5`bP`XGkknV# zjw%R1q{R*kLtUs#C3{l2@|d`cdD@V292E(1l6<7#z3XOPE16%O)JzGvc-<*j>gu5m}?v z(nz~(LURAux!t*=exhKV&AzH^3mNT1XeatlC)`jcNT1!S%z}2J6m2bob;yhYp;nYZ@iYan&w_3T&YPRRD8N26X%72{T@&oHUnYdg zeXx(iIx51I?BO>&YIKMX9L}QB@!jF7Hs0~)_N7OsT>g6)6xPh`qRFhL4*9s6yFIaH z+_gDw@767YYicYN{Ah?iZqkKNkbDTNIeB2oyWgk)OlM z@-x@Q4}jTSe8Wa0`AH|HmJzPR0?Z_N0A^wZqe<_T2Mf%4;v%XcQ9w`RMpHq8KER3A z1ApGNR|{#4|*f}kdsdRc(93tdeeunO=i3*S+*Iis~Plkmsk8cZ$XRGxk;ph=ShT3K%f|l zXfK_E2%B;uD@?Bp3x;Af+`t|#ar(S6R44FMl90U8zVp-Mt5!=`OU|)3_Fu|^6buf! znK^der#~e<3K{c; z@Z|+xkkQz(UpQSR7MG$U9vLFj2QoSsMKd-Du*PeTo6I5x0t8aBB14vC0-5dB;pAnLRX-Fjoh^fy=@_NbbyAlH)q1~@PShU*{ z%+fXy!rAV4ef9H>v{VR+<{fFPh_ZUZ=S2`KBEy>qQHd*#zG`ucCF+Bi7eKc_x&?s@ zZU9YFNGo7Ka^Al>f`%m#lu{$D(A)ImtbcX%RfM35u&o-h69tB3I<03aCmH#fJqKy} z;#fAmFOEg)grE1aCm{kW$wzcGmP6+@!<--^oLz%Mcm>bjHh%Q;!^S@-qno_8UaDmE&q_UH z*y=2iUbrks5jZwmY=eYIkxXVuhox-viHhSLKZy!4-k}tTRQteJM12Hhd#HSMW;wa` zpl8{`u+A4!m`tFMm;d0J9AUEfK?_p6~aS_ zHf6s5f33aGIrB&+aFy@7-$#EvS+gH&Kh|D*J@(@q5qVCUF@W9VWb7pvO{IUzHBMs# zdvhd}VGUVzYH(jUp%J}m$U4c%1*jow#eIEZ0TC@g*${TRr+{JCN%vQyH&Gt0Nn!L- z=31jy1TPs|zj8C8(QA!dPO=Xx8EM5?qnSJiE=v-G%wrAb|1naJjke}2JI1gzXF16j zw&pCS7sJ+^B_ThNR?18tyR>o*GKyArIkw0y$MOeGuN{QcNSp|BF%#`sgTm!lk7P@m zpC)s>v`dQu)#FOJGdH*O8g+HFXC1*gy1HmMJ1C>B zC~hftbQRHXPLj#P5zw>xdr;Pf)n0pe0`98d@L#J~z?)hGY-|$HTn_+y_*RC(jglpW zJ*=5wFNGTg-L;3?q!{<`->)J6G46@)`W*fm>agZ3g%vHhVGU+X63H-vEej?mqpP{4 z+qN3CMkpmFRm0zO?;q?cmdDX!r5DB?X+@88Bt_PDylc%G-c7;`XdWo(xqimi=WTG;>*sfS=(<6A@@^T2Fv~H>(o`8hd>T-XU~;g5tS(GhnqAg?&xHx4vaRe-gq4&<25G7%BBKIZ4zjDfEsOm6 zKosSyMgqC}491vr$Id_UZS8<9R4DCkqZpELq|r%h=5b~GQm*7nEUCvu>kGQHD35b7 z>}$yC)w=J1YHaaZs3?k8di;Q(Nnw4WacjH+O|#y5r#C7hM&7^>B%k|Vhoul+yr zQupx`8O@D}Qva6yk}p0{vycV3)Gg|Tv&7tV3;aWux>>MHKV|z*Wcxo&wtJlqPH?aD z(PhHc`G}aXbv`gSpUC9@;WF7ZJ}JRnA0`ONBS%X31Hzd1!QutAi<#)d7!>+29{HU% zKi#BwnVuG93{X^@r?J0HljtUCek(H5R>8w0j@TbvEp(F{lu=hiza>d~q-|bi0@kRj zqxX`eWztqhPsxil>gpWNXH@I|6S6kk_BZEpC%$Z@{?00KO*T~t*tkMK^AZ5~JJ&LV z9UTG5r(HC&_&b6g&b90RqSZX>|IHuP-x=1Oq5Py(F7Ir!E4j{luT*+EFO6en2w1xs zkGbZtVZ}B?4y0OL2sU<&!s)0d>69{9P%QId{V~dWn(iaGTWFEnsPl*(W*%74Jv| z;_ldQs+M&h@R&EY&2-Xk1C>Pv^#T|RArAoCx)pzVR(q7e7kx<$_wiT|35YIaaF7lC zbfERDHL2R+oIpx-Ql`yuLE?`wI##>&LQ-1v^@`mNr$KnqN<$Yr7cD?Pn?+_O_ybE6 z+euEwUIOga5Y=mo=j?T^@kKPjd-mEmA*4~WI;HWhgI_V7N?~J0%?hA9i=5O#PHZX`PqCPoYL2ThLDtwIE!ct5RbGKP7Q@ z;$xTFdKi%=xZUVLC&VPTn;H>>@mRs||BO5y$qiwjnQq+>idKfL8v-8Zi}$Sn;9wgm z;m~PR0@R3`f2aWE4sJb~<`JODf|Hpjsyu=d!kl6ak_BST5u7HrP4c=oV;sTBLb|{m z$d^`dnzGn9RXkR3;teE37Qw3R>WCAeu8qiSuE)UnB_4xJwB{m?2r%R2s*9ZHG#D)7 zGoJO~s)M@k6N5MdP?ii;#@Paza{%CR%wPx=3P|=iG&79AaHF7ybFIfwB*nNpEN_2Uk7HPi9+O|J z&S71Wh{-U5$xrdhm0WXM5>r@$=1LPL8fSHaBZ63Ky0)4O)-unqW+ke2P6nw90TDxG zM!6UHrJA_5wwq~a*gJq_k;6}wAiKxPu@^(x(=O(#h)%|~(KnJ<0wceg@RQ}=eyEgS z%ik_X&_%v#fhzr`BSr8CsOc!pIhxMW%xn8>X+;M)tu=UV^Q`~kRAbw1H(=0< zi0P_JM!WT*F`mX*uZF(GM|WUI$Wb^jWCL?}%`(mi{){q?caX^oc&xReSJLeM0i8m9 zg`mcW-bR0cVQ;#+39k217FqsB&Pf)GVJVCJbti+iR5ZfFo9rj@bdTXX&&dcn+2Vt z8-c=)%QN>mzq<}v_PCWGdUs}!J! zvYrp-vI(lauI>vm*$kK+(6CU1b?jsW#IAnR!xX$LNj-Adq&+E21|5x zovAIbOUGUzRB95-R+jY9weIJ64OiByxQu2x+`VOwSgIy3`^^$M-jZ0@S+tE;sU^~l zrgUhGNGTe@j4?E^UJvOede+&w(HNU;v6e=18QWVYh!C*VDNX0KsoU-k>7;NYZJ8pd zl;FdX8N6^k|tfijE;jSr)mJ#}bwL?FjarBteoL zc!~r6`~=2YvTK6&6zAgQGBvdeyw|eGBDq2>-mcbS^PT9PC?usL;)!UH;*)?QBENZD z?M}Tf-HvP+UTQWB9|7~sbMC^oB8D9k-=!>4#miK>Ekuqfq!b_ux~aZ@6Jr0)?J6gh z-DE49%pjLV4xsm@g)sXU-|%KfgM=ABb%D3&HpGH2SrAhr-6G5=$IpOPVlJ5?J5HqR}Q zo$1DEtIQnGDB1bzRYwY$;x)SCp~!|+WEc-FqS#Kd75*-EE?R&QNV$E~rr1t$GWHV4 zZ29#;AxiL}Iwc}-@iSH+; zI^_hTqbNERze9~VDo{Vf_SZjC>Cq2KbWE)y+5#5D^NB)p4m_k$XkMSN3&dmCULYbd z8MZ!QlL_0+vwDOP_lY9APMn<%)QV;h0ET;j;vv?z3+9TY1<(_)PQmZQMZcub~kW@}kh;;1X)ttYRd8(m#+qT{ee zT^+XoF?b%8nU)lEr5%(}SHvwqaEC{=rmcuOnhwgSD}sAV3(KQ|(^h2fr^Tt|v{-O# zxuoDx)oD>Oy(sB=jfNNP3}y2N z?}3B^J42kevOnPsEb#=yZuExRP=_}hNeK5k;rQ>V_L;Agr(8bhLNhEC>>Je^;=da# zhfy|{M))n_F7qv7$SJE~A$%ydJk||mt{nlV%t)?#+|X7!!Xf}lG^N7Wa~3Et>FA!> z%lPf$mW$hhO-y?k-^5}DFvWhmvBe1*@0nHtr-^ay>4}=4b+1+0Nmn?~wkzX>(EN6U zTp48l*<13AlckMg;bgG{$?;^tDOEQE+9_pZ$7S%l84@}}0(zRBK&<~?zM`JEkH~RR z!VJ5Q2tpUajgCJ>7*RY;v%=5uZe#}$BbajctW8m!e&SYjq%PtR%x9kR>`n+n#kgKumol?B8cHx z1ziPn*WH|jKxUwHFbjcL{Na)x2+YQtg+N7<1k)?K7HG1gl~RbV1$we$zOgJ_2yzzr zG{#B{(bHmtn78%OQ7uxkqdJYWnRTg82&LapA+<0xjF3IMwR z6Kb4l1{Wl>?_RJZwXPFM>UEt+FNTflv&p}7WC*DLKx z9wn5UpuKih@>)z8W+ks4LGNgnMRY;Q%R3#qJcrd&8tmjpcO?(Qz{Z+`f{Nv2a~JcP zkPW?7)#WVawM*sBVxH&^^&F^G%wnF2MQ5dSgtakV)|+|Ama)~zdl z$jc!kf%GNgwufeI&*tUOF)#ZDy6ek$P@{Jng(Kv;R1`eoQi%jomkOBb99hvfyp3wG z=u&|wo|U|`C}u};w4RQsh^86F*|Xx8wjv5p2W8YfvRAQkICsJa)l*Ax43(BY~ zqBDhIYZf6fx{BybIVhv9$eyPZp*6aS=uCl?)X^JtMcgY?`)pK>o1q@}CB0aqu8uBM z6B@aA^dpt&MM+mtgL`ljZ|gi|(Bo1Ss7tk2U8*7h8-oIxbJe9fmm%C^6Og>osF`74 zVpCSK!w5bAM1*KuSJs~G zZUaR`j9U?Pn7kJNa+9*t+0cO$q#&ZvaD=m=gJ~+Iij>q-ci4WT)WgIo>y|qbTq~lg z6?w>$bq(UQA}Ep-Qiu|``|S?W-Nv$VRwb{T&^tw>z_2#GCDE{60h^S@vml9-5@=Xi zXRdjm>twAuWsN|-7%D~rh0H{H&I)#MQA zmAR;dH4BkY4^z~=O5XR0sO5|th1g3?d@-(U`k)*3t?I7X+@^S%mW-E+T2XV-SLLm_ zt!c@4OMs`_Q^S9A>UI6*RN|zmPjR-56O&}%mW9kt{ML=@`27m!st4^bV|`nNErQB> z*-{g{_bqLV&I^O+GKA${$5#i{OeT-J&Vh1r~Ee zjLlgjHnS;OU)d*H*KUl>X>4`&+FI9^3f8(N6_{=}CP30S>sp3$^Fst?0amAz^Wqv5 zU?-Tl-oxQq!8STqBso@ilI>g?knSx>%qokh7bQ*Kg}i!KQe()L*6o0pMY`ISdRwthG?5#;1G!Y8u5qQns|M4WSVBWI?irWLsubu7p&SnSe67iah7p7N@rxr6Qh5)6G#e zHPcnp;M$G*Wo@|GdqC}2wHuqn#M@LaVB;zQ%~b$cieJf4xKXmCSc=!oVmAtU*s&X1 zq!{q20v8%&O)u561VoHu^zO|Vehc(|I8Pb_=Ey#jL4~}7NM6cbjmq6B7E2<#B z#D+jCB@r)}k_CvwbP`aJEs0vphq_oS`zZEVvO#7HE95AICP-(v@F z3Er#QvTTaRSb5}FaB`YD2gU_~upC^{AuG)?p2$Rz$Wk(mOzU z4h#gbrb-7gXwcMUl%HVf5}?u3&b){ily2KRBYbK0IES>RqX4%u!%po6)9PKv8u6Ms z>>I<@)Isy(Oq~`J_MX9jFJ+gHNh$`-E2mZVx_qw&W<6Rev%D-~UO6o?lPp`-ZC*L8 zQj{hs=wlSRzH+)PIMOSp-O&R_IIo;8@>+izB_!@*3$nPcoHjM-E2%Lc$|deAr?nIg zy?y1hZu#4s?n_)vf9hdok)U8Dj;M@k8`;)bUneu%wlF`<7Ss+iCynN3W-jMwW;?q_E}UiyXl%vA$eFnx zu9-(yIL#IvpwVoG!y=Nex5lB2t|A&Q#->;`3RTaFsOr5aqpOI-OxSxDP$uDe8Yyhk%Xk0-DY)?laP#*i?nphD_LZK=Eg)mxEsej5;Z+} z&1!mKIO%N*Dv8(h?NGS#p$KX(ySdqfY)z21<^nh=$6(y`@VL?BSi9ShI-0Jhs!JtE zcUE{%mt891XtHi=0kk8GXH23S%qDCA+t-5al5+3c8T~cJwP5`!W?T?#9+Ts=`!Ze^yVL36=Q&c!6<~CIkK0}^0_ObnMYSR_q#x<(Hx3|dDL9Q z6LU`f(N)2nF7Uyqlq0L)hLw{)T@@b9I4*0$4LFbCXvU{hGe$*;ZR!=Uu}462Hvlx_ z4uck zoE}*hXfwyisIiQdD<-h|@?a^^TCZ*+!7#Bf^)-c!kAyg*x-+^3I&TpWw=xo<{n{Pp zhx!rIDe+yd<0{^%iPhZ0I-p-A^_v?L2jLZLl_jbr4m2CfReu?6ky%t2@oK4qF&>T7 zjxZh-pyJSTTA3(2CU}hzeI`L1rFwBFuC{@f(&|FdHtT2{Yg|P>2_%yrMWz+Ydczjw5c7bc&rXJr`_5R3wDak-Hb6% z9P}=7$GZ|F4)};>n?Qz}>?|mYobd4|W-?y`9*U@A&Y=hwB0Mrk$T7zm^C z>zJSF1eJIWwhga-nBR)yQEDurP@SODg|J6QRwv9%S*)4U31X_j<|3+-?$PKfW~O4$ z%;^gENcpi@8zy1X&q(=(JuBh-%%*V_+LR+;<5U67egKI0V;KsYBU{NLUNeh`7j##| z=SnfIh#xzmi2tw~@npHtFQ}?$7*X_7EJRSKSu6uxNn2e^OC^>rIf7#J8fa)r75RY%yUgIx)XRD2QF}tQfZ=7CCiW z)L9WWm7+pPY)V`)HtFoPBCD#IjtW!>u~=Z+ado8wHLz>bc8CP(Ff$kknC^C@T^wp= z;B;j@?rWl0V17y$x#9*MuX;70(MRiOLBp~UkrwxLqhU|%tWWhuDw0jtV?8Wi~8<_z)GBqBI7Ut z+~@zF|H+qXtd3133W*0!?~G2YB#?pnfcg; z+``+=iYjMSyK8I8%2P4PS=V^aMk7@SZ`!P+=rL6nF}S_5>3+ za1fCgtK7w);sAa_GG&L6RU|0JC(xC!5*G^WUKiLcgGh=sM8>!oRHEUEL@3Z3#{WgT zGrBhqj*X+`Ac|I}I4ZP^k~Yj-xSJ-qH#^CQ>?%91v#XJxyn@3nh>%-#cIZL{mG_7q zATuoS4A=Mw{8x8fejtzIk@j)w<)%hoQ%B$4wZPE-UIn=0rgTqT#lqN?BUN2 zG(wClF$mokn zho;zY`4F$*pfICHW4$U$ErR)6H0V*ECZ8_6=z&mWK*ZQ=7)a^ma7$daGuDqoC6eFxc`2HL z?j}^6&|$OCWjbsZx=1BzVzbai9Q2mjTOh)=R0u*YZke?%78AeLrTOe~mu(>mf*BxE zv|FmOL7Rc(gNwzo%%T^I=IVf1^dc#^p<))jNC~vc7Rppl9Z0q9g?-F*U)O`A!{Qj= z^8Odvjrt-O-A~tHf@N(dpo^SfiCZjdjJKz85^a92fuW5!t}yB}1X^aO21REezekXhroS zTIZZ(X{>Wj89XY(;?CP+62_mm7de2r7=PHF^N*ANlW!Oe1jqM6GrOLTvWKcEh$YT- zt1Cz}57|fc362(BW}$F&Pv>`_Ad2iyzG0*iKJgy^O4l3{fo>(OV{a853ktTwlvFQaqCow*grt!=2jv9a6IptQCJp)#+-> zdd*Rf97|I4mfVZ-o#dqUwzNwQ`|8)K6lH8n&fzI0c@=ORRsnI^e5JnXJ5f}xO0h9Y zb-=OaN}%Wj{C4i0#IMXdXJoyr>cEV%DI+FqO+(C5nW@%3vmc?eHVX1PD7fi);C3GBuINub?C{mxB5OcE2ThHF{G+yrbx0v^v!1Y684QlhY% z#-=kj0X4sy+Rbhz-2}9~j=u>=T%@Ew9V1sC#HN$=Z{2YO=0E?FJG8kRfnu3|c(cni zkCq)e=ke&$qR{ekP)1!5?K?~ik1ZT;&caGN*6c~(yDw|qEz5O#Zlz!fJw26sXrWDh z0UIX?XwC+Jl{SGPyr)<|@~)+37AsBAT`Mg|igB&9KJ!K<*Y}< z+Bgj}eLjwb=VS2Bv46EiY)<#szv&M~R+Iu3>d6^=>pmEHKqDiO>luSCs+cKaAg{CFrl3kCw0bAm zgPqz4!r6p_^`%USlJLG1XA>xG$viZIMC9VP^LC(kBM7(J_`bDxqX%>a>7A1tO$g%A z*<)9{T$wT*iMko&HKY{DIi3(f8F-9<5w}o-R=TXBxfpMVbeOO;MA}W*8X{z4JeIjV zciNCsW5vDVOi{tcCdhoSn^=kIZ6+P&mfU%pjtbO81Di?*nn+l$eq`xAh?EUR*{v44 zLN?N!Q=guhF}&h7D0ZO;_8pgQ)8?n5kDo+oQN{oTUG>bZv?w$T92Cp1!(qWnuqPJ| z%Gz)pY;x!L>c@FmH1H3%63j_{vJsbd%t?OB8%B_lZxQAA0lGuR7^{YpJ~&Ojqgotx zE0t9+!w6fcb~*^FJJ&VXR336S*ENh?(27{7q3&y+lv!tDTM&yBojPhfXwXbjI)Ac+ ziZx716f-<{Ck#esfP$Kcm-A^zi~iT>UJGHo|Z!{V~*@_A$N6}PZw}t3dw7SQn?dpR`h+Eb;7g^EZREoT4l{YQ9uAQZ-em~GF9z6?zvlKBCX<_>ob6m7 zBUjMNCSFd zqW4;~#7VF+(N*q#q+#q*nFd8g-n3-Y93+D?lHOmeH>i?Kk@y+wzPxy6-DMoFc@lA^|290x2?641q1kF+!BA0-8yn|+OhP=GVU0#t)J=90JXNH29&ml*``nmp)>m$MZZk|vA(s5I zbBfku`Odvs)P(BdWs>1V6(&|Nkz!n$Ff7-OARcS+lW#O=>B-f9;&=s=A|-K`A+RGGZsRh_X>rN>mp3wmBuu7Cy;l?Da~{x zf$``lsJ7rpXq1QZMZAwVPdk9d48z(*I(E*Y=!h3{F-G79=j>vetm+6iAcZrF0~~cP z?&L@pWKx-nJCY8uf&_GimoIsp$He-b*pct~;1bEVsfm;C`g{j|L88*m@yrgn<|L~v z5E5u9@A~-aeOwhGeG!qHiQnjrc&dhh-Fqvz%EWa1AFupu5fY%_rG@+ zCi&{io^^peo~tjZBsk;=8jK#pHNrKTE$Df;a8E|puoqh-H?9&UV2tK6Ov9esU}#Mj z?)i|yUEzA}W#EF21aep57S8s-Am)k>_8IQj42rcB-5z+4as5YVOn6Z=$gi59;SER$ z2i}_-*nR6Ca3u%X=LVu{wltIv;@;a}#%-suU<~Z`+^KU=f(e1MqM@Q0P6+W}z|hOF z?(G4d7WAP){Pp#pgtAd)^Tb95k)K?RMuf(M14CIq!jHg^rwK1^4{%$`qWAq!k-EaU zxebG3>W+>tt$F-2H-kaPjp-kYgiv5tIIt_RvhHvuYP#?JzbPS7=I}K{GLY<{ic5(x z{pX~_$!^$^p)(CVK&zGHmX=xTF9a(#tQqiSHBQ4XG(q`tAqHD-kvGG0n3CD^cM2^!OmF~L*cLZb`ZgJ3UI0`+%$F!Y;XXnXVys7?@ZjiorbnJAB9vOWA&nK3T{Ef`*-#m8hd8RLu#abRGS z?dvlif5MHnphndE#{kMbz+i+VTyl607Hzf6e zYKK6i;sPFc9c&&61@`pk+evW>*g^R88KMKBi;|zx<2{iZ9Ct9nQ%$%jZ8$1&>wlo$ zjKH37V9(sZu3H~7(|c}U+pX&`tI+TU%sf`EV>B1j>+W+Yt2v-DJLOf|=nu#>)v@Yx zMViPQ_woQ{TvfwhM%~2if#?Sq0hY2ocQ(hO|1iXvhBMCTL)am5mrLa6x-CAzU(+Qc z2~vj_^#()pa#&=Kp4sSp%4(+oPIf`!%~DFCs>H=bd_?85Op9mTHDi%&}5Fqn-vXcG#&X9qmc ze;jiLV-0~l8R12H3<4+1=QSsWeQw~r+kQ)Viy2OJ#v$DkE*!}E(Pj?pV8*&NgKXK_ zA4{hSjoj{^3!L|RTr48XRcgeKm##PkYEnHTS(mZ}j z6)4ZWSzp%U-JQtgqm-kt1H(gRjnDXiLjy*T8L_!{Ki#GokYgVWYkGaF4@DDugCGbb z;F{?BJ^g&|V6TQS<1jZvL^E z9(DJk_u^*!?x5+XQBM75Xs!WIF6hrXdMZFR(P-v4ij~2B*v)X;Tb~J{nZCLs zDAhrF6|gI4eIci(^5%4cwo#z8HP~eBQNr*X4a7?|M~; z=?MTH7e0s3k?HORA+yv0<1|1rltdzpwg+~zOMP59Pq2mqvH%pGlo+jq0lh$&-u}{H zs3+LGSi5b60lS``^>}Y$5> zb#363)==R+AVs^&DI}E9AiDIAfU*iiq>^DCq%>S9)8z?vgrT#*V!oe|R1}1tdUr2% zPfs|vAQaePR7T&cDQHMyiS~;ITML>e!!q0*$9%Mcg5gOljAKMI4GP&Sz9UkR#y4z{ znHOHPLv!s%Y@C{LBz!lAq$un0!}GEpA2&Jc@h*sE);FtBnl5W217RO}Q-TiBVC8M} zjP52FnV1y|GPVW5tw4g+*wC8=&E8OMsQ*24(zbGc4!-Sgo+BB zF}f#f{f{~K8@4S0OUE;F3ubc@#;88jd@D)?@x7{*A9TciG)a`gSDb*9B>k$n}U@9o0qbq}9$lPuc7AGdOnS>>Y z39W{&!hy$NWcF=A%i`GH@|hhS%(yO$PPZyZGhLEqQX&?3%!7q79cGdx;*qP}+B&^> z-uVYKJI=cs%6DNd?t7LBjKV|<%LWI@I+5CPMJKc9heLYJBNevd9Fbeb97um#`#8b`X)BYP>B@e*W6 zcK>m}K=aT(uodP)z>~iqJXvB?nix3&YY~y83RxAj%=J4m#7%1z?Y2F@6ObqyZGmyx z0k5EMvqVsBW<&}yda+K`n$ZIvfAiqD&{l|={jwg9WNZzV{0gOmhn4?e<}nQJH2fF} z+=IM}Q1m?+-FZy`{!mV*6ja49ZENVdmgaHCgaYfsf%O?Zp{;DlmQYVd_wu~ZxXDiB zE~G&K2U?_+CTBNA7)UFk>>1VQ86fethVpIT+il?6GlkMUQdmP^2RL=dT#U;4Y|1K9 zQWhQX72bOyFzXl-YM}+u5a>eQuDOk5&#d*bW-%wNZ58oKT2coWbueZ4I} zE5t|Y35M)Bnt`yKm+1+$+>Z`QE5$LYy%^q6^&wc4$hxBgDSdQ}v=c%Jc*qkGgdKat zHSg29E6VIUTeC1O@2@8A#3VG@yUa3xPdpHDj$*hD88+9y#%>KP%nzKd9Lhws&d#?WkX`=Z5r)$$N*617lFGAC?sMKNx zFSKUR;Ueg@HG{y!!66q6yv9287v)cwc~wlQmx%v2bCvK2@kHZmr-8s06kBEs^U zkKiE@T~}r3CU7^1mMxVxAF)z{lO(u3x5`j(Ft|Op$o!6KcN+%Bt>tzS(M(&n?|?D=E_ZVGBQ+WwLNv=A^hX zUrQ(x9NdZ_X+dl!N}7 z2wNW`hLzu}4fN~55?Jl%yF-5VV%ep?%C5Xx^N<4yJ~i&{=GQq^UbqTj3Oy@^9rs?xJ>l|OJbMbuP-|JX#CY$qlVVX1M121#q*oBj zOS#Z(a|659zUU$5mtCgK+E6Wn?rkJQ-9N99T)6{N?hF-8OxMVAtWk1i^<*_`BcovE zXIhD5cY_6}?z;ZJA_ez)^CtXlqV z<8N5B{M`aQISFD_ybP5p{dH!p77sgSvVt~}Ncj|swqrIPqtlhak>D`F*$^4>ip%F~ zp#&WMZ;(cr<#6L|$+F07NY^e%*GOp5Q=!7nzWbqXv3!#enH%W5?a1(=r+^sI<+`7X zWwy0{VqENgyd)jk8f^T1-T1zLQEXc7vbi&cA`#?PYDHv~WB$0jQ2yj`;rSB?Cxquu zB%Bx?D>nT6OolSU^Ro%F!wbiS$2wyMu^wIsjLf6~gA@oaoCqwFS1f<+9K%IYN?#B;okgT$7OWCI4DjLT8^ueX#)B$#rD1gGXsJosj72Y&{ zP^EV0ugp+@W)b3`Qrqtqi!BdgDz=_RvV<&1}Yz%#ufmqEipY@PlJb2r;!=)Jrord z;f)Nc@Yso$07=@hSeXgqzm%qFJHm}DRPeem>%$uv)U<7wl5k#Px7jVIE98{8)azkH z*-5f%C0GlE+@33qS#zN_3P)=w9gXUv&D_a}(uv`Y3eAR1?(O>qddC6-J!|KWoHv@b zvfloM=uwo6B1P`J?f8+4?Cn1xeW7L`EJ5rk6K*&s5{09%=3*TUhbWjot)PU5EEyyV z7T63~Qf2TErhDy0>2iZKta{`U`!5rs?6~d3bj9`dPaaKyNrVwWl9F4Z@)iHd!ZP}1l&Fe-SbQb zx(Lqi#c`j3HJJGL1!?EVk6l^ozl{X}XXA5-T-ra=6mf^51NF9JpptNc5U!mpQ>rYW zD>%d*X(Nqx-HHXrLGS9qx;>d#@PJUMr^wrMEB|g>#lOw9_=|T{Q~?x(npXe>oByo| z01Emxw&F0|AIJ=D_fZ-&l=ooWvd6bNYBYG?3u1lg7J8!;;Br1xb|dSw^Mj`@9tK%# zj_^jd#UmfuKpSJy%0^2Zww+z^C9oe_f|)CzI`ptn#$5?5kmGwvtsoUxhA>PE@LP!A z0%Z<-G>A2C?j4UoLj!TY3^~uo{SamYFj;TA(lL}w$|EhWj`*lvhY zUtbf^z-35_08$Qgz&wKZ_w_F-2$x0*!sRX71G|{H9}e@_f^&M;9#Rm(6n$8feRorK zVaA>X4S%l3%19;*a_r!m?U2>1tpn|k1lI*R{1_s;O0)VQq;yKp)&)9!FhQN$1fdEs zJbIwidgcmCWUW7e3z6%#k$=1kF0kU)?de9bV5-^3652G2e>djvZ}SWy;d>1N?3!;6 z>cx`_`ykN0`Dx}Kv-xQvjNSY+F~)=&83{UrhSG&hUkjryypcGCPK<^ds>_Z%pwRbKAi8^tSW(2b z;ea<{3?eXCJwe^9*EPq`=Fl$}l>EYDv5Q$A_AMxR8N1M2_zIS67UInqlb7|A09UwV z^}i$Zc7EvZ`JumZIIo6zrWDOUrbWJn|H^QWIAqC|iT9YpF(hKcwp?Lx&rt{GyvMpd zZPJ~miqP*Bv5R0Ynwzg> z8jBy4G*@-v<6%YGPs=7GWFvvE+}Iv?5G}_+6Nr&8{3VYwq%SYyP*Qw#CZ@7;GSE!z zU<1RsSd*>2D!gdDE?6`~$8z_GsOzyFEWaVb9tI-n+#uW6e?0KO!lrdBPMRJR8r$b>#d zq}?7gNJr zm&Zyyj_)ie`8DF|Rf}R0;e-bFHBCg;<2?&XxM1aG=*Om#!%{Na-Bav^xEdXjTOZF(3_h-z{@g}_b~5XmGuL`LUy>!`M5lV zX^H0Gb0(a_=5m#_0P?0iqp@b6T01#yt45N6wVUkuv~BsJw=QbF^%P$qV;>Y}Xbbu! z+pzmd#7>MVMm>ZjlbwhNy_(;A?lJipdlxic2=8rM=*7_QGM!Cy;+YZPB8l1S|7=wK5&9#BK%+Nmk+2R*2J&{17|ocflCut9Sg*Es3koza}QDDkdJ$arTi@DiMHC5X?IV_1=iFW7u z%EX=Pz4SHAE;EX{#4QT@z`9;A1QPq?vOy0-05(U>WdjY(ps-~_Wt{@Q%)T(F>g%t4XSEr*nP$DDH~A<64manL zOoD>L&dvt-{yXGI91~=3eu9(*8TCERGa;;K9{vn-Tfg=qyA+gkWSoo-YCP$~LX%U$ zcm6|n*g?$W);_N#&PM-y4wt0jI5V8OcFH4yv%x@Jz{bOVg5HH)PcB9=aZ?#RXAU0b zwtMBcIdH@+kTAMe&QPO{^(5r&#fEq;8)JSKncrP@b9`*=@meIuKSwj70_4YkbG<|} zxUJ#=cu&;*fw*K%$$j#Pk z3|&vqLJ>kZ2kiZ9x}Ns$C#RAAe&izkyWGj&WhTFgb;V z(R2MUaj{^k^v@N1@bycS1YDWFZfn+YzD2>%AHi8Luw}&)(*TPG;9}TmvSd48R`0!8 zm<9oi0tYn@9bMv0V@u2ijy*27hcZ)xN0;Ot)T&=VeA|ZAe!c}sy-?n*LJv8U288Fx(U>Mo3$BDRnAZ{I>4O-tkE zi$P;D$dz50{nYF_$3odsgHo8kJ@o7fe{cU`nY$ag!H?@+Xd?--JO?-^Pv z2#Np3AYcuc#*-vTNA32lGHOCdpB{(%8J3QOkY7~2J7`Byy4oc&iCks|#u-IatDKCp zZC8SmIf6plsPsWCoG1nuI#~zXU^HJ046eIkTm%b4p@gKmT?_%h8SI?2>NK?M4qw;N zNm}YXr1#$iLv(?1UB26>DUpqIp~+xEN{UXIg7gFC2D;Yr>*HP6Fz(-vi*#~P6c+Pt zwJw>-ETV)9xx?A1BB~9mkEkqS_D1_x$~=B}8qDzB=WNNk5MO)SjY9MgKzAJKe~SJO zL}iD0SN{xP%KC6Gd~A2U20l8e3zA^Rz5}cnwd;g+zXZnIz{Az+ksg7NUF=+Y9FbHg zMWpT4|1%V;knMk$Vz?8CSvd^Fa8pwhLmc5ABr{^h8^Yy`if}B)OT6a{@zx~}&-iQ6 zP~GkjP6!q5f^O`AZlqTZ?u9gfV8fCgw*586Gvkns8HeLfoN){&n_=vrhwu$Q#>!Dj z<(*|>{);FdaOK_rrl@fN#3q5D;$cyoU!icqFC1H%%wIgsXl73^+|r~!p*rOS5tymi zMh!X9jx@@_9QrsqcNbQ1K`IC>JdRNRh@ERm-8mZ_FCp4dB_0{6h}|~?>_s7*{}Bi= zp%#>5{}M!WbC}?<1o<1PR>T>8Ou$5x%ilTysjfJx%#)ciPp_yn>N=LGtL2bFxR`Yx zqFArA7_zB<1tPjky+!%|XSueFI#sZ%$SweD2;JoTe&sb8gF-B-|zsPDG%ecyy? z)V4Gkb&S^5u~+R>n5X_+bN~b5EH{DFA7 z_L;9W8`5SqzM-@i(m}ihsp5pzTZ5r48mxO|6;Br{J5Y7cZP}7VRBks9Z(W8kPVXDU ztRJE5024GKVMHVm^~^>pdM4)NP3#kHq!?F|xvnDhK@sY4y zU_f<~w1i^~GodiQ`*W)OX{b-*s~d|+?{K#wo&)+0R6ETuL003Nz(pPzU`rtcvT;&s zBnow@QPM>UT?Krl5D}F^Ot8h0c1TI$FIWO`gbMyl2nC175~@oHh05Xy)vSc-N+c9& zC81D)B@}*ILgA++R6LtzHTIKGt|o&pE`q#5@p9Y@B}TOQIuQ{#R^}*X2+d7nOZOe7 zq($;XBu|F`61G8j62j+f31(dir%2|h6hXQS=p5_OI{bpyqj8W`77I z)B_8frYQ-=PG^WDHWa~jbk^O!2dN#ckebROfJEd8nJ5iEp>+K4d}vDNf}g=xb={#w zJ3@tB^t?GK7wy1FKls5IxNvSJjwMx3(%;!IO{+QSj3});9>05_IWUQiQZ8di{=2q4 z3OROeV8<;uIFAD5<3Na-n9+@rvl^aKJjBd^+Vd26(MSbO#WEY*QG5*>4R{h$44#3= z)hpCFfGD)n+Eia7?MB~1MaSYu1dnjBdz_ThFaaT6!IgC7R#T4*phWZ|FrYFXI8J4f zqLuM`Yg&w7`tqNOgklliQF9tEX36r{$TX7Ory;o_PgK5Kg^0Kjix%> zNwKLygWa2kGa}L({L-WQ93UPvbMM>2R&!PyXZ=K19I-Oa(S4!+Bv$Ap{xG8{?V^iH z`U=(YGZ@Y`wTBCL$XmeVdI)5gGo}9@WVFl7*ncdH_B#C(8DV9#*Z%p8c8%6YMpMz- zYXcr8034HM2~8uOa*Vo{K5v)O7b*k!vE)qu^9 znA`^mWtP=&L$#kF84MDFN2_#>7hbMsz5Y( zCkFc>q}8A@;u*?_49Wla-4qlk)NwbWuERbJ+_g-2Z<$+3xMBXS%lPy)Ogd!Dol^+2 z$4)$y@UU?Q$=sYcz6TWb`HtG}cbxCOqxb(Kf$!MNN`ap_;4Fd1ANVPOCmwXLzyl`i zC-A_71>HB{U_tlYopqbkH#vI>?;Q9(d+0l|Yf5Ih=1)8BvxI?@&){td--XlLk0uPxm~;f;f>Umheq4NN?I8?ba@yX52n%xtr9YRR zUMzIJZ03I2uQQ&Pe$AZqiu7ydnOWMuvr4poXYZ8$ojLnj?dLgz(!aCkJgEJhyF~kY z?i7J@&igB?^UXc~KLnn4!S@yV?-sZ@@37DFN71}-g@l*SpOHs+MSjoOgbM>v%s!v* z$_vk(MtIdlt4}1nI{4~m1TOe@8TjDEm&&*WFPS`%@fR1|ul+8(F^l0#F1=hBqwq3* zZi)TRJ&>^b@|lYX7hiF#)c?7K8|E{7&6WQt1M&GqZ_Z-)+N*vj^uF%uubXxpDg4^= zxvE7>zy6wkFCbj<`QPRf7GHb9`Gh6cO`a|A3yUw%X5C4?2__e%RJZ@f(6->l3QeyS=zLE;B0`#;BgH{GQ3upX}|>3DN*>Ngcz~0!Scvio?H@4rqfOr_5_|9IQ)rtR?`^@5RE}VCXFL%Mr2To`| z^qIxSe`%;@>569-|2%L|&e}=eTsTydSAONvZ!UZ^FYlDYj+%GL(iK-OUAuVRCCATw za_ZKJz6AUQGk+d`rFbZmnD2T#OYv0US%!!CO7O64Yy<1zL}r}#VHyP$`#moqjroYjwAm@rn9ed& z;d$%$KlwYqawv8Uo+>i-HR-UU=oAtFB)Bxob+6l`g+wMcKd9)Yjd6%c|91Y`CNG&byjI zU;gUX?%DXS_qN{m^>07$;6vZ}Zu`G~@5hfmw(0SobUyLqmaW^K`Nj6GXPjBxN&30?a%&Z zjJYKdJuwXQL&uFj{`CD0%e#F4;+qaXVdlEbiSxeltw%N=aN-$P3>>kv`o#l}oILBb zDQ}YmLV?i{;P#J10fzvd{(q-^DE11TqyK#lX8WvRY)A7(q;ykl5>^S_U{GNg5Ogxn9l-oz)@#8rO&nb9lG@ONp#t3Ee z@px#cor;Gtn(~%1p0e)*Je1FrWi#@(@X_OWl?{*o4K8|lG5+rIkoo9!kINhkK1{Ui<8SJIudWq;YPbpKNI zFIC?-c8UG6`or5NjurXCkH_|hV??^JPi!aq!Zwp8>_6MhKBfAX*uKQJksrP7%0`%F z+cuH!EbZ7H@|xu-wm;oJZ~fl7$rQ5 z=4BrKW7y_rUr9sq=52Ule2^iA3^5cKLxvbK#E>C|3>(ha7d!hbecC<0ZCv&&H{Hfr zc-shRHcxaEd2HUrXAWPN&65b91J1(B7W%&VrG2qKCp-@)guUrcjF4vY{bCe(Y~Eje zh`bi37dQnA1HPBr_QlrWA^ha|ga-e=@j&$7_Qj6;#=clSo?qf={iZ_xwof&Fx0&$j zgmliGk)CH!{v6{_eZ`VqeGeJv>k1 zdCojGJg@SGx*C6ZX-!S>4W<5)%4MbgDa#$T`PfURG0HTwAiDtl|cLO>ueEO8%%Wt}Ux%@|0yW98luZE(X!X^5P1AZSm5T zrG9u)Wff(}USX2UDyq=blFF5p)iqVcC8Z|%;-bJs$+6|d)i;7%D@!YGs9oW^nw0lT z&Xr|LtBb2w`)@9-u0h#z{5Apu#73dlD}h+Ls;ac4mQn2ALfii3#U-_<-d|f;>0en~ zjlo`CSq*a6mR4g_Zw9?UwhD*v<)!77sH>_HBj$32&$p<;p`f;ES#fQ#zpA>lq>PO+ zwYuY5Rb6>QHMpzn=2CxEadmNdDJrb-FRVEa1G2D`fAdzz-<9~A7Oxm1h-TtXby-!d zA6$S&0#Ap*87$LT^xra)7Yl_rhzrWm!YZ;Ss0ZT2lN#JuQ(IhX<^<^}BjI!esnvBQ zwGPL)V^Rz5xv@sMkKW+ z(s2Zvu3YI`SXWb3S|QXYha;-;7T~NXt;VdFKYzg$XXTvk@-efNfu~E$K?7u4U0Tb2 zT?w`T2d`Fs#9uQlYvu@Vl^1hrAfI>qg`ttP!f>QBQFS!(^X7xUbW)kFG79s)uGF8i zYRW1b8N4zn-{qbtHqRF*uc}?GgHu*cQ8hLH(t`LIJA1zBV#0_W^<6oGD`*wX6i%4(nQvbtI) z{uU`&68xu}a*CBl%gSmXb~w*r17BE;d54LC@pZT})eu+-B6Ce-mdcV!&~`ZnREU5- zg=LsakO*=4HLLKnldpJHS$SQ#EAKGqB-^qwjJxoPaHYShY*p#X8be-{Q|z;^sJav~ zunuG?tyo4W>q%oB^NTCkjamrb8fo(~3@V6RUbnKg4BX|fgQ5W1O?AZ;wPjzV@U-Gl z_-LVL7B8zTt&yRW(#p$(hy4^R?)+6=iz|(a#9x9zgY>^NHCJPwL3IZheR-+&=a%9c zechsAPoAIhcR6NAyrmlggF>BXXYwDvDjge?cl0;#U(e2et=Ldjpsud z0y{oBG{Y2voFY%yRY;Q3;&RTW+TyYbR;D8+rD5GRnU2F33LFxoSmz7Ja}MQLHMGJl z=pH8@`=kIOvIfG&=u{*3r&dB9!dlq=xbD;HU-%BkeRFCs$ks-@?+;8;uBrP)kfTQc*=@a{931%$HXMbEw2jXHI^YcGZ|k zG%GN`B0FI(l?qYOcdx!MmQ5USu8LEB#zv$WLz5Kc)^WoD{}zb!VlB6nVcOGnfr_nh zRhcx&qX8DD&;Xve`IS|xtIKX!QR|;Nf0}=0&grvf_^(`1S&nIb(W(A|;)>E4{)_6$ zmR0(%s$98pY3VXdcHcQAe*fvSPPw?a;uK=AUGt0UDB9+v5Og)r=#+^V!ph=m+RbS6 zQp_vTN2Vt5^OjXEE%oOW6`elI4F4Q!;ECd0zOwj+8kwoHbi&SBHAAH?N-I~L%yulQ zxUr)0mI{`XV+!(5rNFxQ!UY#jn_4Ne!eo!PBTd#TVERLJ`4`Ysh4H{XTv%NS-k?H<_+JL;jkwE} zQg9|k2cW(#TkaSBK@5iro|3Xw;!pKOyrK@U>N_DXt zN=jF*1YcLu-%}q$2hUsJq6)Q$K*qQ{K0`MDlv#BnJyuUqH9~fwJ?G)i$?{*-L``xQ zb&Ry73rknRdqMR;)p(gUUd1mN^I&wxcLFX5jU`&pVr;<7xMJazVr&3oVR>aGZSou9 zb+yv2qOt-!RZae&0jjd+DI2Fixko&KH8O|BFEJb z5;IoBv+Fs}udJ@FgU2ei0`0vyPz4w>SDrF2?GWg|nz9-QfLe${<2*xw*U*ryC{Zoq zaG0`&yCh=S9qSrN^-ZaRyTi7L2w1wh7FM@0o8qRD3|I<$jCH(AAg+H+=?(NGb(EnG zlj~(atwPXFBC{hW>x|+O2B|K+S(gziAUt6NOj#zfHrX3-%(@ZkU0zuS*&o+6crlO>zD8t@QoObdDu>l+O(WSq;y-htK@FfOHQb2t)#txE?#v60cx&tV zJHrQFP$q3jmb4T-yz>5QA1L|S!XH(B z^ZLxL*@NS@&3f;k|CqaX|LteL-xTazbw~bVwc$&C`lY)r`pGR*qmz0j@1D4GdjB!M zKk1F5UT$B}y7<9m_gwk?8~@kmzk9>ISC82;^PNL}dHx3(n@@lH;OEcVcl*2_S8urV zXKUBxJ#tfX;nQnQc>S=KPJQz;uN?o{p)a2D=THCVx0inPiXT>d;|t#^{>tS)DF3(X z4t#FT-}n2)S${p?*>nCj{+ToX^5u)4{NkM#K7Mm(!4s<+1Donj{;yB{?z4Y7@;B4^ zj{fbGKOXVx@BPcyuldgMf4%D8%kKN!L!}!Raqo%$xF0p#Kjz^+7Wdt_|7G{CNPh0U zagWW9hx>=zd*fc&I6UL=a1ZTpJlr!r9uN0Axo1ho=L9_5N95ie_tv;?#yvCct#N;k z`-vywIT;W4ZfOv5|CW2a-2a@6hx?1%d*r?u_a*IKEB8&$z{9;>?gh`n!#!5+&tm&b z_F}oOdL|z3BXh5q`^~4}IUA4NAI1`c?8SXl2z1%s`?%;g9PLukERj}T8d=(qCLgu$ z7LPO->EAz^zf$p5B0qWgX9^leej$I@Hh)x@s-GXVe~EL)J74VF;2ijmeGtO&Q8c1s?cP`fzbD2R>k9Gw=cZcLN{r`+!Y=fB!1* z0lPNtjr9P|yLWGF5b)Pu-y53*rSPk7?2XL^eEpkyV~YV>AJ`jP1vvJ5dtqo$c0@;NtHnRawe|&Fj31DgG-dH{0o+nT*VCzrOZon@+4Lrbl z+^3$3fp3qXKEOvdqn&{HTX6Ok(2qB-^aAz(W`eG-15O2;{T%uS_+z}StP1e&cr98h z;3F@ieSk$hXdmDUzehcQIlIt4D5oyK*?{N1g7yLa>Q&SS_?cd`5Abt#ebfi|#31khtM>s9%5Px|^#NW!b|@AE%pW%tTLJikLvX$p zuqAsa)($x3(4kltVC7*$u_$2e;X|=ZDDfEJRKS@Nfe%;#xB~D~M*<(P;V9q(e&J}~ z1GWQ30cRcqdvA_p>^V7fwT>Tl~13r8l@Bx412R`7$AMm@l(c1*L|3csc-U`?SIPFT{17!6So5&@U{lvLy6sY2k-&M;_K!?z;eJ9 zfKS~Ce8B6QfDicR5byzy3j-hU-u1wTL3nX9@B#BT03Yyqz!iXjeDv z#-Ugb;MZD*VuOIU--mufVa~oE=g$Fu|E;0eV!%It7xV&rAFvg02F{9h0^SAK1Nard zLBON&y2ME^77qVD@Bw=O7XzN~Fz^8%25be){UPuHivfE8Zv-3!T=XO0!vK8*a5ms+ z9l!@X2XGbO$&UaZF#E^A2mCf*58!ivgMjBf3jC9>rujJV0gC_^13udce8BU63Vgtm zo(4W(_p?K>Ucl@fpc@SDd!7f~04Kcwx&c1X4LrbmUj!cDOD}=mfWQ3}>I0nhYviAX z{{9B_0R9rN9`NXwhhlAjj{G;LA|GfeslN5asbDkyDwG**a27tcfE|GEd=VbqU~ofc1d){{Z6!_%vVy@D;#bz-d3i znV~Z=PXTiPcXXh=fKNRNJivLIfCsqhao_>|5U>~Upr3$G&Vt+k^aEc0#J*S%@JoOz z0P~;R7i$7+iR_ED14f?#p8)RKu`d<{T=Xl{dp5@B<$bZKfOq^J_<-|X0Y2a*y}$>o zd=2=3n*qB3e;Nfo;CBXqKilWK^Y6e1d}-_lu^{01tPf%<0DpY+2eBr=@+lw0+5uT!1n;V0ROfe z_<%1~0)GzXBR&t!_u)QwEARmyUI%=@-FE;V@cBD|54iX)-~;Bg03UGNeZZfK^ap?s z_|xwJA8<+s@ByEG4ETVHI)M*(>`#FYxa}$60|uT3{<)a%&j24V{{`R!&iozl0q6Y@ z_zdGcK<$7JegJ&H_YR81qJRe;6N_b@hr41^W3j1#8)xDUEnwfASZoF0*m<#76T=t9 zV(oyL1+iEcVB4j@2fXDn;GggF{q-8)1Ky9%3I_qV;ESs(0AH;EKH$(7fe-k<+xrse zsETdvrn`YK8Z>HTxCV>}3Ne8&DPE?8c@n~)fK5mzA&`lr0|8M$0s;b}1VjM^jfjd0 z8W0tkj0jHzm589=1&mPy1@Fy8Fx{#5?W#I;sv_;X>tE|%>#g{soKxz7OmU{And)$Qws2EO_N^m<}Gu^xKBOD{qX*!va6W&_v0ihKgQz79Wu1)Gpw zFO2(J7>foDc$=}Iz}3KP;LE^ez&*uC5BLM{b70)NNDr6_43ERO0qhKn*pBpo3BcLF z<-m2odLJO46u$%c1kU;pcQcS#-3Tif;g&IO)+abiT7!gIcc28ZgCqFQP-R$4g_N;ztlG^b3H_zu=3&`=?d1 zEkLF3+{6t~`XxA)K>sZKR=lfBrC)~VkuxgUH$cTZzf$^c=!HI9$yOTtQ;LrSKOa1X zLR&x0_CF4MA^10S-ubH1_kxeaE;*+S{)FNS!2bX~8>swqO;-LFA-)6dp`SDO6^buG z{N`De>9a`VD&0wbZ?&=Hgm&YrA$h zxh*nJbVSU$efFjnMhN zb6u{!T!d2P`Pc#eKv5-&MSg5Mck_!yc4*t7lN&18p$ck#2VGR08kpVoQj5~UvpzVa`4FZc|s*$p@J2dn%RfL{lm={(P`^IyUX z(cU*fZrW#9Gt=|ya`CKEJ`aNT9I9l)41N&jsl3jEf9h~0>u9ty*&nnLZH(GM7zXAS zzQBJS(dG2<;9a{tQo3=F?_65RrWom_t8~5K7k-5`O1-`el<9sV`ZP*+G32@&N4*G^ z?tC-d9gtuD?bZ7~^6LcnttU|r4Zp@Jzx?1YVQqAS&JR%SY9$Ghoya;Ev#>^*r^~sr zxgDN=@CUGF`kouYsy!9E>Dm$R1wWx2&ae`fli*x?IUt81|Pb`;p*BT&ZOJ4gcenejNB& z`2Roj&t7f+s+7JLytgv={G@Mpkx)%j^QUjn`g{ME)UDxWg& zi?G(5ru*meD*xT}ur^**$-XuCql%9NztrJp{q^*nq5~)Uap1RuUu5XdQ~F-;Eu4P# zfWapyz5x6fm!BmW{6mT_0{^_*A9Q|K0=`a7{0{*`KT7GBfp1z1-;C?L)4o3L`dC8; zpKRoByt;mo;NxoJ8+Dx@XP18*_}<_%bly2p>3hL12VbG5@4BG;D*&Hb#~*aQR|I}! zT|a$3YS)hk?et5)j{sk;^Ul*M{W9=P>iOB*2LFcQ-3>5*2Hz9ogsQ);`_z0f68x8V z_HfDIe^Y!M_>JLy*2l=$YQsO?J#+mM@P}IlufJvB!|uTU z|0BWYfyWY?T|csI|Kq?f0{?@~J5Sm92S22hpS@`CYZYGr z{tNJQA7CZO1%J7VpFaE6(x1WgXEqeg zV4aVj>vG0%5sKyS%xr?(BamCCmlNb%E6sU9Ddhg$)z7}tojop_eFtGYj1O@B%uHzMB89yaWV2`$e*_|4!i>b$%!be<9ZkX+O2 zvBumR&qVa}?D1FBsg+wRA7p(y<| zkefZ&&l>CXippPfecT?ETM6WR_xss4im}pnZs8drz6^ZbVSYAB_s=y<&ClF7Ky9R- z%{BBNRr-6d_CgJ-Vq>(|L8Dh1C!_>SXHj=H|K{^rIaVDw+`^qd_JPe}69@k8iFj6M=;tbZFZjpP{Olbge{ZV% z6@YI%$8IP={nE*SGt}F;FtUS>;fgI+T+hEKR)mi^3Yxl z{Vhtr5d7t7xL#PNQ2MUtYmx!7Ukv`?NBr!1V?NeE&Bsc?XW*GVrv0|Qw%$?!eiZm% z^X0Ic@h(PzpN-M=og4}%Yueku6(!2f3G+xN>A;1?|l ze!mcQ3)Ul_@CRM*i3PtGd@J345_gZ6PXhS=0-vk%PH{s^_16c!*<#H1jP}Ls`VYRw zleiz!_50iQi@{%9>Sxo9_Ty9frQrKLh54MpXDhw}{PWBGSAAYW<8BxRiqsW;_A2h1 zRQsd#=QZ_(6No0cu8{i)@1p!&Psdtcj^@en^6)~=QRHU@Mtz&5>RSPL@5@)`seda1 zzkh?Dt=ILnby?SPvwtgve3y;*-)hiR{yUFz-^pGD_}{_b8_b?qswZu}J{{Qv&!=AV zv)V!AomW(`i1lyCABX&yAo4D;B&X~bK;DgaaE$R?%b)WL+dh?hG34KY{0C&g>R;`3 z=eJ0j>e&g%^?t*D)pbv@;|D(l{Byb;YhEgre?xdkN&gV{32t3~ zHJ|VC>kt0?9?U=W{OIH5M|OUwoFbc{KmW+jhU@ZTJz7jMAVcX6gxro2KTE*5^4mE? z`IQd-BKYkF{|@IVoyFi6e2o7WsrL)^I)5$=z~p~12c|2Nz>edcFX`gIwqJ%>5VFA=v(@?9bS5#G5vtB=FFd?_E2m3%tn zXMW>nD}%|;vE`{e*FgTvDL?zSabJ5;-Pi5_|L)IzmZD!5S0c|6>7M}aIPYh#WBp5A z57&lzRN%z>!9Vdk+8x$`ZT_1Oi*I@>o{KsH>~6iBU3c=rCH=18A8-X&JtO^ED*dtG z=(w_-_1^9b)UVHAa2K;95#`6u=)5`u1@OR*yviZ8cbB?lq0{jy2 zs||i7=Xv`FA5uGD_EU6!bw5vnw0QlAjKDizApv%?-p}`dTqDuPlN{w|Amr|>8(^Oq z<*{G+n-2c#dI8qj;3E~k82qXF0d@|y?D8sC`Pl^i^#*~U>ktRQcWxM9>AIh;R5k9M z2VW2xVE4nkZGWIDkNVBA&H{d(?jM!M!*+R4K4T#lc71@2)#Y5HR6Y{G54|D4Mi~9q zP}P6=z|U)p{~e{b1J_J7e=P)G9uWw--d7C%+uH){QA2;a(k}(y<<0<$GWgbtuK?dC zI>4G5<#e+ur?3`yUe+$ahENA?jW4eL>Ulye_?)f*_M_3io>BMH3E;c*2(Z01bo~!i z`S`$pi+2nAICZ|KO1}`iGd{pF4f|pdfy%!a{7}4;m}}V2RQ5~3ztlg##u@fUEBh7T zPYuNNG4zKj{jl5cPUYYL`^{+g=T*Cp1z&!DfCb=-Dj(-%RZkPZe>5z3yY+#;Cn3Om zhJKdPF9g37{O<<;PsJC5PaY9qgAD)sD*sEtKRq(Qo;CCfm3{^I`lABuxS?OF^uy3O zd^|e9_|~0sLa{Yuyk~`m0p^@PV(Bh<8nm>+`z0K84_) zO}ctJ<<}qle}Vspk-ohiQVM>d7xly7?fG{F_!HoR%}2v-r+3eT^ReKIQUgKPgA>5N z2Y!}OzB5$$`oM>$1=u5ofBC%pXk0A>p9kK!KhWlbu1mbANSn{kN+914@7&(zMub(~ z`h1`fFM2Ld5wlBc441N;lacLZd;1AOLB`Lw+?a@x}3ExD~3Tn9v4F{9q&&6qPHJWKBujkLFID-azDmepm4Oz>lK{RS!n1dN3BeYYyHSHu$-mr~J+Y zKN&pVYu(bP@wS+|Kw3PVBFNR48(?=*ge8|O%8mRe0bdXNew}xIr2HrYUktu~EluAQ zuf{`nYm5gA@s4#(ogc35MHJ~U-xh(7EkZfz*W2};>Mu*ce~EX`>lnOS@nzsYz`N*?#&y0`U1v86 zcGs%`HVnzD@^ubU{L1ZkN4<{Df2-#4 z1>i^S#s8!=_&$m+0{_^j0oLA_$49Aodv~tJ~kG<|}33TbvHC4-EZnO5c4K z-t9ggV4u|2_4o3{4ys>~;JsJS&lvW*D*JKZ=iy!V$`D=ulDd!Zf*)VMid`|vuR@hy z0r)OARIxKg{X41ZUlI7q@GADJQGd>=`cne_K(i{=#;8AcsQOa|{;P;8R?Da#HB|j@ zW6=4aMb%Z;mwEodN8VP&Y8v@>*!c%vr)?EGX5{~foqzCqI#jU>M*e@c^ACPm*D6-m z;A<+r2>gtmC?6yLC++-$@7kw|bvE+f-p)Vxg#J}mUGJj&x!Ynr4&NLs!ns}l=h^ii z`~vV_8TtEMON0MR@m}y1~PYlFVzFzPh@C`Ah_(<@jd#c#b2D<)$ z22?>Pe{ta5_}1g5>vX=+br$ah|HsKHHr&u3tn>@Ox5bvnosImpSNSUfAOG(vmSB|M z5LJF9;HL+wSYxCAy;1eQW#Dt&jFlVp=d`Ln?r8Ksbs4+Ws6UNW{fPwMxgowWFzUy0 zRX^guZw_VbYh>SUKVPc$;{~7Eh_PA5^_iirPXYLSO&Qx@T>tg<^#?z&C1Wj({5QAr z4}Mq_W6g~GhuirFKcqu&-W>z`T^YO4$bYDvfABrJGq&2uzj*0@Uw`mB@NLd9BmYP2 z{Db%P!Z#sC`}sh%p91h<@r=dk`dD9~C(x0ID+1pceD7+!vpY|MVtGA02)U7v3-%t# zdGPn(+o9hLKmMuwsNW9r<$m~PL{CS)f=c;p1O6=dBL;tnJAp3NF%bNk{_H<`@0;>9 z6Y^6AFm{LTkDM2~nsK-Ie76X4+4$DUcu!Nzcb^kdVx8(Bi)a7tMVKRetH56x(+@Q zd=hvxPuu<^aZSno8t^&bqYV44xqZsV4)C)_F!rOaZ{1gj+cB~J3%PD1nK@6l(`cCf7`EE$gP9iD5F0a#`_bplK}qfF^qkw`z@~5KI?i>{$@gM&N#*z z=-0s&qWYCJ;4?k=woA9;;JN)U*HGoasaHCXSo524o6Zs_tE5FVG{K61_5d3Xf!Ry<3@D0ERTlcGv z8@)PH7^AXN_C0p}Xal|hc)kOml|J3C4HIQaYUD=(~v0mKM1~?&Wq;D{q%!B2R>h~AFf1Lgdc@KGh?uJl_?Nd-YKk^tnk`XMA&rZ$l^P z{<@M?J&Xn41>cOO8Rh0x<(2^cvAK+882m)V`@kQbhyKXm?e*D0@b&SHX$m=P)gNb~ zDu-h5!@!R*^hYZDrQnz0n^b!Iqx8k=RwDo4mx6Dh^W*G#6V~Og^<%;Rm41TM$75zY zeeHcKANWN`AD6-AbL{jB!LJ8@oz83hZ?Uvb(?ylPc%e^G*M8SZ;93b>D}n#7CD2z` z-`(fxshoP%&56qr!(S8O`y`H*I8EYWiJK*!k{I#2(Ca2~q{MWIvnB49cu`{LCZX3^ zVz$IrB<_}YN@D06LVldYe2Fhf+%54ZiJ@-_`3@5MN*pIKTjBzVZ%EuL@tDLb5<}k- z_PR@)C~=v@?Gk^Kcv)ijW}!D);%tepNZc*)qQvkmLcX)a@e&tE+%EBZi6L)Gd5PmC zE|9og;!hI8-x2bCCFV<9E%7~x$0UZ*$GrG;mpESH0*P-)ERlFjVuP(hFGAvYi5n#z zlNhp1$lWb*sKkdQu9Wzi#61!}mv~uX^t-}Nw#0Q3_e;DWF=V@tiH7C{ZPp9i-|uGVYl;BnnKd=Sz24eub}|E=OIocIJWl`VOk=iU(=Ps z-Yp`C4~B(3yt2lBv=l@?KF0!vNS@}&^s{&@n`QBcwnCq7S@|zQglWl@exbB>gdd+% z0soMW(UKMY!Ud?k54VR4eVT&OFJBr86G4YG$N#r0MRo5g2rE9il?YpYhDt?R0;8Xm zo}UT-kKG~S12Sx-TP4Gx(jJpxtK2Wj@X(e*|B4JhCW6=gUMqqBQzg(!_Dj_>T`v2d zOA>4K5)wB_Y$>s$#NHA|N=%VBRpNY!DjuLxI94RqH;#7(AC9agXLE<)v`y?KfST6CB#9Do1`Vw18 zboA-f>z;^KeFl$c9T6K96V(oT#6)+F?i3vx(P|jB66lMqqj-GV4jo#X!kxKrOl)*a zyJ%e)@oi%uY)b!6rX5ka6S371_K|W#VLzATsMO57s0n##>E5>u=ZK;m3>{HE>=@vPqU{X9W$`V!qLL?i zQfLzl&qObDt&q_0@J;N5hIKwE31Xy5>A(tiF)<@832tS``3_-f$-IRIPZuq9_9RdX84 zt*|w|TS)flS3P|Zi#1l9(AaP3TjRfl5mJ!!$p_1S8SO~Ii5rKdZ_P(6wB{q0|CT=4 zqhAINUEiADSZK|MthB4^PlG;jwQ$hSn*Uj7%@YMH(z4D8b8zVT^#9%HXW@8qPWy$* za|`L+J6%6owr>m14>k>0dX~w#)%30Ts)g1(&XPB+;r&FZZAP{)gXmyO6(0=&!RbERVI@uVv?SHGS)TWP7;K@BTmN z{|tSyW%+-(u}J@NW1(-QBa`QC-8v_{fJ0_ck9Ju4RKN9Kby+>{y4;*5BK^yHB+jer zMiC<8gTSTA-(2!XS?~IVU-lb}G$D7=(>wGn4r~&JNC9o$(~)Cz650bZp1!@bsVR z873|CO2;0o$+?b6*~zI`H%z1DPJZ5t?|x1@=h9BI4s1`Ko9uH;qSZ-{*sI=?k(wi9 zGZTGzIf?0>tQ@!|qP*BVIwxzo$J(mah!ugv30cUQDZt|dotu}scrZlgL$a3jSoG;L@=ZyJJ!gZKUeKPV7=5D?KZR z1h9gv5>4?Y`8+ZCF~S8NYM0+m3$@R0uZ3dsW3^C+{0>^EV}3_1)G5D{7V47UMGM75 z=f_0rVK|_B5YsL{M)x76eSVDYMNDjdjP6HFhx{1blbDYAF}g1Zch-}OHGD&AhH$iz ztIkG_J60GAyIi7}nvpu-})H;*0rwhTv^z^JG&&0fx6wz{I<>3*k#!+ieN=#4k@H*;E z!^(ed8umYSO!B5p^;EBSvX)zQQ(E+5+k3ugw^oJGVzVtVUWH}V&cF`wMm#xSbQ`iX zjW}6lj5t|sj5t|!j5t{%j5t}LMG5hp&8;Hhy`R_X`BS7fIVCYK-RGHNbrU3sp3p;E z4JYQ1LOS-M7ey}v9&`bqQ$-{R8&VV@&7!=?o|TB$cRf2XNp?^q`KP$FjO_GekG4a# zV^UI9_H>W96u5TNq*c-LP^XfTmXwCAqGddnPC}oV1~)zS-pj%l(eKA$?{3-i%PwDZ zj2IN`9xE*~JC7W+J1mhI(eryX6TEnNcV9i03>w`u?ZTahXI$L4aLG!CGH&(Vc=YDU zz=cVp!k{i!W=;+e)sqpOxE?FJd+NPW{&sH3Rqj-^ew@eI-8hK}qgi=A6oc?orfx;? zG(=xdNl?k9@T=m;;C0ZEl9Qb5NJ&Z0!*j%xJSI(vZ)_Sd(UqH9Vxo z8Xi((4G*cYhKJNx!$WGU;UP8F@Q@m7ct{&-MA#l{MA#l{MA#l{MA#l{MA#l{MA#l{ ztgswwEOps!h@cv4L{N=2JgCMR9#Ufs55-zNJrAj|M(SC^9S_=L4G-F54G-F54G*fZ zhKJNx!$WGU;UP8F@Q^mvh_F4@@UTACq)|1NQZ*yiSXTS;fYfd)6!|0ETXcqlQTUN z5|bul5JE473nSvGyU|s7ShGx>1^UAb+b|WM0|_Q)PIcr`kC@^}Pn(bwm75jS(cwwv zQ(BJ)?+=L15K)<4$7t>67}&2TZC&i?5*6*}gFr7&yQp?i9movjwQc*9l2sN>GVKEjoPQfo^aHt*?pDUnNVZcAXmG( zttP(MtMS5+BahvcAL{54+BCFDNXW!GyPG@ikBo?$7jaj}_&Rrm?5TC40p3e!7wP)d z+539Oq&m0MfuGi?(h|p6tT=CHbz&AE6d`~7+ZdeFbE;N2TFdx0Kzj6iw+vfA`R3nQ0r5GZ1D}%dedhsc ze|tKo|7CU`o#02`UG>1x6Gtx`@i_Y8pkIFh>hAz~Hdw{re>~y*ejLMbjKDDp#{)R% z_aKfjIL1)`zlU&4z>$O_1&8&Uh?B`U(s5+tn1X}e9q{3xcM$S%%)mkK1JHM#vvJJ9 zLDzR44*Ja(;8+A)jAMxmF9XtZ_~kOZ0=N>#DjBB#yS4_$^ElSaxR)fp4BRNs3FvwH zCK-NH;#dM`F0%d;dmd%4jdoi*o9*^j=eY{2Q(l0Zc6y!zAIktb34xG zq~F=*w_}^X98{P#xaONb>>5_9eEs{*PoDed=B%&Y&lr@j^O=4L?=AVQ;X#&m<05=>KJT*w(~< zbWGm7>6fEZA2>Gz;R_R+5B)As_rn^U9z1>b>Dt$|i0JU*xZl%LTdjTW?6}GMT8$rk zu+@;BYtFVA+kEKv3r}U-e&gDbe)rA0edjaB*S4Pe@X4irOe^#bX+CsFlSfYGFZifc zD$dhz+%uxyH1DphC!2i!uWgI(`Dg8CsgUS3f=N#Jx}UONbcs(U#%gmxncYr)gaA9h=uLI$9p~_cJ@U z9G^0}X|wgQXBHzocx;O`Hx#w#l20B=HEst+&0nx68o7)8272PBt6R&bx7V^Px{TXP(^h$|EOFJ-(y+>=}h8 z51#I|@pZ&sIzFtp&SOoYo*dKZ)aC5#E$LmFE&1U4r)PFs`t$0IA=%HIJ944nsrvV1 z_E^_1;mY95hj;(l=Ewu52PX84|LXj*AIrny|Fv^VUP0d9XU`v;FeY~ImcspG|5ktS z=;sdq(P-n0dY%(2W}b;CIR4R=wK0{qCPcI>KJ-m_*n9K)B|Q7tGt1sTzH>{+q4Kb& z?wGfcFh2CxmGyvQ@*eHezundsYXlabUd`V5WwW>W&`(02JG*&&$D`lv?{n)fTUVdG zVa(dIXGb+3+HU%uT~Ee7UvduT`_9fdnVLLl;4e#Oo?P|DcfOm)u1h@j^|udQ0Eeo} n-!q_BpPLlg?;rAe} literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/liblcms2-a6801db4.so.2.0.8 b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/liblcms2-a6801db4.so.2.0.8 new file mode 100755 index 0000000000000000000000000000000000000000..6f10af240e4d9df5cd24df327db58a1ffa8115e3 GIT binary patch literal 453104 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

uJ5?m9oJjNwYZf{Nh^uptjlw>BUbq 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 H)4%$E8k%@K literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/liblzma-90de1f11.so.5.2.2 b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/liblzma-90de1f11.so.5.2.2 new file mode 100755 index 0000000000000000000000000000000000000000..0e22b2e0c9cb5a43b0754dda618824229a460323 GIT binary patch literal 216664 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 z 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�VM63wtZ5lKYKwjVV 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libopenjp2-e366d6b0.so.2.1.0 b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libopenjp2-e366d6b0.so.2.1.0 new file mode 100755 index 0000000000000000000000000000000000000000..c31cea41cf8aa4819f72b5935ee897445b25d7ec GIT binary patch literal 310256 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

}-KK+TvsZ#F%O1MfvZa@r`n{qz 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libpng16-8793a1b2.so.16.32.0 b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libpng16-8793a1b2.so.16.32.0 new file mode 100755 index 0000000000000000000000000000000000000000..219f41b321dfda7e4b08a73043de7244d6976e3e GIT binary patch literal 279824 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 +6WIGEs;N;N2)*i2oEhx-5rF6-w$xKFr8PX*NRa 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 Gj{gN4Udmqp literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libwebpdemux-eba3dc32.so.2.0.4 b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libwebpdemux-eba3dc32.so.2.0.4 new file mode 100755 index 0000000000000000000000000000000000000000..66adccb711f252519610bb16457096bee256ef6d GIT binary patch literal 29512 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 z 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BdfFontFile.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BdfFontFile.py new file mode 100644 index 0000000..c8bc604 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BdfFontFile.py @@ -0,0 +1,133 @@ +# +# The Python Imaging Library +# $Id$ +# +# bitmap distribution font (bdf) file parser +# +# history: +# 1996-05-16 fl created (as bdf2pil) +# 1997-08-25 fl converted to FontFile driver +# 2001-05-25 fl removed bogus __init__ call +# 2002-11-20 fl robustification (from Kevin Cazabon, Dmitry Vasiliev) +# 2003-04-22 fl more robustification (from Graham Dumpleton) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from __future__ import print_function + +from . import Image, FontFile + + +# -------------------------------------------------------------------- +# parse X Bitmap Distribution Format (BDF) +# -------------------------------------------------------------------- + +bdf_slant = { + "R": "Roman", + "I": "Italic", + "O": "Oblique", + "RI": "Reverse Italic", + "RO": "Reverse Oblique", + "OT": "Other" +} + +bdf_spacing = { + "P": "Proportional", + "M": "Monospaced", + "C": "Cell" +} + + +def bdf_char(f): + # skip to STARTCHAR + while True: + s = f.readline() + if not s: + return None + if s[:9] == b"STARTCHAR": + break + id = s[9:].strip().decode('ascii') + + # load symbol properties + props = {} + while True: + s = f.readline() + if not s or s[:6] == b"BITMAP": + break + i = s.find(b" ") + props[s[:i].decode('ascii')] = s[i+1:-1].decode('ascii') + + # load bitmap + bitmap = [] + while True: + s = f.readline() + if not s or s[:7] == b"ENDCHAR": + break + bitmap.append(s[:-1]) + bitmap = b"".join(bitmap) + + [x, y, l, d] = [int(p) for p in props["BBX"].split()] + [dx, dy] = [int(p) for p in props["DWIDTH"].split()] + + bbox = (dx, dy), (l, -d-y, x+l, -d), (0, 0, x, y) + + try: + im = Image.frombytes("1", (x, y), bitmap, "hex", "1") + except ValueError: + # deal with zero-width characters + im = Image.new("1", (x, y)) + + return id, int(props["ENCODING"]), bbox, im + + +## +# Font file plugin for the X11 BDF format. + +class BdfFontFile(FontFile.FontFile): + + def __init__(self, fp): + + FontFile.FontFile.__init__(self) + + s = fp.readline() + if s[:13] != b"STARTFONT 2.1": + raise SyntaxError("not a valid BDF file") + + props = {} + comments = [] + + while True: + s = fp.readline() + if not s or s[:13] == b"ENDPROPERTIES": + break + i = s.find(b" ") + props[s[:i].decode('ascii')] = s[i+1:-1].decode('ascii') + if s[:i] in [b"COMMENT", b"COPYRIGHT"]: + if s.find(b"LogicalFontDescription") < 0: + comments.append(s[i+1:-1].decode('ascii')) + + # font = props["FONT"].split("-") + + # font[4] = bdf_slant[font[4].upper()] + # font[11] = bdf_spacing[font[11].upper()] + + # ascent = int(props["FONT_ASCENT"]) + # descent = int(props["FONT_DESCENT"]) + + # fontname = ";".join(font[1:]) + + # print("#", fontname) + # for i in comments: + # print("#", i) + + while True: + c = bdf_char(fp) + if not c: + break + id, ch, (xy, dst, src), im = c + if 0 <= ch < len(self.glyph): + self.glyph[ch] = xy, dst, src, im diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BdfFontFile.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BdfFontFile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ab93272d946e3a4d9d1a327fccbeb57e99ee21c GIT binary patch literal 2801 zcmb_e>uwuG6h5=NzQ(zeX~1&4>tvnv?s|9A z+LA4#rs5TN6dr)zya8{4#1EtjzH`<|OF{f8jy;!i=3HjxeBVU>Z8|?6{Q9I#laG%6 z4k?O$#K6K=kxSH5w4+E_8d*BI8ufJA(Wz(9jzP*vlVy;VqMH^*8FX2)a_I78O`$80 zHH~hDtXaCblOjhaYmTflkewy#9dzf&Iu8}B=jjE}PKK-nvJL7Q)KO$zVBs;*;~h9& zq^;7s$j$i^pOV5ToRSO{Le`x8p2E8@?BBIIb;X)9$QDU0;xMND)D9!NI9bXO%t|!-n&!ktR5giHix2ED zWYgXHwDTm@*SNV=E!{^{r ziiyITG$QIMKBlpv5tNts`nE8_6&7)GhZ==C)%!Z(yPe1{b#=DDIpbcB6^%7=;6SIr zp?LlIO|OOMIXlOF7jfb2@&~GW#IkORaR2PY;OPiHGqiwO_~6w2NS|nmr=sQlW7^(F z%oGh)B<75IV<&~^cZr!p%)G?>BZ--!Zdx>1Dk84x|3cfSxNe33mhV_F-ylO8qd(S_c0kL znZrDVIZY|W7Sn&TI7S*XN@r0qRVRlQJ4aPC?wXC& z`*%$#&sNlS9Do=~ZdNLd&AWA}z@p$tkmfKR1QhGlH8I7UVx0|E9*N=Fc4e(`AN2z{ zm+E!V9@qmx-g00uvKt|w#h?uBmgPF0Ez+uw0fRP*Lnjc&mfiNPMB8yZ zOJuDeurXwWbbUZyECSbwB`5?Yry#rSgnn;t7~7G6?3Cz*MgxO*`C#Dwhvn25b$Axh2%wW>TBRPne3=zJL|@s4HXyATutR95i7j6gZxc2_NYc-r@>MsOPyN z@JPZw%m)Sye&RX_|6yNaMR6X+unqbUsz%7BCLxPSqG3UH8Uil?IG zi2%>kVVc4Rynxwkir0fX4pE{nnb4S7{@p8Yv;UI%5BR%17)j>eE8G<}4<$GUgcB8& zkY$=q8D|$J2NIX9-wu(>j(BF63EtgAn&5qiPVt$gLNuFf$D~!zB zJmu0exrU^un@z`a;%3vl#1htR4ZXNE5VV@_^V*NN`H-8-+;HU!j9ojSfPHru9F%w$ z0=vj|I|9Q_V1B{|*I2`x)AoBk*hFTTC0y!lbBTwXP5VH)!BBi#Q9>$F*fzg__H6-d z-hq={{31??v^lK+(9UXUl@<^upuGy&d3AN}1lI2Xt|exy$x(T&p51H;r8S#9-#T(J z71yuwdkdB^Zz0qUei0u?TC0}$;h2Q$9K}Z=hl7aB3*7JtCO66Jn4TgR|6Iu}$_)S4 oINrY8nE3u*vXrw}PIiBrOEbENW=@;W=qhvim)Db7-pDQe1*|p@?*IS* literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BlpImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BlpImagePlugin.py new file mode 100644 index 0000000..9b1a99a --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BlpImagePlugin.py @@ -0,0 +1,435 @@ +""" +Blizzard Mipmap Format (.blp) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +BLP1 files, used mostly in Warcraft III, are not fully supported. +All types of BLP2 files used in World of Warcraft are supported. + +The BLP file structure consists of a header, up to 16 mipmaps of the +texture + +Texture sizes must be powers of two, though the two dimensions do +not have to be equal; 512x256 is valid, but 512x200 is not. +The first mipmap (mipmap #0) is the full size image; each subsequent +mipmap halves both dimensions. The final mipmap should be 1x1. + +BLP files come in many different flavours: +* JPEG-compressed (type == 0) - only supported for BLP1. +* RAW images (type == 1, encoding == 1). Each mipmap is stored as an + array of 8-bit values, one per pixel, left to right, top to bottom. + Each value is an index to the palette. +* DXT-compressed (type == 1, encoding == 2): +- DXT1 compression is used if alpha_encoding == 0. + - An additional alpha bit is used if alpha_depth == 1. + - DXT3 compression is used if alpha_encoding == 1. + - DXT5 compression is used if alpha_encoding == 7. +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + + +BLP_FORMAT_JPEG = 0 + +BLP_ENCODING_UNCOMPRESSED = 1 +BLP_ENCODING_DXT = 2 +BLP_ENCODING_UNCOMPRESSED_RAW_BGRA = 3 + +BLP_ALPHA_ENCODING_DXT1 = 0 +BLP_ALPHA_ENCODING_DXT3 = 1 +BLP_ALPHA_ENCODING_DXT5 = 7 + + +def unpack_565(i): + return ( + ((i >> 11) & 0x1f) << 3, + ((i >> 5) & 0x3f) << 2, + (i & 0x1f) << 3 + ) + + +def decode_dxt1(data, alpha=False): + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 8 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + # Decode next 8-byte block. + idx = block * 8 + color0, color1, bits = struct.unpack_from("> 2 + + a = 0xFF + if control == 0: + r, g, b = r0, g0, b0 + elif control == 1: + r, g, b = r1, g1, b1 + elif control == 2: + if color0 > color1: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + else: + r = (r0 + r1) // 2 + g = (g0 + g1) // 2 + b = (b0 + b1) // 2 + elif control == 3: + if color0 > color1: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + else: + r, g, b, a = 0, 0, 0, 0 + + if alpha: + ret[j].extend([r, g, b, a]) + else: + ret[j].extend([r, g, b]) + + return ret + + +def decode_dxt3(data): + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + idx = block * 16 + block = data[idx:idx + 16] + # Decode next 16-byte block. + bits = struct.unpack_from("<8B", block) + color0, color1 = struct.unpack_from(">= 4 + else: + high = True + a &= 0xf + a *= 17 # We get a value between 0 and 15 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +def decode_dxt5(data): + """ + input: one "row" of data (i.e. will produce 4 * width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + idx = block * 16 + block = data[idx:idx + 16] + # Decode next 16-byte block. + a0, a1 = struct.unpack_from("> alphacode_index) & 0x07 + elif alphacode_index == 15: + alphacode = (alphacode2 >> 15) | ((alphacode1 << 1) & 0x06) + else: # alphacode_index >= 18 and alphacode_index <= 45 + alphacode = (alphacode1 >> (alphacode_index - 16)) & 0x07 + + if alphacode == 0: + a = a0 + elif alphacode == 1: + a = a1 + elif a0 > a1: + a = ((8 - alphacode) * a0 + (alphacode - 1) * a1) // 7 + elif alphacode == 6: + a = 0 + elif alphacode == 7: + a = 255 + else: + a = ((6 - alphacode) * a0 + (alphacode - 1) * a1) // 5 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +class BLPFormatError(NotImplementedError): + pass + + +class BlpImageFile(ImageFile.ImageFile): + """ + Blizzard Mipmap Format + """ + format = "BLP" + format_description = "Blizzard Mipmap Format" + + def _open(self): + self.magic = self.fp.read(4) + self._read_blp_header() + + if self.magic == b"BLP1": + decoder = "BLP1" + self.mode = "RGB" + elif self.magic == b"BLP2": + decoder = "BLP2" + self.mode = "RGBA" if self._blp_alpha_depth else "RGB" + else: + raise BLPFormatError("Bad BLP magic %r" % (self.magic)) + + self.tile = [ + (decoder, (0, 0) + self.size, 0, (self.mode, 0, 1)) + ] + + def _read_blp_header(self): + self._blp_compression, = struct.unpack("z?d=wu^@&A=f^( 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BmpImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BmpImagePlugin.py new file mode 100644 index 0000000..f9e5ee5 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BmpImagePlugin.py @@ -0,0 +1,289 @@ +# +# The Python Imaging Library. +# $Id$ +# +# BMP file handler +# +# Windows (and OS/2) native bitmap storage format. +# +# history: +# 1995-09-01 fl Created +# 1996-04-30 fl Added save +# 1997-08-27 fl Fixed save of 1-bit images +# 1998-03-06 fl Load P images as L where possible +# 1998-07-03 fl Load P images as 1 where possible +# 1998-12-29 fl Handle small palettes +# 2002-12-30 fl Fixed load of 1-bit palette images +# 2003-04-21 fl Fixed load of 1-bit monochrome images +# 2003-04-23 fl Added limited support for BI_BITFIELDS compression +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1995-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, i32le as i32, \ + o8, o16le as o16, o32le as o32 +import math + +__version__ = "0.7" + +# +# -------------------------------------------------------------------- +# Read BMP file + +BIT2MODE = { + # bits => mode, rawmode + 1: ("P", "P;1"), + 4: ("P", "P;4"), + 8: ("P", "P"), + 16: ("RGB", "BGR;15"), + 24: ("RGB", "BGR"), + 32: ("RGB", "BGRX"), +} + + +def _accept(prefix): + return prefix[:2] == b"BM" + + +# ============================================================================== +# Image plugin for the Windows BMP format. +# ============================================================================== +class BmpImageFile(ImageFile.ImageFile): + """ Image plugin for the Windows Bitmap format (BMP) """ + + # -------------------------------------------------------------- Description + format_description = "Windows Bitmap" + format = "BMP" + # --------------------------------------------------- BMP Compression values + COMPRESSIONS = {'RAW': 0, 'RLE8': 1, 'RLE4': 2, 'BITFIELDS': 3, 'JPEG': 4, 'PNG': 5} + RAW, RLE8, RLE4, BITFIELDS, JPEG, PNG = 0, 1, 2, 3, 4, 5 + + def _bitmap(self, header=0, offset=0): + """ Read relevant info about the BMP """ + read, seek = self.fp.read, self.fp.seek + if header: + seek(header) + file_info = {} + file_info['header_size'] = i32(read(4)) # read bmp header size @offset 14 (this is part of the header size) + file_info['direction'] = -1 + # --------------------- If requested, read header at a specific position + header_data = ImageFile._safe_read(self.fp, file_info['header_size'] - 4) # read the rest of the bmp header, without its size + # --------------------------------------------------- IBM OS/2 Bitmap v1 + # ------ This format has different offsets because of width/height types + if file_info['header_size'] == 12: + file_info['width'] = i16(header_data[0:2]) + file_info['height'] = i16(header_data[2:4]) + file_info['planes'] = i16(header_data[4:6]) + file_info['bits'] = i16(header_data[6:8]) + file_info['compression'] = self.RAW + file_info['palette_padding'] = 3 + # ---------------------------------------------- Windows Bitmap v2 to v5 + elif file_info['header_size'] in (40, 64, 108, 124): # v3, OS/2 v2, v4, v5 + if file_info['header_size'] >= 40: # v3 and OS/2 + file_info['y_flip'] = i8(header_data[7]) == 0xff + file_info['direction'] = 1 if file_info['y_flip'] else -1 + file_info['width'] = i32(header_data[0:4]) + file_info['height'] = i32(header_data[4:8]) if not file_info['y_flip'] else 2**32 - i32(header_data[4:8]) + file_info['planes'] = i16(header_data[8:10]) + file_info['bits'] = i16(header_data[10:12]) + file_info['compression'] = i32(header_data[12:16]) + file_info['data_size'] = i32(header_data[16:20]) # byte size of pixel data + file_info['pixels_per_meter'] = (i32(header_data[20:24]), i32(header_data[24:28])) + file_info['colors'] = i32(header_data[28:32]) + file_info['palette_padding'] = 4 + self.info["dpi"] = tuple( + map(lambda x: int(math.ceil(x / 39.3701)), + file_info['pixels_per_meter'])) + if file_info['compression'] == self.BITFIELDS: + if len(header_data) >= 52: + for idx, mask in enumerate(['r_mask', 'g_mask', 'b_mask', 'a_mask']): + file_info[mask] = i32(header_data[36+idx*4:40+idx*4]) + else: + # 40 byte headers only have the three components in the bitfields masks, + # ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd183376(v=vs.85).aspx + # See also https://github.com/python-pillow/Pillow/issues/1293 + # There is a 4th component in the RGBQuad, in the alpha location, but it + # is listed as a reserved component, and it is not generally an alpha channel + file_info['a_mask'] = 0x0 + for mask in ['r_mask', 'g_mask', 'b_mask']: + file_info[mask] = i32(read(4)) + file_info['rgb_mask'] = (file_info['r_mask'], file_info['g_mask'], file_info['b_mask']) + file_info['rgba_mask'] = (file_info['r_mask'], file_info['g_mask'], file_info['b_mask'], file_info['a_mask']) + else: + raise IOError("Unsupported BMP header type (%d)" % file_info['header_size']) + # ------------------ Special case : header is reported 40, which + # ---------------------- is shorter than real size for bpp >= 16 + self.size = file_info['width'], file_info['height'] + # -------- If color count was not found in the header, compute from bits + file_info['colors'] = file_info['colors'] if file_info.get('colors', 0) else (1 << file_info['bits']) + # -------------------------------- Check abnormal values for DOS attacks + if file_info['width'] * file_info['height'] > 2**31: + raise IOError("Unsupported BMP Size: (%dx%d)" % self.size) + # ----------------------- Check bit depth for unusual unsupported values + self.mode, raw_mode = BIT2MODE.get(file_info['bits'], (None, None)) + if self.mode is None: + raise IOError("Unsupported BMP pixel depth (%d)" % file_info['bits']) + # ----------------- Process BMP with Bitfields compression (not palette) + if file_info['compression'] == self.BITFIELDS: + SUPPORTED = { + 32: [(0xff0000, 0xff00, 0xff, 0x0), (0xff0000, 0xff00, 0xff, 0xff000000), (0x0, 0x0, 0x0, 0x0), (0xff000000, 0xff0000, 0xff00, 0x0)], + 24: [(0xff0000, 0xff00, 0xff)], + 16: [(0xf800, 0x7e0, 0x1f), (0x7c00, 0x3e0, 0x1f)] + } + MASK_MODES = { + (32, (0xff0000, 0xff00, 0xff, 0x0)): "BGRX", + (32, (0xff000000, 0xff0000, 0xff00, 0x0)): "XBGR", + (32, (0xff0000, 0xff00, 0xff, 0xff000000)): "BGRA", + (32, (0x0, 0x0, 0x0, 0x0)): "BGRA", + (24, (0xff0000, 0xff00, 0xff)): "BGR", + (16, (0xf800, 0x7e0, 0x1f)): "BGR;16", + (16, (0x7c00, 0x3e0, 0x1f)): "BGR;15" + } + if file_info['bits'] in SUPPORTED: + if file_info['bits'] == 32 and file_info['rgba_mask'] in SUPPORTED[file_info['bits']]: + raw_mode = MASK_MODES[(file_info['bits'], file_info['rgba_mask'])] + self.mode = "RGBA" if raw_mode in ("BGRA",) else self.mode + elif file_info['bits'] in (24, 16) and file_info['rgb_mask'] in SUPPORTED[file_info['bits']]: + raw_mode = MASK_MODES[(file_info['bits'], file_info['rgb_mask'])] + else: + raise IOError("Unsupported BMP bitfields layout") + else: + raise IOError("Unsupported BMP bitfields layout") + elif file_info['compression'] == self.RAW: + if file_info['bits'] == 32 and header == 22: # 32-bit .cur offset + raw_mode, self.mode = "BGRA", "RGBA" + else: + raise IOError("Unsupported BMP compression (%d)" % file_info['compression']) + # ---------------- Once the header is processed, process the palette/LUT + if self.mode == "P": # Paletted for 1, 4 and 8 bit images + # ----------------------------------------------------- 1-bit images + if not (0 < file_info['colors'] <= 65536): + raise IOError("Unsupported BMP Palette size (%d)" % file_info['colors']) + else: + padding = file_info['palette_padding'] + palette = read(padding * file_info['colors']) + greyscale = True + indices = (0, 255) if file_info['colors'] == 2 else list(range(file_info['colors'])) + # ------------------ Check if greyscale and ignore palette if so + for ind, val in enumerate(indices): + rgb = palette[ind*padding:ind*padding + 3] + if rgb != o8(val) * 3: + greyscale = False + # -------- If all colors are grey, white or black, ditch palette + if greyscale: + self.mode = "1" if file_info['colors'] == 2 else "L" + raw_mode = self.mode + else: + self.mode = "P" + self.palette = ImagePalette.raw("BGRX" if padding == 4 else "BGR", palette) + + # ----------------------------- Finally set the tile data for the plugin + self.info['compression'] = file_info['compression'] + self.tile = [('raw', (0, 0, file_info['width'], file_info['height']), offset or self.fp.tell(), + (raw_mode, ((file_info['width'] * file_info['bits'] + 31) >> 3) & (~3), file_info['direction']) + )] + + def _open(self): + """ Open file, check magic number and read header """ + # read 14 bytes: magic number, filesize, reserved, header final offset + head_data = self.fp.read(14) + # choke if the file does not have the required magic bytes + if head_data[0:2] != b"BM": + raise SyntaxError("Not a BMP file") + # read the start position of the BMP image data (u32) + offset = i32(head_data[10:14]) + # load bitmap information (offset=raster info) + self._bitmap(offset=offset) + + +# ============================================================================== +# Image plugin for the DIB format (BMP alias) +# ============================================================================== +class DibImageFile(BmpImageFile): + + format = "DIB" + format_description = "Windows Bitmap" + + def _open(self): + self._bitmap() + +# +# -------------------------------------------------------------------- +# Write BMP file + + +SAVE = { + "1": ("1", 1, 2), + "L": ("L", 8, 256), + "P": ("P", 8, 256), + "RGB": ("BGR", 24, 0), + "RGBA": ("BGRA", 32, 0), +} + + +def _save(im, fp, filename): + try: + rawmode, bits, colors = SAVE[im.mode] + except KeyError: + raise IOError("cannot write mode %s as BMP" % im.mode) + + info = im.encoderinfo + + dpi = info.get("dpi", (96, 96)) + + # 1 meter == 39.3701 inches + ppm = tuple(map(lambda x: int(x * 39.3701), dpi)) + + stride = ((im.size[0]*bits+7)//8+3) & (~3) + header = 40 # or 64 for OS/2 version 2 + offset = 14 + header + colors * 4 + image = stride * im.size[1] + + # bitmap header + fp.write(b"BM" + # file type (magic) + o32(offset+image) + # file size + o32(0) + # reserved + o32(offset)) # image data offset + + # bitmap info header + fp.write(o32(header) + # info header size + o32(im.size[0]) + # width + o32(im.size[1]) + # height + o16(1) + # planes + o16(bits) + # depth + o32(0) + # compression (0=uncompressed) + o32(image) + # size of bitmap + o32(ppm[0]) + o32(ppm[1]) + # resolution + o32(colors) + # colors used + o32(colors)) # colors important + + fp.write(b"\0" * (header - 40)) # padding (for OS/2 format) + + if im.mode == "1": + for i in (0, 255): + fp.write(o8(i) * 4) + elif im.mode == "L": + for i in range(256): + fp.write(o8(i) * 4) + elif im.mode == "P": + fp.write(im.im.getpalette("RGB", "BGRX")) + + ImageFile._save(im, fp, [("raw", (0, 0)+im.size, 0, + (rawmode, stride, -1))]) + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(BmpImageFile.format, BmpImageFile, _accept) +Image.register_save(BmpImageFile.format, _save) + +Image.register_extension(BmpImageFile.format, ".bmp") + +Image.register_mime(BmpImageFile.format, "image/bmp") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BmpImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BmpImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2fc37fbb55246bc49476d683e101802951b4e8ca GIT binary patch literal 8243 zcmb_hO>7)ja<1+f4u8Zy@ozX3Wi@Td9?3Fk$ucF|T3MnG$t4q?+u+`LVQbhiX^o& z$A`Ku>Dd$imT_~0t)h$2i&1!do zx}WrCt<@@8iC-=d+eQ&w(?P+dd311i@WEx&*wr*$&30FlUBS2bTZuW{`?FUQ&b_Lw z)lV*^?<+x`gnCdU#B=X1#GG*9uKUTQ4};+hj&?A~2GP-Y95|@dNRkhExQ!C~M{LNs`0NE2?K{1y!T63+S^o@3Sx5 z%H{iWt3kcqd@;AWe1C4C(Ng)X)}L(!;cRO^>BhiHwN~?6$t4ovoMNd&Gh~XmMlk<$ zp?JqXMd3rUpiL-kYCQBC3s}#qlB(v;LuplOy2a~(*7O=(Jt1B{S_9$@LWh8IQl7vN z)E3s&7GMbLzycBchU9CI?H6xYRc%1rwekpgxQxQl1vxEUk+a#1oMhW~9tEM-d=Wbf zLDHzU2yRppr@ZiB^}M43KaQaLh|T~6(@nkgNEJ^v&%M8N&FluZ60Iu%cSyBxVfphr z%S-nc*HkMM{j=4jyRe^>((20H8nH+5P-kxAiGKyTW6yW+v$BdU_F+yA^KxKGbWskp z^3oD3gtmzsc9F9K$iosq@jHOzY`G2*v6h$Xn0==!C1*NIK%Rur9TrmT5_SYC7X3FB z=>X0IziydHsr7({0b|3gHn_J9#%}ku!6(|_K5l46WI(QSY27;GAov^7+OS*?|J2Ud z`XkvbNVJj5+9zeVOQPqwq(`|Lml9a=CdeyMilC{lQuL|iO-iVmK@gV>0hpC^SjI}y z0r8=gB7mUbG8_|cS*3|#ZRjKibe0Nzn`*DAv(za%;v-8T5E-JaF&vV%11g9np2~b-~6Ij#FjP!a8>0XeAyx{c83UuAKS~n>w**V?u++8ycO{ta@+KvUX?9u z?;CKie=MFWTky@NWd5*E0_@#Y;&^LRw0ZBEHa<6vkF@c{(Z&x=0~-njePkM+kec_{ zG_GsoN7^_%kuiPHr^fx4UD=XLs(iP#{VrtRmtmIZ1OV?0#VUaT?n;yl&Wm-Wb*0Pu zfrL;isPb4Ux~G5Jp5RMG`ZH}`_|61?ADaLe=>#A_ao?c6LpPp&bF3LYRz6dyck3el zy*;N{)Hhx5*50Su_f41gL`_Eb6q^frsTSVMC}mox>+o*rxO?5H!9d;exm|=NZx_4; z*|j9ZnP9~W1u}VCNdP4!@$_CdX_48ObK#4XG#;}^h0ZGQ?a4>_x$BX7D5jhx<1lDnqBLExQ z%}Mn0LQ>+)Pk&y(@6o}aM3c%YSWDT+b$g5I!5r2C5%b;^3zy*3=-v3nIUk1kEsDD63J3i8mNUya>ExTf@F>KiJw%kOIJ` zXc$kK@umNq}FU8M2urn)JSCrz?KP)E3K;M1>sh}@G-c_0;!4wSQtG7 zif>UU{r$>jJ!okh6gceZW5ED77(-!LuO?Nq8pgW8G~vW(1$%xyuC%b$hM)M6609}r z%_y#AAuxGf!xI-d3O^(Zx~tgmaif)MWk#ecTfaN=&&|p|-o9xP0j?s60PPMAl;4BA_ zX0(-dGLJ#S^v4cbUxe|qR;w8$zUNSLjJ`O@e#>{t=e+a586d@{UxB#>mHL=Cdq8_7 zE!`8xL#)4TXo-9aZNq*qgC4gXt^Yys8|XnmRS$lH#ky2V74c)FFW7Mhyy(^|*?^jE27cX(oqBa2RuW8*kb~m)7k@;Lm0_3if_YdH&%6RXP5&Gkm*Q*w zc1g?ox@}SQ#Y&lK_bTnD5HvMo;w$;~%z&*Wr@}>N4L{0c)15Zbh5g z;a+a{qGEhf@C|bFG8eB|@n%caEP_MTO6>c)y2;4#UCw~;7|uGbZu%8PQjRapyCVR* zZ0LQ1eDk zc=^G@#U<@sX@vdB>YF=hysjb+rZ>keAK0~X`&CS?P+^eK@jflM{HZiQiRqA1po=6@Xxe=eYXZWR0 zQ*Tv$QBmeOcI}JR)raoqON%Pq2e;PlRk+l(lu12W+H3pt8g1ZuE57-4z@3(uc3%QflMN3afDj-$t zHlFxP6tH)5X@DaVC*&al5=34I@pCeRIEC@o6`BWQ``1yyACehf|>&h*zhB#8Zy{H#FL&)!63#2 zctnF1cK|iLWLaq@PE}7a($eU`T}9_gnOg47v!G_G8m{e!Np(-H%KeBvKSrUR&s`x7 zx#NTtDyowCKJ!Lf+#c4QYE&w^S%%!W5R4QS$ z;a4ig>Cj%D!N@AA_mzs*tf5ZFW3Hkqo*&nupv9O^?bLwv-tG3o2dnPV+S>BNl{Mq5 zXyGm+F7-+-k4u*!lZwc#qSg_`>)DUX(2agV_pe|Ta(L|btx0?6P?=i{HuS>n*rgz) zqt?c-#DCSL;MV}=d2dIBR(oGuUU1k{5A(im?=OQR#iRUPR_ z;SY8oD$RcZ!Sp87XzB)MsIk~&fhEfKEB0+r{3kpbLlxi&3by+J+Qy(5Xa*FCDr4t- z)O$q=h_<29!nX$5pJFUcnORbLf*VD>RK)e+qwuWc;Tv}QB)SQs=e-#3lN2+%X|Uum z0eQVLEbu;&-er>M7OsMztI%jT8f+-;e*mOE!JQq3^w8;)aBVpTS5t&OkXXVPGP+fiejhU%@vr%=|aVF-u+A_@}UVZ7j+i=8U&;Ni~Bqd)iwkuu}Xp|OTX zoq*9-=pvW@os>`Q`z&yc&A-DMp4SW&T+;YYJTYk*H?KiT51VAqhg5vTR(WFVkH~pk!0^OgWL&ac1Sr}_NF{v07R18c%acCg6cI$^r?j6AO zptMwq%Q>Ui;)%e)Z@GvaiYiKDDEU_K&< zV$)#LMA3Rg#?|M(9(HbvV|a8cH$2#R@aZ{+?27yD@)&U6VsV27H(#f0wHkWZ#Yq$Z z?IAl?*~uva{jf*Ls@z|9cOww`EuNUCnIJ-&LS$C7d+m|jq&X5uXiMZy=%@)$)uzZN+(vo!w}(;$Bpg!#T7}nnFD^yZEW?g~90*{nwzOX)Qgch7g z6Au%&Yy@F7+Sgpkr6}A_Sa7#Yh^G2Oqj8%oIK2y3BJMd9s+*O{b3fueRHfoBvS*0J zFpF&#J1n?YaBa8>@wbo?;mU{+nVz-B!PG*HqS}c5UgC$Oe;lz9H2g9MejkoP_58XC q=x)%_#qXn-wr1^qyHLp4-B$MBm+$Q^{q@8^?kMEygf)s_@_zw+XY+Uf literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BufrStubImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BufrStubImagePlugin.py new file mode 100644 index 0000000..16d83c7 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BufrStubImagePlugin.py @@ -0,0 +1,72 @@ +# +# The Python Imaging Library +# $Id$ +# +# BUFR stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific BUFR image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + +def _accept(prefix): + return prefix[:4] == b"BUFR" or prefix[:4] == b"ZCZC" + + +class BufrStubImageFile(ImageFile.StubImageFile): + + format = "BUFR" + format_description = "BUFR" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(4)): + raise SyntaxError("Not a BUFR file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self.size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise IOError("BUFR save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(BufrStubImageFile.format, BufrStubImageFile, _accept) +Image.register_save(BufrStubImageFile.format, _save) + +Image.register_extension(BufrStubImageFile.format, ".bufr") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BufrStubImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/BufrStubImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ee8316e722694657d3d896cddbab922fce76997 GIT binary patch literal 2119 zcmb_d&2HpG5U#c-p7Cr#b^!%gWx?VAmQXSh2L!7XLWzh7T7}4?Jun$pK@A$1N{94!~6+R;HRi2 zS}2++T6i?`NEIW>22^oq=T%wd(b0>OB&zt1=;y2{YTX}> zW!KX#>$Anm`84{@%|`9TT<7*s)||y0g&jep%iYd1glFY|N-+!b6~x3Yx=B}c2bGKJ z;QJRz`uX$8c~#f#uaooB=aZxBvY*=P3wiH(eSKLqhuus25W9PQSsAPQ)oqXXScZy* zYf#t}P(FkLP>|sW$-MHYd$P8Dwx=<(;jCh5Suhx)%#LTr60>_wfVr;MWp(46Fz@;r zMkvklTz8h^bdOM$AM~I1OTOWhkI_EDFrPqZuoFat^hEmn(l;>w#oc5Y`&gPVkpv*N zcnCnhLjgc@{1kKfH$~Q4dE~fT_!XHi7#?5<{SQUWde;`cmIVqmf`d}j2wYHxa>_^! z#fcvEuUO7Q_Tv3h~`XYJc1=EJIR>Ub)7H~ z#p-od*axttFB_ZPeB1YJFB3-VD^V70p`E9CrKQl)y2U1@LEGs@a9eJvOUrS#Wofh( zm6z)N-pIh|N%_`Kp_sQJ$lLYaSG(RrKUAT&tpb%Z7ONrY<4`Sw$X-{92_qtQ@-Ax_ z_fdNZhx8@JlBSY2SN3U>Ep(b%&PSR8)$5u~#;a`mMP@DUb!u8@llN7}9VmGZZaH@o zq-b~R5(ziTk1@;$BJctgc;Tbmhrxp(6YRK(fE_q^H6pXmR6_MI#XZ{YKO+nJ`y0Mv z>3qQ41>eDA?&{dO>>mQUqe}LRHXq?=>8b|Ss((fen7wRyx`;X9n{8)pqpfS127vXV zpZ*}MP4=57P?0JD7?u3I69*5zcddK?*ZlAOc literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ContainerIO.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ContainerIO.py new file mode 100644 index 0000000..496ed68 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ContainerIO.py @@ -0,0 +1,116 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a class to read from a container file +# +# History: +# 1995-06-18 fl Created +# 1995-09-07 fl Added readline(), readlines() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +## +# A file object that provides read access to a part of an existing +# file (for example a TAR file). + + +class ContainerIO(object): + + def __init__(self, file, offset, length): + """ + Create file object. + + :param file: Existing file. + :param offset: Start of region, in bytes. + :param length: Size of region, in bytes. + """ + self.fh = file + self.pos = 0 + self.offset = offset + self.length = length + self.fh.seek(offset) + + ## + # Always false. + + def isatty(self): + return 0 + + def seek(self, offset, mode=0): + """ + Move file pointer. + + :param offset: Offset in bytes. + :param mode: Starting position. Use 0 for beginning of region, 1 + for current offset, and 2 for end of region. You cannot move + the pointer outside the defined region. + """ + if mode == 1: + self.pos = self.pos + offset + elif mode == 2: + self.pos = self.length + offset + else: + self.pos = offset + # clamp + self.pos = max(0, min(self.pos, self.length)) + self.fh.seek(self.offset + self.pos) + + def tell(self): + """ + Get current file pointer. + + :returns: Offset from start of region, in bytes. + """ + return self.pos + + def read(self, n=0): + """ + Read data. + + :param n: Number of bytes to read. If omitted or zero, + read until end of region. + :returns: An 8-bit string. + """ + if n: + n = min(n, self.length - self.pos) + else: + n = self.length - self.pos + if not n: # EOF + return "" + self.pos = self.pos + n + return self.fh.read(n) + + def readline(self): + """ + Read a line of text. + + :returns: An 8-bit string. + """ + s = "" + while True: + c = self.read(1) + if not c: + break + s = s + c + if c == "\n": + break + return s + + def readlines(self): + """ + Read multiple lines of text. + + :returns: A list of 8-bit strings. + """ + l = [] + while True: + s = self.readline() + if not s: + break + l.append(s) + return l diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ContainerIO.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ContainerIO.pyc new file mode 100644 index 0000000000000000000000000000000000000000..148b19b7c21348647d9cb3f3ff8d1183ae3e4e25 GIT binary patch literal 3016 zcmb_eZEq7t5Z*gGj?WDxfr_B2Qn!^Vxl-a3q)N!5^d&+l2tsr&YDp_u7vDNrbKbk& zuG<8`r=b3me(XQ$zvv(6Gqaa-LMTWCCp$O$HoN=GGqcrrhaMEegY_8|l;&?G??cEifl zZiCFE4e>G%yG@Zcxp#pZ7r3z{(iS%^igb~cwulGaHY|>s5L9TLO%!_z;&~vR3o*p5 zy#g6>3uJ>8mJ=Z+P3k%hL{J~a{tXKqS^YLkl{h8GI#V*=o2ZfNb?VN3k(9}lJNxqP zp|(z&eXjOi9g~m8R=K_$xTJJ4AInnh>)fnKZRFmOQ}*19OqqRmfEoH3mVVO&jSY+K z?gFGE9L5KZd{X4rwea;zv+8X+0?aD)v`b1=%f_tGL1UU7Q(qUw3ws0FhMN`}g)Y{$ zu`bE7_4|+G;mrpdJ37nqKQ?x@9&DWAK(9D*(FfnLbRj6|BV9FP71q^ zR)yCFT{_4%pUiK9M#XfT3-5`HXqz~9^d&S)3yFYN8qvY25R|-~KcRpi*wNEal%EoJ zz#8yt)f3EgxjW?UJKPPj&AX#H7vUO^9GY_+Q5e+G4)pBF$5zR&wbfsZ8f znX@`olG;)=MtVuB*qKL+CUR(UWEBdFP-Chyi#Zym$)W#h6El|xPi8tNFs2q)ISdGo zixMrS71mJfhY%uK3a$nyVHAEAoF_hQ*)wC%rTtk2QG;?%xf)u|MX&LAsobnIwl6DZ zkIQ^25vOm7mgJ=KWFSoD6S(e zUIfA{Gb(i}nlQuO<|IMm5j|D7aU4w=oYN6mCrQNqg;i=GW0j;bOfhel%Ow@Bds zC-`l^H;^TpHBjuKL}rL|a)eWdXRh40!x&SzaZ0d+Plxeh^nNU7icdQad4|xk99bvsK;pZh<tKD#x#m^aeRq1VmqH9UWGQ_ zC~NN+K` i8(m[0]) and i8(s[1]) > i8(m[1]): + m = s + # print("width", i8(s[0])) + # print("height", i8(s[1])) + # print("colors", i8(s[2])) + # print("reserved", i8(s[3])) + # print("hotspot x", i16(s[4:])) + # print("hotspot y", i16(s[6:])) + # print("bytes", i32(s[8:])) + # print("offset", i32(s[12:])) + if not m: + raise TypeError("No cursors were found") + + # load as bitmap + self._bitmap(i32(m[12:]) + offset) + + # patch up the bitmap height + self.size = self.size[0], self.size[1]//2 + d, e, o, a = self.tile[0] + self.tile[0] = d, (0, 0)+self.size, o, a + + return + + +# +# -------------------------------------------------------------------- + +Image.register_open(CurImageFile.format, CurImageFile, _accept) + +Image.register_extension(CurImageFile.format, ".cur") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/CurImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/CurImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf311b4ea87205e1ebad48264fd4909d205bf84a GIT binary patch literal 1799 zcmb_c-EQ1e5T0Xuy}S7*h*SYeT|_0TQnNHgh>HkS4ImX&QRGlnbwQT9K8{Z6KkTz4 zLAw$nT<`|G99O&o4*=hclaOoFm3KU6X3qGVneQC;@71NP=FeACy8L-~KPE-pA5bzp ziVC7qQLIR14rMMC4wWv&E|ng|UT^iN7*Od`>{B_Uctqux;wAV76faZe({Dua3S~pm z9-XXGt|%L^@q*}OyhhrklXcQ-bh5!xuh4}{immTlTC*`-I7qleN8vKCnSbyL6*RjB z(X^(rNj|Hl*3^|@d+4xp0P(a;kF|t7DH~ZF7PDhhg)T>MnE65i&BMd;{@+$Zn zQ|Kw1`N!CwFz(w>G)95;Lt>m5tV<{Xqrfbqz6{H?>_3mB%onE0>eDVj;;wF`6=S%$ zuhNQFNRC#V;88rzg}Pcw`U^!1hmdjZ5cF=3tj8aO{;Q%2J#=Z|(%J7kD(iDt=FuIv z@qG0|LksUlz5!d2Z|+j}3&&#Xk1q)g;e9@B!_5oS)Gyw6)L#3CH~syh_g^PMt{0s9 zFR~+MDAM&Pxxz8oB}qLNd~-#&;8*Mtj&EOT$PAjkp93bwv@Gz!eE|C2qs4$0J}ri{ z7}0z{S?^w^TXVo3QQlW8;d_|TQOH9*Fw7qrM^)P(4KSP_$Am4+B&0JNtjUt6-Mt5K zPzO_)S{Iz^RtI@Kt1`n04Kqd#NWTRu3RfZIG~^9t1YH+}D6LMjh&gBZuY1nwCTeh?Mm9t{H*&Ap^}jI^k!Y;AOcaH z=bg4z$`M(LG$J#RT4XIUeH$l>X`R%KuI@wWK7k---Q83xYTfnKZMCUez?n z1NW}lR)G`pHZTTzlPWEBl7K0^DC=xi@RIAv>$Xg--Mm(lOn1}PG<;=6cVPan0@42W z1rafnd-!+!UElGQ@5rsR13nytjNlSrKC`nH03(= 4 and i32(prefix) == MAGIC + + +## +# Image plugin for the Intel DCX format. + +class DcxImageFile(PcxImageFile): + + format = "DCX" + format_description = "Intel DCX" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # Header + s = self.fp.read(4) + if i32(s) != MAGIC: + raise SyntaxError("not a DCX file") + + # Component directory + self._offset = [] + for i in range(1024): + offset = i32(self.fp.read(4)) + if not offset: + break + self._offset.append(offset) + + self.__fp = self.fp + self.frame = None + self.seek(0) + + @property + def n_frames(self): + return len(self._offset) + + @property + def is_animated(self): + return len(self._offset) > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + self.frame = frame + self.fp = self.__fp + self.fp.seek(self._offset[frame]) + PcxImageFile._open(self) + + def tell(self): + return self.frame + + +Image.register_open(DcxImageFile.format, DcxImageFile, _accept) + +Image.register_extension(DcxImageFile.format, ".dcx") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/DcxImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/DcxImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..630f0f7025acdf3c091cf79b97941554cb5482fd GIT binary patch literal 2359 zcmcIlUvC>l5TCs}pZ_EwC8mb3BCZonRA+;zCm!Z!ajsHaEoeCWz~LGSQqE{{uf_I z`ta#sl;wH((_l1wIyhbhKg!Q%S#eNZxHb;zI7v+9_Mlo0hLqz>uQqe037h%D>z`rR zF@!-GkQt=M`AvK>s8fqe$rTF8pk}_*2CE&J23J$muO-`hR~22OXx!(3B=zH?Z*3Qo zVc|@^ivn zxx1Q5+qa+=rQ3};v)w5m&N#0OX6iHg$bx8EA#|eJ#A(Dz#2y^??D(Q^@$yMsmvvLa zayqrfNwd^(F*8VvD6T3~r0#8~`er$`UU@z(3nOQyb-XZgnKkCD&zG%c`4k)fAO9XkqSKNaje@kttO~0$Q)jbueK;8A$RaYf%&}##m8+xJosKi+KaVmU@ zm_!lp5My+gHH`mCmkwMMTEMc8p*MW--VAOVi#LN~`UkJc&bj=ramur1bzEeN*qQXn zjZnF-crZf3q7jr;0}GCJn|pW+4sk<^oP$!(K?5|uPxC;O7W3>ra{yhzgph}h-}0+c zFkI5En!8FT&rEU_ZNV7bVbNp3NJ*t4jw<3FXrSSm$>v)qoZK>mL(AMEwTZs!s&)0w zbzgB!1P^|JIM3@ec&Uj*wA*SXA(_eZui$?5@HW(E*t9OdNUa@%r1hdq&vTwKt*2#; zvN{H`QFUr;QfHOR%0lRT66bgg_V{R$m)2;rO!9M^y)aNt;_}DkDEGv!d)&1+)?=RfP>#{@9gh*e*?na!|MP5 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/DdsImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/DdsImagePlugin.py new file mode 100644 index 0000000..e755f94 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/DdsImagePlugin.py @@ -0,0 +1,172 @@ +""" +A Pillow loader for .dds files (S3TC-compressed aka DXTC) +Jerome Leclanche + +Documentation: + https://web.archive.org/web/20170802060935/http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ +""" + +import struct +from io import BytesIO +from . import Image, ImageFile + + +# Magic ("DDS ") +DDS_MAGIC = 0x20534444 + +# DDS flags +DDSD_CAPS = 0x1 +DDSD_HEIGHT = 0x2 +DDSD_WIDTH = 0x4 +DDSD_PITCH = 0x8 +DDSD_PIXELFORMAT = 0x1000 +DDSD_MIPMAPCOUNT = 0x20000 +DDSD_LINEARSIZE = 0x80000 +DDSD_DEPTH = 0x800000 + +# DDS caps +DDSCAPS_COMPLEX = 0x8 +DDSCAPS_TEXTURE = 0x1000 +DDSCAPS_MIPMAP = 0x400000 + +DDSCAPS2_CUBEMAP = 0x200 +DDSCAPS2_CUBEMAP_POSITIVEX = 0x400 +DDSCAPS2_CUBEMAP_NEGATIVEX = 0x800 +DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000 +DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000 +DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000 +DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000 +DDSCAPS2_VOLUME = 0x200000 + +# Pixel Format +DDPF_ALPHAPIXELS = 0x1 +DDPF_ALPHA = 0x2 +DDPF_FOURCC = 0x4 +DDPF_PALETTEINDEXED8 = 0x20 +DDPF_RGB = 0x40 +DDPF_LUMINANCE = 0x20000 + + +# dds.h + +DDS_FOURCC = DDPF_FOURCC +DDS_RGB = DDPF_RGB +DDS_RGBA = DDPF_RGB | DDPF_ALPHAPIXELS +DDS_LUMINANCE = DDPF_LUMINANCE +DDS_LUMINANCEA = DDPF_LUMINANCE | DDPF_ALPHAPIXELS +DDS_ALPHA = DDPF_ALPHA +DDS_PAL8 = DDPF_PALETTEINDEXED8 + +DDS_HEADER_FLAGS_TEXTURE = (DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | + DDSD_PIXELFORMAT) +DDS_HEADER_FLAGS_MIPMAP = DDSD_MIPMAPCOUNT +DDS_HEADER_FLAGS_VOLUME = DDSD_DEPTH +DDS_HEADER_FLAGS_PITCH = DDSD_PITCH +DDS_HEADER_FLAGS_LINEARSIZE = DDSD_LINEARSIZE + +DDS_HEIGHT = DDSD_HEIGHT +DDS_WIDTH = DDSD_WIDTH + +DDS_SURFACE_FLAGS_TEXTURE = DDSCAPS_TEXTURE +DDS_SURFACE_FLAGS_MIPMAP = DDSCAPS_COMPLEX | DDSCAPS_MIPMAP +DDS_SURFACE_FLAGS_CUBEMAP = DDSCAPS_COMPLEX + +DDS_CUBEMAP_POSITIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEX +DDS_CUBEMAP_NEGATIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEX +DDS_CUBEMAP_POSITIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEY +DDS_CUBEMAP_NEGATIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEY +DDS_CUBEMAP_POSITIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEZ +DDS_CUBEMAP_NEGATIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEZ + + +# DXT1 +DXT1_FOURCC = 0x31545844 + +# DXT3 +DXT3_FOURCC = 0x33545844 + +# DXT5 +DXT5_FOURCC = 0x35545844 + + +# dxgiformat.h + +DXGI_FORMAT_BC7_TYPELESS = 97 +DXGI_FORMAT_BC7_UNORM = 98 +DXGI_FORMAT_BC7_UNORM_SRGB = 99 + + +class DdsImageFile(ImageFile.ImageFile): + format = "DDS" + format_description = "DirectDraw Surface" + + def _open(self): + magic, header_size = struct.unpack("{DJK96Y>L+uWonqvd4=_5M8QUk6U%C>Q=SV{~pdx zcK-P*i{if?e6QdMloXLoqys8sr^r=E2ZH}JxhZO;Nl%kv_mJI7ZV$D3N$;grhV%@m z`069@^nSAYNFN}(pY$x*1Edd_O6p$sQv88rj37k4WyQ7lYN8q8L}rxzbP%wN{hFo#oJ_0l75HmDbnvsiz7SCgL;6oi^phB%RguLr1nC?J`1_Cqy!#mm zoa5&t;O}QFravMG>T@LEZ=S>`i81KRGo~+)7$qUu809%sSB(TpVHU(^1V$;CB zkk|~c$7D~F{)Frq(!V78Ch1Sfo+bSkWW(2IWaC_4k$s0mh7L2-K%(x_JEFHlFZJhS ztGv*^CecfWDSlTTm;G>w2$M*E4P5 zs}0Xr=WIJr8;&aiHCJ1z7av((tK*9x5VmR_nQCdTUVNDSM)+P!sGGua&9-$Q)Mtm1 zvf@h0oOSR#n=N_PaZ9vAGjzQ6)2ylrZWd8@*Uqh6jm7Iy{7vpFk2m0SQ1h1Ohn5@xe?cxid<5Do>Z*HFU)CpxHV`a(SrzSw`G`oa|^AJu6?K&YML zeb=#6+iRJiac{1j-Xd3z*_IgYJR~e1|1kOj;tnRITOU5rt_0oF*9KZ^uWbOTPJ9 ztsVOf(-Ic%JA;P*YyHMGPt(J4%)=_pNpkwVz* zVagA&v1qp^@u#0od!#c1yahXx zrfx5FGt}*)Q~cvD!!aTQ9W^VF{*UVRQ+I&6*+gbA*?%bBzdM+)h7(pQF^xD3QTL4A z%k=KGME+VLKa$A9&k^d5QujJ_$EZ6l1K3MbUG!^EC+HN-{W=|`$p5_pgpYw?0MQ9* zD++VRCHJoikeGWza{ncDCnWbD3i^A@os`_aOYW59zDu3L+z35}RSxi3dLuV+g306r z3Y|{Am-#8`PSfcWg^1Z82m2^P{%Q*CHa0oKCcphdie-kR$!{-kF{WcwfIIK~BSt)OpYqfCV1I*oR2!@=|t7?*C z)Q}SCk<&7qcEbzDA-e5_+Ifs3Pi1#Ri_LNSlO6`bZOGVSAUGBZoG7XQLmq;Y9YKW+w=FzTjm*_^*U5cjz>v zNtWp}&Nps&$G&Ar@qKLP9k(MZ$aZiftu)WD{WHvzSQdNPW@s8gX!>EuHQ1Ia_DP6J zT~_P2XcoxtGc+8AuG^ za~Wn+)5<+)C7kQf%P7NmvT2LUlOH~z9BG_soBIP(wxhGKK$UNgtk{kh{6CJ!G2?eW zBM{=~&sYR(hLjxNBbhbBXqzoz7-*nqTL$jLvCB&qh;IZB>IgM#5m>&{;rG1iGRW1( z0OyYWZwaaLRc+!4`T;VCbS5?M#Nrt7!=B6NT?2wHiuVi^ZyA_RwH#}1%eEcx$ao22Ac zw7v3X)WXh*TUuqSP$};0Zr8(+L~>KxE*GjbO)sBsRw`GpcPzqg7{#5f%4T`*60MGx z@!e_}gHalla*>I|B$F16;_hl0cB39ys$C))m7SVa*Ir<2*+Q?fx6A8=kFXQ%mmk;u z0d}ITe_UI?c-Dm>T`KRDOHbrglnfpgQ9L09JKA<(yLgtFWFKzBTre!nmnFsvAy*nN&NbuYoKp%( zfklp=>BFTb(e#7mkv+Eh6);&U(a&n(%Q0Ae z%4F{LXJq{Ny*h7Y3;prkldJVvG-aN%>%ngTGN~bDRGI9_q-EFV&L4fEHKypL&qb+T k=I~VJCzBdf`Vv{z;`s}h1&lvzBb||2ne@!cK+mM|Uuy<38~^|S literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/EpsImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/EpsImagePlugin.py new file mode 100644 index 0000000..1ae7865 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/EpsImagePlugin.py @@ -0,0 +1,429 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EPS file handling +# +# History: +# 1995-09-01 fl Created (0.1) +# 1996-05-18 fl Don't choke on "atend" fields, Ghostscript interface (0.2) +# 1996-08-22 fl Don't choke on floating point BoundingBox values +# 1996-08-23 fl Handle files from Macintosh (0.3) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2003-09-07 fl Check gs.close status (from Federico Di Gregorio) (0.5) +# 2014-05-07 e Handling of EPS with binary preview and fixed resolution +# resizing +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import re +import io +import os +import sys +from . import Image, ImageFile +from ._binary import i32le as i32 +from ._util import py3 + +__version__ = "0.5" + +# +# -------------------------------------------------------------------- + +split = re.compile(r"^%%([^:]*):[ \t]*(.*)[ \t]*$") +field = re.compile(r"^%[%!\w]([^:]*)[ \t]*$") + +gs_windows_binary = None +if sys.platform.startswith('win'): + import shutil + if hasattr(shutil, 'which'): + which = shutil.which + else: + # Python < 3.3 + import distutils.spawn + which = distutils.spawn.find_executable + for binary in ('gswin32c', 'gswin64c', 'gs'): + if which(binary) is not None: + gs_windows_binary = binary + break + else: + gs_windows_binary = False + + +def has_ghostscript(): + if gs_windows_binary: + return True + if not sys.platform.startswith('win'): + import subprocess + try: + with open(os.devnull, 'wb') as devnull: + subprocess.check_call(['gs', '--version'], stdout=devnull) + return True + except OSError: + # no ghostscript + pass + return False + + +def Ghostscript(tile, size, fp, scale=1): + """Render an image using Ghostscript""" + + # Unpack decoder tile + decoder, tile, offset, data = tile[0] + length, bbox = data + + # Hack to support hi-res rendering + scale = int(scale) or 1 + # orig_size = size + # orig_bbox = bbox + size = (size[0] * scale, size[1] * scale) + # resolution is dependent on bbox and size + res = (float((72.0 * size[0]) / (bbox[2]-bbox[0])), + float((72.0 * size[1]) / (bbox[3]-bbox[1]))) + # print("Ghostscript", scale, size, orig_size, bbox, orig_bbox, res) + + import subprocess + import tempfile + + out_fd, outfile = tempfile.mkstemp() + os.close(out_fd) + + infile_temp = None + if hasattr(fp, 'name') and os.path.exists(fp.name): + infile = fp.name + else: + in_fd, infile_temp = tempfile.mkstemp() + os.close(in_fd) + infile = infile_temp + + # ignore length and offset! + # ghostscript can read it + # copy whole file to read in ghostscript + with open(infile_temp, 'wb') as f: + # fetch length of fp + fp.seek(0, 2) + fsize = fp.tell() + # ensure start position + # go back + fp.seek(0) + lengthfile = fsize + while lengthfile > 0: + s = fp.read(min(lengthfile, 100*1024)) + if not s: + break + lengthfile -= len(s) + f.write(s) + + # Build ghostscript command + command = ["gs", + "-q", # quiet mode + "-g%dx%d" % size, # set output geometry (pixels) + "-r%fx%f" % res, # set input DPI (dots per inch) + "-dBATCH", # exit after processing + "-dNOPAUSE", # don't pause between pages, + "-dSAFER", # safe mode + "-sDEVICE=ppmraw", # ppm driver + "-sOutputFile=%s" % outfile, # output file + "-c", "%d %d translate" % (-bbox[0], -bbox[1]), + # adjust for image origin + "-f", infile, # input file + "-c", "showpage", # showpage (see: https://bugs.ghostscript.com/show_bug.cgi?id=698272) + ] + + if gs_windows_binary is not None: + if not gs_windows_binary: + raise WindowsError('Unable to locate Ghostscript on paths') + command[0] = gs_windows_binary + + # push data through ghostscript + try: + with open(os.devnull, 'w+b') as devnull: + subprocess.check_call(command, stdin=devnull, stdout=devnull) + im = Image.open(outfile) + im.load() + finally: + try: + os.unlink(outfile) + if infile_temp: + os.unlink(infile_temp) + except OSError: + pass + + return im.im.copy() + + +class PSFile(object): + """ + Wrapper for bytesio object that treats either CR or LF as end of line. + """ + def __init__(self, fp): + self.fp = fp + self.char = None + + def seek(self, offset, whence=0): + self.char = None + self.fp.seek(offset, whence) + + def readline(self): + s = self.char or b"" + self.char = None + + c = self.fp.read(1) + while c not in b"\r\n": + s = s + c + c = self.fp.read(1) + + self.char = self.fp.read(1) + # line endings can be 1 or 2 of \r \n, in either order + if self.char in b"\r\n": + self.char = None + + return s.decode('latin-1') + + +def _accept(prefix): + return prefix[:4] == b"%!PS" or \ + (len(prefix) >= 4 and i32(prefix) == 0xC6D3D0C5) + +## +# Image plugin for Encapsulated Postscript. This plugin supports only +# a few variants of this format. + + +class EpsImageFile(ImageFile.ImageFile): + """EPS File Parser for the Python Imaging Library""" + + format = "EPS" + format_description = "Encapsulated Postscript" + + mode_map = {1: "L", 2: "LAB", 3: "RGB", 4: "CMYK"} + + def _open(self): + (length, offset) = self._find_offset(self.fp) + + # Rewrap the open file pointer in something that will + # convert line endings and decode to latin-1. + try: + if py3: + # Python3, can use bare open command. + fp = open(self.fp.name, "Ur", encoding='latin-1') + else: + # Python2, no encoding conversion necessary + fp = open(self.fp.name, "Ur") + except: + # Expect this for bytesio/stringio + fp = PSFile(self.fp) + + # go to offset - start of "%!PS" + fp.seek(offset) + + box = None + + self.mode = "RGB" + self.size = 1, 1 # FIXME: huh? + + # + # Load EPS header + + s_raw = fp.readline() + s = s_raw.strip('\r\n') + + while s_raw: + if s: + if len(s) > 255: + raise SyntaxError("not an EPS file") + + try: + m = split.match(s) + except re.error as v: + raise SyntaxError("not an EPS file") + + if m: + k, v = m.group(1, 2) + self.info[k] = v + if k == "BoundingBox": + try: + # Note: The DSC spec says that BoundingBox + # fields should be integers, but some drivers + # put floating point values there anyway. + box = [int(float(i)) for i in v.split()] + self.size = box[2] - box[0], box[3] - box[1] + self.tile = [("eps", (0, 0) + self.size, offset, + (length, box))] + except: + pass + + else: + m = field.match(s) + if m: + k = m.group(1) + + if k == "EndComments": + break + if k[:8] == "PS-Adobe": + self.info[k[:8]] = k[9:] + else: + self.info[k] = "" + elif s[0] == '%': + # handle non-DSC Postscript comments that some + # tools mistakenly put in the Comments section + pass + else: + raise IOError("bad EPS header") + + s_raw = fp.readline() + s = s_raw.strip('\r\n') + + if s and s[:1] != "%": + break + + # + # Scan for an "ImageData" descriptor + + while s[:1] == "%": + + if len(s) > 255: + raise SyntaxError("not an EPS file") + + if s[:11] == "%ImageData:": + # Encoded bitmapped image. + x, y, bi, mo = s[11:].split(None, 7)[:4] + + if int(bi) != 8: + break + try: + self.mode = self.mode_map[int(mo)] + except ValueError: + break + + self.size = int(x), int(y) + return + + s = fp.readline().strip('\r\n') + if not s: + break + + if not box: + raise IOError("cannot determine EPS bounding box") + + def _find_offset(self, fp): + + s = fp.read(160) + + if s[:4] == b"%!PS": + # for HEAD without binary preview + fp.seek(0, 2) + length = fp.tell() + offset = 0 + elif i32(s[0:4]) == 0xC6D3D0C5: + # FIX for: Some EPS file not handled correctly / issue #302 + # EPS can contain binary data + # or start directly with latin coding + # more info see: + # https://web.archive.org/web/20160528181353/http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf + offset = i32(s[4:8]) + length = i32(s[8:12]) + else: + raise SyntaxError("not an EPS file") + + return (length, offset) + + def load(self, scale=1): + # Load EPS via Ghostscript + if not self.tile: + return + self.im = Ghostscript(self.tile, self.size, self.fp, scale) + self.mode = self.im.mode + self.size = self.im.size + self.tile = [] + + def load_seek(self, *args, **kwargs): + # we can't incrementally load, so force ImageFile.parser to + # use our custom load method by defining this method. + pass + + +# +# -------------------------------------------------------------------- + +def _save(im, fp, filename, eps=1): + """EPS Writer for the Python Imaging Library.""" + + # + # make sure image data is available + im.load() + + # + # determine postscript image mode + if im.mode == "L": + operator = (8, 1, "image") + elif im.mode == "RGB": + operator = (8, 3, "false 3 colorimage") + elif im.mode == "CMYK": + operator = (8, 4, "false 4 colorimage") + else: + raise ValueError("image mode is not supported") + + class NoCloseStream(object): + def __init__(self, fp): + self.fp = fp + + def __getattr__(self, name): + return getattr(self.fp, name) + + def close(self): + pass + + base_fp = fp + if fp != sys.stdout: + fp = NoCloseStream(fp) + if sys.version_info.major > 2: + fp = io.TextIOWrapper(fp, encoding='latin-1') + + if eps: + # + # write EPS header + fp.write("%!PS-Adobe-3.0 EPSF-3.0\n") + fp.write("%%Creator: PIL 0.1 EpsEncode\n") + # fp.write("%%CreationDate: %s"...) + fp.write("%%%%BoundingBox: 0 0 %d %d\n" % im.size) + fp.write("%%Pages: 1\n") + fp.write("%%EndComments\n") + fp.write("%%Page: 1 1\n") + fp.write("%%ImageData: %d %d " % im.size) + fp.write("%d %d 0 1 1 \"%s\"\n" % operator) + + # + # image header + fp.write("gsave\n") + fp.write("10 dict begin\n") + fp.write("/buf %d string def\n" % (im.size[0] * operator[1])) + fp.write("%d %d scale\n" % im.size) + fp.write("%d %d 8\n" % im.size) # <= bits + fp.write("[%d 0 0 -%d 0 %d]\n" % (im.size[0], im.size[1], im.size[1])) + fp.write("{ currentfile buf readhexstring pop } bind\n") + fp.write(operator[2] + "\n") + if hasattr(fp, "flush"): + fp.flush() + + ImageFile._save(im, base_fp, [("eps", (0, 0)+im.size, 0, None)]) + + fp.write("\n%%%%EndBinary\n") + fp.write("grestore end\n") + if hasattr(fp, "flush"): + fp.flush() + +# +# -------------------------------------------------------------------- + + +Image.register_open(EpsImageFile.format, EpsImageFile, _accept) + +Image.register_save(EpsImageFile.format, _save) + +Image.register_extensions(EpsImageFile.format, [".ps", ".eps"]) + +Image.register_mime(EpsImageFile.format, "application/postscript") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/EpsImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/EpsImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0cd055061dfd5a34be479106bb566e7cf931a3a5 GIT binary patch literal 10286 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Μj^~Rm5++ia=rto~Sm`2WJ z%xITTbMEIc%stR-ijlX&E`1)$Zo4e)$3=F0qFGLjInZqSylOGZV~WPEph|BfY8J&H zu8npjO$>+{QyxyStJ0p5n-cEJ!}a#4|DZP5)l}(<*ppefb$=Y%^>)qk+8XRy+T!vh zRd->;g1h&udmc-JJ(?CSP$Lc$et(+K$BfEh9v?lrOqGWuyZ%twd1}vIyCLnq$qR7~ zESt1s*kjWNQcJvD9!HrTOy&G&rXEidJ=o-pn4k?8^m4v}Dr+~=z#xbN1SQd3&pQwT zk=;b&n9B~yxXrYsY30syCs3iI;_GZvu^RMvVymI8r-cJ+#J1R2#5o1uOyVy_4K%SJ zVXWd0#i6i;B8w-I26;A!!#vJnp502Fvl!iZ^Io69*>W2V?$|Z9s_n&MwS)s*IjXn& z{;R#go=v-pY}}{LtfG@>Bp%8+=_`A@A&z0RNS#Xq9hdIkXuy5J6{;(r$LMBp6^%@- zMnuz~X$*{Kuck&fbb8?dBh*5B4MmQs(S=KUHk+Qnucd|ajV-v~C6+ie?RB)%;rN&W zM@Kb}9;C?~VPn$~&tA_4+*{(J5`UN*y@A>LXy%@ML>lF7f0^5bv5&CLQnX1%Rg-ID zjUHtq7Zh%GNmJ*($I>CVxb87Y-ZfSbve-laO*5TU`^@7MSuqoFN7dxL2p>;S%|iP` z+T#&ctZBV{^1qoI>{B#zA(E$iarBQrQ$0;fydAi^Q42mbNe+8zVZ=Uj*i&Qow`XZ# zeB)xu4IwQk^B(+9dV`%$oy(2I8nkA}IU+v4I)5#o-F-?u!k+Fm3)zI>nskxu)uDTS z5smTpDA#{##JL0cU>DQOl}etiISekLi5Z!g(kqi)N&}~ev~as*($})|RfnZbVqQ)& zJ&p5%`!H4X3kO`OUqK5efKR3IP0)CQrqy#F*;dk6v-lmpf52^WZt>SWua!mRXj&Of z-IW5)0v)(8)Z5dK6dP>gk>VEHMUk7Ci`67Rte2{|>?TWqgAH26PJ!Bioj9tBL1tNe z5{idVquUHcx|X7k<3-xKjt0K5)?mj`rNf~%7RUPL(Zx-#Mz<3vCSCAeg4<20Vkc7N zu7#$^9ehg17t7GH$h%_&Wqi>_LFXYOeOV_;6_VbaV_DVQrxG-6?#`v}jc@muC|~I| z4R*yVzvb)FX806UI6!}J8fh~pTKd7|86Ipe^*7r9msi~O*qY&zI;z%Y8M0~LECd*O z$ue2fo^Vo)YS)3`mG)F?vkWa4e4G~_s$CBzj*HpDjg~3v5+|`V@d#GNN4q}D3Y>b7 zJtij0({%0d(hEADVTRWZFSS{g<8*k4z~sO6B)1mU;j~BYE8MHyw^ZDfm(iBQ0aG`Q zgXOjFv3>5_8}I9O1r78C=Ch;bOI=G4;Ig?AhOYH4Y#EHbjcxh#dk_ErdT46wPq+y` zH%Fz)=8COswB<1Jip7mPclDgt(6Kp(|77D2ZO*lKZ02pU*Xs{ARYqJ$oLusyS~RC} a7~!dSTV35m{r~^_zv+P~6YBn#YyUsx%?uX+ literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FitsStubImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FitsStubImagePlugin.py new file mode 100644 index 0000000..be926ca --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FitsStubImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library +# $Id$ +# +# FITS stub adapter +# +# Copyright (c) 1998-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific FITS image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:6] == b"SIMPLE" + + +class FITSStubImageFile(ImageFile.StubImageFile): + + format = "FITS" + format_description = "FITS" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(6)): + raise SyntaxError("Not a FITS file") + + # FIXME: add more sanity checks here; mandatory header items + # include SIMPLE, BITPIX, NAXIS, etc. + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self.size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise IOError("FITS save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(FITSStubImageFile.format, FITSStubImageFile, _accept) +Image.register_save(FITSStubImageFile.format, _save) + +Image.register_extensions(FITSStubImageFile.format, [".fit", ".fits"]) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FitsStubImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FitsStubImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eba21b6246394deba661e7d08354c23683236273 GIT binary patch literal 2116 zcmb_dU2o%55S{C!Nt|uzF1sop>O#Z=L|V0xctB!7fIwRjR7&N*1LeW;+Be0iV_Uwr z&|NJ&P<{iyj(@=);GA*NEaI_iidt+mfuKN>8$`*gzJ2nH$NrXuKBr@oXSjPfvtmjVy*@ z2eP*RELJUPm}oB7M9TKQ>ld7hVt^)r7L-iU zYxfwIP)Yv=6mAui*Ps9t^m&AqUIf6m1Jg;~gY*=$>9?oHPc*qUZyM{y&hx9*i0y6D zCKPd!rndI)Fq&p-JToWuH-&0rVbq7Peu?GYhp-?ccn2A%?64#<^d+iBZEe1b^9-wK zuv#uf<98@PV}YL`eSb6JgSACNUc+w0eI$qiz@YzOq`dLkk{5cwU@Q{;oPt0zrUHTuF?d!fp*%4}=NpIe=(xTxSnw5r;c%8QjtF;{9-^SQHL zRUWm?D)9h~D?Sv)_woT8Z#A3a)eN5F8L|WUqi-?HsqX*Qm zUd5nAOz9J>6;-uu?Tp7|vb1sR*^f8|s+R?~?CZR0mWlWDZPhrlE^YFf*G=>W%o=x- zq-wXj5~2aZzK7+g^n#x01>u9VgAErUQ|vfNzz!U|7>L^^l`ui1cp%%&Bk`brXTx_K zU3AG^@EttnMGn{5nDI^&^p+~gFV?*an_i&~yY*!`D#7g4{bsW<8@_QnsY>hH`_Tcg zM)m1;%GzijM_V$oxA`(6trdGt2+`jFcsuOcDPY#0;}ec86ti!3jboXIbKJqqTa}YB zuTsE*I#iH@(L)NR8PTI1#~o<@xzV&m5qsqM?&kg`|D(76XJ$VB{>umLmA9n>huo%e i)oxin8S`n&;Lo<9JN|pw3woV!C+xoUFbwz1{or5JJhd7C literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FliImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FliImagePlugin.py new file mode 100644 index 0000000..2c190b6 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FliImagePlugin.py @@ -0,0 +1,163 @@ +# +# The Python Imaging Library. +# $Id$ +# +# FLI/FLC file handling. +# +# History: +# 95-09-01 fl Created +# 97-01-03 fl Fixed parser, setup decoder tile +# 98-07-15 fl Renamed offset attribute to avoid name clash +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, i32le as i32, o8 + +__version__ = "0.2" + + +# +# decoder + +def _accept(prefix): + return len(prefix) >= 6 and i16(prefix[4:6]) in [0xAF11, 0xAF12] + + +## +# Image plugin for the FLI/FLC animation format. Use the seek +# method to load individual frames. + +class FliImageFile(ImageFile.ImageFile): + + format = "FLI" + format_description = "Autodesk FLI/FLC Animation" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # HEAD + s = self.fp.read(128) + magic = i16(s[4:6]) + if not (magic in [0xAF11, 0xAF12] and + i16(s[14:16]) in [0, 3] and # flags + s[20:22] == b"\x00\x00"): # reserved + raise SyntaxError("not an FLI/FLC file") + + # frames + self.__framecount = i16(s[6:8]) + + # image characteristics + self.mode = "P" + self.size = i16(s[8:10]), i16(s[10:12]) + + # animation speed + duration = i32(s[16:20]) + if magic == 0xAF11: + duration = (duration * 1000) // 70 + self.info["duration"] = duration + + # look for palette + palette = [(a, a, a) for a in range(256)] + + s = self.fp.read(16) + + self.__offset = 128 + + if i16(s[4:6]) == 0xF100: + # prefix chunk; ignore it + self.__offset = self.__offset + i32(s) + s = self.fp.read(16) + + if i16(s[4:6]) == 0xF1FA: + # look for palette chunk + s = self.fp.read(6) + if i16(s[4:6]) == 11: + self._palette(palette, 2) + elif i16(s[4:6]) == 4: + self._palette(palette, 0) + + palette = [o8(r)+o8(g)+o8(b) for (r, g, b) in palette] + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + # set things up to decode first frame + self.__frame = -1 + self.__fp = self.fp + self.__rewind = self.fp.tell() + self.seek(0) + + def _palette(self, palette, shift): + # load palette + + i = 0 + for e in range(i16(self.fp.read(2))): + s = self.fp.read(2) + i = i + i8(s[0]) + n = i8(s[1]) + if n == 0: + n = 256 + s = self.fp.read(n * 3) + for n in range(0, len(s), 3): + r = i8(s[n]) << shift + g = i8(s[n+1]) << shift + b = i8(s[n+2]) << shift + palette[i] = (r, g, b) + i += 1 + + @property + def n_frames(self): + return self.__framecount + + @property + def is_animated(self): + return self.__framecount > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0) + + for f in range(self.__frame + 1, frame + 1): + self._seek(f) + + def _seek(self, frame): + if frame == 0: + self.__frame = -1 + self.__fp.seek(self.__rewind) + self.__offset = 128 + + if frame != self.__frame + 1: + raise ValueError("cannot seek to frame %d" % frame) + self.__frame = frame + + # move to next frame + self.fp = self.__fp + self.fp.seek(self.__offset) + + s = self.fp.read(4) + if not s: + raise EOFError + + framesize = i32(s) + + self.decodermaxblock = framesize + self.tile = [("fli", (0, 0)+self.size, self.__offset, None)] + + self.__offset += framesize + + def tell(self): + return self.__frame + + +# +# registry + +Image.register_open(FliImageFile.format, FliImageFile, _accept) + +Image.register_extensions(FliImageFile.format, [".fli", ".flc"]) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FliImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FliImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e1917ec12c46965c7b88191d2ce83b272263e722 GIT binary patch literal 4510 zcmcIn-*X&C5$@T&JL&Yp`Ylx*)}YvbDb5lSkUy zJ?*aSGbL3KoIik9c%^vePvIZnkq4@%JW#yxVDf!EcPEFK7ZB1--%QU;PfvHx*M0s! zW~WyBfBtz#hJQ7D{{XH0El7-ykyNB-q-~_G?|eXkWcRX zkQ+}(JShjByzn5lDUVuH(9Rl=mJd?ZK_2v?gQRMXdOJ2vs+rMfFT$uwS~afrKRn4}DZwuM5o8ghr7C=VSn<#_$@Cj~wRmvF&HWm!x%c4V=1ywWD0}J2fz599pH~yu7)G5=(yy+fTT%@% zYNpX*+O0!2|2Y2)HDT9fxqARTni8*2t?m64IjhO(=+pJ(Gf$3R%31vt z!%T1~41;jx`BNiB#}&Gw6H`aQuh;?fxM{A)4jDhXj`K+VK0fOMGD-yp!EP@{*3G0-pUVWY`_fa5_FI^tD(bnU%kT{F7vwOZmX{wFN)?2)G8$zwq}ucskdvMaAG2 zk#4`L;j2iZI8aR}^U?FHiUuDSMP5|v7>BPSOBi;GsF!r|ldRIcJ-lu0l=hd2gTC8a z%CK2CS7a`t48XqfO;LHbTLRU2a@cnOAJDkL_*O;qOl2MBHdF8$E~{wZ*C|#lyk^4P zvP#nQby^h3Gn>Wk4oPz40E}iSleDY8DfJpiPqq`#+scfBYol(Vj02^QTj2h$Fi$)T z^L~t@WN z=`bi6U$pLhwDK}y3FrYd8cZ7m4s<6dAio2ukf-r(^s~MHH^rl`&k>A#fywyNjjUts z8bl2lzB2H3@nkVe2z<(X0uCPd_!!RCWf^-RZtywNGFHRX?%iSzWyJRW0rxq{*ukTK z{r3P1V;?#fT za;b#s|%06T|u=K_n(fF#-EILjj##0S?acb8UkW}&ipq#>M8Ae*HBr&3M ztRD}juL%;W-xGA4eh4f?DBzxf#3<9mc?68z(mt}Qt}u8BgH1xWTftbxa(*FUZSOA$ ziyVD*2zQ7y$Da(NlP3?OlUH{oF|`d#z*pFLl5~y&<}5`mWooo)rL94!6N=*+e%%Z3 zW$qFEQX<9W>nGrE$~HnGnAk+{Lxl;BOGl)f73L zIRO(jSv&HjKe)G8Wi4%F^o&cPRNrV2Ct zUql?;hQQC!$_)@vv_hWqmVi`Ef5t2!zcozLoAH|Ft#hQHE%hb-2khc=xKQj0u0!JQ z(1t(3)FG~t2{RN(VW>_BL)1qnDThod-5f@)Dkclp4e`UMQ`kO#4e6`giBgnA6drcc zyiCGm&`D29`!or={V?iQNfD-b6x-||_%2o{&g;4T0tG`+JrCX``#lnk3K~?kJ@=0G z{_7v10kP(7w2~R2;WglphS$8)T%4=T)tb%bddb+ig{U2MI=d~+lB|*gGzsW1SLV@U z;bWUc#dDWHx!Gk_rp WIDTH: + lines += 1 + w = (src[2] - src[0]) + maxwidth = max(maxwidth, w) + + xsize = maxwidth + ysize = lines * h + + if xsize == 0 and ysize == 0: + return "" + + self.ysize = h + + # paste glyphs into bitmap + self.bitmap = Image.new("1", (xsize, ysize)) + self.metrics = [None] * 256 + x = y = 0 + for i in range(256): + glyph = self[i] + if glyph: + d, dst, src, im = glyph + xx = src[2] - src[0] + # yy = src[3] - src[1] + x0, y0 = x, y + x = x + xx + if x > WIDTH: + x, y = 0, y + h + x0, y0 = x, y + x = xx + s = src[0] + x0, src[1] + y0, src[2] + x0, src[3] + y0 + self.bitmap.paste(im.crop(src), s) + # print(chr(i), dst, s) + self.metrics[i] = d, dst, s + + def save(self, filename): + "Save font" + + self.compile() + + # font data + self.bitmap.save(os.path.splitext(filename)[0] + ".pbm", "PNG") + + # font metrics + with open(os.path.splitext(filename)[0] + ".pil", "wb") as fp: + fp.write(b"PILfont\n") + fp.write((";;;;;;%d;\n" % self.ysize).encode('ascii')) # HACK!!! + fp.write(b"DATA\n") + for id in range(256): + m = self.metrics[id] + if not m: + puti16(fp, [0] * 10) + else: + puti16(fp, m[0] + m[1] + m[2]) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FontFile.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FontFile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e5e816410f8fed69812d139a6d2d2a5c5eb3f8c5 GIT binary patch literal 2878 zcmbtW&u`pR5T0jyH@ll`eznauDwQGxWe>EQRH7VO5T#L}sES&rD3DT_&Dz^KwY|>T zX*S3{wMQf_+_)hA1^x{F1&-V}a)Jwd-+0?X;Y3#Z-kUdX-n@A;-^{c9Tf4QA{(OHR z)1Qs;12K}_2jSyyBoc{@>>4qgTM}8aYl&}*??_}z?8vSoaZPq>kibwEzb?;2c4x$& zk)R<%BYuONry`&4HmPH~+l2n`PyD(DR6dU`9fwKo4G)t+9*&Z&kPBUlt2K1D;{L-R zp8@6Vg-L&W9InCG0oQ4?gLZ?4Z-SV-CxwyC2k%H}NdaSxJQf*WP}-7r!A(R8k$osP zvadob6?3rM)|cCB1>$29RnYcdGorbssx2 z{y_?0!$y8MuL@QfL)|vjP@gRaUH*5#DqGx&b5EDEQnZMx$CiwLkz)2Gjk2&!)8G|b z0E&I!Z-&wk8mdk%Y0V+H8Wp%uMd*q-DcdsnT>yEkAW=6T{3_)WCi=&V&f8?O4^(|J<`6;If3k8u+nTl+M)E#ZpDm z$x|-l0PYZRTAl`ZzbQpi_HlK+OR-FknxZZR9I`A!I2pwW^t@a<=o$QX2nwy58Oy+p zanR3$wK&Mf;UHVYbIz=wCb!HPvtrdv%Q|Zut7)Gzi{PC?qs%hu zb_-HV*wZwZ&1;s{D0;4irj_6i5DdOPmxh!+Q1HdRrVKC%^aBm6KwbygO5`Ax|0Uo+ zphkgjzMsB?z!cID3JkKC6JQKSG-L&ktP<;Qi%pfBc#A>Ed@?L8-!s-S8rawcfF-~ z5K>ORGc--Mx~%=~+w2Hk1#$*E^o&ua^Ry4t^3BQ82!(x;D|eIziOVc<6`HK;K{6Qm zfy-=l&$8nteO#-Q;B*K?CH**XX_uaYq+qVZCjzWXlzxep(HgN^_FMJ^VD3EHDaC8Y z+Un8(y@}`12G2v3`C`Q*|1iQ-lU*I*^7G7HWT(!d`j-YO^*_FBT!#4#G!0kXs$0!k z({8SJX~xu+;bDF_rY&HJyTNXW9et#qVD1@GdKEf-w6`A&a@Blt1Jya#DtElkW7W__ LYmO;yH)sC>m3IA* literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FpxImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FpxImagePlugin.py new file mode 100644 index 0000000..d7bba42 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FpxImagePlugin.py @@ -0,0 +1,229 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library. +# $Id$ +# +# FlashPix support for PIL +# +# History: +# 97-01-25 fl Created (reads uncompressed RGB images only) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from __future__ import print_function + +from . import Image, ImageFile +from ._binary import i32le as i32, i8 + +import olefile + +__version__ = "0.1" + +# we map from colour field tuples to (mode, rawmode) descriptors +MODES = { + # opacity + (0x00007ffe): ("A", "L"), + # monochrome + (0x00010000,): ("L", "L"), + (0x00018000, 0x00017ffe): ("RGBA", "LA"), + # photo YCC + (0x00020000, 0x00020001, 0x00020002): ("RGB", "YCC;P"), + (0x00028000, 0x00028001, 0x00028002, 0x00027ffe): ("RGBA", "YCCA;P"), + # standard RGB (NIFRGB) + (0x00030000, 0x00030001, 0x00030002): ("RGB", "RGB"), + (0x00038000, 0x00038001, 0x00038002, 0x00037ffe): ("RGBA", "RGBA"), +} + + +# +# -------------------------------------------------------------------- + +def _accept(prefix): + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for the FlashPix images. + +class FpxImageFile(ImageFile.ImageFile): + + format = "FPX" + format_description = "FlashPix" + + def _open(self): + # + # read the OLE directory and see if this is a likely + # to be a FlashPix file + + try: + self.ole = olefile.OleFileIO(self.fp) + except IOError: + raise SyntaxError("not an FPX file; invalid OLE file") + + if self.ole.root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": + raise SyntaxError("not an FPX file; bad root CLSID") + + self._open_index(1) + + def _open_index(self, index=1): + # + # get the Image Contents Property Set + + prop = self.ole.getproperties([ + "Data Object Store %06d" % index, + "\005Image Contents" + ]) + + # size (highest resolution) + + self.size = prop[0x1000002], prop[0x1000003] + + size = max(self.size) + i = 1 + while size > 64: + size = size / 2 + i += 1 + self.maxid = i - 1 + + # mode. instead of using a single field for this, flashpix + # requires you to specify the mode for each channel in each + # resolution subimage, and leaves it to the decoder to make + # sure that they all match. for now, we'll cheat and assume + # that this is always the case. + + id = self.maxid << 16 + + s = prop[0x2000002 | id] + + colors = [] + for i in range(i32(s, 4)): + # note: for now, we ignore the "uncalibrated" flag + colors.append(i32(s, 8+i*4) & 0x7fffffff) + + self.mode, self.rawmode = MODES[tuple(colors)] + + # load JPEG tables, if any + self.jpeg = {} + for i in range(256): + id = 0x3000001 | (i << 16) + if id in prop: + self.jpeg[i] = prop[id] + + # print(len(self.jpeg), "tables loaded") + + self._open_subimage(1, self.maxid) + + def _open_subimage(self, index=1, subimage=0): + # + # setup tile descriptors for a given subimage + + stream = [ + "Data Object Store %06d" % index, + "Resolution %04d" % subimage, + "Subimage 0000 Header" + ] + + fp = self.ole.openstream(stream) + + # skip prefix + fp.read(28) + + # header stream + s = fp.read(36) + + size = i32(s, 4), i32(s, 8) + # tilecount = i32(s, 12) + tilesize = i32(s, 16), i32(s, 20) + # channels = i32(s, 24) + offset = i32(s, 28) + length = i32(s, 32) + + # print(size, self.mode, self.rawmode) + + if size != self.size: + raise IOError("subimage mismatch") + + # get tile descriptors + fp.seek(28 + offset) + s = fp.read(i32(s, 12) * length) + + x = y = 0 + xsize, ysize = size + xtile, ytile = tilesize + self.tile = [] + + for i in range(0, len(s), length): + + compression = i32(s, i+8) + + if compression == 0: + self.tile.append(("raw", (x, y, x+xtile, y+ytile), + i32(s, i) + 28, (self.rawmode))) + + elif compression == 1: + + # FIXME: the fill decoder is not implemented + self.tile.append(("fill", (x, y, x+xtile, y+ytile), + i32(s, i) + 28, (self.rawmode, s[12:16]))) + + elif compression == 2: + + internal_color_conversion = i8(s[14]) + jpeg_tables = i8(s[15]) + rawmode = self.rawmode + + if internal_color_conversion: + # The image is stored as usual (usually YCbCr). + if rawmode == "RGBA": + # For "RGBA", data is stored as YCbCrA based on + # negative RGB. The following trick works around + # this problem : + jpegmode, rawmode = "YCbCrK", "CMYK" + else: + jpegmode = None # let the decoder decide + + else: + # The image is stored as defined by rawmode + jpegmode = rawmode + + self.tile.append(("jpeg", (x, y, x+xtile, y+ytile), + i32(s, i) + 28, (rawmode, jpegmode))) + + # FIXME: jpeg tables are tile dependent; the prefix + # data must be placed in the tile descriptor itself! + + if jpeg_tables: + self.tile_prefix = self.jpeg[jpeg_tables] + + else: + raise IOError("unknown/invalid compression") + + x = x + xtile + if x >= xsize: + x, y = 0, y + ytile + if y >= ysize: + break # isn't really required + + self.stream = stream + self.fp = None + + def load(self): + + if not self.fp: + self.fp = self.ole.openstream(self.stream[:2] + + ["Subimage 0000 Data"]) + + return ImageFile.ImageFile.load(self) + +# +# -------------------------------------------------------------------- + + +Image.register_open(FpxImageFile.format, FpxImageFile, _accept) + +Image.register_extension(FpxImageFile.format, ".fpx") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FpxImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FpxImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a13e675c8ade6d28ffa5d8365e0caee0493cd397 GIT binary patch literal 4678 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FtexImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FtexImagePlugin.py new file mode 100644 index 0000000..9b98090 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/FtexImagePlugin.py @@ -0,0 +1,94 @@ +""" +A Pillow loader for .ftc and .ftu files (FTEX) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +Independence War 2: Edge Of Chaos - Texture File Format - 16 October 2001 + +The textures used for 3D objects in Independence War 2: Edge Of Chaos are in a +packed custom format called FTEX. This file format uses file extensions FTC and FTU. +* FTC files are compressed textures (using standard texture compression). +* FTU files are not compressed. +Texture File Format +The FTC and FTU texture files both use the same format. This +has the following structure: +{header} +{format_directory} +{data} +Where: +{header} = { u32:magic, u32:version, u32:width, u32:height, u32:mipmap_count, u32:format_count } + +* The "magic" number is "FTEX". +* "width" and "height" are the dimensions of the texture. +* "mipmap_count" is the number of mipmaps in the texture. +* "format_count" is the number of texture formats (different versions of the same texture) in this file. + +{format_directory} = format_count * { u32:format, u32:where } + +The format value is 0 for DXT1 compressed textures and 1 for 24-bit RGB uncompressed textures. +The texture data for a format starts at the position "where" in the file. + +Each set of texture data in the file has the following structure: +{data} = format_count * { u32:mipmap_size, mipmap_size * { u8 } } +* "mipmap_size" is the number of bytes in that mip level. For compressed textures this is the +size of the texture data compressed with DXT1. For 24 bit uncompressed textures, this is 3 * width * height. +Following this are the image bytes for that mipmap level. + +Note: All data is stored in little-Endian (Intel) byte order. +""" + +import struct +from io import BytesIO +from . import Image, ImageFile + + +MAGIC = b"FTEX" +FORMAT_DXT1 = 0 +FORMAT_UNCOMPRESSED = 1 + + +class FtexImageFile(ImageFile.ImageFile): + format = "FTEX" + format_description = "Texture File Format (IW2:EOC)" + + def _open(self): + magic = struct.unpack("J|!$zGO`}EfrX#Bqv2nxJG1J3K-auK}mJO1|Uv%OLFDo z9dWy~<5>Js_ebYayF<+sHgy^F6L{t#5C%Wk1zbN8@7!^ggD75D&pTlyb8gvY%$M-nXF)l88DJ+1If$vUYTK z_{p~avC7hsl8;pw2T3?o^8O`{d>HdcJsdvp{WFY*X<}7kjZFK}4z*!5GRTx1s!UzH zl9`HCU{oY^0s$q*lZ#k~GD=4QMry6r?zVq4iDPNi=hkUa5~C7QDlw|*OF6W5Y?_Tm zn5n?(7b;9gqckz~G#fOWKBunn1&nO$)pr}d-%cVmR%nt?$!9?(_nY!C8Yp?vm#txt z8o49Su;m1%9>H~alxCyAVs!5>@+7qB1yI`G-Q9D3l64R@azefkdiNg5^x{&5@Ewl) z^mc>^1OtB@gwLTPoEV#qNEK}x262o*LccE0=0N7N*fd8LW&jlp?;+db=pCJ%*ZueS z)y0r@0z_k&OUBMkuT6|j2GUr>Jjmt~b6IHJcACy}Hjt(yg>`dnb$b%r+&KOw0I!@|&QX6D7@p~;L{Mj8HVFytrvG}Vh_6%swOiARbOy}R>=lNhzy?$Q z88PizQvO}OmXmw?%~3GW;a%>&P#Iz7US8_R4qbPs^k8URf27BwVB8DSNs^D`JMxH} z`oNeNUuC^jnM_7R5m3HLQL7SiRn}eQuvDFLyZ}UEexygU&~dV0)RBr;E^c2Xt+XWH z1LAI)sYVlvD;LdNvN9LVF-L|+y59$4iIq7ldGadBvB~APUBc!WUH6v+07x(HE#J$5 zcY`_D6dVGNpmP)QMG#Mr3r6nJh)fX1*ClagRmz-`}~=R(3vmC@0A^8Rw#4 zoa43y(hf#h)u*wB7`QxNz zV*W39@<tD5ov#lhik5Xdyckp{nGZEdV}4wFa+s3UEZp?I71$uz@>QTO$C z_&ct7sDXAB%|n8$eWGcgR-n-mnl{;CE3+Pz0!uZXa$4hCSSq4N$O@LE`T1RdG(E&) z{)9%MN~3n8Ezm6h#UCY@N;hr*MedYD=d?z;J4IUb2Q+6nzew$@0@d2j_M3+%t?iKX zlVvF2qJ_u&2P0O9OTK4Zp;Hi-yw4ktivHA_%@)Oy*}`mgWns1?+*-)@R(?$2Gw3gh zDZDAu@?J??p}#7g7lipz*s}Q7eD`JgX?aOZc`cc}Dz3`3wU_&|%;L{HF@@aB&#P5h zFkKT@C1KZSVZcQ+)zaj=6Pgg|pfS38aZ0ONl>E@#JTR)WE z6qavO*lG)#!nfRvb-I{&AjQ=hSwnjx-U64cO+@I}5V7vJHHF#rwV`O=-`9E#-qGc*(44Cpazj(psG#r%m~8#&qVz-2C?|?@45LBAfs>$rvJ* zu~cliJ4xtnV#$U6n2p1QE8-3v8QdAAk+QV-0GEr5j?u#`OEV{=)N{awbUEofIXLUl z@xc?8vg+5@6X(aRlP6C*ho`59kF1aJe^5zqipb6|PL1lIBWe{ix$?Nr8O!yTGdizd zb{#VLammG+2VAjn^_;zP1FVA2eYSMrl;vIMpsDf3)R+&@H0)^H80+zlPEbeUc<1Bu zPH+El!(FHwPuq_h^W))ZJQ?VuK7Pg9^iteF|3-T5kT&m+_}upH6e`7Ag*)D+ce`+_ zu4f_wwhdkJoDy&i|G*8>$MF= 8 and i32(prefix[:4]) >= 20 and i32(prefix[4:8]) in (1, 2) + + +## +# Image plugin for the GIMP brush format. + +class GbrImageFile(ImageFile.ImageFile): + + format = "GBR" + format_description = "GIMP brush file" + + def _open(self): + header_size = i32(self.fp.read(4)) + version = i32(self.fp.read(4)) + if header_size < 20: + raise SyntaxError("not a GIMP brush") + if version not in (1, 2): + raise SyntaxError("Unsupported GIMP brush version: %s" % version) + + width = i32(self.fp.read(4)) + height = i32(self.fp.read(4)) + color_depth = i32(self.fp.read(4)) + if width <= 0 or height <= 0: + raise SyntaxError("not a GIMP brush") + if color_depth not in (1, 4): + raise SyntaxError("Unsupported GIMP brush color depth: %s" % color_depth) + + if version == 1: + comment_length = header_size-20 + else: + comment_length = header_size-28 + magic_number = self.fp.read(4) + if magic_number != b'GIMP': + raise SyntaxError("not a GIMP brush, bad magic number") + self.info['spacing'] = i32(self.fp.read(4)) + + comment = self.fp.read(comment_length)[:-1] + + if color_depth == 1: + self.mode = "L" + else: + self.mode = 'RGBA' + + self.size = width, height + + self.info["comment"] = comment + + # Image might not be small + Image._decompression_bomb_check(self.size) + + # Data is an uncompressed block of w * h * bytes/pixel + self._data_size = width * height * color_depth + + def load(self): + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self._data_size)) + +# +# registry + + +Image.register_open(GbrImageFile.format, GbrImageFile, _accept) +Image.register_extension(GbrImageFile.format, ".gbr") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GbrImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GbrImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dcae8f3e2ab83a192a97ee2800267fa18789de2d GIT binary patch literal 2357 zcmb_d-EJFI5T3LCi&Ljb(_pm%wF?Mj0d1s$1VT}OAP9jriZ%)o=3=$pJ+?RAKkYdt z336^IufR+321rOe1UKBlH?yu2h2#cm`;6zzIXm;s@7DfYS?(6Ue;?BPQ^)_OSY`?m z;io7eN)`1Lr4IESQY>{SsZm;|egpd&{Y=zvQdB4H(6K{9MNxx=&xyY4w@52GULxJ1 z<2F;>q~|qKEM1;UBZydaiw=8BupBFpo&#bVAbV*r(zgAA`!Y^+k8j9f{Qi@H4tdL~ zj`cZ~`2@rg&42=M6iphGZ>}Fh1>pBO&GkaGN$QHjB7;6lcZ;N%H9HBhP>Gbn_rilKf=z zVDIVX?w}O+50dF9&K?(MmQndZ80x}41Zx-zDcb>kahW5u$SDKf!7^`yXru}bf;t?P zevN~HRQ2l|4rUtU9roB=@nLtzGppF_?matj2j$d^-61PyrJNA&<}T!?ERQ)Lt4SCfy;912JS_9Tr`Av z1II_1nHEJ}S{+@wQDjVj)q##SDXK*AsbX>a3b z?yrw|HG+r-h{VjVV&<(t@G=G#k8nRPboMS7^AQNCd-!(LD%M?xdHza5h(Y9VKh*JA8!V}o|7dW-89MJ`p1_X$@nT3m{n>7vHl+&1{}yX;U# z^nR6AD64`T=B1YTm+2F49a4{LUosx2@+KOVNY$Cu#^X?WJR`kVKt!F_We)5A&U!AP zBoCq^{2ShodZ2ooSGxq_`&p1`->-_rM~zJr-tvWEUZ#Py48CHKc@vg#VNqz_1Bksh zK`u}V_n%)&9>13O4PzKs(`l-v(|$)VKOPOr{T_D*G6l0jIEzxY{vghR^33CIlD_g7 zy{NNXfu$bB#-h-Image.open function. To use +# this plugin, you have to import the GdImageFile module and +# use the GdImageFile.open function. + +class GdImageFile(ImageFile.ImageFile): + + format = "GD" + format_description = "GD uncompressed images" + + def _open(self): + + # Header + s = self.fp.read(1037) + + if not i16(s[:2]) in [65534, 65535]: + raise SyntaxError("Not a valid GD 2.x .gd file") + + self.mode = "L" # FIXME: "P" + self.size = i16(s[2:4]), i16(s[4:6]) + + trueColor = i8(s[6]) + trueColorOffset = 2 if trueColor else 0 + + # transparency index + tindex = i32(s[7+trueColorOffset:7+trueColorOffset+4]) + if tindex < 256: + self.info["transparency"] = tindex + + self.palette = ImagePalette.raw("XBGR", s[7+trueColorOffset+4:7+trueColorOffset+4+256*4]) + + self.tile = [("raw", (0, 0)+self.size, 7+trueColorOffset+4+256*4, ("L", 0, 1))] + + +def open(fp, mode="r"): + """ + Load texture from a GD image file. + + :param filename: GD file name, or an opened file handle. + :param mode: Optional mode. In this version, if the mode argument + is given, it must be "r". + :returns: An image instance. + :raises IOError: If the image could not be read. + """ + if mode != "r": + raise ValueError("bad mode") + + try: + return GdImageFile(fp) + except SyntaxError: + raise IOError("cannot identify this image file") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GdImageFile.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GdImageFile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..936f842954f7aca1abf789b5698649acabbcf5c0 GIT binary patch literal 2072 zcmbtVTW=gS6h5BWOR~8%4UkewR1*ob744=;B|uSypecl)kVLZr%JMLB)}GYKjAvwf z(=19}X!&dW3jPJ}lyf|rZg{1mwP$>M{GIFPjsITgtW1H{)uF(ZS6y<>lcN5@H|e$U*^#Qh9&H{e zNBa+Z8-5PoJMs>p&tAo46+#^BpQqXQQ) z+>(=58*UNIWdkl6Am`u|!2U_!cRd6R%@XRw}&AeRF~ z^S@f};PPF_8gR^l-}998e)m00*S=n8U>QS6|9OpHuW@pBXs7gC@H3HX$uakvy>s3> zmOP`rprr3EBcmdYy3f zqs<`ICMy#{PCA54)~dSa!?wq$yVPbigvzs!0~h$>?MQ8xIU2e_8ds}>EOSU2N|4t^ zs`D;>L73bIey#hWTCa5VKpW>po5eE@u*P72N?1f6_53qA~ny8k@NgW@in_P zF=Q16V%!%0+Du{y&18mGo>-xsa(wq7Fky@D*2e01hvg`j+#t~rlo(W_CU>b4)I3L+ zEOOhCWGD=&YKi{oY+Oe%P27H$SRUH!Cy|d-Fc?aoEYb#1YT`y~8iFcHgxH|dc!!j8jbkkDn2(5;dXT5^+=$ip<9 k6e>;YVAfDL_4qAl;VHw9YeIfWWD6-@VIM}V+1soC0)ry1xc~qF literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GifImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GifImagePlugin.py new file mode 100644 index 0000000..1bfbb5f --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GifImagePlugin.py @@ -0,0 +1,814 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GIF file handling +# +# History: +# 1995-09-01 fl Created +# 1996-12-14 fl Added interlace support +# 1996-12-30 fl Added animation support +# 1997-01-05 fl Added write support, fixed local colour map bug +# 1997-02-23 fl Make sure to load raster data in getdata() +# 1997-07-05 fl Support external decoder (0.4) +# 1998-07-09 fl Handle all modes when saving (0.5) +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2001-04-16 fl Added rewind support (seek to frame 0) (0.6) +# 2001-04-17 fl Added palette optimization (0.7) +# 2002-06-06 fl Added transparency support for save (0.8) +# 2004-02-24 fl Disable interlacing for small images +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile, ImagePalette, ImageChops, ImageSequence +from ._binary import i8, i16le as i16, o8, o16le as o16 + +import itertools + +__version__ = "0.9" + + +# -------------------------------------------------------------------- +# Identify/read GIF files + +def _accept(prefix): + return prefix[:6] in [b"GIF87a", b"GIF89a"] + + +## +# Image plugin for GIF images. This plugin supports both GIF87 and +# GIF89 images. + +class GifImageFile(ImageFile.ImageFile): + + format = "GIF" + format_description = "Compuserve GIF" + _close_exclusive_fp_after_loading = False + + global_palette = None + + def data(self): + s = self.fp.read(1) + if s and i8(s): + return self.fp.read(i8(s)) + return None + + def _open(self): + + # Screen + s = self.fp.read(13) + if s[:6] not in [b"GIF87a", b"GIF89a"]: + raise SyntaxError("not a GIF file") + + self.info["version"] = s[:6] + self.size = i16(s[6:]), i16(s[8:]) + self.tile = [] + flags = i8(s[10]) + bits = (flags & 7) + 1 + + if flags & 128: + # get global palette + self.info["background"] = i8(s[11]) + # check if palette contains colour indices + p = self.fp.read(3 << bits) + for i in range(0, len(p), 3): + if not (i//3 == i8(p[i]) == i8(p[i+1]) == i8(p[i+2])): + p = ImagePalette.raw("RGB", p) + self.global_palette = self.palette = p + break + + self.__fp = self.fp # FIXME: hack + self.__rewind = self.fp.tell() + self._n_frames = None + self._is_animated = None + self._seek(0) # get ready to read first frame + + @property + def n_frames(self): + if self._n_frames is None: + current = self.tell() + try: + while True: + self.seek(self.tell() + 1) + except EOFError: + self._n_frames = self.tell() + 1 + self.seek(current) + return self._n_frames + + @property + def is_animated(self): + if self._is_animated is None: + if self._n_frames is not None: + self._is_animated = self._n_frames != 1 + else: + current = self.tell() + + try: + self.seek(1) + self._is_animated = True + except EOFError: + self._is_animated = False + + self.seek(current) + return self._is_animated + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError: + self.seek(last_frame) + raise EOFError("no more images in GIF file") + + def _seek(self, frame): + + if frame == 0: + # rewind + self.__offset = 0 + self.dispose = None + self.dispose_extent = [0, 0, 0, 0] # x0, y0, x1, y1 + self.__frame = -1 + self.__fp.seek(self.__rewind) + self._prev_im = None + self.disposal_method = 0 + else: + # ensure that the previous frame was loaded + if not self.im: + self.load() + + if frame != self.__frame + 1: + raise ValueError("cannot seek to frame %d" % frame) + self.__frame = frame + + self.tile = [] + + self.fp = self.__fp + if self.__offset: + # backup to last frame + self.fp.seek(self.__offset) + while self.data(): + pass + self.__offset = 0 + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + + from copy import copy + self.palette = copy(self.global_palette) + + while True: + + s = self.fp.read(1) + if not s or s == b";": + break + + elif s == b"!": + # + # extensions + # + s = self.fp.read(1) + block = self.data() + if i8(s) == 249: + # + # graphic control extension + # + flags = i8(block[0]) + if flags & 1: + self.info["transparency"] = i8(block[3]) + self.info["duration"] = i16(block[1:3]) * 10 + + # disposal method - find the value of bits 4 - 6 + dispose_bits = 0b00011100 & flags + dispose_bits = dispose_bits >> 2 + if dispose_bits: + # only set the dispose if it is not + # unspecified. I'm not sure if this is + # correct, but it seems to prevent the last + # frame from looking odd for some animations + self.disposal_method = dispose_bits + elif i8(s) == 254: + # + # comment extension + # + self.info["comment"] = block + elif i8(s) == 255: + # + # application extension + # + self.info["extension"] = block, self.fp.tell() + if block[:11] == b"NETSCAPE2.0": + block = self.data() + if len(block) >= 3 and i8(block[0]) == 1: + self.info["loop"] = i16(block[1:3]) + while self.data(): + pass + + elif s == b",": + # + # local image + # + s = self.fp.read(9) + + # extent + x0, y0 = i16(s[0:]), i16(s[2:]) + x1, y1 = x0 + i16(s[4:]), y0 + i16(s[6:]) + self.dispose_extent = x0, y0, x1, y1 + flags = i8(s[8]) + + interlace = (flags & 64) != 0 + + if flags & 128: + bits = (flags & 7) + 1 + self.palette =\ + ImagePalette.raw("RGB", self.fp.read(3 << bits)) + + # image data + bits = i8(self.fp.read(1)) + self.__offset = self.fp.tell() + self.tile = [("gif", + (x0, y0, x1, y1), + self.__offset, + (bits, interlace))] + break + + else: + pass + # raise IOError, "illegal GIF tag `%x`" % i8(s) + + try: + if self.disposal_method < 2: + # do not dispose or none specified + self.dispose = None + elif self.disposal_method == 2: + # replace with background colour + self.dispose = Image.core.fill("P", self.size, + self.info["background"]) + else: + # replace with previous contents + if self.im: + self.dispose = self.im.copy() + + # only dispose the extent in this frame + if self.dispose: + self.dispose = self._crop(self.dispose, self.dispose_extent) + except (AttributeError, KeyError): + pass + + if not self.tile: + # self.__fp = None + raise EOFError + + self.mode = "L" + if self.palette: + self.mode = "P" + + def tell(self): + return self.__frame + + def load_end(self): + ImageFile.ImageFile.load_end(self) + + # if the disposal method is 'do not dispose', transparent + # pixels should show the content of the previous frame + if self._prev_im and self.disposal_method == 1: + # we do this by pasting the updated area onto the previous + # frame which we then use as the current image content + updated = self._crop(self.im, self.dispose_extent) + self._prev_im.paste(updated, self.dispose_extent, + updated.convert('RGBA')) + self.im = self._prev_im + self._prev_im = self.im.copy() + +# -------------------------------------------------------------------- +# Write GIF files + + +RAWMODE = { + "1": "L", + "L": "L", + "P": "P" +} + + +def _normalize_mode(im, initial_call=False): + """ + Takes an image (or frame), returns an image in a mode that is appropriate + for saving in a Gif. + + It may return the original image, or it may return an image converted to + palette or 'L' mode. + + UNDONE: What is the point of mucking with the initial call palette, for + an image that shouldn't have a palette, or it would be a mode 'P' and + get returned in the RAWMODE clause. + + :param im: Image object + :param initial_call: Default false, set to true for a single frame. + :returns: Image object + """ + if im.mode in RAWMODE: + im.load() + return im + if Image.getmodebase(im.mode) == "RGB": + if initial_call: + palette_size = 256 + if im.palette: + palette_size = len(im.palette.getdata()[1]) // 3 + return im.convert("P", palette=Image.ADAPTIVE, colors=palette_size) + else: + return im.convert("P") + return im.convert("L") + + +def _normalize_palette(im, palette, info): + """ + Normalizes the palette for image. + - Sets the palette to the incoming palette, if provided. + - Ensures that there's a palette for L mode images + - Optimizes the palette if necessary/desired. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: Image object + """ + source_palette = None + if palette: + # a bytes palette + if isinstance(palette, (bytes, bytearray, list)): + source_palette = bytearray(palette[:768]) + if isinstance(palette, ImagePalette.ImagePalette): + source_palette = bytearray(itertools.chain.from_iterable( + zip(palette.palette[:256], + palette.palette[256:512], + palette.palette[512:768]))) + + if im.mode == "P": + if not source_palette: + source_palette = im.im.getpalette("RGB")[:768] + else: # L-mode + if not source_palette: + source_palette = bytearray(i//3 for i in range(768)) + im.palette = ImagePalette.ImagePalette("RGB", + palette=source_palette) + + used_palette_colors = _get_optimize(im, info) + if used_palette_colors is not None: + return im.remap_palette(used_palette_colors, source_palette) + + im.palette.palette = source_palette + return im + + +def _write_single_frame(im, fp, palette): + im_out = _normalize_mode(im, True) + im_out = _normalize_palette(im_out, palette, im.encoderinfo) + + for s in _get_global_header(im_out, im.encoderinfo): + fp.write(s) + + # local image header + flags = 0 + if get_interlace(im): + flags = flags | 64 + _write_local_header(fp, im, (0, 0), flags) + + im_out.encoderconfig = (8, get_interlace(im)) + ImageFile._save(im_out, fp, [("gif", (0, 0)+im.size, 0, + RAWMODE[im_out.mode])]) + + fp.write(b"\0") # end of image data + + +def _write_multiple_frames(im, fp, palette): + + duration = im.encoderinfo.get("duration", None) + disposal = im.encoderinfo.get('disposal', None) + + im_frames = [] + frame_count = 0 + for imSequence in itertools.chain([im], im.encoderinfo.get("append_images", [])): + for im_frame in ImageSequence.Iterator(imSequence): + # a copy is required here since seek can still mutate the image + im_frame = _normalize_mode(im_frame.copy()) + im_frame = _normalize_palette(im_frame, palette, im.encoderinfo) + + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo['duration'] = duration[frame_count] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + frame_count += 1 + + if im_frames: + # delta frame + previous = im_frames[-1] + if _get_palette_bytes(im_frame) == _get_palette_bytes(previous['im']): + delta = ImageChops.subtract_modulo(im_frame, + previous['im']) + else: + delta = ImageChops.subtract_modulo(im_frame.convert('RGB'), + previous['im'].convert('RGB')) + bbox = delta.getbbox() + if not bbox: + # This frame is identical to the previous frame + if duration: + previous['encoderinfo']['duration'] += encoderinfo['duration'] + continue + else: + bbox = None + im_frames.append({ + 'im': im_frame, + 'bbox': bbox, + 'encoderinfo': encoderinfo + }) + + if len(im_frames) > 1: + for frame_data in im_frames: + im_frame = frame_data['im'] + if not frame_data['bbox']: + # global header + for s in _get_global_header(im_frame, + frame_data['encoderinfo']): + fp.write(s) + offset = (0, 0) + else: + # compress difference + frame_data['encoderinfo']['include_color_table'] = True + + im_frame = im_frame.crop(frame_data['bbox']) + offset = frame_data['bbox'][:2] + _write_frame_data(fp, im_frame, offset, frame_data['encoderinfo']) + return True + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +def _save(im, fp, filename, save_all=False): + for k, v in im.info.items(): + im.encoderinfo.setdefault(k, v) + # header + try: + palette = im.encoderinfo["palette"] + except KeyError: + palette = None + im.encoderinfo["optimize"] = im.encoderinfo.get("optimize", True) + + if not save_all or not _write_multiple_frames(im, fp, palette): + _write_single_frame(im, fp, palette) + + fp.write(b";") # end of file + + if hasattr(fp, "flush"): + fp.flush() + + +def get_interlace(im): + interlace = im.encoderinfo.get("interlace", 1) + + # workaround for @PIL153 + if min(im.size) < 16: + interlace = 0 + + return interlace + + +def _write_local_header(fp, im, offset, flags): + transparent_color_exists = False + try: + transparency = im.encoderinfo["transparency"] + except KeyError: + pass + else: + transparency = int(transparency) + # optimize the block away if transparent color is not used + transparent_color_exists = True + + used_palette_colors = _get_optimize(im, im.encoderinfo) + if used_palette_colors is not None: + # adjust the transparency index after optimize + try: + transparency = used_palette_colors.index(transparency) + except ValueError: + transparent_color_exists = False + + if "duration" in im.encoderinfo: + duration = int(im.encoderinfo["duration"] / 10) + else: + duration = 0 + + disposal = int(im.encoderinfo.get('disposal', 0)) + + if transparent_color_exists or duration != 0 or disposal: + packed_flag = 1 if transparent_color_exists else 0 + packed_flag |= disposal << 2 + if not transparent_color_exists: + transparency = 0 + + fp.write(b"!" + + o8(249) + # extension intro + o8(4) + # length + o8(packed_flag) + # packed fields + o16(duration) + # duration + o8(transparency) + # transparency index + o8(0)) + + if "comment" in im.encoderinfo and 1 <= len(im.encoderinfo["comment"]) <= 255: + fp.write(b"!" + + o8(254) + # extension intro + o8(len(im.encoderinfo["comment"])) + + im.encoderinfo["comment"] + + o8(0)) + if "loop" in im.encoderinfo: + number_of_loops = im.encoderinfo["loop"] + fp.write(b"!" + + o8(255) + # extension intro + o8(11) + + b"NETSCAPE2.0" + + o8(3) + + o8(1) + + o16(number_of_loops) + # number of loops + o8(0)) + include_color_table = im.encoderinfo.get('include_color_table') + if include_color_table: + palette = im.encoderinfo.get("palette", None) + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + if color_table_size: + flags = flags | 128 # local color table flag + flags = flags | color_table_size + + fp.write(b"," + + o16(offset[0]) + # offset + o16(offset[1]) + + o16(im.size[0]) + # size + o16(im.size[1]) + + o8(flags)) # flags + if include_color_table and color_table_size: + fp.write(_get_header_palette(palette_bytes)) + fp.write(o8(8)) # bits + + +def _save_netpbm(im, fp, filename): + + # Unused by default. + # To use, uncomment the register_save call at the end of the file. + # + # If you need real GIF compression and/or RGB quantization, you + # can use the external NETPBM/PBMPLUS utilities. See comments + # below for information on how to enable this. + + import os + from subprocess import Popen, check_call, PIPE, CalledProcessError + file = im._dump() + + with open(filename, 'wb') as f: + if im.mode != "RGB": + with open(os.devnull, 'wb') as devnull: + check_call(["ppmtogif", file], stdout=f, stderr=devnull) + else: + # Pipe ppmquant output into ppmtogif + # "ppmquant 256 %s | ppmtogif > %s" % (file, filename) + quant_cmd = ["ppmquant", "256", file] + togif_cmd = ["ppmtogif"] + with open(os.devnull, 'wb') as devnull: + quant_proc = Popen(quant_cmd, stdout=PIPE, stderr=devnull) + togif_proc = Popen(togif_cmd, stdin=quant_proc.stdout, + stdout=f, stderr=devnull) + + # Allow ppmquant to receive SIGPIPE if ppmtogif exits + quant_proc.stdout.close() + + retcode = quant_proc.wait() + if retcode: + raise CalledProcessError(retcode, quant_cmd) + + retcode = togif_proc.wait() + if retcode: + raise CalledProcessError(retcode, togif_cmd) + + try: + os.unlink(file) + except OSError: + pass + + +# Force optimization so that we can test performance against +# cases where it took lots of memory and time previously. +_FORCE_OPTIMIZE = False + + +def _get_optimize(im, info): + """ + Palette optimization is a potentially expensive operation. + + This function determines if the palette should be optimized using + some heuristics, then returns the list of palette entries in use. + + :param im: Image object + :param info: encoderinfo + :returns: list of indexes of palette entries in use, or None + """ + if im.mode in ("P", "L") and info and info.get("optimize", 0): + # Potentially expensive operation. + + # The palette saves 3 bytes per color not used, but palette + # lengths are restricted to 3*(2**N) bytes. Max saving would + # be 768 -> 6 bytes if we went all the way down to 2 colors. + # * If we're over 128 colors, we can't save any space. + # * If there aren't any holes, it's not worth collapsing. + # * If we have a 'large' image, the palette is in the noise. + + # create the new palette if not every color is used + optimise = _FORCE_OPTIMIZE or im.mode == 'L' + if optimise or im.width * im.height < 512 * 512: + # check which colors are used + used_palette_colors = [] + for i, count in enumerate(im.histogram()): + if count: + used_palette_colors.append(i) + + if optimise or (len(used_palette_colors) <= 128 and + max(used_palette_colors) > len(used_palette_colors)): + return used_palette_colors + + +def _get_color_table_size(palette_bytes): + # calculate the palette size for the header + import math + color_table_size = int(math.ceil(math.log(len(palette_bytes)//3, 2)))-1 + if color_table_size < 0: + color_table_size = 0 + return color_table_size + + +def _get_header_palette(palette_bytes): + """ + Returns the palette, null padded to the next power of 2 (*3) bytes + suitable for direct inclusion in the GIF header + + :param palette_bytes: Unpadded palette bytes, in RGBRGB form + :returns: Null padded palette + """ + color_table_size = _get_color_table_size(palette_bytes) + + # add the missing amount of bytes + # the palette has to be 2< 0: + palette_bytes += o8(0) * 3 * actual_target_size_diff + return palette_bytes + + +def _get_palette_bytes(im): + """ + Gets the palette for inclusion in the gif header + + :param im: Image object + :returns: Bytes, len<=768 suitable for inclusion in gif header + """ + return im.palette.palette + + +def _get_global_header(im, info): + """Return a list of strings representing a GIF header""" + + # Header Block + # http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp + + version = b"87a" + for extensionKey in ["transparency", "duration", "loop", "comment"]: + if info and extensionKey in info: + if ((extensionKey == "duration" and info[extensionKey] == 0) or + (extensionKey == "comment" and not (1 <= len(info[extensionKey]) <= 255))): + continue + version = b"89a" + break + else: + if im.info.get("version") == b"89a": + version = b"89a" + + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + + background = info["background"] if "background" in info else 0 + + return [ + b"GIF"+version + # signature + version + o16(im.size[0]) + # canvas width + o16(im.size[1]), # canvas height + + # Logical Screen Descriptor + # size of global color table + global color table flag + o8(color_table_size + 128), # packed fields + # background + reserved/aspect + o8(background) + o8(0), + + # Global Color Table + _get_header_palette(palette_bytes) + ] + + +def _write_frame_data(fp, im_frame, offset, params): + try: + im_frame.encoderinfo = params + + # local image header + _write_local_header(fp, im_frame, offset, 0) + + ImageFile._save(im_frame, fp, [("gif", (0, 0)+im_frame.size, 0, + RAWMODE[im_frame.mode])]) + + fp.write(b"\0") # end of image data + finally: + del im_frame.encoderinfo + +# -------------------------------------------------------------------- +# Legacy GIF utilities + + +def getheader(im, palette=None, info=None): + """ + Legacy Method to get Gif data from image. + + Warning:: May modify image data. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: tuple of(list of header items, optimized palette) + + """ + used_palette_colors = _get_optimize(im, info) + + if info is None: + info = {} + + if "background" not in info and "background" in im.info: + info["background"] = im.info["background"] + + im_mod = _normalize_palette(im, palette, info) + im.palette = im_mod.palette + im.im = im_mod.im + header = _get_global_header(im, info) + + return header, used_palette_colors + + +# To specify duration, add the time in milliseconds to getdata(), +# e.g. getdata(im_frame, duration=1000) +def getdata(im, offset=(0, 0), **params): + """ + Legacy Method + + Return a list of strings representing this image. + The first string is a local image header, the rest contains + encoded image data. + + :param im: Image object + :param offset: Tuple of (x, y) pixels. Defaults to (0,0) + :param \\**params: E.g. duration or other encoder info parameters + :returns: List of Bytes containing gif encoded frame data + + """ + class Collector(object): + data = [] + + def write(self, data): + self.data.append(data) + + im.load() # make sure raster data is available + + fp = Collector() + + _write_frame_data(fp, im, offset, params) + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GifImageFile.format, GifImageFile, _accept) +Image.register_save(GifImageFile.format, _save) +Image.register_save_all(GifImageFile.format, _save_all) +Image.register_extension(GifImageFile.format, ".gif") +Image.register_mime(GifImageFile.format, "image/gif") + +# +# Uncomment the following line if you wish to use NETPBM/PBMPLUS +# instead of the built-in "uncompressed" GIF encoder + +# Image.register_save(GifImageFile.format, _save_netpbm) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GifImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GifImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..73765aa39c1776df6b7dc376416d290ac4300a64 GIT binary patch literal 19290 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 Y^{HyLI*z9k)$x&IL%~7B4*3870CN~QSO5S3 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpGradientFile.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpGradientFile.py new file mode 100644 index 0000000..10593da --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpGradientFile.py @@ -0,0 +1,138 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read (and render) GIMP gradient files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from math import pi, log, sin, sqrt +from ._binary import o8 + +# -------------------------------------------------------------------- +# Stuff to translate curve segments to palette values (derived from +# the corresponding code in GIMP, written by Federico Mena Quintero. +# See the GIMP distribution for more information.) +# + +EPSILON = 1e-10 + + +def linear(middle, pos): + if pos <= middle: + if middle < EPSILON: + return 0.0 + else: + return 0.5 * pos / middle + else: + pos = pos - middle + middle = 1.0 - middle + if middle < EPSILON: + return 1.0 + else: + return 0.5 + 0.5 * pos / middle + + +def curved(middle, pos): + return pos ** (log(0.5) / log(max(middle, EPSILON))) + + +def sine(middle, pos): + return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 + + +def sphere_increasing(middle, pos): + return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) + + +def sphere_decreasing(middle, pos): + return 1.0 - sqrt(1.0 - linear(middle, pos) ** 2) + + +SEGMENTS = [linear, curved, sine, sphere_increasing, sphere_decreasing] + + +class GradientFile(object): + + gradient = None + + def getpalette(self, entries=256): + + palette = [] + + ix = 0 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + for i in range(entries): + + x = i / float(entries-1) + + while x1 < x: + ix += 1 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + w = x1 - x0 + + if w < EPSILON: + scale = segment(0.5, 0.5) + else: + scale = segment((xm - x0) / w, (x - x0) / w) + + # expand to RGBA + r = o8(int(255 * ((rgb1[0] - rgb0[0]) * scale + rgb0[0]) + 0.5)) + g = o8(int(255 * ((rgb1[1] - rgb0[1]) * scale + rgb0[1]) + 0.5)) + b = o8(int(255 * ((rgb1[2] - rgb0[2]) * scale + rgb0[2]) + 0.5)) + a = o8(int(255 * ((rgb1[3] - rgb0[3]) * scale + rgb0[3]) + 0.5)) + + # add to palette + palette.append(r + g + b + a) + + return b"".join(palette), "RGBA" + + +## +# File handler for GIMP's gradient format. + +class GimpGradientFile(GradientFile): + + def __init__(self, fp): + + if fp.readline()[:13] != b"GIMP Gradient": + raise SyntaxError("not a GIMP gradient file") + + line = fp.readline() + + # GIMP 1.2 gradient files don't contain a name, but GIMP 1.3 files do + if line.startswith(b"Name: "): + line = fp.readline().strip() + + count = int(line) + + gradient = [] + + for i in range(count): + + s = fp.readline().split() + w = [float(x) for x in s[:11]] + + x0, x1 = w[0], w[2] + xm = w[1] + rgb0 = w[3:7] + rgb1 = w[7:11] + + segment = SEGMENTS[int(s[11])] + cspace = int(s[12]) + + if cspace != 0: + raise IOError("cannot handle HSV colour space") + + gradient.append((x0, x1, xm, rgb0, rgb1, segment)) + + self.gradient = gradient diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpGradientFile.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpGradientFile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ba8f9ec190bbbfd8d06699f8da672e97c890583 GIT binary patch literal 3760 zcmd5;Uvm>x6hFK9(>6_-LL1tuNB|v!3>MH4WRxO;wGIU4Mr4d)W}DrHEy*U`T_nsT zJ_wKc?04`3_~Q5xeDTF`bjE%JX8Zv7`<+c&iaI_3Gv?2^XYbx~?m6e4^E)^7XCb$* z_xq1%##xY#@49VI zz3g?P3Kb}c-UPQ8cY2FGzjw?JqS$G-k9~N}G)`Vxyy~~x-8+j{S1v6s`<>o$=(xTY z#P9oU@3r1t)!X(1&w-nW!d@!1^7y9hqMfsH%56uBR%o;if9GJSr9SnCd;~>w(C(UXc)gm@{+#?2359R=v z4jdy51OIppj2D0bMoJght9zC zfADAI%l!Yr8Q0r#=G2ZeaUT4m#n!~Le(3CZ{G;bUJm9D17_b)b0B7$5gVSOX$9zG# zXxg$cSsr@GKVcU6Hw3;|GF1FoN7ANb;j^p^(=yD+5X_hi$7MJn{jV)1gBI$A8(&(( zoD6cB>AE$OqBNY8{#!E0$Y4@I?;EN^%AERd^&8jZIt9}J!MqIe0)!%NelG)b1ZYXI zn1%%j4sd3W)umWh!d{djo2&qG#~E?cGC)(YWMP0NgJFJ90P-gM+${95F!38s$u0>y zk-)Gm0e+W6akoS!k-)Gm0e+Xn^lpi4B7tFB0{kwCJuLY5e!7&DO?g zxsE2eKE@^R0DW@JMoCWKXsbSmXwMpf%jS~*kW)+hUe+gi1zUs{>6)K=`1vuk?;u7&WPw??R<5rK?Jv3Z|dD z!{wj^@fdlamG=@A+gUqn9k6HYS-Xfnci7I^d26qIAa&BxZ)(3?tuUS%;YK5HI$om@ zQ(dFc>AJVud}Lg!-M}+MH**AJ$7ukwt(V<~P76&9~vT z9r<;vS6sq+geJ*xAPB)KE&WYaH*f_~7jFDanA+YM?;!V%H%G%gFkF>(N&oE#(^;Q`mt3?2$RNm`}q7oc$=0T511 z3MYm|RxFe=0axF0bKc7V$b%MZ%pa`;%Z3WKbC3DJmBDtWlqBCVCO1 z=>*hv(+O}#EPqh@xZLcvySKw~)N`6%h3hnt(RW>5_+sj<-3?-=e=!WZp(ZwNj$s_# z@#C9Gbpil-W)=&L!UL-z>b3pY%xtNvU0l9=vHDR>YklR4sxl=?FbOM6H8aP>G=8n8 z^`hHTSF?LNh?B}W$TjpWGKWCTVUp)bcrP{kN$95Goxqeq6vdi}cX)hqpkPTfa5eE` zQ1HnO+ummt?R=_emFzq!aK_#Xs3-w23Rc0MwWa|YMf 100: + raise SyntaxError("bad palette file") + + v = tuple(map(int, s.split()[:3])) + if len(v) != 3: + raise ValueError("bad palette entry") + + if 0 <= i <= 255: + self.palette[i] = o8(v[0]) + o8(v[1]) + o8(v[2]) + + i += 1 + + self.palette = b"".join(self.palette) + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpPaletteFile.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/GimpPaletteFile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f60909f049f09ae5d147ffed8a0cd8ef6b874de9 GIT binary patch literal 1503 zcmb_b+iuf95S?8+?k&Agp%kP_SVBUPphQBVAXFjL0#Q+^g2P3Gi{-{n+0=1ddrKQB zeW82;zrx?}7l#c5DuB*Bv}nfAHH@0^2$pEn$ZD^*laJHAq`Q z9BCarRdIA$o8#88au+5-RV0T+VZkLj7K7l8Ow z!U@_Fl)V(EFOMx6Ta=Hfg-~6gzC+<8ADu|bzR`Y%Q|JkE0svFAXH)jw)R;c2p(jaC zk)GzT{)|B+$wdmFIJV7uyClFEf03?Ih`4hYfzGx7Zders%0!YBSyM23FmmWB!b_)W zoTbv6Ej;w3kDf?c17s#!rF&ow3U9(W>YJt^09lIeVNC5hk9J!T8n1XPs>*X<)7*UC za?63|OE^e|+6`QDoEAE8dk})c6@&wmvxMFs-h42=u8^DZ1(=;6bkB$9mo6MeiOxnw za*FkU*+YDDyklu(L9!cpe1;him6_0PTtz_`t0dAhaN46p2S-n`Y?v9*W|4V52z2+8 z(OZlY$-ht^wmQ7^5)`(z4Eq;Eice8S zlq*^&$~{_mq}b|F=2PCGMF;bM;vS_w{YkXwQ`!+_hte)-k5&OK6{S5k-V*(|7*N`m z9lN9zt@cO{XtmE$@6fGJimh+7)?K>Am24WWO(}M96amf00|aRl#MpyyU5IHOUuYM! z+B1{sG4F7^!+f5w-i}k~mVLY?ish|yabzRd1|$5Yg>`Y3jpC}xOcFa&7RR>IiCLOt z^gNtC9T~oF^mAOKnXXR;a_UJH*Kyt&pNzh1R!8OeN+<3__RN~7c5qX)KHXUQu(SrK zG-hGHfS9c$=5 zbgeIpb-HeEdz0NVDAeD8;$tSDd<+GkAp1!52gvQEN9AL3jkQA$Z?V#4>wMh9-kE_Q z(}8d-7#hPbX|ltBhkRG_L_Sf~dTFlZarf~;zAK88L|5*8sLjKadjS1Em@pp_80E)d zJ;kt(AvD;FM?rcbeSSSi3yK2+R=O0<#|%-(4-n9J#^V&j{tf}qR`?Wi{Wry|TU*2( zP{U_GW02q!`X7pl&8aTEmJJGk<5+~Mf(c4ryny&{3XdMuuUMkCunI2ivezq+b(V8h&ft1Lyk_0-PWg+{KS*_#L?P4~+DO`O0ZC#hOELg2C zMaj!lHx~0sOCd&Ci9;P6Dl1(GZtEl2(lLPLa%r^_mAC5p-pIgxAd*|5SSC7oL+@QR z^bY($1>TdMmvg%IM-3+ zI3H02RIf6gGG5EF&SU5JY@c1FpJ-9kfPnKbA;STKfQBgl{{EKl*t+U4cfoh?n7clX&d2O;CZIP| ziGR_S%UL?D#jNeAqXNucw?UnbIpN!5v$D{xX`>c^)uK;-5Y~oA*xHbh`;o~*rnO+t z6~gFm0lXV_O%-s|U*QVNDI|5IhRSldCl_edvoUvOpn>p3Fd-$}=-d=>eIrdXe2>=| z?@%7fsc`!cn@-PNO;Qzp*sg8bJ=a0_=znI8OSrVzsIQ$aEV#4cH#y!G6$r_$UYt)mz@bC@H)( literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Hdf5StubImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Hdf5StubImagePlugin.py new file mode 100644 index 0000000..de4d5bb --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Hdf5StubImagePlugin.py @@ -0,0 +1,72 @@ +# +# The Python Imaging Library +# $Id$ +# +# HDF5 stub adapter +# +# Copyright (c) 2000-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific HDF5 image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + +def _accept(prefix): + return prefix[:8] == b"\x89HDF\r\n\x1a\n" + + +class HDF5StubImageFile(ImageFile.StubImageFile): + + format = "HDF5" + format_description = "HDF5" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not an HDF file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self.size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise IOError("HDF5 save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(HDF5StubImageFile.format, HDF5StubImageFile, _accept) +Image.register_save(HDF5StubImageFile.format, _save) + +Image.register_extensions(HDF5StubImageFile.format, [".h5", ".hdf"]) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Hdf5StubImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Hdf5StubImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c9d1064a26c2f365d4f0a82c744cb6b55f10ef95 GIT binary patch literal 2116 zcmb_dO>g8x5Uuu1Cga(J?6OkCE)f_GFcL~4AqBx|g%BT6f>vSW5eLG-@{ZeyCm!2! zcObi3I1n!U0e&6-fCI7Szl}*vvtXhWNQSkMSeIPN;c3Hp;#lc zk=UWk?$O$TT=&Ef-B_ZbT;mgjHWyH~F4<7d0)2sRPsSspRv4IZ0OQwSj_2u__2JSx zEJ{1&iskqUzT>{vBB@q2(akOaHj3~ZSI(zp8Kq5A7Sq%hb+zjnJ1z2J8XbLocn}r* zMs%K5S!vt7k?wlZq-{E1f={BO?rl`RnAxe{(={h!X5oi0$zpehtOHpBaAi#6K7-l! z^Jc#(n%$zyYWLgkZ=Lko75rE$wpp%06I+{OF{pRTLNYm>w9{_Gzn-^Cd zi0N$;CmBgPo!Z8~!)ThX@ywm<-;}CH3s4^t`z40^0LDU&P#$ccw#TBV(SM0G?yB>B ztY=u|gY|MKAHTu@A2a+61^kNQe`Z*l(}c* zI?tW;>T;=V?@SPE>x5tZ5RQ8jMuM&2EwdHe?}a7|Hq5|G$;EQ$@iA3T5{Y)57n2d4 z#}DaY+(oO!l;)=x3#sa{bzPoR>D(rX=XoRvSiLMcC0}{n&QtGMPUj|>b=3fQBJg(HbzQ)$pCY>B5sKL{TgH*Pz4HUd za`(=&{AA3l6r`XEHB?}{L&GFvuIrj{6W)LBGd-aAJ;0vtZticYKYsK-nAvzr`DUTL p^0snNkXzM#2f|S`KkfAU`364d`0r&q81%x;u>a_B7;c+~!9S$Nu*d)a literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcnsImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcnsImagePlugin.py new file mode 100644 index 0000000..dc93f6a --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcnsImagePlugin.py @@ -0,0 +1,374 @@ +# +# The Python Imaging Library. +# $Id$ +# +# macOS icns file decoder, based on icns.py by Bob Ippolito. +# +# history: +# 2004-10-09 fl Turned into a PIL plugin; removed 2.3 dependencies. +# +# Copyright (c) 2004 by Bob Ippolito. +# Copyright (c) 2004 by Secret Labs. +# Copyright (c) 2004 by Fredrik Lundh. +# Copyright (c) 2014 by Alastair Houghton. +# +# See the README file for information on usage and redistribution. +# + +from PIL import Image, ImageFile, PngImagePlugin +from PIL._binary import i8 +import io +import os +import shutil +import struct +import sys +import tempfile + +enable_jpeg2k = hasattr(Image.core, 'jp2klib_version') +if enable_jpeg2k: + from PIL import Jpeg2KImagePlugin + +HEADERSIZE = 8 + + +def nextheader(fobj): + return struct.unpack('>4sI', fobj.read(HEADERSIZE)) + + +def read_32t(fobj, start_length, size): + # The 128x128 icon seems to have an extra header for some reason. + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(4) + if sig != b'\x00\x00\x00\x00': + raise SyntaxError('Unknown signature, expecting 0x00000000') + return read_32(fobj, (start + 4, length - 4), size) + + +def read_32(fobj, start_length, size): + """ + Read a 32bit RGB icon resource. Seems to be either uncompressed or + an RLE packbits-like scheme. + """ + (start, length) = start_length + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + if length == sizesq * 3: + # uncompressed ("RGBRGBGB") + indata = fobj.read(length) + im = Image.frombuffer("RGB", pixel_size, indata, "raw", "RGB", 0, 1) + else: + # decode image + im = Image.new("RGB", pixel_size, None) + for band_ix in range(3): + data = [] + bytesleft = sizesq + while bytesleft > 0: + byte = fobj.read(1) + if not byte: + break + byte = i8(byte) + if byte & 0x80: + blocksize = byte - 125 + byte = fobj.read(1) + for i in range(blocksize): + data.append(byte) + else: + blocksize = byte + 1 + data.append(fobj.read(blocksize)) + bytesleft -= blocksize + if bytesleft <= 0: + break + if bytesleft != 0: + raise SyntaxError( + "Error reading channel [%r left]" % bytesleft + ) + band = Image.frombuffer( + "L", pixel_size, b"".join(data), "raw", "L", 0, 1 + ) + im.im.putband(band.im, band_ix) + return {"RGB": im} + + +def read_mk(fobj, start_length, size): + # Alpha masks seem to be uncompressed + start = start_length[0] + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + band = Image.frombuffer( + "L", pixel_size, fobj.read(sizesq), "raw", "L", 0, 1 + ) + return {"A": band} + + +def read_png_or_jpeg2000(fobj, start_length, size): + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(12) + if sig[:8] == b'\x89PNG\x0d\x0a\x1a\x0a': + fobj.seek(start) + im = PngImagePlugin.PngImageFile(fobj) + return {"RGBA": im} + elif sig[:4] == b'\xff\x4f\xff\x51' \ + or sig[:4] == b'\x0d\x0a\x87\x0a' \ + or sig == b'\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a': + if not enable_jpeg2k: + raise ValueError('Unsupported icon subimage format (rebuild PIL ' + 'with JPEG 2000 support to fix this)') + # j2k, jpc or j2c + fobj.seek(start) + jp2kstream = fobj.read(length) + f = io.BytesIO(jp2kstream) + im = Jpeg2KImagePlugin.Jpeg2KImageFile(f) + if im.mode != 'RGBA': + im = im.convert('RGBA') + return {"RGBA": im} + else: + raise ValueError('Unsupported icon subimage format') + + +class IcnsFile(object): + + SIZES = { + (512, 512, 2): [ + (b'ic10', read_png_or_jpeg2000), + ], + (512, 512, 1): [ + (b'ic09', read_png_or_jpeg2000), + ], + (256, 256, 2): [ + (b'ic14', read_png_or_jpeg2000), + ], + (256, 256, 1): [ + (b'ic08', read_png_or_jpeg2000), + ], + (128, 128, 2): [ + (b'ic13', read_png_or_jpeg2000), + ], + (128, 128, 1): [ + (b'ic07', read_png_or_jpeg2000), + (b'it32', read_32t), + (b't8mk', read_mk), + ], + (64, 64, 1): [ + (b'icp6', read_png_or_jpeg2000), + ], + (32, 32, 2): [ + (b'ic12', read_png_or_jpeg2000), + ], + (48, 48, 1): [ + (b'ih32', read_32), + (b'h8mk', read_mk), + ], + (32, 32, 1): [ + (b'icp5', read_png_or_jpeg2000), + (b'il32', read_32), + (b'l8mk', read_mk), + ], + (16, 16, 2): [ + (b'ic11', read_png_or_jpeg2000), + ], + (16, 16, 1): [ + (b'icp4', read_png_or_jpeg2000), + (b'is32', read_32), + (b's8mk', read_mk), + ], + } + + def __init__(self, fobj): + """ + fobj is a file-like object as an icns resource + """ + # signature : (start, length) + self.dct = dct = {} + self.fobj = fobj + sig, filesize = nextheader(fobj) + if sig != b'icns': + raise SyntaxError('not an icns file') + i = HEADERSIZE + while i < filesize: + sig, blocksize = nextheader(fobj) + if blocksize <= 0: + raise SyntaxError('invalid block header') + i += HEADERSIZE + blocksize -= HEADERSIZE + dct[sig] = (i, blocksize) + fobj.seek(blocksize, 1) + i += blocksize + + def itersizes(self): + sizes = [] + for size, fmts in self.SIZES.items(): + for (fmt, reader) in fmts: + if fmt in self.dct: + sizes.append(size) + break + return sizes + + def bestsize(self): + sizes = self.itersizes() + if not sizes: + raise SyntaxError("No 32bit icon resources found") + return max(sizes) + + def dataforsize(self, size): + """ + Get an icon resource as {channel: array}. Note that + the arrays are bottom-up like windows bitmaps and will likely + need to be flipped or transposed in some way. + """ + dct = {} + for code, reader in self.SIZES[size]: + desc = self.dct.get(code) + if desc is not None: + dct.update(reader(self.fobj, desc, size)) + return dct + + def getimage(self, size=None): + if size is None: + size = self.bestsize() + if len(size) == 2: + size = (size[0], size[1], 1) + channels = self.dataforsize(size) + + im = channels.get('RGBA', None) + if im: + return im + + im = channels.get("RGB").copy() + try: + im.putalpha(channels["A"]) + except KeyError: + pass + return im + + +## +# Image plugin for Mac OS icons. + +class IcnsImageFile(ImageFile.ImageFile): + """ + PIL image support for Mac OS .icns files. + Chooses the best resolution, but will possibly load + a different size image if you mutate the size attribute + before calling 'load'. + + The info dictionary has a key 'sizes' that is a list + of sizes that the icns file has. + """ + + format = "ICNS" + format_description = "Mac OS icns resource" + + def _open(self): + self.icns = IcnsFile(self.fp) + self.mode = 'RGBA' + self.best_size = self.icns.bestsize() + self.size = (self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2]) + self.info['sizes'] = self.icns.itersizes() + # Just use this to see if it's loaded or not yet. + self.tile = ('',) + + def load(self): + if len(self.size) == 3: + self.best_size = self.size + self.size = (self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2]) + + Image.Image.load(self) + if not self.tile: + return + self.load_prepare() + # This is likely NOT the best way to do it, but whatever. + im = self.icns.getimage(self.best_size) + + # If this is a PNG or JPEG 2000, it won't be loaded yet + im.load() + + self.im = im.im + self.mode = im.mode + self.size = im.size + self.fp = None + self.icns = None + self.tile = () + self.load_end() + + +def _save(im, fp, filename): + """ + Saves the image as a series of PNG files, + that are then converted to a .icns file + using the macOS command line utility 'iconutil'. + + macOS only. + """ + if hasattr(fp, "flush"): + fp.flush() + + # create the temporary set of pngs + iconset = tempfile.mkdtemp('.iconset') + provided_images = {im.width: im + for im in im.encoderinfo.get("append_images", [])} + last_w = None + for w in [16, 32, 128, 256, 512]: + prefix = 'icon_{}x{}'.format(w, w) + + first_path = os.path.join(iconset, prefix+'.png') + if last_w == w: + shutil.copyfile(second_path, first_path) + else: + im_w = provided_images.get(w, im.resize((w, w), Image.LANCZOS)) + im_w.save(first_path) + + second_path = os.path.join(iconset, prefix+'@2x.png') + im_w2 = provided_images.get(w*2, im.resize((w*2, w*2), Image.LANCZOS)) + im_w2.save(second_path) + last_w = w*2 + + # iconutil -c icns -o {} {} + from subprocess import Popen, PIPE, CalledProcessError + + convert_cmd = ["iconutil", "-c", "icns", "-o", filename, iconset] + with open(os.devnull, 'wb') as devnull: + convert_proc = Popen(convert_cmd, stdout=PIPE, stderr=devnull) + + convert_proc.stdout.close() + + retcode = convert_proc.wait() + + # remove the temporary files + shutil.rmtree(iconset) + + if retcode: + raise CalledProcessError(retcode, convert_cmd) + + +Image.register_open(IcnsImageFile.format, IcnsImageFile, + lambda x: x[:4] == b'icns') +Image.register_extension(IcnsImageFile.format, '.icns') + +if sys.platform == 'darwin': + Image.register_save(IcnsImageFile.format, _save) + + Image.register_mime(IcnsImageFile.format, "image/icns") + + +if __name__ == '__main__': + + if len(sys.argv) < 2: + print("Syntax: python IcnsImagePlugin.py [file]") + sys.exit() + + imf = IcnsImageFile(open(sys.argv[1], 'rb')) + for size in imf.info['sizes']: + imf.size = size + imf.load() + im = imf.im + im.save('out-%s-%s-%s.png' % size) + im = Image.open(sys.argv[1]) + im.save("out.png") + if sys.platform == 'windows': + os.startfile("out.png") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcnsImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcnsImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ea16ad448f67ea9c434f963ae39ca7031b48aed0 GIT binary patch literal 10848 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. +# https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki +# +# Icon format references: +# * https://en.wikipedia.org/wiki/ICO_(file_format) +# * https://msdn.microsoft.com/en-us/library/ms997538.aspx + + +import struct +from io import BytesIO + +from . import Image, ImageFile, BmpImagePlugin, PngImagePlugin +from ._binary import i8, i16le as i16, i32le as i32 +from math import log, ceil + +__version__ = "0.1" + +# +# -------------------------------------------------------------------- + +_MAGIC = b"\0\0\1\0" + + +def _save(im, fp, filename): + fp.write(_MAGIC) # (2+2) + sizes = im.encoderinfo.get("sizes", + [(16, 16), (24, 24), (32, 32), (48, 48), + (64, 64), (128, 128), (256, 256)]) + width, height = im.size + sizes = filter(lambda x: False if (x[0] > width or x[1] > height or + x[0] > 256 or x[1] > 256) else True, + sizes) + sizes = list(sizes) + fp.write(struct.pack("=8bpp) + 'reserved': i8(s[3]), + 'planes': i16(s[4:]), + 'bpp': i16(s[6:]), + 'size': i32(s[8:]), + 'offset': i32(s[12:]) + } + + # See Wikipedia + for j in ('width', 'height'): + if not icon_header[j]: + icon_header[j] = 256 + + # See Wikipedia notes about color depth. + # We need this just to differ images with equal sizes + icon_header['color_depth'] = (icon_header['bpp'] or + (icon_header['nb_color'] != 0 and + ceil(log(icon_header['nb_color'], + 2))) or 256) + + icon_header['dim'] = (icon_header['width'], icon_header['height']) + icon_header['square'] = (icon_header['width'] * + icon_header['height']) + + self.entry.append(icon_header) + + self.entry = sorted(self.entry, key=lambda x: x['color_depth']) + # ICO images are usually squares + # self.entry = sorted(self.entry, key=lambda x: x['width']) + self.entry = sorted(self.entry, key=lambda x: x['square']) + self.entry.reverse() + + def sizes(self): + """ + Get a list of all available icon sizes and color depths. + """ + return {(h['width'], h['height']) for h in self.entry} + + def getimage(self, size, bpp=False): + """ + Get an image from the icon + """ + for (i, h) in enumerate(self.entry): + if size == h['dim'] and (bpp is False or bpp == h['color_depth']): + return self.frame(i) + return self.frame(0) + + def frame(self, idx): + """ + Get an image from frame idx + """ + + header = self.entry[idx] + + self.buf.seek(header['offset']) + data = self.buf.read(8) + self.buf.seek(header['offset']) + + if data[:8] == PngImagePlugin._MAGIC: + # png frame + im = PngImagePlugin.PngImageFile(self.buf) + else: + # XOR + AND mask bmp frame + im = BmpImagePlugin.DibImageFile(self.buf) + + # change tile dimension to only encompass XOR image + im.size = (im.size[0], int(im.size[1] / 2)) + d, e, o, a = im.tile[0] + im.tile[0] = d, (0, 0) + im.size, o, a + + # figure out where AND mask image starts + mode = a[0] + bpp = 8 + for k, v in BmpImagePlugin.BIT2MODE.items(): + if mode == v[1]: + bpp = k + break + + if 32 == bpp: + # 32-bit color depth icon image allows semitransparent areas + # PIL's DIB format ignores transparency bits, recover them. + # The DIB is packed in BGRX byte order where X is the alpha + # channel. + + # Back up to start of bmp data + self.buf.seek(o) + # extract every 4th byte (eg. 3,7,11,15,...) + alpha_bytes = self.buf.read(im.size[0] * im.size[1] * 4)[3::4] + + # convert to an 8bpp grayscale image + mask = Image.frombuffer( + 'L', # 8bpp + im.size, # (w, h) + alpha_bytes, # source chars + 'raw', # raw decoder + ('L', 0, -1) # 8bpp inverted, unpadded, reversed + ) + else: + # get AND image from end of bitmap + w = im.size[0] + if (w % 32) > 0: + # bitmap row data is aligned to word boundaries + w += 32 - (im.size[0] % 32) + + # the total mask data is + # padded row size * height / bits per char + + and_mask_offset = o + int(im.size[0] * im.size[1] * + (bpp / 8.0)) + total_bytes = int((w * im.size[1]) / 8) + + self.buf.seek(and_mask_offset) + mask_data = self.buf.read(total_bytes) + + # convert raw data to image + mask = Image.frombuffer( + '1', # 1 bpp + im.size, # (w, h) + mask_data, # source chars + 'raw', # raw decoder + ('1;I', int(w/8), -1) # 1bpp inverted, padded, reversed + ) + + # now we have two images, im is XOR image and mask is AND image + + # apply mask image as alpha channel + im = im.convert('RGBA') + im.putalpha(mask) + + return im + + +## +# Image plugin for Windows Icon files. + +class IcoImageFile(ImageFile.ImageFile): + """ + PIL read-only image support for Microsoft Windows .ico files. + + By default the largest resolution image in the file will be loaded. This + can be changed by altering the 'size' attribute before calling 'load'. + + The info dictionary has a key 'sizes' that is a list of the sizes available + in the icon file. + + Handles classic, XP and Vista icon formats. + + This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis + . + https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki + """ + format = "ICO" + format_description = "Windows Icon" + + def _open(self): + self.ico = IcoFile(self.fp) + self.info['sizes'] = self.ico.sizes() + self.size = self.ico.entry[0]['dim'] + self.load() + + def load(self): + im = self.ico.getimage(self.size) + # if tile is PNG, it won't really be loaded yet + im.load() + self.im = im.im + self.mode = im.mode + self.size = im.size + + def load_seek(self): + # Flag the ImageFile.Parser so that it + # just does all the decode at the end. + pass +# +# -------------------------------------------------------------------- + + +Image.register_open(IcoImageFile.format, IcoImageFile, _accept) +Image.register_save(IcoImageFile.format, _save) +Image.register_extension(IcoImageFile.format, ".ico") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcoImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IcoImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..18a63ca58f0c11fb536ca72e469e2a07ab710cea GIT binary patch literal 7782 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 Av;Y7A literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImImagePlugin.py new file mode 100644 index 0000000..b87fa90 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImImagePlugin.py @@ -0,0 +1,347 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IFUNC IM file handling for PIL +# +# history: +# 1995-09-01 fl Created. +# 1997-01-03 fl Save palette images +# 1997-01-08 fl Added sequence support +# 1997-01-23 fl Added P and RGB save support +# 1997-05-31 fl Read floating point images +# 1997-06-22 fl Save floating point images +# 1997-08-27 fl Read and save 1-bit images +# 1998-06-25 fl Added support for RGB+LUT images +# 1998-07-02 fl Added support for YCC images +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 1998-12-29 fl Added I;16 support +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# 2003-09-26 fl Added LA/PA support +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +import re +from . import Image, ImageFile, ImagePalette +from ._binary import i8 + +__version__ = "0.7" + + +# -------------------------------------------------------------------- +# Standard tags + +COMMENT = "Comment" +DATE = "Date" +EQUIPMENT = "Digitalization equipment" +FRAMES = "File size (no of images)" +LUT = "Lut" +NAME = "Name" +SCALE = "Scale (x,y)" +SIZE = "Image size (x*y)" +MODE = "Image type" + +TAGS = {COMMENT: 0, DATE: 0, EQUIPMENT: 0, FRAMES: 0, LUT: 0, NAME: 0, + SCALE: 0, SIZE: 0, MODE: 0} + +OPEN = { + # ifunc93/p3cfunc formats + "0 1 image": ("1", "1"), + "L 1 image": ("1", "1"), + "Greyscale image": ("L", "L"), + "Grayscale image": ("L", "L"), + "RGB image": ("RGB", "RGB;L"), + "RLB image": ("RGB", "RLB"), + "RYB image": ("RGB", "RLB"), + "B1 image": ("1", "1"), + "B2 image": ("P", "P;2"), + "B4 image": ("P", "P;4"), + "X 24 image": ("RGB", "RGB"), + "L 32 S image": ("I", "I;32"), + "L 32 F image": ("F", "F;32"), + # old p3cfunc formats + "RGB3 image": ("RGB", "RGB;T"), + "RYB3 image": ("RGB", "RYB;T"), + # extensions + "LA image": ("LA", "LA;L"), + "RGBA image": ("RGBA", "RGBA;L"), + "RGBX image": ("RGBX", "RGBX;L"), + "CMYK image": ("CMYK", "CMYK;L"), + "YCC image": ("YCbCr", "YCbCr;L"), +} + +# ifunc95 extensions +for i in ["8", "8S", "16", "16S", "32", "32F"]: + OPEN["L %s image" % i] = ("F", "F;%s" % i) + OPEN["L*%s image" % i] = ("F", "F;%s" % i) +for i in ["16", "16L", "16B"]: + OPEN["L %s image" % i] = ("I;%s" % i, "I;%s" % i) + OPEN["L*%s image" % i] = ("I;%s" % i, "I;%s" % i) +for i in ["32S"]: + OPEN["L %s image" % i] = ("I", "I;%s" % i) + OPEN["L*%s image" % i] = ("I", "I;%s" % i) +for i in range(2, 33): + OPEN["L*%s image" % i] = ("F", "F;%s" % i) + + +# -------------------------------------------------------------------- +# Read IM directory + +split = re.compile(br"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") + + +def number(s): + try: + return int(s) + except ValueError: + return float(s) + + +## +# Image plugin for the IFUNC IM file format. + +class ImImageFile(ImageFile.ImageFile): + + format = "IM" + format_description = "IFUNC Image Memory" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # Quick rejection: if there's not an LF among the first + # 100 bytes, this is (probably) not a text header. + + if b"\n" not in self.fp.read(100): + raise SyntaxError("not an IM file") + self.fp.seek(0) + + n = 0 + + # Default values + self.info[MODE] = "L" + self.info[SIZE] = (512, 512) + self.info[FRAMES] = 1 + + self.rawmode = "L" + + while True: + + s = self.fp.read(1) + + # Some versions of IFUNC uses \n\r instead of \r\n... + if s == b"\r": + continue + + if not s or s == b'\0' or s == b'\x1A': + break + + # FIXME: this may read whole file if not a text file + s = s + self.fp.readline() + + if len(s) > 100: + raise SyntaxError("not an IM file") + + if s[-2:] == b'\r\n': + s = s[:-2] + elif s[-1:] == b'\n': + s = s[:-1] + + try: + m = split.match(s) + except re.error as v: + raise SyntaxError("not an IM file") + + if m: + + k, v = m.group(1, 2) + + # Don't know if this is the correct encoding, + # but a decent guess (I guess) + k = k.decode('latin-1', 'replace') + v = v.decode('latin-1', 'replace') + + # Convert value as appropriate + if k in [FRAMES, SCALE, SIZE]: + v = v.replace("*", ",") + v = tuple(map(number, v.split(","))) + if len(v) == 1: + v = v[0] + elif k == MODE and v in OPEN: + v, self.rawmode = OPEN[v] + + # Add to dictionary. Note that COMMENT tags are + # combined into a list of strings. + if k == COMMENT: + if k in self.info: + self.info[k].append(v) + else: + self.info[k] = [v] + else: + self.info[k] = v + + if k in TAGS: + n += 1 + + else: + + raise SyntaxError("Syntax error in IM header: " + + s.decode('ascii', 'replace')) + + if not n: + raise SyntaxError("Not an IM file") + + # Basic attributes + self.size = self.info[SIZE] + self.mode = self.info[MODE] + + # Skip forward to start of image data + while s and s[0:1] != b'\x1A': + s = self.fp.read(1) + if not s: + raise SyntaxError("File truncated") + + if LUT in self.info: + # convert lookup table to palette or lut attribute + palette = self.fp.read(768) + greyscale = 1 # greyscale palette + linear = 1 # linear greyscale palette + for i in range(256): + if palette[i] == palette[i+256] == palette[i+512]: + if i8(palette[i]) != i: + linear = 0 + else: + greyscale = 0 + if self.mode == "L" or self.mode == "LA": + if greyscale: + if not linear: + self.lut = [i8(c) for c in palette[:256]] + else: + if self.mode == "L": + self.mode = self.rawmode = "P" + elif self.mode == "LA": + self.mode = self.rawmode = "PA" + self.palette = ImagePalette.raw("RGB;L", palette) + elif self.mode == "RGB": + if not greyscale or not linear: + self.lut = [i8(c) for c in palette] + + self.frame = 0 + + self.__offset = offs = self.fp.tell() + + self.__fp = self.fp # FIXME: hack + + if self.rawmode[:2] == "F;": + + # ifunc95 formats + try: + # use bit decoder (if necessary) + bits = int(self.rawmode[2:]) + if bits not in [8, 16, 32]: + self.tile = [("bit", (0, 0)+self.size, offs, + (bits, 8, 3, 0, -1))] + return + except ValueError: + pass + + if self.rawmode in ["RGB;T", "RYB;T"]: + # Old LabEye/3PC files. Would be very surprised if anyone + # ever stumbled upon such a file ;-) + size = self.size[0] * self.size[1] + self.tile = [("raw", (0, 0)+self.size, offs, ("G", 0, -1)), + ("raw", (0, 0)+self.size, offs+size, ("R", 0, -1)), + ("raw", (0, 0)+self.size, offs+2*size, ("B", 0, -1))] + else: + # LabEye/IFUNC files + self.tile = [("raw", (0, 0)+self.size, offs, + (self.rawmode, 0, -1))] + + @property + def n_frames(self): + return self.info[FRAMES] + + @property + def is_animated(self): + return self.info[FRAMES] > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + + self.frame = frame + + if self.mode == "1": + bits = 1 + else: + bits = 8 * len(self.mode) + + size = ((self.size[0] * bits + 7) // 8) * self.size[1] + offs = self.__offset + frame * size + + self.fp = self.__fp + + self.tile = [("raw", (0, 0)+self.size, offs, (self.rawmode, 0, -1))] + + def tell(self): + return self.frame + +# +# -------------------------------------------------------------------- +# Save IM files + + +SAVE = { + # mode: (im type, raw mode) + "1": ("0 1", "1"), + "L": ("Greyscale", "L"), + "LA": ("LA", "LA;L"), + "P": ("Greyscale", "P"), + "PA": ("LA", "PA;L"), + "I": ("L 32S", "I;32S"), + "I;16": ("L 16", "I;16"), + "I;16L": ("L 16L", "I;16L"), + "I;16B": ("L 16B", "I;16B"), + "F": ("L 32F", "F;32F"), + "RGB": ("RGB", "RGB;L"), + "RGBA": ("RGBA", "RGBA;L"), + "RGBX": ("RGBX", "RGBX;L"), + "CMYK": ("CMYK", "CMYK;L"), + "YCbCr": ("YCC", "YCbCr;L") +} + + +def _save(im, fp, filename): + + try: + image_type, rawmode = SAVE[im.mode] + except KeyError: + raise ValueError("Cannot save %s images as IM" % im.mode) + + frames = im.encoderinfo.get("frames", 1) + + fp.write(("Image type: %s image\r\n" % image_type).encode('ascii')) + if filename: + fp.write(("Name: %s\r\n" % filename).encode('ascii')) + fp.write(("Image size (x*y): %d*%d\r\n" % im.size).encode('ascii')) + fp.write(("File size (no of images): %d\r\n" % frames).encode('ascii')) + if im.mode == "P": + fp.write(b"Lut: 1\r\n") + fp.write(b"\000" * (511-fp.tell()) + b"\032") + if im.mode == "P": + fp.write(im.im.getpalette("RGB", "RGB;L")) # 768 bytes + ImageFile._save(im, fp, [("raw", (0, 0)+im.size, 0, (rawmode, 0, -1))]) + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(ImImageFile.format, ImImageFile) +Image.register_save(ImImageFile.format, _save) + +Image.register_extension(ImImageFile.format, ".im") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b8943267ab52d11a1a03c28ed3ed970bf9cbd1e GIT binary patch literal 8482 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Image.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Image.py new file mode 100644 index 0000000..c589526 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Image.py @@ -0,0 +1,2930 @@ +# +# The Python Imaging Library. +# $Id$ +# +# the Image class wrapper +# +# partial release history: +# 1995-09-09 fl Created +# 1996-03-11 fl PIL release 0.0 (proof of concept) +# 1996-04-30 fl PIL release 0.1b1 +# 1999-07-28 fl PIL release 1.0 final +# 2000-06-07 fl PIL release 1.1 +# 2000-10-20 fl PIL release 1.1.1 +# 2001-05-07 fl PIL release 1.1.2 +# 2002-03-15 fl PIL release 1.1.3 +# 2003-05-10 fl PIL release 1.1.4 +# 2005-03-28 fl PIL release 1.1.5 +# 2006-12-02 fl PIL release 1.1.6 +# 2009-11-15 fl PIL release 1.1.7 +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +# VERSION is deprecated and will be removed in Pillow 6.0.0. +# PILLOW_VERSION is deprecated and will be removed after that. +# Use __version__ instead. +from . import VERSION, PILLOW_VERSION, __version__, _plugins +from ._util import py3 + +import logging +import warnings +import math + +logger = logging.getLogger(__name__) + + +class DecompressionBombWarning(RuntimeWarning): + pass + + +class DecompressionBombError(Exception): + pass + + +class _imaging_not_installed(object): + # module placeholder + def __getattr__(self, id): + raise ImportError("The _imaging C module is not installed") + + +# Limit to around a quarter gigabyte for a 24 bit (3 bpp) image +MAX_IMAGE_PIXELS = int(1024 * 1024 * 1024 // 4 // 3) + + +try: + # If the _imaging C module is not present, Pillow will not load. + # Note that other modules should not refer to _imaging directly; + # import Image and use the Image.core variable instead. + # Also note that Image.core is not a publicly documented interface, + # and should be considered private and subject to change. + from . import _imaging as core + if __version__ != getattr(core, 'PILLOW_VERSION', None): + raise ImportError("The _imaging extension was built for another " + "version of Pillow or PIL:\n" + "Core version: %s\n" + "Pillow version: %s" % + (getattr(core, 'PILLOW_VERSION', None), + __version__)) + +except ImportError as v: + core = _imaging_not_installed() + # Explanations for ways that we know we might have an import error + if str(v).startswith("Module use of python"): + # The _imaging C module is present, but not compiled for + # the right version (windows only). Print a warning, if + # possible. + warnings.warn( + "The _imaging extension was built for another version " + "of Python.", + RuntimeWarning + ) + elif str(v).startswith("The _imaging extension"): + warnings.warn(str(v), RuntimeWarning) + elif "Symbol not found: _PyUnicodeUCS2_" in str(v): + # should match _PyUnicodeUCS2_FromString and + # _PyUnicodeUCS2_AsLatin1String + warnings.warn( + "The _imaging extension was built for Python with UCS2 support; " + "recompile Pillow or build Python --without-wide-unicode. ", + RuntimeWarning + ) + elif "Symbol not found: _PyUnicodeUCS4_" in str(v): + # should match _PyUnicodeUCS4_FromString and + # _PyUnicodeUCS4_AsLatin1String + warnings.warn( + "The _imaging extension was built for Python with UCS4 support; " + "recompile Pillow or build Python --with-wide-unicode. ", + RuntimeWarning + ) + # Fail here anyway. Don't let people run with a mostly broken Pillow. + # see docs/porting.rst + raise + +try: + import builtins +except ImportError: + import __builtin__ + builtins = __builtin__ + +from . import ImageMode +from ._binary import i8 +from ._util import isPath, isStringType, deferred_error + +import os +import sys +import io +import struct +import atexit + +# type stuff +import numbers +try: + # Python 3 + from collections.abc import Callable +except ImportError: + # Python 2.7 + from collections import Callable + + +# works everywhere, win for pypy, not cpython +USE_CFFI_ACCESS = hasattr(sys, 'pypy_version_info') +try: + import cffi + HAS_CFFI = True +except ImportError: + HAS_CFFI = False + +try: + from pathlib import Path + HAS_PATHLIB = True +except ImportError: + try: + from pathlib2 import Path + HAS_PATHLIB = True + except ImportError: + HAS_PATHLIB = False + + +def isImageType(t): + """ + Checks if an object is an image object. + + .. warning:: + + This function is for internal use only. + + :param t: object to check if it's an image + :returns: True if the object is an image + """ + return hasattr(t, "im") + + +# +# Constants (also defined in _imagingmodule.c!) + +NONE = 0 + +# transpose +FLIP_LEFT_RIGHT = 0 +FLIP_TOP_BOTTOM = 1 +ROTATE_90 = 2 +ROTATE_180 = 3 +ROTATE_270 = 4 +TRANSPOSE = 5 +TRANSVERSE = 6 + +# transforms +AFFINE = 0 +EXTENT = 1 +PERSPECTIVE = 2 +QUAD = 3 +MESH = 4 + +# resampling filters +NEAREST = NONE = 0 +BOX = 4 +BILINEAR = LINEAR = 2 +HAMMING = 5 +BICUBIC = CUBIC = 3 +LANCZOS = ANTIALIAS = 1 + +# dithers +NEAREST = NONE = 0 +ORDERED = 1 # Not yet implemented +RASTERIZE = 2 # Not yet implemented +FLOYDSTEINBERG = 3 # default + +# palettes/quantizers +WEB = 0 +ADAPTIVE = 1 + +MEDIANCUT = 0 +MAXCOVERAGE = 1 +FASTOCTREE = 2 +LIBIMAGEQUANT = 3 + +# categories +NORMAL = 0 +SEQUENCE = 1 +CONTAINER = 2 + +if hasattr(core, 'DEFAULT_STRATEGY'): + DEFAULT_STRATEGY = core.DEFAULT_STRATEGY + FILTERED = core.FILTERED + HUFFMAN_ONLY = core.HUFFMAN_ONLY + RLE = core.RLE + FIXED = core.FIXED + + +# -------------------------------------------------------------------- +# Registries + +ID = [] +OPEN = {} +MIME = {} +SAVE = {} +SAVE_ALL = {} +EXTENSION = {} +DECODERS = {} +ENCODERS = {} + +# -------------------------------------------------------------------- +# Modes supported by this version + +_MODEINFO = { + # NOTE: this table will be removed in future versions. use + # getmode* functions or ImageMode descriptors instead. + + # official modes + "1": ("L", "L", ("1",)), + "L": ("L", "L", ("L",)), + "I": ("L", "I", ("I",)), + "F": ("L", "F", ("F",)), + "P": ("RGB", "L", ("P",)), + "RGB": ("RGB", "L", ("R", "G", "B")), + "RGBX": ("RGB", "L", ("R", "G", "B", "X")), + "RGBA": ("RGB", "L", ("R", "G", "B", "A")), + "CMYK": ("RGB", "L", ("C", "M", "Y", "K")), + "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr")), + "LAB": ("RGB", "L", ("L", "A", "B")), + "HSV": ("RGB", "L", ("H", "S", "V")), + + # Experimental modes include I;16, I;16L, I;16B, RGBa, BGR;15, and + # BGR;24. Use these modes only if you know exactly what you're + # doing... + +} + +if sys.byteorder == 'little': + _ENDIAN = '<' +else: + _ENDIAN = '>' + +_MODE_CONV = { + # official modes + "1": ('|b1', None), # Bits need to be extended to bytes + "L": ('|u1', None), + "LA": ('|u1', 2), + "I": (_ENDIAN + 'i4', None), + "F": (_ENDIAN + 'f4', None), + "P": ('|u1', None), + "RGB": ('|u1', 3), + "RGBX": ('|u1', 4), + "RGBA": ('|u1', 4), + "CMYK": ('|u1', 4), + "YCbCr": ('|u1', 3), + "LAB": ('|u1', 3), # UNDONE - unsigned |u1i1i1 + "HSV": ('|u1', 3), + # I;16 == I;16L, and I;32 == I;32L + "I;16": ('u2', None), + "I;16L": ('i2', None), + "I;16LS": ('u4', None), + "I;32L": ('i4', None), + "I;32LS": ('= 1: + return + + try: + from . import BmpImagePlugin + except ImportError: + pass + try: + from . import GifImagePlugin + except ImportError: + pass + try: + from . import JpegImagePlugin + except ImportError: + pass + try: + from . import PpmImagePlugin + except ImportError: + pass + try: + from . import PngImagePlugin + except ImportError: + pass +# try: +# import TiffImagePlugin +# except ImportError: +# pass + + _initialized = 1 + + +def init(): + """ + Explicitly initializes the Python Imaging Library. This function + loads all available file format drivers. + """ + + global _initialized + if _initialized >= 2: + return 0 + + for plugin in _plugins: + try: + logger.debug("Importing %s", plugin) + __import__("PIL.%s" % plugin, globals(), locals(), []) + except ImportError as e: + logger.debug("Image: failed to import %s: %s", plugin, e) + + if OPEN or SAVE: + _initialized = 2 + return 1 + + +# -------------------------------------------------------------------- +# Codec factories (used by tobytes/frombytes and ImageFile.load) + +def _getdecoder(mode, decoder_name, args, extra=()): + + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + decoder = DECODERS[decoder_name] + return decoder(mode, *args + extra) + except KeyError: + pass + try: + # get decoder + decoder = getattr(core, decoder_name + "_decoder") + # print(decoder, mode, args + extra) + return decoder(mode, *args + extra) + except AttributeError: + raise IOError("decoder %s not available" % decoder_name) + + +def _getencoder(mode, encoder_name, args, extra=()): + + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + encoder = ENCODERS[encoder_name] + return encoder(mode, *args + extra) + except KeyError: + pass + try: + # get encoder + encoder = getattr(core, encoder_name + "_encoder") + # print(encoder, mode, args + extra) + return encoder(mode, *args + extra) + except AttributeError: + raise IOError("encoder %s not available" % encoder_name) + + +# -------------------------------------------------------------------- +# Simple expression analyzer + +def coerce_e(value): + return value if isinstance(value, _E) else _E(value) + + +class _E(object): + def __init__(self, data): + self.data = data + + def __add__(self, other): + return _E((self.data, "__add__", coerce_e(other).data)) + + def __mul__(self, other): + return _E((self.data, "__mul__", coerce_e(other).data)) + + +def _getscaleoffset(expr): + stub = ["stub"] + data = expr(_E(stub)).data + try: + (a, b, c) = data # simplified syntax + if (a is stub and b == "__mul__" and isinstance(c, numbers.Number)): + return c, 0.0 + if a is stub and b == "__add__" and isinstance(c, numbers.Number): + return 1.0, c + except TypeError: + pass + try: + ((a, b, c), d, e) = data # full syntax + if (a is stub and b == "__mul__" and isinstance(c, numbers.Number) and + d == "__add__" and isinstance(e, numbers.Number)): + return c, e + except TypeError: + pass + raise ValueError("illegal expression") + + +# -------------------------------------------------------------------- +# Implementation wrapper + +class Image(object): + """ + This class represents an image object. To create + :py:class:`~PIL.Image.Image` objects, use the appropriate factory + functions. There's hardly ever any reason to call the Image constructor + directly. + + * :py:func:`~PIL.Image.open` + * :py:func:`~PIL.Image.new` + * :py:func:`~PIL.Image.frombytes` + """ + format = None + format_description = None + _close_exclusive_fp_after_loading = True + + def __init__(self): + # FIXME: take "new" parameters / other image? + # FIXME: turn mode and size into delegating properties? + self.im = None + self.mode = "" + self.size = (0, 0) + self.palette = None + self.info = {} + self.category = NORMAL + self.readonly = 0 + self.pyaccess = None + + @property + def width(self): + return self.size[0] + + @property + def height(self): + return self.size[1] + + def _new(self, im): + new = Image() + new.im = im + new.mode = im.mode + new.size = im.size + if im.mode in ('P', 'PA'): + if self.palette: + new.palette = self.palette.copy() + else: + from . import ImagePalette + new.palette = ImagePalette.ImagePalette() + new.info = self.info.copy() + return new + + # Context Manager Support + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + """ + Closes the file pointer, if possible. + + This operation will destroy the image core and release its memory. + The image data will be unusable afterward. + + This function is only required to close images that have not + had their file read and closed by the + :py:meth:`~PIL.Image.Image.load` method. See + :ref:`file-handling` for more information. + """ + try: + self.fp.close() + self.fp = None + except Exception as msg: + logger.debug("Error closing: %s", msg) + + if getattr(self, 'map', None): + self.map = None + + # Instead of simply setting to None, we're setting up a + # deferred error that will better explain that the core image + # object is gone. + self.im = deferred_error(ValueError("Operation on closed image")) + + if sys.version_info.major >= 3: + def __del__(self): + if (hasattr(self, 'fp') and hasattr(self, '_exclusive_fp') + and self.fp and self._exclusive_fp): + self.fp.close() + self.fp = None + + def _copy(self): + self.load() + self.im = self.im.copy() + self.pyaccess = None + self.readonly = 0 + + def _ensure_mutable(self): + if self.readonly: + self._copy() + else: + self.load() + + def _dump(self, file=None, format=None, **options): + import tempfile + + suffix = '' + if format: + suffix = '.'+format + + if not file: + f, filename = tempfile.mkstemp(suffix) + os.close(f) + else: + filename = file + if not filename.endswith(suffix): + filename = filename + suffix + + self.load() + + if not format or format == "PPM": + self.im.save_ppm(filename) + else: + self.save(filename, format, **options) + + return filename + + def __eq__(self, other): + return (isinstance(other, Image) and + self.__class__.__name__ == other.__class__.__name__ and + self.mode == other.mode and + self.size == other.size and + self.info == other.info and + self.category == other.category and + self.readonly == other.readonly and + self.getpalette() == other.getpalette() and + self.tobytes() == other.tobytes()) + + def __ne__(self, other): + eq = (self == other) + return not eq + + def __repr__(self): + return "<%s.%s image mode=%s size=%dx%d at 0x%X>" % ( + self.__class__.__module__, self.__class__.__name__, + self.mode, self.size[0], self.size[1], + id(self) + ) + + def _repr_png_(self): + """ iPython display hook support + + :returns: png version of the image as bytes + """ + from io import BytesIO + b = BytesIO() + self.save(b, 'PNG') + return b.getvalue() + + @property + def __array_interface__(self): + # numpy array interface support + new = {} + shape, typestr = _conv_type_shape(self) + new['shape'] = shape + new['typestr'] = typestr + new['version'] = 3 + if self.mode == '1': + # Binary images need to be extended from bits to bytes + # See: https://github.com/python-pillow/Pillow/issues/350 + new['data'] = self.tobytes('raw', 'L') + else: + new['data'] = self.tobytes() + return new + + def __getstate__(self): + return [ + self.info, + self.mode, + self.size, + self.getpalette(), + self.tobytes()] + + def __setstate__(self, state): + Image.__init__(self) + self.tile = [] + info, mode, size, palette, data = state + self.info = info + self.mode = mode + self.size = size + self.im = core.new(mode, size) + if mode in ("L", "P") and palette: + self.putpalette(palette) + self.frombytes(data) + + def tobytes(self, encoder_name="raw", *args): + """ + Return image as a bytes object. + + .. warning:: + + This method returns the raw image data from the internal + storage. For compressed image data (e.g. PNG, JPEG) use + :meth:`~.save`, with a BytesIO parameter for in-memory + data. + + :param encoder_name: What encoder to use. The default is to + use the standard "raw" encoder. + :param args: Extra arguments to the encoder. + :rtype: A bytes object. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if encoder_name == "raw" and args == (): + args = self.mode + + self.load() + + # unpack data + e = _getencoder(self.mode, encoder_name, args) + e.setimage(self.im) + + bufsize = max(65536, self.size[0] * 4) # see RawEncode.c + + data = [] + while True: + l, s, d = e.encode(bufsize) + data.append(d) + if s: + break + if s < 0: + raise RuntimeError("encoder error %d in tobytes" % s) + + return b"".join(data) + + def tostring(self, *args, **kw): + raise NotImplementedError("tostring() has been removed. " + "Please call tobytes() instead.") + + def tobitmap(self, name="image"): + """ + Returns the image converted to an X11 bitmap. + + .. note:: This method only works for mode "1" images. + + :param name: The name prefix to use for the bitmap variables. + :returns: A string containing an X11 bitmap. + :raises ValueError: If the mode is not "1" + """ + + self.load() + if self.mode != "1": + raise ValueError("not a bitmap") + data = self.tobytes("xbm") + return b"".join([ + ("#define %s_width %d\n" % (name, self.size[0])).encode('ascii'), + ("#define %s_height %d\n" % (name, self.size[1])).encode('ascii'), + ("static char %s_bits[] = {\n" % name).encode('ascii'), data, b"};" + ]) + + def frombytes(self, data, decoder_name="raw", *args): + """ + Loads this image with pixel data from a bytes object. + + This method is similar to the :py:func:`~PIL.Image.frombytes` function, + but loads data into this image instead of creating a new image object. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + # default format + if decoder_name == "raw" and args == (): + args = self.mode + + # unpack data + d = _getdecoder(self.mode, decoder_name, args) + d.setimage(self.im) + s = d.decode(data) + + if s[0] >= 0: + raise ValueError("not enough image data") + if s[1] != 0: + raise ValueError("cannot decode image data") + + def fromstring(self, *args, **kw): + raise NotImplementedError("fromstring() has been removed. " + "Please call frombytes() instead.") + + def load(self): + """ + Allocates storage for the image and loads the pixel data. In + normal cases, you don't need to call this method, since the + Image class automatically loads an opened image when it is + accessed for the first time. + + This method will close the file associated with the image. See + :ref:`file-handling` for more information. + + :returns: An image access object. + :rtype: :ref:`PixelAccess` or :py:class:`PIL.PyAccess` + """ + if self.im and self.palette and self.palette.dirty: + # realize palette + self.im.putpalette(*self.palette.getdata()) + self.palette.dirty = 0 + self.palette.mode = "RGB" + self.palette.rawmode = None + if "transparency" in self.info: + if isinstance(self.info["transparency"], int): + self.im.putpalettealpha(self.info["transparency"], 0) + else: + self.im.putpalettealphas(self.info["transparency"]) + self.palette.mode = "RGBA" + + if self.im: + if HAS_CFFI and USE_CFFI_ACCESS: + if self.pyaccess: + return self.pyaccess + from . import PyAccess + self.pyaccess = PyAccess.new(self, self.readonly) + if self.pyaccess: + return self.pyaccess + return self.im.pixel_access(self.readonly) + + def verify(self): + """ + Verifies the contents of a file. For data read from a file, this + method attempts to determine if the file is broken, without + actually decoding the image data. If this method finds any + problems, it raises suitable exceptions. If you need to load + the image after using this method, you must reopen the image + file. + """ + pass + + def convert(self, mode=None, matrix=None, dither=None, + palette=WEB, colors=256): + """ + Returns a converted copy of this image. For the "P" mode, this + method translates pixels through the palette. If mode is + omitted, a mode is chosen so that all information in the image + and the palette can be represented without a palette. + + The current version supports all possible conversions between + "L", "RGB" and "CMYK." The **matrix** argument only supports "L" + and "RGB". + + When translating a color image to black and white (mode "L"), + the library uses the ITU-R 601-2 luma transform:: + + L = R * 299/1000 + G * 587/1000 + B * 114/1000 + + The default method of converting a greyscale ("L") or "RGB" + image into a bilevel (mode "1") image uses Floyd-Steinberg + dither to approximate the original image luminosity levels. If + dither is NONE, all non-zero values are set to 255 (white). To + use other thresholds, use the :py:meth:`~PIL.Image.Image.point` + method. + + :param mode: The requested mode. See: :ref:`concept-modes`. + :param matrix: An optional conversion matrix. If given, this + should be 4- or 12-tuple containing floating point values. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are NONE or FLOYDSTEINBERG (default). + :param palette: Palette to use when converting from mode "RGB" + to "P". Available palettes are WEB or ADAPTIVE. + :param colors: Number of colors to use for the ADAPTIVE palette. + Defaults to 256. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if not mode and self.mode == "P": + # determine default mode + if self.palette: + mode = self.palette.mode + else: + mode = "RGB" + if not mode or (mode == self.mode and not matrix): + return self.copy() + + if matrix: + # matrix conversion + if mode not in ("L", "RGB"): + raise ValueError("illegal conversion") + im = self.im.convert_matrix(mode, matrix) + return self._new(im) + + if mode == "P" and self.mode == "RGBA": + return self.quantize(colors) + + trns = None + delete_trns = False + # transparency handling + if "transparency" in self.info and \ + self.info['transparency'] is not None: + if self.mode in ('L', 'RGB') and mode == 'RGBA': + # Use transparent conversion to promote from transparent + # color to an alpha channel. + new_im = self._new(self.im.convert_transparent( + mode, self.info['transparency'])) + del(new_im.info['transparency']) + return new_im + elif self.mode in ('L', 'RGB', 'P') and mode in ('L', 'RGB', 'P'): + t = self.info['transparency'] + if isinstance(t, bytes): + # Dragons. This can't be represented by a single color + warnings.warn('Palette images with Transparency ' + + ' expressed in bytes should be converted ' + + 'to RGBA images') + delete_trns = True + else: + # get the new transparency color. + # use existing conversions + trns_im = Image()._new(core.new(self.mode, (1, 1))) + if self.mode == 'P': + trns_im.putpalette(self.palette) + if isinstance(t, tuple): + try: + t = trns_im.palette.getcolor(t) + except: + raise ValueError("Couldn't allocate a palette " + "color for transparency") + trns_im.putpixel((0, 0), t) + + if mode in ('L', 'RGB'): + trns_im = trns_im.convert(mode) + else: + # can't just retrieve the palette number, got to do it + # after quantization. + trns_im = trns_im.convert('RGB') + trns = trns_im.getpixel((0, 0)) + + elif self.mode == 'P' and mode == 'RGBA': + t = self.info['transparency'] + delete_trns = True + + if isinstance(t, bytes): + self.im.putpalettealphas(t) + elif isinstance(t, int): + self.im.putpalettealpha(t, 0) + else: + raise ValueError("Transparency for P mode should" + + " be bytes or int") + + if mode == "P" and palette == ADAPTIVE: + im = self.im.quantize(colors) + new = self._new(im) + from . import ImagePalette + new.palette = ImagePalette.raw("RGB", new.im.getpalette("RGB")) + if delete_trns: + # This could possibly happen if we requantize to fewer colors. + # The transparency would be totally off in that case. + del(new.info['transparency']) + if trns is not None: + try: + new.info['transparency'] = new.palette.getcolor(trns) + except: + # if we can't make a transparent color, don't leave the old + # transparency hanging around to mess us up. + del(new.info['transparency']) + warnings.warn("Couldn't allocate palette entry " + + "for transparency") + return new + + # colorspace conversion + if dither is None: + dither = FLOYDSTEINBERG + + try: + im = self.im.convert(mode, dither) + except ValueError: + try: + # normalize source image and try again + im = self.im.convert(getmodebase(self.mode)) + im = im.convert(mode, dither) + except KeyError: + raise ValueError("illegal conversion") + + new_im = self._new(im) + if delete_trns: + # crash fail if we leave a bytes transparency in an rgb/l mode. + del(new_im.info['transparency']) + if trns is not None: + if new_im.mode == 'P': + try: + new_im.info['transparency'] = new_im.palette.getcolor(trns) + except: + del(new_im.info['transparency']) + warnings.warn("Couldn't allocate palette entry " + + "for transparency") + else: + new_im.info['transparency'] = trns + return new_im + + def quantize(self, colors=256, method=None, kmeans=0, palette=None): + """ + Convert the image to 'P' mode with the specified number + of colors. + + :param colors: The desired number of colors, <= 256 + :param method: 0 = median cut + 1 = maximum coverage + 2 = fast octree + 3 = libimagequant + :param kmeans: Integer + :param palette: Quantize to the palette of given :py:class:`PIL.Image.Image`. + :returns: A new image + + """ + + self.load() + + if method is None: + # defaults: + method = 0 + if self.mode == 'RGBA': + method = 2 + + if self.mode == 'RGBA' and method not in (2, 3): + # Caller specified an invalid mode. + raise ValueError( + 'Fast Octree (method == 2) and libimagequant (method == 3) ' + + 'are the only valid methods for quantizing RGBA images') + + if palette: + # use palette from reference image + palette.load() + if palette.mode != "P": + raise ValueError("bad mode for palette image") + if self.mode != "RGB" and self.mode != "L": + raise ValueError( + "only RGB or L mode images can be quantized to a palette" + ) + im = self.im.convert("P", 1, palette.im) + return self._new(im) + + return self._new(self.im.quantize(colors, method, kmeans)) + + def copy(self): + """ + Copies this image. Use this method if you wish to paste things + into an image, but still retain the original. + + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + self.load() + return self._new(self.im.copy()) + + __copy__ = copy + + def crop(self, box=None): + """ + Returns a rectangular region from this image. The box is a + 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. + + Note: Prior to Pillow 3.4.0, this was a lazy operation. + + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if box is None: + return self.copy() + + self.load() + return self._new(self._crop(self.im, box)) + + def _crop(self, im, box): + """ + Returns a rectangular region from the core image object im. + + This is equivalent to calling im.crop((x0, y0, x1, y1)), but + includes additional sanity checks. + + :param im: a core image object + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :returns: A core image object. + """ + + x0, y0, x1, y1 = map(int, map(round, box)) + + if x1 < x0: + x1 = x0 + if y1 < y0: + y1 = y0 + + _decompression_bomb_check((x1, y1)) + + return im.crop((x0, y0, x1, y1)) + + def draft(self, mode, size): + """ + Configures the image file loader so it returns a version of the + image that as closely as possible matches the given mode and + size. For example, you can use this method to convert a color + JPEG to greyscale while loading it, or to extract a 128x192 + version from a PCD file. + + Note that this method modifies the :py:class:`~PIL.Image.Image` object + in place. If the image has already been loaded, this method has no + effect. + + Note: This method is not implemented for most images. It is + currently implemented only for JPEG and PCD images. + + :param mode: The requested mode. + :param size: The requested size. + """ + pass + + def _expand(self, xmargin, ymargin=None): + if ymargin is None: + ymargin = xmargin + self.load() + return self._new(self.im.expand(xmargin, ymargin, 0)) + + def filter(self, filter): + """ + Filters this image using the given filter. For a list of + available filters, see the :py:mod:`~PIL.ImageFilter` module. + + :param filter: Filter kernel. + :returns: An :py:class:`~PIL.Image.Image` object. """ + + from . import ImageFilter + + self.load() + + if isinstance(filter, Callable): + filter = filter() + if not hasattr(filter, "filter"): + raise TypeError("filter argument should be ImageFilter.Filter " + + "instance or class") + + multiband = isinstance(filter, ImageFilter.MultibandFilter) + if self.im.bands == 1 or multiband: + return self._new(filter.filter(self.im)) + + ims = [] + for c in range(self.im.bands): + ims.append(self._new(filter.filter(self.im.getband(c)))) + return merge(self.mode, ims) + + def getbands(self): + """ + Returns a tuple containing the name of each band in this image. + For example, **getbands** on an RGB image returns ("R", "G", "B"). + + :returns: A tuple containing band names. + :rtype: tuple + """ + return ImageMode.getmode(self.mode).bands + + def getbbox(self): + """ + Calculates the bounding box of the non-zero regions in the + image. + + :returns: The bounding box is returned as a 4-tuple defining the + left, upper, right, and lower pixel coordinate. See + :ref:`coordinate-system`. If the image is completely empty, this + method returns None. + + """ + + self.load() + return self.im.getbbox() + + def getcolors(self, maxcolors=256): + """ + Returns a list of colors used in this image. + + :param maxcolors: Maximum number of colors. If this number is + exceeded, this method returns None. The default limit is + 256 colors. + :returns: An unsorted list of (count, pixel) values. + """ + + self.load() + if self.mode in ("1", "L", "P"): + h = self.im.histogram() + out = [] + for i in range(256): + if h[i]: + out.append((h[i], i)) + if len(out) > maxcolors: + return None + return out + return self.im.getcolors(maxcolors) + + def getdata(self, band=None): + """ + Returns the contents of this image as a sequence object + containing pixel values. The sequence object is flattened, so + that values for line one follow directly after the values of + line zero, and so on. + + Note that the sequence object returned by this method is an + internal PIL data type, which only supports certain sequence + operations. To convert it to an ordinary sequence (e.g. for + printing), use **list(im.getdata())**. + + :param band: What band to return. The default is to return + all bands. To return a single band, pass in the index + value (e.g. 0 to get the "R" band from an "RGB" image). + :returns: A sequence-like object. + """ + + self.load() + if band is not None: + return self.im.getband(band) + return self.im # could be abused + + def getextrema(self): + """ + Gets the the minimum and maximum pixel values for each band in + the image. + + :returns: For a single-band image, a 2-tuple containing the + minimum and maximum pixel value. For a multi-band image, + a tuple containing one 2-tuple for each band. + """ + + self.load() + if self.im.bands > 1: + extrema = [] + for i in range(self.im.bands): + extrema.append(self.im.getband(i).getextrema()) + return tuple(extrema) + return self.im.getextrema() + + def getim(self): + """ + Returns a capsule that points to the internal image memory. + + :returns: A capsule object. + """ + + self.load() + return self.im.ptr + + def getpalette(self): + """ + Returns the image palette as a list. + + :returns: A list of color values [r, g, b, ...], or None if the + image has no palette. + """ + + self.load() + try: + if py3: + return list(self.im.getpalette()) + else: + return [i8(c) for c in self.im.getpalette()] + except ValueError: + return None # no palette + + def getpixel(self, xy): + """ + Returns the pixel value at a given position. + + :param xy: The coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: The pixel value. If the image is a multi-layer image, + this method returns a tuple. + """ + + self.load() + if self.pyaccess: + return self.pyaccess.getpixel(xy) + return self.im.getpixel(xy) + + def getprojection(self): + """ + Get projection to x and y axes + + :returns: Two sequences, indicating where there are non-zero + pixels along the X-axis and the Y-axis, respectively. + """ + + self.load() + x, y = self.im.getprojection() + return [i8(c) for c in x], [i8(c) for c in y] + + def histogram(self, mask=None, extrema=None): + """ + Returns a histogram for the image. The histogram is returned as + a list of pixel counts, one for each pixel value in the source + image. If the image has more than one band, the histograms for + all bands are concatenated (for example, the histogram for an + "RGB" image contains 768 values). + + A bilevel image (mode "1") is treated as a greyscale ("L") image + by this method. + + If a mask is provided, the method returns a histogram for those + parts of the image where the mask image is non-zero. The mask + image must have the same size as the image, and be either a + bi-level image (mode "1") or a greyscale image ("L"). + + :param mask: An optional mask. + :returns: A list containing pixel counts. + """ + self.load() + if mask: + mask.load() + return self.im.histogram((0, 0), mask.im) + if self.mode in ("I", "F"): + if extrema is None: + extrema = self.getextrema() + return self.im.histogram(extrema) + return self.im.histogram() + + def offset(self, xoffset, yoffset=None): + raise NotImplementedError("offset() has been removed. " + "Please call ImageChops.offset() instead.") + + def paste(self, im, box=None, mask=None): + """ + Pastes another image into this image. The box argument is either + a 2-tuple giving the upper left corner, a 4-tuple defining the + left, upper, right, and lower pixel coordinate, or None (same as + (0, 0)). See :ref:`coordinate-system`. If a 4-tuple is given, the size + of the pasted image must match the size of the region. + + If the modes don't match, the pasted image is converted to the mode of + this image (see the :py:meth:`~PIL.Image.Image.convert` method for + details). + + Instead of an image, the source can be a integer or tuple + containing pixel values. The method then fills the region + with the given color. When creating RGB images, you can + also use color strings as supported by the ImageColor module. + + If a mask is given, this method updates only the regions + indicated by the mask. You can use either "1", "L" or "RGBA" + images (in the latter case, the alpha band is used as mask). + Where the mask is 255, the given image is copied as is. Where + the mask is 0, the current value is preserved. Intermediate + values will mix the two images together, including their alpha + channels if they have them. + + See :py:meth:`~PIL.Image.Image.alpha_composite` if you want to + combine images with respect to their alpha channels. + + :param im: Source image or pixel value (integer or tuple). + :param box: An optional 4-tuple giving the region to paste into. + If a 2-tuple is used instead, it's treated as the upper left + corner. If omitted or None, the source is pasted into the + upper left corner. + + If an image is given as the second argument and there is no + third, the box defaults to (0, 0), and the second argument + is interpreted as a mask image. + :param mask: An optional mask image. + """ + + if isImageType(box) and mask is None: + # abbreviated paste(im, mask) syntax + mask = box + box = None + + if box is None: + box = (0, 0) + + if len(box) == 2: + # upper left corner given; get size from image or mask + if isImageType(im): + size = im.size + elif isImageType(mask): + size = mask.size + else: + # FIXME: use self.size here? + raise ValueError( + "cannot determine region size; use 4-item box" + ) + box += (box[0]+size[0], box[1]+size[1]) + + if isStringType(im): + from . import ImageColor + im = ImageColor.getcolor(im, self.mode) + + elif isImageType(im): + im.load() + if self.mode != im.mode: + if self.mode != "RGB" or im.mode not in ("RGBA", "RGBa"): + # should use an adapter for this! + im = im.convert(self.mode) + im = im.im + + self._ensure_mutable() + + if mask: + mask.load() + self.im.paste(im, box, mask.im) + else: + self.im.paste(im, box) + + def alpha_composite(self, im, dest=(0, 0), source=(0, 0)): + """ 'In-place' analog of Image.alpha_composite. Composites an image + onto this image. + + :param im: image to composite over this one + :param dest: Optional 2 tuple (left, top) specifying the upper + left corner in this (destination) image. + :param source: Optional 2 (left, top) tuple for the upper left + corner in the overlay source image, or 4 tuple (left, top, right, + bottom) for the bounds of the source rectangle + + Performance Note: Not currently implemented in-place in the core layer. + """ + + if not isinstance(source, (list, tuple)): + raise ValueError("Source must be a tuple") + if not isinstance(dest, (list, tuple)): + raise ValueError("Destination must be a tuple") + if not len(source) in (2, 4): + raise ValueError("Source must be a 2 or 4-tuple") + if not len(dest) == 2: + raise ValueError("Destination must be a 2-tuple") + if min(source) < 0: + raise ValueError("Source must be non-negative") + if min(dest) < 0: + raise ValueError("Destination must be non-negative") + + if len(source) == 2: + source = source + im.size + + # over image, crop if it's not the whole thing. + if source == (0, 0) + im.size: + overlay = im + else: + overlay = im.crop(source) + + # target for the paste + box = dest + (dest[0] + overlay.width, dest[1] + overlay.height) + + # destination image. don't copy if we're using the whole image. + if box == (0, 0) + self.size: + background = self + else: + background = self.crop(box) + + result = alpha_composite(background, overlay) + self.paste(result, box) + + def point(self, lut, mode=None): + """ + Maps this image through a lookup table or function. + + :param lut: A lookup table, containing 256 (or 65536 if + self.mode=="I" and mode == "L") values per band in the + image. A function can be used instead, it should take a + single argument. The function is called once for each + possible pixel value, and the resulting table is applied to + all bands of the image. + :param mode: Output mode (default is same as input). In the + current version, this can only be used if the source image + has mode "L" or "P", and the output has mode "1" or the + source image mode is "I" and the output mode is "L". + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if isinstance(lut, ImagePointHandler): + return lut.point(self) + + if callable(lut): + # if it isn't a list, it should be a function + if self.mode in ("I", "I;16", "F"): + # check if the function can be used with point_transform + # UNDONE wiredfool -- I think this prevents us from ever doing + # a gamma function point transform on > 8bit images. + scale, offset = _getscaleoffset(lut) + return self._new(self.im.point_transform(scale, offset)) + # for other modes, convert the function to a table + lut = [lut(i) for i in range(256)] * self.im.bands + + if self.mode == "F": + # FIXME: _imaging returns a confusing error message for this case + raise ValueError("point operation not supported for this mode") + + return self._new(self.im.point(lut, mode)) + + def putalpha(self, alpha): + """ + Adds or replaces the alpha layer in this image. If the image + does not have an alpha layer, it's converted to "LA" or "RGBA". + The new layer must be either "L" or "1". + + :param alpha: The new alpha layer. This can either be an "L" or "1" + image having the same size as this image, or an integer or + other color value. + """ + + self._ensure_mutable() + + if self.mode not in ("LA", "RGBA"): + # attempt to promote self to a matching alpha mode + try: + mode = getmodebase(self.mode) + "A" + try: + self.im.setmode(mode) + except (AttributeError, ValueError): + # do things the hard way + im = self.im.convert(mode) + if im.mode not in ("LA", "RGBA"): + raise ValueError # sanity check + self.im = im + self.pyaccess = None + self.mode = self.im.mode + except (KeyError, ValueError): + raise ValueError("illegal image mode") + + if self.mode == "LA": + band = 1 + else: + band = 3 + + if isImageType(alpha): + # alpha layer + if alpha.mode not in ("1", "L"): + raise ValueError("illegal image mode") + alpha.load() + if alpha.mode == "1": + alpha = alpha.convert("L") + else: + # constant alpha + try: + self.im.fillband(band, alpha) + except (AttributeError, ValueError): + # do things the hard way + alpha = new("L", self.size, alpha) + else: + return + + self.im.putband(alpha.im, band) + + def putdata(self, data, scale=1.0, offset=0.0): + """ + Copies pixel data to this image. This method copies data from a + sequence object into the image, starting at the upper left + corner (0, 0), and continuing until either the image or the + sequence ends. The scale and offset values are used to adjust + the sequence values: **pixel = value*scale + offset**. + + :param data: A sequence object. + :param scale: An optional scale value. The default is 1.0. + :param offset: An optional offset value. The default is 0.0. + """ + + self._ensure_mutable() + + self.im.putdata(data, scale, offset) + + def putpalette(self, data, rawmode="RGB"): + """ + Attaches a palette to this image. The image must be a "P" or + "L" image, and the palette sequence must contain 768 integer + values, where each group of three values represent the red, + green, and blue values for the corresponding pixel + index. Instead of an integer sequence, you can use an 8-bit + string. + + :param data: A palette sequence (either a list or a string). + :param rawmode: The raw mode of the palette. + """ + from . import ImagePalette + + if self.mode not in ("L", "P"): + raise ValueError("illegal image mode") + self.load() + if isinstance(data, ImagePalette.ImagePalette): + palette = ImagePalette.raw(data.rawmode, data.palette) + else: + if not isinstance(data, bytes): + if py3: + data = bytes(data) + else: + data = "".join(chr(x) for x in data) + palette = ImagePalette.raw(rawmode, data) + self.mode = "P" + self.palette = palette + self.palette.mode = "RGB" + self.load() # install new palette + + def putpixel(self, xy, value): + """ + Modifies the pixel at the given position. The color is given as + a single numerical value for single-band images, and a tuple for + multi-band images. + + Note that this method is relatively slow. For more extensive changes, + use :py:meth:`~PIL.Image.Image.paste` or the :py:mod:`~PIL.ImageDraw` + module instead. + + See: + + * :py:meth:`~PIL.Image.Image.paste` + * :py:meth:`~PIL.Image.Image.putdata` + * :py:mod:`~PIL.ImageDraw` + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param value: The pixel value. + """ + + if self.readonly: + self._copy() + self.load() + + if self.pyaccess: + return self.pyaccess.putpixel(xy, value) + return self.im.putpixel(xy, value) + + def remap_palette(self, dest_map, source_palette=None): + """ + Rewrites the image to reorder the palette. + + :param dest_map: A list of indexes into the original palette. + e.g. [1,0] would swap a two item palette, and list(range(255)) + is the identity transform. + :param source_palette: Bytes or None. + :returns: An :py:class:`~PIL.Image.Image` object. + + """ + from . import ImagePalette + + if self.mode not in ("L", "P"): + raise ValueError("illegal image mode") + + if source_palette is None: + if self.mode == "P": + real_source_palette = self.im.getpalette("RGB")[:768] + else: # L-mode + real_source_palette = bytearray(i//3 for i in range(768)) + else: + real_source_palette = source_palette + + palette_bytes = b"" + new_positions = [0]*256 + + # pick only the used colors from the palette + for i, oldPosition in enumerate(dest_map): + palette_bytes += real_source_palette[oldPosition*3:oldPosition*3+3] + new_positions[oldPosition] = i + + # replace the palette color id of all pixel with the new id + + # Palette images are [0..255], mapped through a 1 or 3 + # byte/color map. We need to remap the whole image + # from palette 1 to palette 2. New_positions is + # an array of indexes into palette 1. Palette 2 is + # palette 1 with any holes removed. + + # We're going to leverage the convert mechanism to use the + # C code to remap the image from palette 1 to palette 2, + # by forcing the source image into 'L' mode and adding a + # mapping 'L' mode palette, then converting back to 'L' + # sans palette thus converting the image bytes, then + # assigning the optimized RGB palette. + + # perf reference, 9500x4000 gif, w/~135 colors + # 14 sec prepatch, 1 sec postpatch with optimization forced. + + mapping_palette = bytearray(new_positions) + + m_im = self.copy() + m_im.mode = 'P' + + m_im.palette = ImagePalette.ImagePalette("RGB", + palette=mapping_palette*3, + size=768) + # possibly set palette dirty, then + # m_im.putpalette(mapping_palette, 'L') # converts to 'P' + # or just force it. + # UNDONE -- this is part of the general issue with palettes + m_im.im.putpalette(*m_im.palette.getdata()) + + m_im = m_im.convert('L') + + # Internally, we require 768 bytes for a palette. + new_palette_bytes = (palette_bytes + + (768 - len(palette_bytes)) * b'\x00') + m_im.putpalette(new_palette_bytes) + m_im.palette = ImagePalette.ImagePalette("RGB", + palette=palette_bytes, + size=len(palette_bytes)) + + return m_im + + def resize(self, size, resample=NEAREST, box=None): + """ + Returns a resized copy of this image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: An optional resampling filter. This can be + one of :py:attr:`PIL.Image.NEAREST`, :py:attr:`PIL.Image.BOX`, + :py:attr:`PIL.Image.BILINEAR`, :py:attr:`PIL.Image.HAMMING`, + :py:attr:`PIL.Image.BICUBIC` or :py:attr:`PIL.Image.LANCZOS`. + If omitted, or if the image has mode "1" or "P", it is + set :py:attr:`PIL.Image.NEAREST`. + See: :ref:`concept-filters`. + :param box: An optional 4-tuple of floats giving the region + of the source image which should be scaled. + The values should be within (0, 0, width, height) rectangle. + If omitted or None, the entire source is used. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if resample not in ( + NEAREST, BILINEAR, BICUBIC, LANCZOS, BOX, HAMMING, + ): + raise ValueError("unknown resampling filter") + + size = tuple(size) + + if box is None: + box = (0, 0) + self.size + else: + box = tuple(box) + + if self.size == size and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ("1", "P"): + resample = NEAREST + + if self.mode == 'LA': + return self.convert('La').resize(size, resample, box).convert('LA') + + if self.mode == 'RGBA': + return self.convert('RGBa').resize(size, resample, box).convert('RGBA') + + self.load() + + return self._new(self.im.resize(size, resample, box)) + + def rotate(self, angle, resample=NEAREST, expand=0, center=None, + translate=None, fillcolor=None): + """ + Returns a rotated copy of this image. This method returns a + copy of this image, rotated the given number of degrees counter + clockwise around its centre. + + :param angle: In degrees counter clockwise. + :param resample: An optional resampling filter. This can be + one of :py:attr:`PIL.Image.NEAREST` (use nearest neighbour), + :py:attr:`PIL.Image.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:attr:`PIL.Image.BICUBIC` + (cubic spline interpolation in a 4x4 environment). + If omitted, or if the image has mode "1" or "P", it is + set :py:attr:`PIL.Image.NEAREST`. See :ref:`concept-filters`. + :param expand: Optional expansion flag. If true, expands the output + image to make it large enough to hold the entire rotated image. + If false or omitted, make the output image the same size as the + input image. Note that the expand flag assumes rotation around + the center and no translation. + :param center: Optional center of rotation (a 2-tuple). Origin is + the upper left corner. Default is the center of the image. + :param translate: An optional post-rotate translation (a 2-tuple). + :param fillcolor: An optional color for area outside the rotated image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + angle = angle % 360.0 + + # Fast paths regardless of filter, as long as we're not + # translating or changing the center. + if not (center or translate): + if angle == 0: + return self.copy() + if angle == 180: + return self.transpose(ROTATE_180) + if angle == 90 and expand: + return self.transpose(ROTATE_90) + if angle == 270 and expand: + return self.transpose(ROTATE_270) + + # Calculate the affine matrix. Note that this is the reverse + # transformation (from destination image to source) because we + # want to interpolate the (discrete) destination pixel from + # the local area around the (floating) source pixel. + + # The matrix we actually want (note that it operates from the right): + # (1, 0, tx) (1, 0, cx) ( cos a, sin a, 0) (1, 0, -cx) + # (0, 1, ty) * (0, 1, cy) * (-sin a, cos a, 0) * (0, 1, -cy) + # (0, 0, 1) (0, 0, 1) ( 0, 0, 1) (0, 0, 1) + + # The reverse matrix is thus: + # (1, 0, cx) ( cos -a, sin -a, 0) (1, 0, -cx) (1, 0, -tx) + # (0, 1, cy) * (-sin -a, cos -a, 0) * (0, 1, -cy) * (0, 1, -ty) + # (0, 0, 1) ( 0, 0, 1) (0, 0, 1) (0, 0, 1) + + # In any case, the final translation may be updated at the end to + # compensate for the expand flag. + + w, h = self.size + + if translate is None: + post_trans = (0, 0) + else: + post_trans = translate + if center is None: + rotn_center = (w / 2.0, h / 2.0) # FIXME These should be rounded to ints? + else: + rotn_center = center + + angle = - math.radians(angle) + matrix = [ + round(math.cos(angle), 15), round(math.sin(angle), 15), 0.0, + round(-math.sin(angle), 15), round(math.cos(angle), 15), 0.0 + ] + + def transform(x, y, matrix): + (a, b, c, d, e, f) = matrix + return a*x + b*y + c, d*x + e*y + f + + matrix[2], matrix[5] = transform(-rotn_center[0] - post_trans[0], + -rotn_center[1] - post_trans[1], matrix) + matrix[2] += rotn_center[0] + matrix[5] += rotn_center[1] + + if expand: + # calculate output size + xx = [] + yy = [] + for x, y in ((0, 0), (w, 0), (w, h), (0, h)): + x, y = transform(x, y, matrix) + xx.append(x) + yy.append(y) + nw = int(math.ceil(max(xx)) - math.floor(min(xx))) + nh = int(math.ceil(max(yy)) - math.floor(min(yy))) + + # We multiply a translation matrix from the right. Because of its + # special form, this is the same as taking the image of the + # translation vector as new translation vector. + matrix[2], matrix[5] = transform(-(nw - w) / 2.0, + -(nh - h) / 2.0, + matrix) + w, h = nw, nh + + return self.transform((w, h), AFFINE, matrix, resample, fillcolor=fillcolor) + + def save(self, fp, format=None, **params): + """ + Saves this image under the given filename. If no format is + specified, the format to use is determined from the filename + extension, if possible. + + Keyword options can be used to provide additional instructions + to the writer. If a writer doesn't recognise an option, it is + silently ignored. The available options are described in the + :doc:`image format documentation + <../handbook/image-file-formats>` for each writer. + + You can use a file object instead of a filename. In this case, + you must always specify the format. The file object must + implement the ``seek``, ``tell``, and ``write`` + methods, and be opened in binary mode. + + :param fp: A filename (string), pathlib.Path object or file object. + :param format: Optional format override. If omitted, the + format to use is determined from the filename extension. + If a file object was used instead of a filename, this + parameter should always be used. + :param params: Extra parameters to the image writer. + :returns: None + :exception KeyError: If the output format could not be determined + from the file name. Use the format option to solve this. + :exception IOError: If the file could not be written. The file + may have been created, and may contain partial data. + """ + + filename = "" + open_fp = False + if isPath(fp): + filename = fp + open_fp = True + elif HAS_PATHLIB and isinstance(fp, Path): + filename = str(fp) + open_fp = True + if not filename and hasattr(fp, "name") and isPath(fp.name): + # only set the name for metadata purposes + filename = fp.name + + # may mutate self! + self.load() + + save_all = params.pop('save_all', False) + self.encoderinfo = params + self.encoderconfig = () + + preinit() + + ext = os.path.splitext(filename)[1].lower() + + if not format: + if ext not in EXTENSION: + init() + try: + format = EXTENSION[ext] + except KeyError: + raise ValueError('unknown file extension: {}'.format(ext)) + + if format.upper() not in SAVE: + init() + if save_all: + save_handler = SAVE_ALL[format.upper()] + else: + save_handler = SAVE[format.upper()] + + if open_fp: + if params.get('append', False): + fp = builtins.open(filename, "r+b") + else: + # Open also for reading ("+"), because TIFF save_all + # writer needs to go back and edit the written data. + fp = builtins.open(filename, "w+b") + + try: + save_handler(self, fp, filename) + finally: + # do what we can to clean up + if open_fp: + fp.close() + + def seek(self, frame): + """ + Seeks to the given frame in this sequence file. If you seek + beyond the end of the sequence, the method raises an + **EOFError** exception. When a sequence file is opened, the + library automatically seeks to frame 0. + + Note that in the current version of the library, most sequence + formats only allows you to seek to the next frame. + + See :py:meth:`~PIL.Image.Image.tell`. + + :param frame: Frame number, starting at 0. + :exception EOFError: If the call attempts to seek beyond the end + of the sequence. + """ + + # overridden by file handlers + if frame != 0: + raise EOFError + + def show(self, title=None, command=None): + """ + Displays this image. This method is mainly intended for + debugging purposes. + + On Unix platforms, this method saves the image to a temporary + PPM file, and calls either the **xv** utility or the **display** + utility, depending on which one can be found. + + On macOS, this method saves the image to a temporary BMP file, and + opens it with the native Preview application. + + On Windows, it saves the image to a temporary BMP file, and uses + the standard BMP display utility to show it (usually Paint). + + :param title: Optional title to use for the image window, + where possible. + :param command: command used to show the image + """ + + _show(self, title=title, command=command) + + def split(self): + """ + Split this image into individual bands. This method returns a + tuple of individual image bands from an image. For example, + splitting an "RGB" image creates three new images each + containing a copy of one of the original bands (red, green, + blue). + + If you need only one band, :py:meth:`~PIL.Image.Image.getchannel` + method can be more convenient and faster. + + :returns: A tuple containing bands. + """ + + self.load() + if self.im.bands == 1: + ims = [self.copy()] + else: + ims = map(self._new, self.im.split()) + return tuple(ims) + + def getchannel(self, channel): + """ + Returns an image containing a single channel of the source image. + + :param channel: What channel to return. Could be index + (0 for "R" channel of "RGB") or channel name + ("A" for alpha channel of "RGBA"). + :returns: An image in "L" mode. + + .. versionadded:: 4.3.0 + """ + self.load() + + if isStringType(channel): + try: + channel = self.getbands().index(channel) + except ValueError: + raise ValueError( + 'The image has no channel "{}"'.format(channel)) + + return self._new(self.im.getband(channel)) + + def tell(self): + """ + Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`. + + :returns: Frame number, starting with 0. + """ + return 0 + + def thumbnail(self, size, resample=BICUBIC): + """ + Make this image into a thumbnail. This method modifies the + image to contain a thumbnail version of itself, no larger than + the given size. This method calculates an appropriate thumbnail + size to preserve the aspect of the image, calls the + :py:meth:`~PIL.Image.Image.draft` method to configure the file reader + (where applicable), and finally resizes the image. + + Note that this function modifies the :py:class:`~PIL.Image.Image` + object in place. If you need to use the full resolution image as well, + apply this method to a :py:meth:`~PIL.Image.Image.copy` of the original + image. + + :param size: Requested size. + :param resample: Optional resampling filter. This can be one + of :py:attr:`PIL.Image.NEAREST`, :py:attr:`PIL.Image.BILINEAR`, + :py:attr:`PIL.Image.BICUBIC`, or :py:attr:`PIL.Image.LANCZOS`. + If omitted, it defaults to :py:attr:`PIL.Image.BICUBIC`. + (was :py:attr:`PIL.Image.NEAREST` prior to version 2.5.0) + :returns: None + """ + + # preserve aspect ratio + x, y = self.size + if x > size[0]: + y = int(max(y * size[0] / x, 1)) + x = int(size[0]) + if y > size[1]: + x = int(max(x * size[1] / y, 1)) + y = int(size[1]) + size = x, y + + if size == self.size: + return + + self.draft(None, size) + + im = self.resize(size, resample) + + self.im = im.im + self.mode = im.mode + self.size = size + + self.readonly = 0 + self.pyaccess = None + + # FIXME: the different transform methods need further explanation + # instead of bloating the method docs, add a separate chapter. + def transform(self, size, method, data=None, resample=NEAREST, + fill=1, fillcolor=None): + """ + Transforms this image. This method creates a new image with the + given size, and the same mode as the original, and copies data + to the new image using the given transform. + + :param size: The output size. + :param method: The transformation method. This is one of + :py:attr:`PIL.Image.EXTENT` (cut out a rectangular subregion), + :py:attr:`PIL.Image.AFFINE` (affine transform), + :py:attr:`PIL.Image.PERSPECTIVE` (perspective transform), + :py:attr:`PIL.Image.QUAD` (map a quadrilateral to a rectangle), or + :py:attr:`PIL.Image.MESH` (map a number of source quadrilaterals + in one operation). + + It may also be an :py:class:`~PIL.Image.ImageTransformHandler` + object:: + class Example(Image.ImageTransformHandler): + def transform(size, method, data, resample, fill=1): + # Return result + + It may also be an object with a :py:meth:`~method.getdata` method + that returns a tuple supplying new **method** and **data** values:: + class Example(object): + def getdata(self): + method = Image.EXTENT + data = (0, 0, 100, 100) + return method, data + :param data: Extra data to the transformation method. + :param resample: Optional resampling filter. It can be one of + :py:attr:`PIL.Image.NEAREST` (use nearest neighbour), + :py:attr:`PIL.Image.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:attr:`PIL.Image.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image + has mode "1" or "P", it is set to :py:attr:`PIL.Image.NEAREST`. + :param fill: If **method** is an + :py:class:`~PIL.Image.ImageTransformHandler` object, this is one of + the arguments passed to it. Otherwise, it is unused. + :param fillcolor: Optional fill color for the area outside the transform + in the output image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if self.mode == 'LA': + return self.convert('La').transform( + size, method, data, resample, fill, fillcolor).convert('LA') + + if self.mode == 'RGBA': + return self.convert('RGBa').transform( + size, method, data, resample, fill, fillcolor).convert('RGBA') + + if isinstance(method, ImageTransformHandler): + return method.transform(size, self, resample=resample, fill=fill) + + if hasattr(method, "getdata"): + # compatibility w. old-style transform objects + method, data = method.getdata() + + if data is None: + raise ValueError("missing method data") + + im = new(self.mode, size, fillcolor) + if method == MESH: + # list of quads + for box, quad in data: + im.__transformer(box, self, QUAD, quad, resample, + fillcolor is None) + else: + im.__transformer((0, 0)+size, self, method, data, + resample, fillcolor is None) + + return im + + def __transformer(self, box, image, method, data, + resample=NEAREST, fill=1): + w = box[2] - box[0] + h = box[3] - box[1] + + if method == AFFINE: + data = data[0:6] + + elif method == EXTENT: + # convert extent to an affine transform + x0, y0, x1, y1 = data + xs = float(x1 - x0) / w + ys = float(y1 - y0) / h + method = AFFINE + data = (xs, 0, x0, 0, ys, y0) + + elif method == PERSPECTIVE: + data = data[0:8] + + elif method == QUAD: + # quadrilateral warp. data specifies the four corners + # given as NW, SW, SE, and NE. + nw = data[0:2] + sw = data[2:4] + se = data[4:6] + ne = data[6:8] + x0, y0 = nw + As = 1.0 / w + At = 1.0 / h + data = (x0, (ne[0]-x0)*As, (sw[0]-x0)*At, + (se[0]-sw[0]-ne[0]+x0)*As*At, + y0, (ne[1]-y0)*As, (sw[1]-y0)*At, + (se[1]-sw[1]-ne[1]+y0)*As*At) + + else: + raise ValueError("unknown transformation method") + + if resample not in (NEAREST, BILINEAR, BICUBIC): + raise ValueError("unknown resampling filter") + + image.load() + + self.load() + + if image.mode in ("1", "P"): + resample = NEAREST + + self.im.transform2(box, image.im, method, data, resample, fill) + + def transpose(self, method): + """ + Transpose image (flip or rotate in 90 degree steps) + + :param method: One of :py:attr:`PIL.Image.FLIP_LEFT_RIGHT`, + :py:attr:`PIL.Image.FLIP_TOP_BOTTOM`, :py:attr:`PIL.Image.ROTATE_90`, + :py:attr:`PIL.Image.ROTATE_180`, :py:attr:`PIL.Image.ROTATE_270`, + :py:attr:`PIL.Image.TRANSPOSE` or :py:attr:`PIL.Image.TRANSVERSE`. + :returns: Returns a flipped or rotated copy of this image. + """ + + self.load() + return self._new(self.im.transpose(method)) + + def effect_spread(self, distance): + """ + Randomly spread pixels in an image. + + :param distance: Distance to spread pixels. + """ + self.load() + return self._new(self.im.effect_spread(distance)) + + def toqimage(self): + """Returns a QImage copy of this image""" + from . import ImageQt + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.toqimage(self) + + def toqpixmap(self): + """Returns a QPixmap copy of this image""" + from . import ImageQt + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.toqpixmap(self) + + +# -------------------------------------------------------------------- +# Abstract handlers. + +class ImagePointHandler(object): + # used as a mixin by point transforms (for use with im.point) + pass + + +class ImageTransformHandler(object): + # used as a mixin by geometry transforms (for use with im.transform) + pass + + +# -------------------------------------------------------------------- +# Factories + +# +# Debugging + +def _wedge(): + """Create greyscale wedge (for debugging only)""" + + return Image()._new(core.wedge("L")) + + +def _check_size(size): + """ + Common check to enforce type and sanity check on size tuples + + :param size: Should be a 2 tuple of (width, height) + :returns: True, or raises a ValueError + """ + + if not isinstance(size, (list, tuple)): + raise ValueError("Size must be a tuple") + if len(size) != 2: + raise ValueError("Size must be a tuple of length 2") + if size[0] < 0 or size[1] < 0: + raise ValueError("Width and height must be >= 0") + + return True + + +def new(mode, size, color=0): + """ + Creates a new image with the given mode and size. + + :param mode: The mode to use for the new image. See: + :ref:`concept-modes`. + :param size: A 2-tuple, containing (width, height) in pixels. + :param color: What color to use for the image. Default is black. + If given, this should be a single integer or floating point value + for single-band modes, and a tuple for multi-band modes (one value + per band). When creating RGB images, you can also use color + strings as supported by the ImageColor module. If the color is + None, the image is not initialised. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + if color is None: + # don't initialize + return Image()._new(core.new(mode, size)) + + if isStringType(color): + # css3-style specifier + + from . import ImageColor + color = ImageColor.getcolor(color, mode) + + return Image()._new(core.fill(mode, size, color)) + + +def frombytes(mode, size, data, decoder_name="raw", *args): + """ + Creates a copy of an image memory from pixel data in a buffer. + + In its simplest form, this function takes three arguments + (mode, size, and unpacked pixel data). + + You can also use any pixel decoder supported by PIL. For more + information on available decoders, see the section + :ref:`Writing Your Own File Decoder `. + + Note that this function decodes pixel data only, not entire images. + If you have an entire image in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load + it. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A byte buffer containing raw data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw" and args == (): + args = mode + + im = new(mode, size) + im.frombytes(data, decoder_name, args) + return im + + +def fromstring(*args, **kw): + raise NotImplementedError("fromstring() has been removed. " + + "Please call frombytes() instead.") + + +def frombuffer(mode, size, data, decoder_name="raw", *args): + """ + Creates an image memory referencing pixel data in a byte buffer. + + This function is similar to :py:func:`~PIL.Image.frombytes`, but uses data + in the byte buffer, where possible. This means that changes to the + original buffer object are reflected in this image). Not all modes can + share memory; supported modes include "L", "RGBX", "RGBA", and "CMYK". + + Note that this function decodes pixel data only, not entire images. + If you have an entire image file in a string, wrap it in a + **BytesIO** object, and use :py:func:`~PIL.Image.open` to load it. + + In the current version, the default parameters used for the "raw" decoder + differs from that used for :py:func:`~PIL.Image.frombytes`. This is a + bug, and will probably be fixed in a future release. The current release + issues a warning if you do this; to disable the warning, you should provide + the full set of parameters. See below for details. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A bytes or other buffer object containing raw + data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. For the + default encoder ("raw"), it's recommended that you provide the + full set of parameters:: + + frombuffer(mode, size, data, "raw", mode, 0, 1) + + :returns: An :py:class:`~PIL.Image.Image` object. + + .. versionadded:: 1.1.4 + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw": + if args == (): + warnings.warn( + "the frombuffer defaults may change in a future release; " + "for portability, change the call to read:\n" + " frombuffer(mode, size, data, 'raw', mode, 0, 1)", + RuntimeWarning, stacklevel=2 + ) + args = mode, 0, -1 # may change to (mode, 0, 1) post-1.1.6 + if args[0] in _MAPMODES: + im = new(mode, (1, 1)) + im = im._new( + core.map_buffer(data, size, decoder_name, None, 0, args) + ) + im.readonly = 1 + return im + + return frombytes(mode, size, data, decoder_name, args) + + +def fromarray(obj, mode=None): + """ + Creates an image memory from an object exporting the array interface + (using the buffer protocol). + + If obj is not contiguous, then the tobytes method is called + and :py:func:`~PIL.Image.frombuffer` is used. + + :param obj: Object with array interface + :param mode: Mode to use (will be determined from type if None) + See: :ref:`concept-modes`. + :returns: An image object. + + .. versionadded:: 1.1.6 + """ + arr = obj.__array_interface__ + shape = arr['shape'] + ndim = len(shape) + strides = arr.get('strides', None) + if mode is None: + try: + typekey = (1, 1) + shape[2:], arr['typestr'] + mode, rawmode = _fromarray_typemap[typekey] + except KeyError: + # print(typekey) + raise TypeError("Cannot handle this data type") + else: + rawmode = mode + if mode in ["1", "L", "I", "P", "F"]: + ndmax = 2 + elif mode == "RGB": + ndmax = 3 + else: + ndmax = 4 + if ndim > ndmax: + raise ValueError("Too many dimensions: %d > %d." % (ndim, ndmax)) + + size = shape[1], shape[0] + if strides is not None: + if hasattr(obj, 'tobytes'): + obj = obj.tobytes() + else: + obj = obj.tostring() + + return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) + + +def fromqimage(im): + """Creates an image instance from a QImage image""" + from . import ImageQt + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.fromqimage(im) + + +def fromqpixmap(im): + """Creates an image instance from a QPixmap image""" + from . import ImageQt + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.fromqpixmap(im) + + +_fromarray_typemap = { + # (shape, typestr) => mode, rawmode + # first two members of shape are set to one + ((1, 1), "|b1"): ("1", "1;8"), + ((1, 1), "|u1"): ("L", "L"), + ((1, 1), "|i1"): ("I", "I;8"), + ((1, 1), "u2"): ("I", "I;16B"), + ((1, 1), "i2"): ("I", "I;16BS"), + ((1, 1), "u4"): ("I", "I;32B"), + ((1, 1), "i4"): ("I", "I;32BS"), + ((1, 1), "f4"): ("F", "F;32BF"), + ((1, 1), "f8"): ("F", "F;64BF"), + ((1, 1, 2), "|u1"): ("LA", "LA"), + ((1, 1, 3), "|u1"): ("RGB", "RGB"), + ((1, 1, 4), "|u1"): ("RGBA", "RGBA"), + } + +# shortcuts +_fromarray_typemap[((1, 1), _ENDIAN + "i4")] = ("I", "I") +_fromarray_typemap[((1, 1), _ENDIAN + "f4")] = ("F", "F") + + +def _decompression_bomb_check(size): + if MAX_IMAGE_PIXELS is None: + return + + pixels = size[0] * size[1] + + if pixels > 2 * MAX_IMAGE_PIXELS: + raise DecompressionBombError( + "Image size (%d pixels) exceeds limit of %d pixels, " + "could be decompression bomb DOS attack." % + (pixels, 2 * MAX_IMAGE_PIXELS)) + + if pixels > MAX_IMAGE_PIXELS: + warnings.warn( + "Image size (%d pixels) exceeds limit of %d pixels, " + "could be decompression bomb DOS attack." % + (pixels, MAX_IMAGE_PIXELS), + DecompressionBombWarning) + + +def open(fp, mode="r"): + """ + Opens and identifies the given image file. + + This is a lazy operation; this function identifies the file, but + the file remains open and the actual image data is not read from + the file until you try to process the data (or call the + :py:meth:`~PIL.Image.Image.load` method). See + :py:func:`~PIL.Image.new`. See :ref:`file-handling`. + + :param fp: A filename (string), pathlib.Path object or a file object. + The file object must implement :py:meth:`~file.read`, + :py:meth:`~file.seek`, and :py:meth:`~file.tell` methods, + and be opened in binary mode. + :param mode: The mode. If given, this argument must be "r". + :returns: An :py:class:`~PIL.Image.Image` object. + :exception IOError: If the file cannot be found, or the image cannot be + opened and identified. + """ + + if mode != "r": + raise ValueError("bad mode %r" % mode) + + exclusive_fp = False + filename = "" + if isPath(fp): + filename = fp + elif HAS_PATHLIB and isinstance(fp, Path): + filename = str(fp.resolve()) + + if filename: + fp = builtins.open(filename, "rb") + exclusive_fp = True + + try: + fp.seek(0) + except (AttributeError, io.UnsupportedOperation): + fp = io.BytesIO(fp.read()) + exclusive_fp = True + + prefix = fp.read(16) + + preinit() + + def _open_core(fp, filename, prefix): + for i in ID: + try: + factory, accept = OPEN[i] + if not accept or accept(prefix): + fp.seek(0) + im = factory(fp, filename) + _decompression_bomb_check(im.size) + return im + except (SyntaxError, IndexError, TypeError, struct.error): + # Leave disabled by default, spams the logs with image + # opening failures that are entirely expected. + # logger.debug("", exc_info=True) + continue + return None + + im = _open_core(fp, filename, prefix) + + if im is None: + if init(): + im = _open_core(fp, filename, prefix) + + if im: + im._exclusive_fp = exclusive_fp + return im + + if exclusive_fp: + fp.close() + raise IOError("cannot identify image file %r" + % (filename if filename else fp)) + +# +# Image processing. + + +def alpha_composite(im1, im2): + """ + Alpha composite im2 over im1. + + :param im1: The first image. Must have mode RGBA. + :param im2: The second image. Must have mode RGBA, and the same size as + the first image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.alpha_composite(im1.im, im2.im)) + + +def blend(im1, im2, alpha): + """ + Creates a new image by interpolating between two input images, using + a constant alpha.:: + + out = image1 * (1.0 - alpha) + image2 * alpha + + :param im1: The first image. + :param im2: The second image. Must have the same mode and size as + the first image. + :param alpha: The interpolation alpha factor. If alpha is 0.0, a + copy of the first image is returned. If alpha is 1.0, a copy of + the second image is returned. There are no restrictions on the + alpha value. If necessary, the result is clipped to fit into + the allowed output range. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.blend(im1.im, im2.im, alpha)) + + +def composite(image1, image2, mask): + """ + Create composite image by blending images using a transparency mask. + + :param image1: The first image. + :param image2: The second image. Must have the same mode and + size as the first image. + :param mask: A mask image. This image can have mode + "1", "L", or "RGBA", and must have the same size as the + other two images. + """ + + image = image2.copy() + image.paste(image1, None, mask) + return image + + +def eval(image, *args): + """ + Applies the function (which should take one argument) to each pixel + in the given image. If the image has more than one band, the same + function is applied to each band. Note that the function is + evaluated once for each possible pixel value, so you cannot use + random components or other generators. + + :param image: The input image. + :param function: A function object, taking one integer argument. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + return image.point(args[0]) + + +def merge(mode, bands): + """ + Merge a set of single band images into a new multiband image. + + :param mode: The mode to use for the output image. See: + :ref:`concept-modes`. + :param bands: A sequence containing one single-band image for + each band in the output image. All bands must have the + same size. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if getmodebands(mode) != len(bands) or "*" in mode: + raise ValueError("wrong number of bands") + for band in bands[1:]: + if band.mode != getmodetype(mode): + raise ValueError("mode mismatch") + if band.size != bands[0].size: + raise ValueError("size mismatch") + for band in bands: + band.load() + return bands[0]._new(core.merge(mode, *[b.im for b in bands])) + + +# -------------------------------------------------------------------- +# Plugin registry + +def register_open(id, factory, accept=None): + """ + Register an image file plugin. This function should not be used + in application code. + + :param id: An image format identifier. + :param factory: An image file factory method. + :param accept: An optional function that can be used to quickly + reject images having another format. + """ + id = id.upper() + ID.append(id) + OPEN[id] = factory, accept + + +def register_mime(id, mimetype): + """ + Registers an image MIME type. This function should not be used + in application code. + + :param id: An image format identifier. + :param mimetype: The image MIME type for this format. + """ + MIME[id.upper()] = mimetype + + +def register_save(id, driver): + """ + Registers an image save function. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE[id.upper()] = driver + + +def register_save_all(id, driver): + """ + Registers an image function to save all the frames + of a multiframe format. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE_ALL[id.upper()] = driver + + +def register_extension(id, extension): + """ + Registers an image extension. This function should not be + used in application code. + + :param id: An image format identifier. + :param extension: An extension used for this format. + """ + EXTENSION[extension.lower()] = id.upper() + + +def register_extensions(id, extensions): + """ + Registers image extensions. This function should not be + used in application code. + + :param id: An image format identifier. + :param extensions: A list of extensions used for this format. + """ + for extension in extensions: + register_extension(id, extension) + + +def registered_extensions(): + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + if not EXTENSION: + init() + return EXTENSION + + +def register_decoder(name, decoder): + """ + Registers an image decoder. This function should not be + used in application code. + + :param name: The name of the decoder + :param decoder: A callable(mode, args) that returns an + ImageFile.PyDecoder object + + .. versionadded:: 4.1.0 + """ + DECODERS[name] = decoder + + +def register_encoder(name, encoder): + """ + Registers an image encoder. This function should not be + used in application code. + + :param name: The name of the encoder + :param encoder: A callable(mode, args) that returns an + ImageFile.PyEncoder object + + .. versionadded:: 4.1.0 + """ + ENCODERS[name] = encoder + + +# -------------------------------------------------------------------- +# Simple display support. User code may override this. + +def _show(image, **options): + # override me, as necessary + _showxv(image, **options) + + +def _showxv(image, title=None, **options): + from . import ImageShow + ImageShow.show(image, title, **options) + + +# -------------------------------------------------------------------- +# Effects + +def effect_mandelbrot(size, extent, quality): + """ + Generate a Mandelbrot set covering the given extent. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param extent: The extent to cover, as a 4-tuple: + (x0, y0, x1, y2). + :param quality: Quality. + """ + return Image()._new(core.effect_mandelbrot(size, extent, quality)) + + +def effect_noise(size, sigma): + """ + Generate Gaussian noise centered around 128. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param sigma: Standard deviation of noise. + """ + return Image()._new(core.effect_noise(size, sigma)) + + +def linear_gradient(mode): + """ + Generate 256x256 linear gradient from black to white, top to bottom. + + :param mode: Input mode. + """ + return Image()._new(core.linear_gradient(mode)) + + +def radial_gradient(mode): + """ + Generate 256x256 radial gradient from black to white, centre to edge. + + :param mode: Input mode. + """ + return Image()._new(core.radial_gradient(mode)) + + +# -------------------------------------------------------------------- +# Resources + +def _apply_env_variables(env=None): + if env is None: + env = os.environ + + for var_name, setter in [ + ('PILLOW_ALIGNMENT', core.set_alignment), + ('PILLOW_BLOCK_SIZE', core.set_block_size), + ('PILLOW_BLOCKS_MAX', core.set_blocks_max), + ]: + if var_name not in env: + continue + + var = env[var_name].lower() + + units = 1 + for postfix, mul in [('k', 1024), ('m', 1024*1024)]: + if var.endswith(postfix): + units = mul + var = var[:-len(postfix)] + + try: + var = int(var) * units + except ValueError: + warnings.warn("{0} is not int".format(var_name)) + continue + + try: + setter(var) + except ValueError as e: + warnings.warn("{0}: {1}".format(var_name, e)) + + +_apply_env_variables() +atexit.register(core.clear_cache) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Image.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Image.pyc new file mode 100644 index 0000000000000000000000000000000000000000..600fb75e2a4d3454f8fb0324a409dede0548f426 GIT binary patch literal 89657 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 sum+}%eyI2oCj using 'renderingIntent' -> proof + colorspace -> using 'proofRenderingIntent' -> output + colorspace + + Added LCMS FLAGS support. + Added FLAGS["SOFTPROOFING"] as default flag for + buildProofTransform (otherwise the proof profile/intent + would be ignored). + + 0.1.0 pil March 2009 - added to PIL, as PIL.ImageCms + + 0.0.2 alpha Jan 6, 2002 + + Added try/except statements around type() checks of + potential CObjects... Python won't let you use type() + on them, and raises a TypeError (stupid, if you ask + me!) + + Added buildProofTransformFromOpenProfiles() function. + Additional fixes in DLL, see DLL code for details. + + 0.0.1 alpha first public release, Dec. 26, 2002 + + Known to-do list with current version (of Python interface, not pyCMSdll): + + none + +""" + +VERSION = "1.0.0 pil" + +# --------------------------------------------------------------------. + +core = _imagingcms + +# +# intent/direction values + +INTENT_PERCEPTUAL = 0 +INTENT_RELATIVE_COLORIMETRIC = 1 +INTENT_SATURATION = 2 +INTENT_ABSOLUTE_COLORIMETRIC = 3 + +DIRECTION_INPUT = 0 +DIRECTION_OUTPUT = 1 +DIRECTION_PROOF = 2 + +# +# flags + +FLAGS = { + "MATRIXINPUT": 1, + "MATRIXOUTPUT": 2, + "MATRIXONLY": (1 | 2), + "NOWHITEONWHITEFIXUP": 4, # Don't hot fix scum dot + # Don't create prelinearization tables on precalculated transforms + # (internal use): + "NOPRELINEARIZATION": 16, + "GUESSDEVICECLASS": 32, # Guess device class (for transform2devicelink) + "NOTCACHE": 64, # Inhibit 1-pixel cache + "NOTPRECALC": 256, + "NULLTRANSFORM": 512, # Don't transform anyway + "HIGHRESPRECALC": 1024, # Use more memory to give better accuracy + "LOWRESPRECALC": 2048, # Use less memory to minimize resources + "WHITEBLACKCOMPENSATION": 8192, + "BLACKPOINTCOMPENSATION": 8192, + "GAMUTCHECK": 4096, # Out of Gamut alarm + "SOFTPROOFING": 16384, # Do softproofing + "PRESERVEBLACK": 32768, # Black preservation + "NODEFAULTRESOURCEDEF": 16777216, # CRD special + "GRIDPOINTS": lambda n: ((n) & 0xFF) << 16 # Gridpoints +} + +_MAX_FLAG = 0 +for flag in FLAGS.values(): + if isinstance(flag, int): + _MAX_FLAG = _MAX_FLAG | flag + + +# --------------------------------------------------------------------. +# Experimental PIL-level API +# --------------------------------------------------------------------. + +## +# Profile. + +class ImageCmsProfile(object): + + def __init__(self, profile): + """ + :param profile: Either a string representing a filename, + a file like object containing a profile or a + low-level profile object + + """ + + if isStringType(profile): + self._set(core.profile_open(profile), profile) + elif hasattr(profile, "read"): + self._set(core.profile_frombytes(profile.read())) + elif isinstance(profile, _imagingcms.CmsProfile): + self._set(profile) + else: + raise TypeError("Invalid type for Profile") + + def _set(self, profile, filename=None): + self.profile = profile + self.filename = filename + if profile: + self.product_name = None # profile.product_name + self.product_info = None # profile.product_info + else: + self.product_name = None + self.product_info = None + + def tobytes(self): + """ + Returns the profile in a format suitable for embedding in + saved images. + + :returns: a bytes object containing the ICC profile. + """ + + return core.profile_tobytes(self.profile) + + +class ImageCmsTransform(Image.ImagePointHandler): + + """ + Transform. This can be used with the procedural API, or with the standard + Image.point() method. + + Will return the output profile in the output.info['icc_profile']. + """ + + def __init__(self, input, output, input_mode, output_mode, + intent=INTENT_PERCEPTUAL, proof=None, + proof_intent=INTENT_ABSOLUTE_COLORIMETRIC, flags=0): + if proof is None: + self.transform = core.buildTransform( + input.profile, output.profile, + input_mode, output_mode, + intent, + flags + ) + else: + self.transform = core.buildProofTransform( + input.profile, output.profile, proof.profile, + input_mode, output_mode, + intent, proof_intent, + flags + ) + # Note: inputMode and outputMode are for pyCMS compatibility only + self.input_mode = self.inputMode = input_mode + self.output_mode = self.outputMode = output_mode + + self.output_profile = output + + def point(self, im): + return self.apply(im) + + def apply(self, im, imOut=None): + im.load() + if imOut is None: + imOut = Image.new(self.output_mode, im.size, None) + self.transform.apply(im.im.id, imOut.im.id) + imOut.info['icc_profile'] = self.output_profile.tobytes() + return imOut + + def apply_in_place(self, im): + im.load() + if im.mode != self.output_mode: + raise ValueError("mode mismatch") # wrong output mode + self.transform.apply(im.im.id, im.im.id) + im.info['icc_profile'] = self.output_profile.tobytes() + return im + + +def get_display_profile(handle=None): + """ (experimental) Fetches the profile for the current display device. + :returns: None if the profile is not known. + """ + + if sys.platform == "win32": + from PIL import ImageWin + if isinstance(handle, ImageWin.HDC): + profile = core.get_display_profile_win32(handle, 1) + else: + profile = core.get_display_profile_win32(handle or 0) + else: + try: + get = _imagingcms.get_display_profile + except AttributeError: + return None + else: + profile = get() + return ImageCmsProfile(profile) + + +# --------------------------------------------------------------------. +# pyCMS compatible layer +# --------------------------------------------------------------------. + +class PyCMSError(Exception): + + """ (pyCMS) Exception class. + This is used for all errors in the pyCMS API. """ + pass + + +def profileToProfile( + im, inputProfile, outputProfile, renderingIntent=INTENT_PERCEPTUAL, + outputMode=None, inPlace=0, flags=0): + """ + (pyCMS) Applies an ICC transformation to a given image, mapping from + inputProfile to outputProfile. + + If the input or output profiles specified are not valid filenames, a + PyCMSError will be raised. If inPlace == TRUE and outputMode != im.mode, + a PyCMSError will be raised. If an error occurs during application of + the profiles, a PyCMSError will be raised. If outputMode is not a mode + supported by the outputProfile (or by pyCMS), a PyCMSError will be + raised. + + This function applies an ICC transformation to im from inputProfile's + color space to outputProfile's color space using the specified rendering + intent to decide how to handle out-of-gamut colors. + + OutputMode can be used to specify that a color mode conversion is to + be done using these profiles, but the specified profiles must be able + to handle that mode. I.e., if converting im from RGB to CMYK using + profiles, the input profile must handle RGB data, and the output + profile must handle CMYK data. + + :param im: An open PIL image object (i.e. Image.new(...) or + Image.open(...), etc.) + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this image, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this image, or a profile object + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC = 1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC = 3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + + see the pyCMS documentation for details on rendering intents and what + they do. + :param outputMode: A valid PIL mode for the output image (i.e. "RGB", + "CMYK", etc.). Note: if rendering the image "inPlace", outputMode + MUST be the same mode as the input, or omitted completely. If + omitted, the outputMode will be the same as the mode of the input + image (im.mode) + :param inPlace: Boolean (1 = True, None or 0 = False). If True, the + original image is modified in-place, and None is returned. If False + (default), a new Image object is returned with the transform applied. + :param flags: Integer (0-...) specifying additional flags + :returns: Either None or a new PIL image object, depending on value of + inPlace + :exception PyCMSError: + """ + + if outputMode is None: + outputMode = im.mode + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError( + "flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + transform = ImageCmsTransform( + inputProfile, outputProfile, im.mode, outputMode, + renderingIntent, flags=flags + ) + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + return imOut + + +def getOpenProfile(profileFilename): + """ + (pyCMS) Opens an ICC profile file. + + The PyCMSProfile object can be passed back into pyCMS for use in creating + transforms and such (as in ImageCms.buildTransformFromOpenProfiles()). + + If profileFilename is not a valid filename for an ICC profile, a PyCMSError + will be raised. + + :param profileFilename: String, as a valid filename path to the ICC profile + you wish to open, or a file-like object. + :returns: A CmsProfile class object. + :exception PyCMSError: + """ + + try: + return ImageCmsProfile(profileFilename) + except (IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def buildTransform( + inputProfile, outputProfile, inMode, outMode, + renderingIntent=INTENT_PERCEPTUAL, flags=0): + """ + (pyCMS) Builds an ICC transform mapping from the inputProfile to the + outputProfile. Use applyTransform to apply the transform to a given + image. + + If the input or output profiles specified are not valid filenames, a + PyCMSError will be raised. If an error occurs during creation of the + transform, a PyCMSError will be raised. + + If inMode or outMode are not a mode supported by the outputProfile (or + by pyCMS), a PyCMSError will be raised. + + This function builds and returns an ICC transform from the inputProfile + to the outputProfile using the renderingIntent to determine what to do + with out-of-gamut colors. It will ONLY work for converting images that + are in inMode to images that are in outMode color format (PIL mode, + i.e. "RGB", "RGBA", "CMYK", etc.). + + Building the transform is a fair part of the overhead in + ImageCms.profileToProfile(), so if you're planning on converting multiple + images using the same input/output settings, this can save you time. + Once you have a transform object, it can be used with + ImageCms.applyProfile() to convert images without the need to re-compute + the lookup table for the transform. + + The reason pyCMS returns a class object rather than a handle directly + to the transform is that it needs to keep track of the PIL input/output + modes that the transform is meant for. These attributes are stored in + the "inMode" and "outMode" attributes of the object (which can be + manually overridden if you really want to, but I don't know of any + time that would be of use, or would even work). + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC = 1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC = 3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError( + "flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + return ImageCmsTransform( + inputProfile, outputProfile, inMode, outMode, + renderingIntent, flags=flags) + except (IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def buildProofTransform( + inputProfile, outputProfile, proofProfile, inMode, outMode, + renderingIntent=INTENT_PERCEPTUAL, + proofRenderingIntent=INTENT_ABSOLUTE_COLORIMETRIC, + flags=FLAGS["SOFTPROOFING"]): + """ + (pyCMS) Builds an ICC transform mapping from the inputProfile to the + outputProfile, but tries to simulate the result that would be + obtained on the proofProfile device. + + If the input, output, or proof profiles specified are not valid + filenames, a PyCMSError will be raised. + + If an error occurs during creation of the transform, a PyCMSError will + be raised. + + If inMode or outMode are not a mode supported by the outputProfile + (or by pyCMS), a PyCMSError will be raised. + + This function builds and returns an ICC transform from the inputProfile + to the outputProfile, but tries to simulate the result that would be + obtained on the proofProfile device using renderingIntent and + proofRenderingIntent to determine what to do with out-of-gamut + colors. This is known as "soft-proofing". It will ONLY work for + converting images that are in inMode to images that are in outMode + color format (PIL mode, i.e. "RGB", "RGBA", "CMYK", etc.). + + Usage of the resulting transform object is exactly the same as with + ImageCms.buildTransform(). + + Proof profiling is generally used when using an output device to get a + good idea of what the final printed/displayed image would look like on + the proofProfile device when it's quicker and easier to use the + output device for judging color. Generally, this means that the + output device is a monitor, or a dye-sub printer (etc.), and the simulated + device is something more expensive, complicated, or time consuming + (making it difficult to make a real print for color judgement purposes). + + Soft-proofing basically functions by adjusting the colors on the + output device to match the colors of the device being simulated. However, + when the simulated device has a much wider gamut than the output + device, you may obtain marginal results. + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + (monitor, usually) profile you wish to use for this transform, or a + profile object + :param proofProfile: String, as a valid filename path to the ICC proof + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the input->proof (simulated) transform + + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC = 1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC = 3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + + see the pyCMS documentation for details on rendering intents and what + they do. + :param proofRenderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for proof->output transform + + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC = 1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC = 3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError( + "flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + if not isinstance(proofProfile, ImageCmsProfile): + proofProfile = ImageCmsProfile(proofProfile) + return ImageCmsTransform( + inputProfile, outputProfile, inMode, outMode, renderingIntent, + proofProfile, proofRenderingIntent, flags) + except (IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +buildTransformFromOpenProfiles = buildTransform +buildProofTransformFromOpenProfiles = buildProofTransform + + +def applyTransform(im, transform, inPlace=0): + """ + (pyCMS) Applies a transform to a given image. + + If im.mode != transform.inMode, a PyCMSError is raised. + + If inPlace == TRUE and transform.inMode != transform.outMode, a + PyCMSError is raised. + + If im.mode, transfer.inMode, or transfer.outMode is not supported by + pyCMSdll or the profiles you used for the transform, a PyCMSError is + raised. + + If an error occurs while the transform is being applied, a PyCMSError + is raised. + + This function applies a pre-calculated transform (from + ImageCms.buildTransform() or ImageCms.buildTransformFromOpenProfiles()) + to an image. The transform can be used for multiple images, saving + considerable calculation time if doing the same conversion multiple times. + + If you want to modify im in-place instead of receiving a new image as + the return value, set inPlace to TRUE. This can only be done if + transform.inMode and transform.outMode are the same, because we can't + change the mode in-place (the buffer sizes for some modes are + different). The default behavior is to return a new Image object of + the same dimensions in mode transform.outMode. + + :param im: A PIL Image object, and im.mode must be the same as the inMode + supported by the transform. + :param transform: A valid CmsTransform class object + :param inPlace: Bool (1 == True, 0 or None == False). If True, im is + modified in place and None is returned, if False, a new Image object + with the transform applied is returned (and im is not changed). The + default is False. + :returns: Either None, or a new PIL Image object, depending on the value of + inPlace. The profile will be returned in the image's + info['icc_profile']. + :exception PyCMSError: + """ + + try: + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (TypeError, ValueError) as v: + raise PyCMSError(v) + + return imOut + + +def createProfile(colorSpace, colorTemp=-1): + """ + (pyCMS) Creates a profile. + + If colorSpace not in ["LAB", "XYZ", "sRGB"], a PyCMSError is raised + + If using LAB and colorTemp != a positive integer, a PyCMSError is raised. + + If an error occurs while creating the profile, a PyCMSError is raised. + + Use this function to create common profiles on-the-fly instead of + having to supply a profile on disk and knowing the path to it. It + returns a normal CmsProfile object that can be passed to + ImageCms.buildTransformFromOpenProfiles() to create a transform to apply + to images. + + :param colorSpace: String, the color space of the profile you wish to + create. + Currently only "LAB", "XYZ", and "sRGB" are supported. + :param colorTemp: Positive integer for the white point for the profile, in + degrees Kelvin (i.e. 5000, 6500, 9600, etc.). The default is for D50 + illuminant if omitted (5000k). colorTemp is ONLY applied to LAB + profiles, and is ignored for XYZ and sRGB. + :returns: A CmsProfile class object + :exception PyCMSError: + """ + + if colorSpace not in ["LAB", "XYZ", "sRGB"]: + raise PyCMSError( + "Color space not supported for on-the-fly profile creation (%s)" + % colorSpace) + + if colorSpace == "LAB": + try: + colorTemp = float(colorTemp) + except: + raise PyCMSError( + "Color temperature must be numeric, \"%s\" not valid" + % colorTemp) + + try: + return core.createProfile(colorSpace, colorTemp) + except (TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileName(profile): + """ + + (pyCMS) Gets the internal product name for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised If an error occurs while trying to obtain the + name tag, a PyCMSError is raised. + + Use this function to obtain the INTERNAL name of the profile (stored + in an ICC tag in the profile itself), usually the one used when the + profile was originally created. Sometimes this tag also contains + additional information supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal name of the profile as stored + in an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # do it in python, not c. + # // name was "%s - %s" (model, manufacturer) || Description , + # // but if the Model and Manufacturer were the same or the model + # // was long, Just the model, in 1.x + model = profile.profile.product_model + manufacturer = profile.profile.product_manufacturer + + if not (model or manufacturer): + return profile.profile.product_description + "\n" + if not manufacturer or len(model) > 30: + return model + "\n" + return "%s - %s\n" % (model, manufacturer) + + except (AttributeError, IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileInfo(profile): + """ + (pyCMS) Gets the internal product information for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the info tag, a PyCMSError + is raised + + Use this function to obtain the information stored in the profile's + info tag. This often contains details about the profile, and how it + was created, as supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # add an extra newline to preserve pyCMS compatibility + # Python, not C. the white point bits weren't working well, + # so skipping. + # // info was description \r\n\r\n copyright \r\n\r\n K007 tag \r\n\r\n whitepoint + description = profile.profile.product_description + cpright = profile.profile.product_copyright + arr = [] + for elt in (description, cpright): + if elt: + arr.append(elt) + return "\r\n\r\n".join(arr) + "\r\n\r\n" + + except (AttributeError, IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileCopyright(profile): + """ + (pyCMS) Gets the copyright for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the copyright tag, a PyCMSError + is raised + + Use this function to obtain the information stored in the profile's + copyright tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.product_copyright + "\n" + except (AttributeError, IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileManufacturer(profile): + """ + (pyCMS) Gets the manufacturer for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the manufacturer tag, a + PyCMSError is raised + + Use this function to obtain the information stored in the profile's + manufacturer tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.product_manufacturer + "\n" + except (AttributeError, IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileModel(profile): + """ + (pyCMS) Gets the model for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the model tag, a PyCMSError + is raised + + Use this function to obtain the information stored in the profile's + model tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.product_model + "\n" + except (AttributeError, IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getProfileDescription(profile): + """ + (pyCMS) Gets the description for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the description tag, a PyCMSError + is raised + + Use this function to obtain the information stored in the profile's + description tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in an + ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.product_description + "\n" + except (AttributeError, IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def getDefaultIntent(profile): + """ + (pyCMS) Gets the default intent name for the given profile. + + If profile isn't a valid CmsProfile object or filename to a profile, + a PyCMSError is raised. + + If an error occurs while trying to obtain the default intent, a + PyCMSError is raised. + + Use this function to determine the default (and usually best optimized) + rendering intent for this profile. Most profiles support multiple + rendering intents, but are intended mostly for one type of conversion. + If you wish to use a different intent than returned, use + ImageCms.isIntentSupported() to verify it will work first. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: Integer 0-3 specifying the default rendering intent for this + profile. + + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC = 1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC = 3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + + see the pyCMS documentation for details on rendering intents and what + they do. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.rendering_intent + except (AttributeError, IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def isIntentSupported(profile, intent, direction): + """ + (pyCMS) Checks if a given intent is supported. + + Use this function to verify that you can use your desired + renderingIntent with profile, and that profile can be used for the + input/output/proof profile as you desire. + + Some profiles are created specifically for one "direction", can cannot + be used for others. Some profiles can only be used for certain + rendering intents... so it's best to either verify this before trying + to create a transform with them (using this function), or catch the + potential PyCMSError that will occur if they don't support the modes + you select. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :param intent: Integer (0-3) specifying the rendering intent you wish to + use with this profile + + INTENT_PERCEPTUAL = 0 (DEFAULT) (ImageCms.INTENT_PERCEPTUAL) + INTENT_RELATIVE_COLORIMETRIC = 1 (ImageCms.INTENT_RELATIVE_COLORIMETRIC) + INTENT_SATURATION = 2 (ImageCms.INTENT_SATURATION) + INTENT_ABSOLUTE_COLORIMETRIC = 3 (ImageCms.INTENT_ABSOLUTE_COLORIMETRIC) + + see the pyCMS documentation for details on rendering intents and what + they do. + :param direction: Integer specifying if the profile is to be used for input, + output, or proof + + INPUT = 0 (or use ImageCms.DIRECTION_INPUT) + OUTPUT = 1 (or use ImageCms.DIRECTION_OUTPUT) + PROOF = 2 (or use ImageCms.DIRECTION_PROOF) + + :returns: 1 if the intent/direction are supported, -1 if they are not. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # FIXME: I get different results for the same data w. different + # compilers. Bug in LittleCMS or in the binding? + if profile.profile.is_intent_supported(intent, direction): + return 1 + else: + return -1 + except (AttributeError, IOError, TypeError, ValueError) as v: + raise PyCMSError(v) + + +def versions(): + """ + (pyCMS) Fetches versions. + """ + + return ( + VERSION, core.littlecms_version, + sys.version.split()[0], Image.VERSION + ) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageCms.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageCms.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb83cc4f77171a8f8cf2007f6943bcc1b8c36ca7 GIT binary patch literal 34583 zcmeHwOKcq1n%-$PNr^IL$(AMC*S^kWZocpT ^= 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 H*c<;3>LeT6 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageColor.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageColor.py new file mode 100644 index 0000000..08c00fd --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageColor.py @@ -0,0 +1,309 @@ +# +# The Python Imaging Library +# $Id$ +# +# map CSS3-style colour description strings to RGB +# +# History: +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-15 fl Added RGBA support +# 2004-03-27 fl Fixed remaining int() problems for Python 1.5.2 +# 2004-07-19 fl Fixed gray/grey spelling issues +# 2009-03-05 fl Fixed rounding error in grayscale calculation +# +# Copyright (c) 2002-2004 by Secret Labs AB +# Copyright (c) 2002-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image +import re + + +def getrgb(color): + """ + Convert a color string to an RGB tuple. If the string cannot be parsed, + this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(red, green, blue[, alpha])`` + """ + color = color.lower() + + rgb = colormap.get(color, None) + if rgb: + if isinstance(rgb, tuple): + return rgb + colormap[color] = rgb = getrgb(rgb) + return rgb + + # check for known string formats + if re.match('#[a-f0-9]{3}$', color): + return ( + int(color[1]*2, 16), + int(color[2]*2, 16), + int(color[3]*2, 16), + ) + + if re.match('#[a-f0-9]{4}$', color): + return ( + int(color[1]*2, 16), + int(color[2]*2, 16), + int(color[3]*2, 16), + int(color[4]*2, 16), + ) + + if re.match('#[a-f0-9]{6}$', color): + return ( + int(color[1:3], 16), + int(color[3:5], 16), + int(color[5:7], 16), + ) + + if re.match('#[a-f0-9]{8}$', color): + return ( + int(color[1:3], 16), + int(color[3:5], 16), + int(color[5:7], 16), + int(color[7:9], 16), + ) + + m = re.match(r"rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return ( + int(m.group(1)), + int(m.group(2)), + int(m.group(3)) + ) + + m = re.match(r"rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) + if m: + return ( + int((int(m.group(1)) * 255) / 100.0 + 0.5), + int((int(m.group(2)) * 255) / 100.0 + 0.5), + int((int(m.group(3)) * 255) / 100.0 + 0.5) + ) + + m = re.match(r"hsl\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color) + if m: + from colorsys import hls_to_rgb + rgb = hls_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(3)) / 100.0, + float(m.group(2)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[2] * 255 + 0.5) + ) + + m = re.match(r"hs[bv]\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color) + if m: + from colorsys import hsv_to_rgb + rgb = hsv_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(2)) / 100.0, + float(m.group(3)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[2] * 255 + 0.5) + ) + + m = re.match(r"rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", + color) + if m: + return ( + int(m.group(1)), + int(m.group(2)), + int(m.group(3)), + int(m.group(4)) + ) + raise ValueError("unknown color specifier: %r" % color) + + +def getcolor(color, mode): + """ + Same as :py:func:`~PIL.ImageColor.getrgb`, but converts the RGB value to a + greyscale value if the mode is not color or a palette image. If the string + cannot be parsed, this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(graylevel [, alpha]) or (red, green, blue[, alpha])`` + """ + # same as getrgb, but converts the result to the given mode + color, alpha = getrgb(color), 255 + if len(color) == 4: + color, alpha = color[0:3], color[3] + + if Image.getmodebase(mode) == "L": + r, g, b = color + color = (r*299 + g*587 + b*114)//1000 + if mode[-1] == 'A': + return (color, alpha) + else: + if mode[-1] == 'A': + return color + (alpha,) + return color + + +colormap = { + # X11 colour table from https://drafts.csswg.org/css-color-4/, with + # gray/grey spelling issues fixed. This is a superset of HTML 4.0 + # colour names used in CSS 1. + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgrey": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkslategrey": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dimgrey": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "grey": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgreen": "#90ee90", + "lightgray": "#d3d3d3", + "lightgrey": "#d3d3d3", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightslategrey": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370db", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#db7093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "rebeccapurple": "#663399", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "slategrey": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32", +} diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageColor.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageColor.pyc new file mode 100644 index 0000000000000000000000000000000000000000..abc9dcdcfeb426c82cb41c26597ba7d5b452dcf9 GIT binary patch literal 8513 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 N&g^nNd_A)V-Uo!3sy6@t literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageDraw.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageDraw.py new file mode 100644 index 0000000..5bc8902 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageDraw.py @@ -0,0 +1,387 @@ +# +# The Python Imaging Library +# $Id$ +# +# drawing interface operations +# +# History: +# 1996-04-13 fl Created (experimental) +# 1996-08-07 fl Filled polygons, ellipses. +# 1996-08-13 fl Added text support +# 1998-06-28 fl Handle I and F images +# 1998-12-29 fl Added arc; use arc primitive to draw ellipses +# 1999-01-10 fl Added shape stuff (experimental) +# 1999-02-06 fl Added bitmap support +# 1999-02-11 fl Changed all primitives to take options +# 1999-02-20 fl Fixed backwards compatibility +# 2000-10-12 fl Copy on write, when necessary +# 2001-02-18 fl Use default ink for bitmap/text also in fill mode +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-10 fl Added experimental support for RGBA-on-RGB drawing +# 2002-12-11 fl Refactored low-level drawing API (work in progress) +# 2004-08-26 fl Made Draw() a factory function, added getdraw() support +# 2004-09-04 fl Added width support to line primitive +# 2004-09-10 fl Added font mode handling +# 2006-06-19 fl Added font bearing support (getmask2) +# +# Copyright (c) 1997-2006 by Secret Labs AB +# Copyright (c) 1996-2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import numbers + +from . import Image, ImageColor +from ._util import isStringType + +""" +A simple 2D drawing interface for PIL images. +

+Application code should use the Draw factory, instead of +directly. +""" + + +class ImageDraw(object): + + def __init__(self, im, mode=None): + """ + Create a drawing instance. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + im.load() + if im.readonly: + im._copy() # make it writeable + blend = 0 + if mode is None: + mode = im.mode + if mode != im.mode: + if mode == "RGBA" and im.mode == "RGB": + blend = 1 + else: + raise ValueError("mode mismatch") + if mode == "P": + self.palette = im.palette + else: + self.palette = None + self.im = im.im + self.draw = Image.core.draw(self.im, blend) + self.mode = mode + if mode in ("I", "F"): + self.ink = self.draw.draw_ink(1, mode) + else: + self.ink = self.draw.draw_ink(-1, mode) + if mode in ("1", "P", "I", "F"): + # FIXME: fix Fill2 to properly support matte for I+F images + self.fontmode = "1" + else: + self.fontmode = "L" # aliasing is okay for other modes + self.fill = 0 + self.font = None + + def getfont(self): + """ + Get the current default font. + + :returns: An image font.""" + if not self.font: + # FIXME: should add a font repository + from . import ImageFont + self.font = ImageFont.load_default() + return self.font + + def _getink(self, ink, fill=None): + if ink is None and fill is None: + if self.fill: + fill = self.ink + else: + ink = self.ink + else: + if ink is not None: + if isStringType(ink): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and not isinstance(ink, numbers.Number): + ink = self.palette.getcolor(ink) + ink = self.draw.draw_ink(ink, self.mode) + if fill is not None: + if isStringType(fill): + fill = ImageColor.getcolor(fill, self.mode) + if self.palette and not isinstance(fill, numbers.Number): + fill = self.palette.getcolor(fill) + fill = self.draw.draw_ink(fill, self.mode) + return ink, fill + + def arc(self, xy, start, end, fill=None): + """Draw an arc.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_arc(xy, start, end, ink) + + def bitmap(self, xy, bitmap, fill=None): + """Draw a bitmap.""" + bitmap.load() + ink, fill = self._getink(fill) + if ink is None: + ink = fill + if ink is not None: + self.draw.draw_bitmap(xy, bitmap.im, ink) + + def chord(self, xy, start, end, fill=None, outline=None): + """Draw a chord.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_chord(xy, start, end, fill, 1) + if ink is not None: + self.draw.draw_chord(xy, start, end, ink, 0) + + def ellipse(self, xy, fill=None, outline=None): + """Draw an ellipse.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_ellipse(xy, fill, 1) + if ink is not None: + self.draw.draw_ellipse(xy, ink, 0) + + def line(self, xy, fill=None, width=0): + """Draw a line, or a connected sequence of line segments.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_lines(xy, ink, width) + + def shape(self, shape, fill=None, outline=None): + """(Experimental) Draw a shape.""" + shape.close() + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_outline(shape, fill, 1) + if ink is not None: + self.draw.draw_outline(shape, ink, 0) + + def pieslice(self, xy, start, end, fill=None, outline=None): + """Draw a pieslice.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_pieslice(xy, start, end, fill, 1) + if ink is not None: + self.draw.draw_pieslice(xy, start, end, ink, 0) + + def point(self, xy, fill=None): + """Draw one or more individual pixels.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_points(xy, ink) + + def polygon(self, xy, fill=None, outline=None): + """Draw a polygon.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_polygon(xy, fill, 1) + if ink is not None: + self.draw.draw_polygon(xy, ink, 0) + + def rectangle(self, xy, fill=None, outline=None): + """Draw a rectangle.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_rectangle(xy, fill, 1) + if ink is not None: + self.draw.draw_rectangle(xy, ink, 0) + + def _multiline_check(self, text): + """Draw text.""" + split_character = "\n" if isinstance(text, str) else b"\n" + + return split_character in text + + def _multiline_split(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + + return text.split(split_character) + + def text(self, xy, text, fill=None, font=None, anchor=None, + *args, **kwargs): + if self._multiline_check(text): + return self.multiline_text(xy, text, fill, font, anchor, + *args, **kwargs) + ink, fill = self._getink(fill) + if font is None: + font = self.getfont() + if ink is None: + ink = fill + if ink is not None: + try: + mask, offset = font.getmask2(text, self.fontmode, *args, **kwargs) + xy = xy[0] + offset[0], xy[1] + offset[1] + except AttributeError: + try: + mask = font.getmask(text, self.fontmode, *args, **kwargs) + except TypeError: + mask = font.getmask(text) + self.draw.draw_bitmap(xy, mask, ink) + + def multiline_text(self, xy, text, fill=None, font=None, anchor=None, + spacing=4, align="left", direction=None, features=None): + widths = [] + max_width = 0 + lines = self._multiline_split(text) + line_spacing = self.textsize('A', font=font)[1] + spacing + for line in lines: + line_width, line_height = self.textsize(line, font) + widths.append(line_width) + max_width = max(max_width, line_width) + left, top = xy + for idx, line in enumerate(lines): + if align == "left": + pass # left = x + elif align == "center": + left += (max_width - widths[idx]) / 2.0 + elif align == "right": + left += (max_width - widths[idx]) + else: + assert False, 'align must be "left", "center" or "right"' + self.text((left, top), line, fill, font, anchor, + direction=direction, features=features) + top += line_spacing + left = xy[0] + + def textsize(self, text, font=None, spacing=4, direction=None, + features=None): + """Get the size of a given string, in pixels.""" + if self._multiline_check(text): + return self.multiline_textsize(text, font, spacing, + direction, features) + + if font is None: + font = self.getfont() + return font.getsize(text, direction, features) + + def multiline_textsize(self, text, font=None, spacing=4, direction=None, + features=None): + max_width = 0 + lines = self._multiline_split(text) + line_spacing = self.textsize('A', font=font)[1] + spacing + for line in lines: + line_width, line_height = self.textsize(line, font, spacing, + direction, features) + max_width = max(max_width, line_width) + return max_width, len(lines)*line_spacing - spacing + + +def Draw(im, mode=None): + """ + A simple 2D drawing interface for PIL images. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + try: + return im.getdraw(mode) + except AttributeError: + return ImageDraw(im, mode) + + +# experimental access to the outline API +try: + Outline = Image.core.outline +except AttributeError: + Outline = None + + +def getdraw(im=None, hints=None): + """ + (Experimental) A more advanced 2D drawing interface for PIL images, + based on the WCK interface. + + :param im: The image to draw in. + :param hints: An optional list of hints. + :returns: A (drawing context, drawing resource factory) tuple. + """ + # FIXME: this needs more work! + # FIXME: come up with a better 'hints' scheme. + handler = None + if not hints or "nicest" in hints: + try: + from . import _imagingagg as handler + except ImportError: + pass + if handler is None: + from . import ImageDraw2 as handler + if im: + im = handler.Draw(im) + return im, handler + + +def floodfill(image, xy, value, border=None, thresh=0): + """ + (experimental) Fills a bounded region with a given color. + + :param image: Target image. + :param xy: Seed position (a 2-item coordinate tuple). See + :ref:`coordinate-system`. + :param value: Fill color. + :param border: Optional border value. If given, the region consists of + pixels with a color different from the border color. If not given, + the region consists of pixels having the same color as the seed + pixel. + :param thresh: Optional threshold value which specifies a maximum + tolerable difference of a pixel value from the 'background' in + order for it to be replaced. Useful for filling regions of non- + homogeneous, but similar, colors. + """ + # based on an implementation by Eric S. Raymond + pixel = image.load() + x, y = xy + try: + background = pixel[x, y] + if _color_diff(value, background) <= thresh: + return # seed point already has fill color + pixel[x, y] = value + except (ValueError, IndexError): + return # seed point outside image + edge = [(x, y)] + if border is None: + while edge: + newedge = [] + for (x, y) in edge: + for (s, t) in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)): + try: + p = pixel[s, t] + except IndexError: + pass + else: + if _color_diff(p, background) <= thresh: + pixel[s, t] = value + newedge.append((s, t)) + edge = newedge + else: + while edge: + newedge = [] + for (x, y) in edge: + for (s, t) in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)): + try: + p = pixel[s, t] + except IndexError: + pass + else: + if p != value and p != border: + pixel[s, t] = value + newedge.append((s, t)) + edge = newedge + + +def _color_diff(rgb1, rgb2): + """ + Uses 1-norm distance to calculate difference between two rgb values. + """ + return abs(rgb1[0]-rgb2[0]) + abs(rgb1[1]-rgb2[1]) + abs(rgb1[2]-rgb2[2]) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageDraw.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageDraw.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ae29fb87cd29aa321d05bf4063fb2d41cb36c079 GIT binary patch literal 12368 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 O5_Hl*nQaxfUuDCC<=xk5 zVwZPYL%U~b<5rlwWb=KjO%sWrN6i|k9W?MD3hbUTT5{)MJT?tXOcTU% zmd=Kw$R2hv6(#wHm~GnWY;zXP?nFs$hjD!8+aJu}-lNT}D2~&E&8>%zHr01@(Y?E~ zLrZysL6k&xFrf80w-fITPwkyQPKMKPFi?LF2Gcayk8x`lm*w`W>tJZ`21ZU_);)E_ z{cJzqTLg#?G(c}+QV!5_8iA(ufIpx){O!=jY4Ml2#*=#?whqF*M9Ya%hLKfb4>rw0&^5~cFEJASu z+q-P{=h=Q9!C1#G*SQm&J`V;D-y#_F!hJIQ3Nlaa3liWG#U3DsM??hJauI-pl!tE> zX!~`7ES~~x6=eGguv`JAD!}#uqfO;mlR&|>-yyJ)2Lji0a#4bgPS$ytm_dukS8=0} z{|*yG9_R**5aj%pSWhO1Hoy)Pk*~(_AkdqS^#9Q|+12J3Ph#6iC^%*yVxsxUM>mi^vS_~9oPN|K$VH^W5KZ4jfx{TVqNVWzLvmAjss+zaa#SsNFsV`q z;|)3Bsi~a2;HgV;rP#tf`mNXkkDO!blKsx0Pnygjl+9ygk}s3Gx~KU!FqC zKlMRNCT;TJ7#!g+0D2l=^}XbV*tIza%diR~6D)>V&;m@FdGt$9>$&Dr93gp_MPpRT zQkC7ee9~2zeg}`W2u8V<*JKoG?Q$i8&NdfGu8>fc3S`G&E^~?CulbFV&;0J{E1LC8 z?sTRH;n|_4{47i~usbY-hRua}kA&}ZF&tT`5^39!g-H-1=E#_v6z8|SIug0%brzJf zj^6^k9<7{JX>e1`2bAANquH{Kp z<6nC44XT{Gzpht9rFD}6`k)A z#RycxY~;@ME!=3o>Y50;Si^~~EVCM5_+Je~*rPPbPid6-06T196z8AztYijX8ttW7 z@Sld5J76()Nj5=Ft2z7DZHz*5W*L1+3p4=iOaB#s7ye7GC(MR%9L@5uq&0;s-G3&! z5@CPDSY1~|f%8?83H!LD_^ z827ZO$>?i}K97*Ect1fkR(wPSKk?_amd5nV>!4c0y4-PDCCzo-vO;RTwBa-Bc*(Xb z4CW@;J|&@~)1nRqg%~-LTu}E=<-8F!<)B~GC+yUm)$YTdR-!#&tK!YuSEml&az;=f zjo^n$>6w1coSFKcVUwpAb0F$yhMZ#*Wb;1yG4Y5qo$neY= zCbMCVI3II^rH^&CQnR5gJ73SKQr%x~v?`s;t!k_C(r>+||L3vb5$*fk2RTo_eki(r tiZwainc%#*#!K5Reqt?lDe1hDy81!-x%(f-7yMq({ODFT>KnC<#y`zRMZ5q2 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageEnhance.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageEnhance.py new file mode 100644 index 0000000..11c9c3a --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageEnhance.py @@ -0,0 +1,100 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image enhancement classes +# +# For a background, see "Image Processing By Interpolation and +# Extrapolation", Paul Haeberli and Douglas Voorhies. Available +# at http://www.graficaobscura.com/interp/index.html +# +# History: +# 1996-03-23 fl Created +# 2009-06-16 fl Fixed mean calculation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFilter, ImageStat + + +class _Enhance(object): + + def enhance(self, factor): + """ + Returns an enhanced image. + + :param factor: A floating point value controlling the enhancement. + Factor 1.0 always returns a copy of the original image, + lower factors mean less color (brightness, contrast, + etc), and higher values more. There are no restrictions + on this value. + :rtype: :py:class:`~PIL.Image.Image` + """ + return Image.blend(self.degenerate, self.image, factor) + + +class Color(_Enhance): + """Adjust image color balance. + + This class can be used to adjust the colour balance of an image, in + a manner similar to the controls on a colour TV set. An enhancement + factor of 0.0 gives a black and white image. A factor of 1.0 gives + the original image. + """ + def __init__(self, image): + self.image = image + self.intermediate_mode = 'L' + if 'A' in image.getbands(): + self.intermediate_mode = 'LA' + + self.degenerate = image.convert(self.intermediate_mode).convert(image.mode) + + +class Contrast(_Enhance): + """Adjust image contrast. + + This class can be used to control the contrast of an image, similar + to the contrast control on a TV set. An enhancement factor of 0.0 + gives a solid grey image. A factor of 1.0 gives the original image. + """ + def __init__(self, image): + self.image = image + mean = int(ImageStat.Stat(image.convert("L")).mean[0] + 0.5) + self.degenerate = Image.new("L", image.size, mean).convert(image.mode) + + if 'A' in image.getbands(): + self.degenerate.putalpha(image.getchannel('A')) + + +class Brightness(_Enhance): + """Adjust image brightness. + + This class can be used to control the brightness of an image. An + enhancement factor of 0.0 gives a black image. A factor of 1.0 gives the + original image. + """ + def __init__(self, image): + self.image = image + self.degenerate = Image.new(image.mode, image.size, 0) + + if 'A' in image.getbands(): + self.degenerate.putalpha(image.getchannel('A')) + + +class Sharpness(_Enhance): + """Adjust image sharpness. + + This class can be used to adjust the sharpness of an image. An + enhancement factor of 0.0 gives a blurred image, a factor of 1.0 gives the + original image, and a factor of 2.0 gives a sharpened image. + """ + def __init__(self, image): + self.image = image + self.degenerate = image.filter(ImageFilter.SMOOTH) + + if 'A' in image.getbands(): + self.degenerate.putalpha(image.getchannel('A')) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageEnhance.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageEnhance.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cdbcc7bb016b83382b4eb48948ac2cb5079481f9 GIT binary patch literal 4183 zcmcha-EJF26vt=n#7UeK+CozbrOX|!lschzSO}U%R1}4@+N6kv3wOLbvDaPiu6D+W zf&w=|;sS}c;SqQXE_eh4FTnqt*R+S#hM zA;LykJ6F}tiEzHGU8rj3Mc6EB7pvL@5iW`C);UZm@{qM?mUb4|-I3~RyI7X)M6uPm zT_~Tot+I9=Pu(w*fl2~ht&_~$Mlu(WX+g`wYOxTk(BE#+&p{0tr5U6RBy$Cs6=LX# zBjh#C>*B~0$8}7P`k3F5H)ZkhwH@b)kt&hejUUR0X54O8Z919C)kyBCz@~XeuFJhR zRW?fcGE1Yx%6%1&wG7h4=4l*Ly&dS%+(;+3U70F}ExzxtN%={8O{(}n9U7UJ^MSqW zP^NoqE6t;Rl&IKEZRKg^;`Bi0#XOB1X)G$%#=umZ=Caj;m4QuAv*Ko}jD4ytZG-D8 z*p^TZ&H#qU=VL7^~v=#@7%0?#<2B`%#STT*YKoc`^l^?d;Ibp<4mV`zRV3 zNh~_zndEMwM!MVOxpljvG#tlx^ojY&=&v#bpVajp5|7=e@v=AQl>e`u%V<`q2hxGN zAPvEIXcWaNCkw7CtH(%yqDn(M-%6uxTdr5)BsH-eca}878pP9& z_BAvtd$9^0GqeYT$m&ALq*y03G$*Zbb2dXmpA?s4vvMr7LmRY950Jr)z^ioG>-&lBr*!!&>b-bKY^08Ca>8(H z0V?@J+j<+xJXZ$)pw%fEI9tzEK;ii(9Ag3};V)o!$V~xH4a?pP{*#HH!WXo&m6CXq z#!)EyxjuX*>`%Bwra-S_>9mau`mZQdpaV$ISb+=Q0d@&xuv-&X0Q+S;{a6!lutUTP z02@Efiz6taE`T~cE|kDGDfpn8#ZoW7@CDrz!zHdiM-AKv9`wWVAcnVm4lGa-eaeLR z>kI!ae6=WZ8lgo%BR+|T6+n@Nf3bX`+tA$|)G*Np?rw;F(EdB9V5#_|Gv+88<1WYs zid{G~79cc9bj&_}q9vcAjS0_Z6cnrC7A#dly6$~kyXc(~l79(JUZ;YVVeeBKmKD^1 zf=INts~{o36MtS@Lw}(C2@Op`j+au=q}#NP+7dSb(_h@abQ_%1#;Kct?;hMAQ;jPB zPm*9`&-DM5EFNNM)3Tu05+s){os{7`KP!WNYLt*aV8~}lAXJY48tPyfRge>tTM_NH z!$~en2IX1heX2rP7DUUbmNL(C)*qA$L#S{n{Hq@*0M^OM_NO(nf3# zRGv}TdIlo@M*kB;n$p;Fft(6#s!k_ydcMV=I|q1YA9Xe->sMEjHW whB~ku!}}D*_~eOwV&5lIlM97QXS`MT8vD$>dwfn;2j4DN>&xetFCe}BAL%Nf82|tP literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFile.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFile.py new file mode 100644 index 0000000..681dee5 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFile.py @@ -0,0 +1,667 @@ +# +# The Python Imaging Library. +# $Id$ +# +# base class for image file handlers +# +# history: +# 1995-09-09 fl Created +# 1996-03-11 fl Fixed load mechanism. +# 1996-04-15 fl Added pcx/xbm decoders. +# 1996-04-30 fl Added encoders. +# 1996-12-14 fl Added load helpers +# 1997-01-11 fl Use encode_to_file where possible +# 1997-08-27 fl Flush output in _save +# 1998-03-05 fl Use memory mapping for some modes +# 1999-02-04 fl Use memory mapping also for "I;16" and "I;16B" +# 1999-05-31 fl Added image parser +# 2000-10-12 fl Set readonly flag on memory-mapped images +# 2002-03-20 fl Use better messages for common decoder errors +# 2003-04-21 fl Fall back on mmap/map_buffer if map is not available +# 2003-10-30 fl Added StubImageFile class +# 2004-02-25 fl Made incremental parser more robust +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image +from ._util import isPath +import io +import os +import sys +import struct + +MAXBLOCK = 65536 + +SAFEBLOCK = 1024*1024 + +LOAD_TRUNCATED_IMAGES = False + +ERRORS = { + -1: "image buffer overrun error", + -2: "decoding error", + -3: "unknown error", + -8: "bad configuration", + -9: "out of memory error" +} + + +def raise_ioerror(error): + try: + message = Image.core.getcodecstatus(error) + except AttributeError: + message = ERRORS.get(error) + if not message: + message = "decoder error %d" % error + raise IOError(message + " when reading image file") + + +# +# -------------------------------------------------------------------- +# Helpers + +def _tilesort(t): + # sort on offset + return t[2] + + +# +# -------------------------------------------------------------------- +# ImageFile base class + +class ImageFile(Image.Image): + "Base class for image file format handlers." + + def __init__(self, fp=None, filename=None): + Image.Image.__init__(self) + + self._min_frame = 0 + + self.tile = None + self.readonly = 1 # until we know better + + self.decoderconfig = () + self.decodermaxblock = MAXBLOCK + + if isPath(fp): + # filename + self.fp = open(fp, "rb") + self.filename = fp + self._exclusive_fp = True + else: + # stream + self.fp = fp + self.filename = filename + # can be overridden + self._exclusive_fp = None + + try: + self._open() + except (IndexError, # end of data + TypeError, # end of data (ord) + KeyError, # unsupported mode + EOFError, # got header but not the first frame + struct.error) as v: + # close the file only if we have opened it this constructor + if self._exclusive_fp: + self.fp.close() + raise SyntaxError(v) + + if not self.mode or self.size[0] <= 0: + raise SyntaxError("not identified by this driver") + + def draft(self, mode, size): + "Set draft mode" + + pass + + def get_format_mimetype(self): + if self.format is None: + return + return Image.MIME.get(self.format.upper()) + + def verify(self): + "Check file integrity" + + # raise exception if something's wrong. must be called + # directly after open, and closes file when finished. + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def load(self): + "Load image data based on tile list" + + pixel = Image.Image.load(self) + + if self.tile is None: + raise IOError("cannot load this image") + if not self.tile: + return pixel + + self.map = None + use_mmap = self.filename and len(self.tile) == 1 + # As of pypy 2.1.0, memory mapping was failing here. + use_mmap = use_mmap and not hasattr(sys, 'pypy_version_info') + + readonly = 0 + + # look for read/seek overrides + try: + read = self.load_read + # don't use mmap if there are custom read/seek functions + use_mmap = False + except AttributeError: + read = self.fp.read + + try: + seek = self.load_seek + use_mmap = False + except AttributeError: + seek = self.fp.seek + + if use_mmap: + # try memory mapping + decoder_name, extents, offset, args = self.tile[0] + if decoder_name == "raw" and len(args) >= 3 and args[0] == self.mode \ + and args[0] in Image._MAPMODES: + try: + if hasattr(Image.core, "map"): + # use built-in mapper WIN32 only + self.map = Image.core.map(self.filename) + self.map.seek(offset) + self.im = self.map.readimage( + self.mode, self.size, args[1], args[2] + ) + else: + # use mmap, if possible + import mmap + with open(self.filename, "r") as fp: + self.map = mmap.mmap(fp.fileno(), 0, access=mmap.ACCESS_READ) + self.im = Image.core.map_buffer( + self.map, self.size, decoder_name, extents, offset, args + ) + readonly = 1 + # After trashing self.im, we might need to reload the palette data. + if self.palette: + self.palette.dirty = 1 + except (AttributeError, EnvironmentError, ImportError): + self.map = None + + self.load_prepare() + err_code = -3 # initialize to unknown error + if not self.map: + # sort tiles in file order + self.tile.sort(key=_tilesort) + + try: + # FIXME: This is a hack to handle TIFF's JpegTables tag. + prefix = self.tile_prefix + except AttributeError: + prefix = b"" + + for decoder_name, extents, offset, args in self.tile: + decoder = Image._getdecoder(self.mode, decoder_name, + args, self.decoderconfig) + try: + seek(offset) + decoder.setimage(self.im, extents) + if decoder.pulls_fd: + decoder.setfd(self.fp) + status, err_code = decoder.decode(b"") + else: + b = prefix + while True: + try: + s = read(self.decodermaxblock) + except (IndexError, struct.error): # truncated png/gif + if LOAD_TRUNCATED_IMAGES: + break + else: + raise IOError("image file is truncated") + + if not s: # truncated jpeg + if LOAD_TRUNCATED_IMAGES: + break + else: + self.tile = [] + raise IOError("image file is truncated " + "(%d bytes not processed)" % len(b)) + + b = b + s + n, err_code = decoder.decode(b) + if n < 0: + break + b = b[n:] + finally: + # Need to cleanup here to prevent leaks + decoder.cleanup() + + self.tile = [] + self.readonly = readonly + + self.load_end() + + if self._exclusive_fp and self._close_exclusive_fp_after_loading: + self.fp.close() + self.fp = None + + if not self.map and not LOAD_TRUNCATED_IMAGES and err_code < 0: + # still raised if decoder fails to return anything + raise_ioerror(err_code) + + return Image.Image.load(self) + + def load_prepare(self): + # create image memory if necessary + if not self.im or\ + self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.new(self.mode, self.size) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def load_end(self): + # may be overridden + pass + + # may be defined for contained formats + # def load_seek(self, pos): + # pass + + # may be defined for blocked formats (e.g. PNG) + # def load_read(self, bytes): + # pass + + def _seek_check(self, frame): + if (frame < self._min_frame or + # Only check upper limit on frames if additional seek operations + # are not required to do so + (not (hasattr(self, "_n_frames") and self._n_frames is None) and + frame >= self.n_frames+self._min_frame)): + raise EOFError("attempt to seek outside sequence") + + return self.tell() != frame + + +class StubImageFile(ImageFile): + """ + Base class for stub image loaders. + + A stub loader is an image loader that can identify files of a + certain format, but relies on external code to load the file. + """ + + def _open(self): + raise NotImplementedError( + "StubImageFile subclass must implement _open" + ) + + def load(self): + loader = self._load() + if loader is None: + raise IOError("cannot find loader for this %s file" % self.format) + image = loader.load(self) + assert image is not None + # become the other object (!) + self.__class__ = image.__class__ + self.__dict__ = image.__dict__ + + def _load(self): + "(Hook) Find actual image loader." + raise NotImplementedError( + "StubImageFile subclass must implement _load" + ) + + +class Parser(object): + """ + Incremental image parser. This class implements the standard + feed/close consumer interface. + """ + incremental = None + image = None + data = None + decoder = None + offset = 0 + finished = 0 + + def reset(self): + """ + (Consumer) Reset the parser. Note that you can only call this + method immediately after you've created a parser; parser + instances cannot be reused. + """ + assert self.data is None, "cannot reuse parsers" + + def feed(self, data): + """ + (Consumer) Feed data to the parser. + + :param data: A string buffer. + :exception IOError: If the parser failed to parse the image file. + """ + # collect data + + if self.finished: + return + + if self.data is None: + self.data = data + else: + self.data = self.data + data + + # parse what we have + if self.decoder: + + if self.offset > 0: + # skip header + skip = min(len(self.data), self.offset) + self.data = self.data[skip:] + self.offset = self.offset - skip + if self.offset > 0 or not self.data: + return + + n, e = self.decoder.decode(self.data) + + if n < 0: + # end of stream + self.data = None + self.finished = 1 + if e < 0: + # decoding error + self.image = None + raise_ioerror(e) + else: + # end of image + return + self.data = self.data[n:] + + elif self.image: + + # if we end up here with no decoder, this file cannot + # be incrementally parsed. wait until we've gotten all + # available data + pass + + else: + + # attempt to open this file + try: + with io.BytesIO(self.data) as fp: + im = Image.open(fp) + except IOError: + # traceback.print_exc() + pass # not enough data + else: + flag = hasattr(im, "load_seek") or hasattr(im, "load_read") + if flag or len(im.tile) != 1: + # custom load code, or multiple tiles + self.decode = None + else: + # initialize decoder + im.load_prepare() + d, e, o, a = im.tile[0] + im.tile = [] + self.decoder = Image._getdecoder( + im.mode, d, a, im.decoderconfig + ) + self.decoder.setimage(im.im, e) + + # calculate decoder offset + self.offset = o + if self.offset <= len(self.data): + self.data = self.data[self.offset:] + self.offset = 0 + + self.image = im + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + """ + (Consumer) Close the stream. + + :returns: An image object. + :exception IOError: If the parser failed to parse the image file either + because it cannot be identified or cannot be + decoded. + """ + # finish decoding + if self.decoder: + # get rid of what's left in the buffers + self.feed(b"") + self.data = self.decoder = None + if not self.finished: + raise IOError("image was incomplete") + if not self.image: + raise IOError("cannot parse this image") + if self.data: + # incremental parsing not possible; reopen the file + # not that we have all data + with io.BytesIO(self.data) as fp: + try: + self.image = Image.open(fp) + finally: + self.image.load() + return self.image + + +# -------------------------------------------------------------------- + +def _save(im, fp, tile, bufsize=0): + """Helper to save image based on tile list + + :param im: Image object. + :param fp: File object. + :param tile: Tile list. + :param bufsize: Optional buffer size + """ + + im.load() + if not hasattr(im, "encoderconfig"): + im.encoderconfig = () + tile.sort(key=_tilesort) + # FIXME: make MAXBLOCK a configuration parameter + # It would be great if we could have the encoder specify what it needs + # But, it would need at least the image size in most cases. RawEncode is + # a tricky case. + bufsize = max(MAXBLOCK, bufsize, im.size[0] * 4) # see RawEncode.c + if fp == sys.stdout: + fp.flush() + return + try: + fh = fp.fileno() + fp.flush() + except (AttributeError, io.UnsupportedOperation): + # compress to Python file-compatible object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o, 0) + e.setimage(im.im, b) + if e.pushes_fd: + e.setfd(fp) + l, s = e.encode_to_pyfd() + else: + while True: + l, s, d = e.encode(bufsize) + fp.write(d) + if s: + break + if s < 0: + raise IOError("encoder error %d when writing image file" % s) + e.cleanup() + else: + # slight speedup: compress to real file object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o, 0) + e.setimage(im.im, b) + if e.pushes_fd: + e.setfd(fp) + l, s = e.encode_to_pyfd() + else: + s = e.encode_to_file(fh, bufsize) + if s < 0: + raise IOError("encoder error %d when writing image file" % s) + e.cleanup() + if hasattr(fp, "flush"): + fp.flush() + + +def _safe_read(fp, size): + """ + Reads large blocks in a safe way. Unlike fp.read(n), this function + doesn't trust the user. If the requested size is larger than + SAFEBLOCK, the file is read block by block. + + :param fp: File handle. Must implement a read method. + :param size: Number of bytes to read. + :returns: A string containing up to size bytes of data. + """ + if size <= 0: + return b"" + if size <= SAFEBLOCK: + return fp.read(size) + data = [] + while size > 0: + block = fp.read(min(size, SAFEBLOCK)) + if not block: + break + data.append(block) + size -= len(block) + return b"".join(data) + + +class PyCodecState(object): + def __init__(self): + self.xsize = 0 + self.ysize = 0 + self.xoff = 0 + self.yoff = 0 + + def extents(self): + return (self.xoff, self.yoff, + self.xoff+self.xsize, self.yoff+self.ysize) + + +class PyDecoder(object): + """ + Python implementation of a format decoder. Override this class and + add the decoding logic in the `decode` method. + + See :ref:`Writing Your Own File Decoder in Python` + """ + + _pulls_fd = False + + def __init__(self, mode, *args): + self.im = None + self.state = PyCodecState() + self.fd = None + self.mode = mode + self.init(args) + + def init(self, args): + """ + Override to perform decoder specific initialization + + :param args: Array of args items from the tile entry + :returns: None + """ + self.args = args + + @property + def pulls_fd(self): + return self._pulls_fd + + def decode(self, buffer): + """ + Override to perform the decoding process. + + :param buffer: A bytes object with the data to be decoded. If `handles_eof` + is set, then `buffer` will be empty and `self.fd` will be set. + :returns: A tuple of (bytes consumed, errcode). If finished with decoding + return <0 for the bytes consumed. Err codes are from `ERRORS` + """ + raise NotImplementedError() + + def cleanup(self): + """ + Override to perform decoder specific cleanup + + :returns: None + """ + pass + + def setfd(self, fd): + """ + Called from ImageFile to set the python file-like object + + :param fd: A python file-like object + :returns: None + """ + self.fd = fd + + def setimage(self, im, extents=None): + """ + Called from ImageFile to set the core output image for the decoder + + :param im: A core image object + :param extents: a 4 tuple of (x0, y0, x1, y1) defining the rectangle + for this tile + :returns: None + """ + + # following c code + self.im = im + + if extents: + (x0, y0, x1, y1) = extents + else: + (x0, y0, x1, y1) = (0, 0, 0, 0) + + if x0 == 0 and x1 == 0: + self.state.xsize, self.state.ysize = self.im.size + else: + self.state.xoff = x0 + self.state.yoff = y0 + self.state.xsize = x1 - x0 + self.state.ysize = y1 - y0 + + if self.state.xsize <= 0 or self.state.ysize <= 0: + raise ValueError("Size cannot be negative") + + if (self.state.xsize + self.state.xoff > self.im.size[0] or + self.state.ysize + self.state.yoff > self.im.size[1]): + raise ValueError("Tile cannot extend outside image") + + def set_as_raw(self, data, rawmode=None): + """ + Convenience method to set the internal image from a stream of raw data + + :param data: Bytes to be set + :param rawmode: The rawmode to be used for the decoder. If not specified, + it will default to the mode of the image + :returns: None + """ + + if not rawmode: + rawmode = self.mode + d = Image._getdecoder(self.mode, 'raw', (rawmode)) + d.setimage(self.im, self.state.extents()) + s = d.decode(data) + + if s[0] >= 0: + raise ValueError("not enough image data") + if s[1] != 0: + raise ValueError("cannot decode image data") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFile.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c1ea8c75f9a2427c2c0ef7c6804521e08f00d52 GIT binary patch literal 17258 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFilter.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFilter.py new file mode 100644 index 0000000..e77349d --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFilter.py @@ -0,0 +1,486 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard filters +# +# History: +# 1995-11-27 fl Created +# 2002-06-08 fl Added rank and mode filters +# 2003-09-15 fl Fixed rank calculation in rank filter; added expand call +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2002 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from __future__ import division + +import functools + +try: + import numpy +except ImportError: # pragma: no cover + numpy = None + + +class Filter(object): + pass + + +class MultibandFilter(Filter): + pass + + +class Kernel(MultibandFilter): + """ + Create a convolution kernel. The current version only + supports 3x3 and 5x5 integer and floating point kernels. + + In the current version, kernels can only be applied to + "L" and "RGB" images. + + :param size: Kernel size, given as (width, height). In the current + version, this must be (3,3) or (5,5). + :param kernel: A sequence containing kernel weights. + :param scale: Scale factor. If given, the result for each pixel is + divided by this value. the default is the sum of the + kernel weights. + :param offset: Offset. If given, this value is added to the result, + after it has been divided by the scale factor. + """ + name = "Kernel" + + def __init__(self, size, kernel, scale=None, offset=0): + if scale is None: + # default scale is sum of kernel + scale = functools.reduce(lambda a, b: a+b, kernel) + if size[0] * size[1] != len(kernel): + raise ValueError("not enough coefficients in kernel") + self.filterargs = size, scale, offset, kernel + + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + return image.filter(*self.filterargs) + + +class BuiltinFilter(Kernel): + def __init__(self): + pass + + +class RankFilter(Filter): + """ + Create a rank filter. The rank filter sorts all pixels in + a window of the given size, and returns the **rank**'th value. + + :param size: The kernel size, in pixels. + :param rank: What pixel value to pick. Use 0 for a min filter, + ``size * size / 2`` for a median filter, ``size * size - 1`` + for a max filter, etc. + """ + name = "Rank" + + def __init__(self, size, rank): + self.size = size + self.rank = rank + + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + image = image.expand(self.size//2, self.size//2) + return image.rankfilter(self.size, self.rank) + + +class MedianFilter(RankFilter): + """ + Create a median filter. Picks the median pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + name = "Median" + + def __init__(self, size=3): + self.size = size + self.rank = size*size//2 + + +class MinFilter(RankFilter): + """ + Create a min filter. Picks the lowest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + name = "Min" + + def __init__(self, size=3): + self.size = size + self.rank = 0 + + +class MaxFilter(RankFilter): + """ + Create a max filter. Picks the largest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + name = "Max" + + def __init__(self, size=3): + self.size = size + self.rank = size*size-1 + + +class ModeFilter(Filter): + """ + Create a mode filter. Picks the most frequent pixel value in a box with the + given size. Pixel values that occur only once or twice are ignored; if no + pixel value occurs more than twice, the original pixel value is preserved. + + :param size: The kernel size, in pixels. + """ + name = "Mode" + + def __init__(self, size=3): + self.size = size + + def filter(self, image): + return image.modefilter(self.size) + + +class GaussianBlur(MultibandFilter): + """Gaussian blur filter. + + :param radius: Blur radius. + """ + name = "GaussianBlur" + + def __init__(self, radius=2): + self.radius = radius + + def filter(self, image): + return image.gaussian_blur(self.radius) + + +class BoxBlur(MultibandFilter): + """Blurs the image by setting each pixel to the average value of the pixels + in a square box extending radius pixels in each direction. + Supports float radius of arbitrary size. Uses an optimized implementation + which runs in linear time relative to the size of the image + for any radius value. + + :param radius: Size of the box in one direction. Radius 0 does not blur, + returns an identical image. Radius 1 takes 1 pixel + in each direction, i.e. 9 pixels in total. + """ + name = "BoxBlur" + + def __init__(self, radius): + self.radius = radius + + def filter(self, image): + return image.box_blur(self.radius) + + +class UnsharpMask(MultibandFilter): + """Unsharp mask filter. + + See Wikipedia's entry on `digital unsharp masking`_ for an explanation of + the parameters. + + :param radius: Blur Radius + :param percent: Unsharp strength, in percent + :param threshold: Threshold controls the minimum brightness change that + will be sharpened + + .. _digital unsharp masking: https://en.wikipedia.org/wiki/Unsharp_masking#Digital_unsharp_masking + + """ + name = "UnsharpMask" + + def __init__(self, radius=2, percent=150, threshold=3): + self.radius = radius + self.percent = percent + self.threshold = threshold + + def filter(self, image): + return image.unsharp_mask(self.radius, self.percent, self.threshold) + + +class BLUR(BuiltinFilter): + name = "Blur" + filterargs = (5, 5), 16, 0, ( + 1, 1, 1, 1, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 1, 1, 1, 1 + ) + + +class CONTOUR(BuiltinFilter): + name = "Contour" + filterargs = (3, 3), 1, 255, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1 + ) + + +class DETAIL(BuiltinFilter): + name = "Detail" + filterargs = (3, 3), 6, 0, ( + 0, -1, 0, + -1, 10, -1, + 0, -1, 0 + ) + + +class EDGE_ENHANCE(BuiltinFilter): + name = "Edge-enhance" + filterargs = (3, 3), 2, 0, ( + -1, -1, -1, + -1, 10, -1, + -1, -1, -1 + ) + + +class EDGE_ENHANCE_MORE(BuiltinFilter): + name = "Edge-enhance More" + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 9, -1, + -1, -1, -1 + ) + + +class EMBOSS(BuiltinFilter): + name = "Emboss" + filterargs = (3, 3), 1, 128, ( + -1, 0, 0, + 0, 1, 0, + 0, 0, 0 + ) + + +class FIND_EDGES(BuiltinFilter): + name = "Find Edges" + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1 + ) + + +class SHARPEN(BuiltinFilter): + name = "Sharpen" + filterargs = (3, 3), 16, 0, ( + -2, -2, -2, + -2, 32, -2, + -2, -2, -2 + ) + + +class SMOOTH(BuiltinFilter): + name = "Smooth" + filterargs = (3, 3), 13, 0, ( + 1, 1, 1, + 1, 5, 1, + 1, 1, 1 + ) + + +class SMOOTH_MORE(BuiltinFilter): + name = "Smooth More" + filterargs = (5, 5), 100, 0, ( + 1, 1, 1, 1, 1, + 1, 5, 5, 5, 1, + 1, 5, 44, 5, 1, + 1, 5, 5, 5, 1, + 1, 1, 1, 1, 1 + ) + + +class Color3DLUT(MultibandFilter): + """Three-dimensional color lookup table. + + Transforms 3-channel pixels using the values of the channels as coordinates + in the 3D lookup table and interpolating the nearest elements. + + This method allows you to apply almost any color transformation + in constant time by using pre-calculated decimated tables. + + .. versionadded:: 5.2.0 + + :param size: Size of the table. One int or tuple of (int, int, int). + Minimal size in any dimension is 2, maximum is 65. + :param table: Flat lookup table. A list of ``channels * size**3`` + float elements or a list of ``size**3`` channels-sized + tuples with floats. Channels are changed first, + then first dimension, then second, then third. + Value 0.0 corresponds lowest value of output, 1.0 highest. + :param channels: Number of channels in the table. Could be 3 or 4. + Default is 3. + :param target_mode: A mode for the result image. Should have not less + than ``channels`` channels. Default is ``None``, + which means that mode wouldn't be changed. + """ + name = "Color 3D LUT" + + def __init__(self, size, table, channels=3, target_mode=None, **kwargs): + if channels not in (3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + self.size = size = self._check_size(size) + self.channels = channels + self.mode = target_mode + + # Hidden flag `_copy_table=False` could be used to avoid extra copying + # of the table if the table is specially made for the constructor. + copy_table = kwargs.get('_copy_table', True) + items = size[0] * size[1] * size[2] + wrong_size = False + + if numpy and isinstance(table, numpy.ndarray): + if copy_table: + table = table.copy() + + if table.shape in [(items * channels,), (items, channels), + (size[2], size[1], size[0], channels)]: + table = table.reshape(items * channels) + else: + wrong_size = True + + else: + if copy_table: + table = list(table) + + # Convert to a flat list + if table and isinstance(table[0], (list, tuple)): + table, raw_table = [], table + for pixel in raw_table: + if len(pixel) != channels: + raise ValueError( + "The elements of the table should " + "have a length of {}.".format(channels)) + table.extend(pixel) + + if wrong_size or len(table) != items * channels: + raise ValueError( + "The table should have either channels * size**3 float items " + "or size**3 items of channels-sized tuples with floats. " + "Table should be: {}x{}x{}x{}. Actual length: {}".format( + channels, size[0], size[1], size[2], len(table))) + self.table = table + + @staticmethod + def _check_size(size): + try: + _, _, _ = size + except ValueError: + raise ValueError("Size should be either an integer or " + "a tuple of three integers.") + except TypeError: + size = (size, size, size) + size = [int(x) for x in size] + for size1D in size: + if not 2 <= size1D <= 65: + raise ValueError("Size should be in [2, 65] range.") + return size + + @classmethod + def generate(cls, size, callback, channels=3, target_mode=None): + """Generates new LUT using provided callback. + + :param size: Size of the table. Passed to the constructor. + :param callback: Function with three parameters which correspond + three color channels. Will be called ``size**3`` + times with values from 0.0 to 1.0 and should return + a tuple with ``channels`` elements. + :param channels: The number of channels which should return callback. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + size1D, size2D, size3D = cls._check_size(size) + if channels not in (3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + + table = [0] * (size1D * size2D * size3D * channels) + idx_out = 0 + for b in range(size3D): + for g in range(size2D): + for r in range(size1D): + table[idx_out:idx_out + channels] = callback( + r / (size1D-1), g / (size2D-1), b / (size3D-1)) + idx_out += channels + + return cls((size1D, size2D, size3D), table, channels=channels, + target_mode=target_mode, _copy_table=False) + + def transform(self, callback, with_normals=False, channels=None, + target_mode=None): + """Transforms the table values using provided callback and returns + a new LUT with altered values. + + :param callback: A function which takes old lookup table values + and returns a new set of values. The number + of arguments which function should take is + ``self.channels`` or ``3 + self.channels`` + if ``with_normals`` flag is set. + Should return a tuple of ``self.channels`` or + ``channels`` elements if it is set. + :param with_normals: If true, ``callback`` will be called with + coordinates in the color cube as the first + three arguments. Otherwise, ``callback`` + will be called only with actual color values. + :param channels: The number of channels in the resulting lookup table. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + if channels not in (None, 3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + ch_in = self.channels + ch_out = channels or ch_in + size1D, size2D, size3D = self.size + + table = [0] * (size1D * size2D * size3D * ch_out) + idx_in = 0 + idx_out = 0 + for b in range(size3D): + for g in range(size2D): + for r in range(size1D): + values = self.table[idx_in:idx_in + ch_in] + if with_normals: + values = callback(r / (size1D-1), g / (size2D-1), + b / (size3D-1), *values) + else: + values = callback(*values) + table[idx_out:idx_out + ch_out] = values + idx_in += ch_in + idx_out += ch_out + + return type(self)(self.size, table, channels=ch_out, + target_mode=target_mode or self.mode, + _copy_table=False) + + def __repr__(self): + r = [ + "{} from {}".format(self.__class__.__name__, + self.table.__class__.__name__), + "size={:d}x{:d}x{:d}".format(*self.size), + "channels={:d}".format(self.channels), + ] + if self.mode: + r.append("target_mode={}".format(self.mode)) + return "<{}>".format(" ".join(r)) + + def filter(self, image): + from . import Image + + return image.color_lut_3d( + self.mode or image.mode, Image.LINEAR, self.channels, + self.size[0], self.size[1], self.size[2], self.table) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFilter.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFilter.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e0440b088b76b1186881f6ce7692cfa0eb0358b8 GIT binary patch literal 19745 zcmdU1&2t>bb??~)K>{QNih@8=q@|`lK?+!kL}*2@q=+Oyi82Yw14y)JD~rL-EHK3G z%yMRy03)I*HkG8xR+W>3Q!ZCdPL(Q^ODd;Sr7HOod`VSu@g=z>IVL$q&hPhnzIM4# zWPoIq0nDJcr|0$S*YB%ezuxM99UPtL{OWrRmHzC(|97-f@mxhI7k`#&Db=>rO-ot) zTv4rxx>-?o56NSEtg4$;bt5>UhP)xQKB}U5Wmy&)qB^kDcipP;hE>y2?vVOSsryQO zd~>gI_b6|#)DGvh`;@y^dHbYxUtT+++!5uCNbP7|JF49M8H59Q?SADRRNj7R`$S%Q zK)GXC?V-H(pmLwgY7ghNPbl}P4DNVdJEq*HGt4IPT9DvKR(mwBeNwr{vf5|z+QZ5{ zuDnsf>_lGslybk3)jpfojw|=MtXAi>Pb>FiR{MNjJE7bcvf3B(+9S$+DXV=suRW^V zSF+m4y!M!KPi3{I^V(;W`)XD@mDe6u?sQgL%WF?4_e?h8*YetLkXaTd&w``;U*l)e zLMhpYo9o~4V?PWQl3{$h?6(px$~lm&E^2TfTY8F&XD?2otR}&d20*`njuTKJZ(uaO2DeSFWD9(souo zgGH@#*Cqld_&U2AwvsXYyVh+b{)!X0zZtSNLD*H?9u8_lfTVF{sF8f%_M*UR<>X^$ zLcS>!4EZ3o5Lieu1QKG0S%FA?2Khu;MDpe^NlakzFM;u>#?Ph5a}rNGx)BC2Z^`pMe@1X z3Z29cR&^&tbqY1Ejmq0s0-ZbveJX3E8;GFr{#ODPC|M0`K!+h{O9d=FFvn* zPHP5rw&O%jTgUz%c(dA&Og>EMRsW6`XeZW_8@`*YP3bkyUtLR1)pRc=(gP_|{z=C^ z1(f|*x4Usdv?gb!W=`oa(v#<>&Y!Bun<)Z@g0uR9j=kGmFKB>{VURd}Kzf*`dP6V( z>g+1Ryy3Kf`Xc}7rqf8m2pBdE`t0A+kr#tabrT(XPGe1X{7tW={dgeeltCAyTe)j+ zzvHyJ9%hz+T(9X65{AT&aks6*CW`|heFf5Cvl)BItiCS)d+`Nu>65)UE>THB>COye zYG7YZ6RJY{iC)8mt$3KYo^b%zGJOPuO_S#1QVo`PQH(BWaQiJ3?m;M&THmLl7gb`Z zTOui+p}wN-SJW147|JkS6?KgNs_NKyQkAEcTCb|;J1QBX9No9n53RH@VBQ;In<8q^8dwMZ=XSH|0*z6Bsgv5(Zu}fFRZ1X%2~nx+5|6*z{k5)w^jRVocfJrqjR z>kzu6UVoh(5G`dLs2sJPwZ^QTITB8(;V~u%3#`Y5^iuJQ;jD#fe-frn& z9|5@E!xghLg^`b03zK_MEG$>TkM+76HehdwCQYx+X}8CDBZvYIDea6sMNnS^G!cm5 zL&Mf^Wo%zUT3qacWBgz{(9f@AX^PEJ5H&79BL4Uy^0NwVG zZlq8gf+nIqb3Y&g^pts12cT4=V=?&fuZ-29zL3`)z2OILxRDx=)Y{SvPl>6Hyrdfi z#?G8RO^ByYzmlvO(~x=unFSQvy##}lS{wrfib)Jzuel_oS$$*8Nm4UtYz<6I$8W4- z03XJleobtpquYRCByE7zSzcy8`n0$U`iwreyqvw}xjvkc^iAE{a9W>TUVhMq(Kw?+ zXET4zOB%+|i*VV%yFtyti&jFIb^--xADR*rM9b8neF`>aOZyOR0)&G%tVeYr_4czU z6|A=l_WlTfV)BTxMhZpA3PE)Vg|DwD!FSIXmB|wAEk+47D`pdll+X6i4jZ;yu%8C_ z|5uy(B!}23o0KcmskhmIKWYd?i6NoP^cngH8HHv?2?3Y6?T}nljW=_%pQZ zRTAy8NYwNPkToOQ=>y}ErhXs1?o2yu_>lR`!89H@rEVt*KKo{LrIa!3YoV0p3pCuSd!U zo9HIjtdD~aUOTwU2`#UP6ak?6kxXw3FAcDA|r9PT~1L&oVa`SR8+rIhT6~{p17AC09MU zb6Kc}b_fO0j3iPrKvS%Qn=l}QEeACX!yjU6XoKJhh7H85Bu<4JA}{d8k_{gPC&EH( zH3+eE{g(EdIxz91vTBld5#m7`0z;6BZ<@eM82PJy;H1895!UD+l;K5pJa{VZYrTR#f6RXO;WoUN7WF_?e64q#ZX9EoaIw`bV%)h|-GT6Y z3q52&^$MV7a$~}$>0&8zT)!L7YIdv52eZnsPvd>@Y#yAzuVN{2s|=vhq`eAYg-^0W zcZ7`fm$-J!Sj2lZrE{Gmu>~*j+#aqs|3!i3W8*DO*k7<;;jN*Rw-}YV7;g5k6-ED| zM$4B`7^st}hX<_ohe0YrGQPTmmKYdD>{i0`rD$>*qjeDYMsz(@btX8RF2lvl0C)Y!YjBIfFzI5pgCIKv**oaQiB|k1aw6cy7vSttNW@v~->DB0&v@J4HkiO4hqdUY%5u?sVr)`l-L>}A_m@^(oejN~Y z&_K?FMld`?>Vw2bXxoGfYZ;icI&szk=d7WpU|ZgvK=}a*Piemf%DqvVf+WPwSgIbT z!8*U0X6P5Tho%$$4yf!{Cs0^01&>x8{C$DpV^as5puc9nq7Fu7Szk@|qvpdPUUQ<( zH78zg;G_J|i4c`=28Dqt0d5)`H0%q0hK+m_WINtO0;yx-pF^vpkP)|v^BABpH;bO9 zZ}{tehYSB#Vr(5G5Kim{F1zrFz*ZV!N37&sD1haUB9J~UzmTlKJ6j7|?ksjQ)1vIf zMcBxYjVOc#{WkW#R^Z;PC4m>mx&hA*YLDJzDr_6rN9LZN4AKic*U+U_)AemAFss*+ zq!Z7cIpYPjjf{4+Fj_ssPiN8r)Jbd*?1ec)$a+f1tlsovb6&-q`+v?-6}JW_ofi$@ zC5<_J4u#xT%;SgLr9#L98(xL?$oEB{CG4M)O@aeCy(B;^;c{tczs6U%)&5W%fnNep zx*IVvFu-^M4a#07ea&p&<$g8yI5~cCz{+InNB9wV2>(R<2^Z0SuA;ULwM0P-)m zVuA#X!JXJzl3x*)OV<~cu9wKoNb6v752ra8$ac!fO>J(#ARQnC#W@5+oL{rV3>u$} z4B6!=Zh-`lO%EDZo%(WXL3E<1v z`_}W|sxqNCIzy=626g@xupJvfD7puW?_IDzm|xfpD+w5`4?MFwQ}Qvs1T*;>-3$~q zdD?elW52JCA0IIVQZSmUm>r3zLhC%|R9frs-6k%hq%gB$2j<{a*dCXHb zF)o2T?YoH=*H_1nkC;I3pbN(Q`-P2*Rzsj(^}W5Lx}E0~3n-zIQQR_8tZT}on!-oJ zOY&4G_cff>ys`0h3-ZYW0v-6Ec&&J2Ka{vyyjP0|l=TB++Ug{?4}nY;SoQqH4X zIbGCvWgP_%0Yk|&Dd!9!AD^2$l0l5reuNJ`LtZ~p10;JNNpWm|fP!Sl-9+*}lJzBv zpTPx08IYyFm#^GJV!q`0-#o|_2l0tNNB3Nhd($o=bOAGq5kzPZP2CE^^==0-ua#Do z8nA>Eju-*DHnNSUxjIKKbQam_#tb+zrjTv|rIER`83Kn`(1&4!xFk}YV_DE6R=^i# z=6X7lR3&CGN1c!n!xSt7iQKvLOvEt@SS(2{u$Qcbu0}>wxDo5SVV5yR<}2Sto$PBl z2q~IzA);vpQN%2P2l9fEv5x#`2~{E-YsQ03rD;S08(koRc&F<%5UFHI$dciJ_(PhT zEV;F_v-*7PTxfx0F`N5iU4&B^(wsyELn-E#CN=lO8o9yV z##~7d75H;}`5ZFK_uLc{pCqJ$Pv1OmB93YNM!KHWmocgy(%19_gls`%;IO=$Pn}7} zI(>R(P?D84VdHFCI1Z--gb2!;63zj`#M7*D(}+%aP%`}3Y%&VaxTY@|E(7}@xJ`ss zLHwp4#mS&BF1U#)Vt85*Lv{@Vgx4{}Zu$Z0J;FX=xpPzgh`F=+wc2Z72qfIc9lR5R zM3Ouqj7`#n-K5jS+?++bHH53cmObRn2sf)2y6qL@P~)AfjsY?!fp$B;Sd56 z?so>^1kC1&9Pyc+o)T{7Cp?n@=DL6lQ||1Nlh6aum%MUj=GXM%n)I}W%>;>rw-8|) zKmbDq*>f!z07-Zm`n57H%gfA4US1wF6$X&m4QP81Ip73t6AU+qO7M!L@27KWMkPxr z(UMdO(34_k8`SQ!IdtK^t)aL69ZHs|V`0g$(UWC2lN5qvHkK4m3Ou$_4tfF!^LZ3H_G1CMc_1|1T~A6cu?q5?=; zBWm+Kb#Fw?ee#yt8db?5bq_-k8ZpiOjzx-Md`}X0)Z;JBx5tDFfU2mRehx-bg{Q$8#C^CaFR_kT@}CdpcFta**~I`J@xniR1NZ^`GBqXp105}jO% zx}GG&Uv^s9ucTZC-FD}$WE4zd2j5=5)+sZUV4Oq-b*F zu~-0`@f2D1($#PhDVjY^(})BRrZ91F21@NE-Y)Y+4y&XVmYs)TU9=>#w#aSs!m%C`nIGTXW)_s#J@%1?o-@i_s*>Op5c52o_&YU@UHo50s`g_r%9K3-vWZ)fJ4oCg5x0rQ+~S%Ewp{=mNvQ1u28;VWxI^DO{|R=L;Xu?(x;EE#GSy3W zJL!3uDyq<-StgLLz=k?hG1DPcrD{Eec^<1A#DC8D3H%qU zM;u3R$sB))0?2ktUWKmYOz)x9f_Vbz;q}uR&d6Drk~M^VTZLxdLz^)U}KqEv~Fp8I58ZNac%!f}TI-J^~kzqg<8 zO>vZVON!Vdf^~qQ;a^o9dDZ-X9sS<^BX#3;gsU#hVDQ6x;6A(p!^k0FVAv&v-Nkq+ z)pXUe2*v#_cK;$SBy`|y&{N1A_Rt))gV)|#ad7&;c;R$MdX6>-k3f@`e6bIlIHqfF z(i3Dw5OwA3U+yTSATr=^p?MmM2Qt&tII?B2sj7|tQ}~iOAmbjD?uMhy5+zf>HSG49 z4NrCm)Xb@e?HutG8dor>%}AGG%_wY(Q;VU|XXP=`RMt%1!}e%7>7qo2*W(dp2D5Nk zGvcH!JGXk_Yd+`!8=~|efP<#lbY(QjmntO>ciS1FP3BA*pBGEU?MDRoy-VAy!<~8< zg-0O<$o>#wYR}=;Z+fY)ZA!keztr8LkL)XKEb52~sL_f`wm79r3G_1B!8~FLaO$es-LN?C)DOoq$<^aKTum^(jPE@M#JA8 zb>!rh__oo1P-ox6^HjUtgZm9tCF&2py2N3i2@k2yp_vb<0NN4l@ewNmKoBRJDieRh z)P(~5b>M4iUI)&%e-4fKC%6)I12c<}19>xkc<9uMP_m*GI}5bfw}6T)OGG`=_laKs zpOqptxq{0AGg)M#Pf?0iNYkKl>2Y%PDhj~imj^%(8NKqLYR#mWYf(9;Dw^iqJyOgYEG^vh(sX30X(>Gom*!pfp>~D&sX6R-sAr;b(4ga)CtJpuz2ICHRZ$h#khRR5OIo#h$$1Z#jPj3b+Cj3G%#d%q>xN2ah$J)V~l1#w>5noFGd@F+=t;;L+L}GU#(!wIS&4FF=bH8 zcs`qwuWRkncu#JbdicMX^51@Qw;*nHX`wD#Bj)fjjhiuHvRZTakxMpN{w46g&DlXQ zgftgsW!GQ}t_I6YSXe??nKjmMvRrH+N;G-PeBI^E<4t45?OYyV{wo?t?pdgDuJuM>BoB*`%*^CC4CXQGNacX_q%|rA6UX84k|dMS zT@b$?D=n_t==Ve6%eN*Ni(twK?qKbeJ{_X5fk90_iocGS62o737m=k^+9XSRGyuQyuo#p`vG&&4SekH}0tmrOEc2=F7% zSy<>6zS~6HEyFmR)m=~JJ^-oLBd-(H>;KG|k$ftF#7IB64_`ZDp=L zMgen$32DhUIbq#wk>FS>i4)U#N$8I?4yMc;yoIMBQ-fJMmX@r%G-OKfPWEQ&Wyt_A z-|s^g@(Sa-J_;r?agwNDnGcfPVTs}+3apN=m8s9TCa6P!xO!z_{(@bSO47M>l9^{j z1jcSDDam*LN(vG;WgV&vTgUO$2c+k~j6DjG9MBc)u`h#k?6z$2i2E!d9^sI*lA{+V z+U~H_<&DRI3&f?g!xIyi0O>rjA4g&M2owIsrpLyr*5MPw)`97f{gcn)fy9vN^=21& z6u+=^P76)n>j=)3KNGbw~&l4--BdRDCCP7Y<}Z_eS)`>yuHBN zOT4|p+iBjWd1Er7&0IN~aZH=pPByc6Z04lc%)79eQ(!a1V!y-NMcz21he90lEhh-- z<13-wJ`AYw@8Wi-asVNXLkMJyRwst=dvapW#F2?7truetype factory function to create font objects. + +class FreeTypeFont(object): + "FreeType font wrapper (requires _imagingft service)" + + def __init__(self, font=None, size=10, index=0, encoding="", + layout_engine=None): + # FIXME: use service provider instead + + self.path = font + self.size = size + self.index = index + self.encoding = encoding + + if layout_engine not in (LAYOUT_BASIC, LAYOUT_RAQM): + layout_engine = LAYOUT_BASIC + if core.HAVE_RAQM: + layout_engine = LAYOUT_RAQM + if layout_engine == LAYOUT_RAQM and not core.HAVE_RAQM: + layout_engine = LAYOUT_BASIC + + self.layout_engine = layout_engine + + if isPath(font): + self.font = core.getfont(font, size, index, encoding, layout_engine=layout_engine) + else: + self.font_bytes = font.read() + self.font = core.getfont( + "", size, index, encoding, self.font_bytes, layout_engine) + + def _multiline_split(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + return text.split(split_character) + + def getname(self): + return self.font.family, self.font.style + + def getmetrics(self): + return self.font.ascent, self.font.descent + + def getsize(self, text, direction=None, features=None): + size, offset = self.font.getsize(text, direction, features) + return (size[0] + offset[0], size[1] + offset[1]) + + def getsize_multiline(self, text, direction=None, spacing=4, features=None): + max_width = 0 + lines = self._multiline_split(text) + line_spacing = self.getsize('A')[1] + spacing + for line in lines: + line_width, line_height = self.getsize(line, direction, features) + max_width = max(max_width, line_width) + + return max_width, len(lines)*line_spacing - spacing + + def getoffset(self, text): + return self.font.getsize(text)[1] + + def getmask(self, text, mode="", direction=None, features=None): + return self.getmask2(text, mode, direction=direction, features=features)[0] + + def getmask2(self, text, mode="", fill=Image.core.fill, direction=None, features=None, *args, **kwargs): + size, offset = self.font.getsize(text, direction, features) + im = fill("L", size, 0) + self.font.render(text, im.id, mode == "1", direction, features) + return im, offset + + def font_variant(self, font=None, size=None, index=None, encoding=None, + layout_engine=None): + """ + Create a copy of this FreeTypeFont object, + using any specified arguments to override the settings. + + Parameters are identical to the parameters used to initialize this + object. + + :return: A FreeTypeFont object. + """ + return FreeTypeFont(font=self.path if font is None else font, + size=self.size if size is None else size, + index=self.index if index is None else index, + encoding=self.encoding if encoding is None else encoding, + layout_engine=self.layout_engine if layout_engine is None else layout_engine + ) + + +class TransposedFont(object): + "Wrapper for writing rotated or mirrored text" + + def __init__(self, font, orientation=None): + """ + Wrapper that creates a transposed font from any existing font + object. + + :param font: A font object. + :param orientation: An optional orientation. If given, this should + be one of Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, + Image.ROTATE_90, Image.ROTATE_180, or Image.ROTATE_270. + """ + self.font = font + self.orientation = orientation # any 'transpose' argument, or None + + def getsize(self, text, *args, **kwargs): + w, h = self.font.getsize(text) + if self.orientation in (Image.ROTATE_90, Image.ROTATE_270): + return h, w + return w, h + + def getmask(self, text, mode="", *args, **kwargs): + im = self.font.getmask(text, mode, *args, **kwargs) + if self.orientation is not None: + return im.transpose(self.orientation) + return im + + +def load(filename): + """ + Load a font file. This function loads a font object from the given + bitmap font file, and returns the corresponding font object. + + :param filename: Name of font file. + :return: A font object. + :exception IOError: If the file could not be read. + """ + f = ImageFont() + f._load_pilfont(filename) + return f + + +def truetype(font=None, size=10, index=0, encoding="", + layout_engine=None): + """ + Load a TrueType or OpenType font from a file or file-like object, + and create a font object. + This function loads a font object from the given file or file-like + object, and creates a font object for a font of the given size. + + This function requires the _imagingft service. + + :param font: A filename or file-like object containing a TrueType font. + Under Windows, if the file is not found in this filename, + the loader also looks in Windows :file:`fonts/` directory. + :param size: The requested size, in points. + :param index: Which font face to load (default is first available face). + :param encoding: Which font encoding to use (default is Unicode). Common + encodings are "unic" (Unicode), "symb" (Microsoft + Symbol), "ADOB" (Adobe Standard), "ADBE" (Adobe Expert), + and "armn" (Apple Roman). See the FreeType documentation + for more information. + :param layout_engine: Which layout engine to use, if available: + `ImageFont.LAYOUT_BASIC` or `ImageFont.LAYOUT_RAQM`. + :return: A font object. + :exception IOError: If the file could not be read. + """ + + try: + return FreeTypeFont(font, size, index, encoding, layout_engine) + except IOError: + ttf_filename = os.path.basename(font) + + dirs = [] + if sys.platform == "win32": + # check the windows font repository + # NOTE: must use uppercase WINDIR, to work around bugs in + # 1.5.2's os.environ.get() + windir = os.environ.get("WINDIR") + if windir: + dirs.append(os.path.join(windir, "fonts")) + elif sys.platform in ('linux', 'linux2'): + lindirs = os.environ.get("XDG_DATA_DIRS", "") + if not lindirs: + # According to the freedesktop spec, XDG_DATA_DIRS should + # default to /usr/share + lindirs = '/usr/share' + dirs += [os.path.join(lindir, "fonts") + for lindir in lindirs.split(":")] + elif sys.platform == 'darwin': + dirs += ['/Library/Fonts', '/System/Library/Fonts', + os.path.expanduser('~/Library/Fonts')] + + ext = os.path.splitext(ttf_filename)[1] + first_font_with_a_different_extension = None + for directory in dirs: + for walkroot, walkdir, walkfilenames in os.walk(directory): + for walkfilename in walkfilenames: + if ext and walkfilename == ttf_filename: + fontpath = os.path.join(walkroot, walkfilename) + return FreeTypeFont(fontpath, size, index, encoding, layout_engine) + elif not ext and os.path.splitext(walkfilename)[0] == ttf_filename: + fontpath = os.path.join(walkroot, walkfilename) + if os.path.splitext(fontpath)[1] == '.ttf': + return FreeTypeFont(fontpath, size, index, encoding, layout_engine) + if not ext and first_font_with_a_different_extension is None: + first_font_with_a_different_extension = fontpath + if first_font_with_a_different_extension: + return FreeTypeFont(first_font_with_a_different_extension, size, + index, encoding, layout_engine) + raise + + +def load_path(filename): + """ + Load font file. Same as :py:func:`~PIL.ImageFont.load`, but searches for a + bitmap font along the Python path. + + :param filename: Name of font file. + :return: A font object. + :exception IOError: If the file could not be read. + """ + for directory in sys.path: + if isDirectory(directory): + if not isinstance(filename, str): + if py3: + filename = filename.decode("utf-8") + else: + filename = filename.encode("utf-8") + try: + return load(os.path.join(directory, filename)) + except IOError: + pass + raise IOError("cannot find font file") + + +def load_default(): + """Load a "better than nothing" default font. + + .. versionadded:: 1.1.4 + + :return: A font object. + """ + from io import BytesIO + import base64 + f = ImageFont() + f._load_pilfont_data( + # courB08 + BytesIO(base64.b64decode(b''' +UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA +BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL +AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA +AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB +ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A +BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB +//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA +AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH +AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA +ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv +AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/ +/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5 +AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA +AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG +AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA +BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA +AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA +2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF +AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA//// ++gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA +////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA +BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv +AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA +AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA +AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA +BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP// +//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA +AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF +AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB +mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn +AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA +AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7 +AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA +Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB +//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA +AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ +AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC +DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ +AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/ ++wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5 +AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/ +///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG +AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA +BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA +Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC +eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG +AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA//// ++gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA +////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA +BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT +AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A +AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA +Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA +Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP// +//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA +AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ +AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA +LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5 +AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA +AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5 +AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA +AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG +AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA +EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK +AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA +pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG +AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// ++QAGAAIAzgAKANUAEw== +''')), Image.open(BytesIO(base64.b64decode(b''' +iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u +Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 +M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g +LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F +IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA +Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791 +NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx +in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9 +SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY +AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt +y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG +ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY +lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H +/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3 +AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47 +c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/ +/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw +pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv +oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR +evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA +AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v// +Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR +w7IkEbzhVQAAAABJRU5ErkJggg== +''')))) + return f diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFont.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageFont.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00ab6667fec149af2c9ca0db4d750a2a7f853585 GIT binary patch literal 20759 zcmeHv+ix3LnqQH!WsA1kZg-EndwOQW>7Bv2qi$1IOL8*1Q$CnA zi)qI(Eynw}){bjuQ`+&Ac6LKMzM-An)Q)eWZ%V7*(Av}5@w67!Z)wN3v^u(P6VmaF zR-e|agw}{@^;_CEn)bD(9Ub4%F5Z`gZp%VpkA`sSn9n=0$X6!!Zh;9Ed%DtwQ950+qC(qn^uWcnAKM5p~BP7%w zxvBhF*Y$#|=eeH132va#x7v+>P@OuVYEt+q)KbA&H`R5zpNF76-`qDV3x!n4X}8@$ zs+2FJglg+F?LS5ZynO+##{j;yB0v*81qhl=i{P8yZ;G!t@(#etAX2KSo)rb|{Dqr&CYb?TcUOP;;N$vo-=$WPs(!ca1lBMxQCCADTUKxjcljL=c^S{egNJCW zwB2gG(skP8Q-z2L`%H340CFT{RaR?sMfCw+_4V3q>7(VKU|D0?eIwPmcO9b)8hn}- zE&eceFE$nXe(XJzH{#!m-HzXl&%|p}=;QMI7Lodos6b927GI0eIGxhGA5nxLw~FJP zi2;x+h%wq@Hd;ZCDQ);O63%-uh5{*syxsLJenHqzyE^FK%HRUxR7533~ zT8@UX*CmfKC_MM9YQ61rEHQJt7oDIwRAR;TMEXR)oKC})%AVJ=#C6aDbn4PZ7$y-C z8?<-PwZ@W3c^nIG&Gjsq!VN3)eD;_tiGZ4qSo;A1QQed(hz#TI%`Lb|;v5hlL2FYF zWA`C-Gx)iS?;ElAr|wVPkKKR9)F`)w6ve+v$MSx6>>0bAWbng?EH5hFgJ<7TAgFQSO{cEx)qAA8n$58!BtSR5zjDrlC>F=>1a}mk?C2D%JxNfCqg3 zjTi^t(K?Ilg(d!4^r3PuoB{_zyk!bTg1VeFEgJyIX{4!B+X3BJyL#dFf{N8aKx_#~ z9@B=J4^fDQQ~M?4MqB``zm0aQQ*-NxpGCe3`q9q*Ud7ON^Jy`*VS}lcizY={jAu@N zo~=j|<293ZC^9cJnI`Rx`4hI1KWwU;Tm+Us_VQ}TQ;u6z@1NvL4Ab!O#E)_$MO4U5rax1@=D_p%LjV}hQP+d9C=7$Vp<0h z5AON}QSySz*#eI3~`a zQ9X0o7a~P|aDjM|z+_Kvi8{3w9*V);pQ9RD;J3!N>emprih$NFssGwACZ~Zh0#(nc z`TuYNX;Pb(h~GlwpQAD+GIU>*`s*p}i#P)|7#C#|K7x8f%0Bvlw{hegxW(58!VWS* zrM@bICJU7+(b-O@mk1ZVR$Ve_2P$|QcMYo=^k7R(YMwCDZ8Ur=OzFFQO8yTiS3{dohiaY)*TL97&0% zN|um&Day@gFB2MKG?3{9LR!!gR(cWfFl;nz<}@L`xTU=h1NxzmkeG$12b5b~5t6N@ z!GeSol|8Etv4B#a2<3dw;# zq&SrG+uBP+6XJkgAen=vOi}Vf7KuxGfm{wEFS#X>#c(=~7106R7)!sT^+E#4%~Uq< zDOOj)PlP;VO_pbp$k&CRk|83DB)vT*={Nuv<6>?R-rwYWT&j2zk8U1f_P@d9r$Ay1rsn~fj|XrsEGO4pQh3BgEO)m4_R z8`6bFFad^Gb+x7IrgWhZCPzYOuJy;#H7#9Wns#&du^5OLj7%aKe$vQ611nig*4*wz z(rqMzCJqdvxR)_~(miS6k>ca~h6SPa-$#ox!E~$-qszearKl zx&>HP5~e)Bc>hUa1fYbl0{+SJe9XfEWgQcpTD8r&oYEcl_j~|HGs7nbN%|#$I{pZh z!fgWfGvvuVuk$RazityxMiaj^+S?W)nM-7z7-kn?D}z-fL)St>u`N=Fu>Sg^M@o}K ztNp6yR6D`H#=T@=+MOT4PV#5_G41L&AvBq}n7_l~w^$e~vMh2e=uOP$ESTDh4KPvB zB$hUhS)+iPU!WK(iqzgnTS&=ET>ke_Fn7EgyZhnHjhU&Lsrxq`CT6A{PJKLmHx|$Z z?0MCW-*v%sN?r{u@}U{$E@XXcGMkjZ6g{S31Y)Zr^~IS&W1 zkS9p7=i+o4B8H|jhX>&lH)J8TDNNwSrPH{4iAbT!2xVatp}44s15*CSKb+L6XsMuC z4U#ocG01u{7;R4_lnu{46GgIyjxYF-)gu{wRk%enWG)4qgG22c3-&WL#`PR%RW(4E zg`u6K+hr9xHqr4Unanqmw$rydpDDffn{KaNA0a>+abhK*0kjNqM*d{IkS|pV+4a4O zncv9meKy&=w^OPZJ9~RO#j&*@3^mi-+0*y3m9@EOPS`NNiWV^7%BY2vx$&MR4_)Y= zCiXCqy@&?>F1p83`$hswrTO<{In`fF%&26HN=|_gzqo-)=;y?`BNX{!6f+|zj5A(q zA$ylIQMfrCyZ=lg!W-iClqVGb$B=JZ#mOUwXL1{&l@fJ~C@0Blcn1nyi>}B1PL2Tw zQa0a`8Z;OG1y|_oK7_$Z#MIFS$w9I(_7Sp>a+74Cn#d`^pGXkQE_gOgJDt(IXQT#5 zq#8lMUED|69U&?Uy}+7Kg9c5gG18*z+kc;9Q!M6K{2DwxSO0Ig!p(n-`1AqnE#2t1 z+gmZPoH?fan_JH>0p~9x48(fgo0+arW@wp4)`_+ivBuY$_EH3rhpxEANj$;~MO8l$ zS*QYzmXp=c1mUp;?7$wqexui^(MlwF_Dp**!Q$%ieXJ76)= zOB;Nj<_RDlxL_oXhyET@P#hHEQJzX-U*gFg&JBMWLk5aREg=xZ;W%NPVwy^6Isa*_ z^A93G55;W#uL(eMD$9%(DerB~|F=AqMZE*0r-=j_@$5!D*U5bOF%yLGIyk76b$&Ol zo&N`I1qgTMqowd*5;zNPIL)o!ji%w5&pje$PpJuDkJ`LCbA$taNBam#2cGl4yrT_o zb90$5wb;wM+VHPr?0xM84lrYA{qNcrNKo!+FW=E#-q(izNqcc0t^ZDY`9MQD;{8SJ z1uE(g^)DhCgFIO2fn@RT3V+^xg+G{l*Xu_!)NmknUk*yRtx?}KXrrCHO9Z(SytKdx zzZr)vzxbAwjQ9&s=v_%CP?wFL8}ajg48I5GU*Xz}9bk;t5-@jOLHG|f^}fZsunc_G z;r}H(ooIAu8ThP2J9t_pb)}LLu_(ntCl&1TwsVS+6G;NCfC_r9+7P99zpANu zbumFTTu@BTIKrB+4zMBKXnkc5#B?Qj;2heYtGJAg^=UgMUZn_+_OID21YZ(_fdo7r zB(1KK1GWb-7;+cpOUV&ciKLWaiH3G?v(3k^ewe7p8yQe-UhbttX5x}#rh>@TADyfd<@RCbtT2(Abf<1$ap!q!S z;rIwaGTVS(C)sr!%)K&R4)UKR51LM`8Cvpc4T&4qhv#`*w;ENP2J_97hU58oZriUq z?dl1Pbpr!Gy#g$H7H|b#)JT{}5wC#U?>KmR04T|{dv@k_u0*pV%0v)U3i?S8lRim4 zj^=)r{KUUFJ3&j)sd=vNHpWr;2m~v;80EG<#dtllV_>{qcj0Ds1L#22tE&zpJL<>| z@%l&b>9??pit|a;JL_$gbxKSM?XE}?oR zBd?J5%A=WxzN#^)p4Wu*6+s*^>DlX-`%2>Xb;|bSBb%?N7_av6QO#E&Hsh3iLVd%& zH*@ZC)H!fEiwkn1e30MHW0!d#G2r;oYbx1O5Fi83&+LQ19!;p7hw5Ql-)@%hw%QPap!$!3Y4 z=ep{F3U9dBJq%+#!bqKZPqwJ%4}i$GhTbmV6HozP@qpX>-&ontq0qk17j^E%9>#I9 zeS=T>K0yZYz1Z~B4C)K0&%{28KSKRp>~C-!`X0r86Xg%^{a)-t^e}X+Me#nP$uyz! zxz6zKG9W>upZW6l8TKPGLgFpY{Udq5>=)YMc|ybQ0h(2q$rlr+5Li&W z{J%mW)_KY60>L;IdFP<^&c=pxr;nkfdV-rG8@zrO^lU{%m#Hv?o;%U1$ zbOAS+c~sjj+$%j@=^|(%dm%Tk`RdS1{=dvGG8oY^GND3p{x%Sk z6EJP&0bc&$6Y7U}ay=FMA*Az8tj48?>_|Sp!VSaegYx z*F@a)NivEyNcB)Go;*q7h?>TvTCZF6XU~%JPv)O2sT1nIF4vS7ebq~(x3I3kHwf}O zc>fmfHzxM8?c(v-TCc9VD?67yuVFFcZ<*Qk{c_pWf0a+-R~h`v#(oFvmr>}|{_kk^ zDouV_%l~hh9SMS|)T*wRN4Ofgp4AhE&4yfR*48u9B?F2&+Bf9Bk$S4@d#O}e^`jl* zB7mp5QPu%S?hDwa&58JAQnR|g&K1%F++s+&90Dw*mUVrfgJh}ovYrzFr4&9c0b=~V zPMV#tV}xN@&!$oXeM0~)={l-}qBjT-v&y=~+k9EihZq^D6fgw1gr3f_@AL|W0&q^> zWKSBH>mv-YvD#=ezn7-D5z-{F?A0VCS7(2y7b6?{xv(NN?p1c(VTprGruF;iqK zy1q+*0R0+(!j$I#2w<{jeFSh_0G_-K-~j=G9ajO8%Zh!8P59)cUCAMsqG(o5%K&E(3SuPLoRRlYq<13>Df7Tk z#-Fl(Q#42bCiD_@k2FdPCpv;Usu4i)YLjx9ZoLkmOXRnp0nlY&1_4ct0Cv%(dm>K} zmqXp#0-Z&=6%9iS1*3qI3cgqkX;2svjWmd<>-`AeB!&e7%wUVJ0vuv$LN7ue#N13` zm=S%MllE&{-iChb88p5MFtI>1wjno>{Tk6Q(_q)Ki0L(eJKRC$JOW5kktv{AR)0#a z>_mbXVMv-~`Y80Z2t(9I_NyfQAjufRM8xJM8gk3gDWEd4=Y!Fw}mPL~c7(|gbr77a20BoN$S%+Lr7{r0-p0S4>{W(@1TL)k$ z<4yD!&j+EG!c8hg4Il>3X|mT*OjrkHVU0ud=m!9J9YcG)i5}xP0tiisd;lg0K&aUS zh6*F&gbNyIJO(J50)fpM3(`L~ z(v*bWr!qrk%Q<>5V=;8~sE>88P6w8A#;ONh22&7=7)vCHg)QKlH2bxEz618Flkz*7 zeMhrbC_pCz<4A)jF)Wo;&mlgWFoRqu>VhJ^{ko*g0e@Tu0voFhNn78)hmrDS96EYQob?lI?KhH;=wmiqcegJKLi$nc zz?2PP`pT{5b&@u&XOuE+Knx1mFc}1Fwb8 zC|XJvdEXLdDGZU10yCz}`9%WU0c}EnYRe^H*rFfJgJB@304zwf1Sv>MaMME29LB^9 z_ONF#!Oja;qI3@sBDZJgr)1J5Sr-D#G3kVln@jI;;3;+hrjTY#nb8N{+nYPMOYci^ zPXPKD!#1OU&HXWk%1fnEOKG}uy=_Yrggr-&R4`zXK9rCE)yY_-%{*Z9ED~(tvJ#W@ zF-VZm&)`VM!AK}Kn*jmB_g(j+X&w0x0Ak$O)2}J6rV|$XT+Eae1Vb=`$Zg@$)6Fnk zQW%D+=2G>xKoS)_5kmqLIct$i-Tg^`pr`;OIno`lQ|@KUA;2!ApTOx-@&aMLFj?PKLt@#L`BCO?v z{Zd@bfUYp>vJkjFDTl>P^khI6e5);ko8g{^=+cXziNY`vL{3;IhC}#(v0#UC$T?!y zb_p=d144jM5u9-C=!UXiqI==711$0uWdWE(7=kGjZ0_6Td0QC_kOmMjG%p6k!q%He z7RLrr06-1O0GO`nFx>!%kI+!&LrFk09H>B~Zc^Uv-UI7>~0p|l-dgfHmj+p{3 z3qV?0S1%3lWSR|=nM!6A01aq{90p)16%$ z@s%x8^>kQ(Eqxsrj<-zAC^rV;d{;lTb>xxPXt)k8+6GvB1)$IjleY8?U>E`5+kqb-YIhjN(clFc}*P#8{bIqef5(m}Ol5t~r33q=Ba8eu2^fe>g0 zOG6?Svmu5P0PPHHpQ~R8%Og1iQ_3)Ph!4_s=8Ebi5R8D$dHs?AxA*nz;AcNe`2Pma z?Gny&W5*oKZEe`tFOITy_nX;$8#U-WKKo*SVdsm%F$ZJ^*><-4++6DDMqA(XaAf&B zyHvYO=Tl3)M6tGXveNI>{nYTXb-A2cOs(`%owa_^TIqKhxzyV1Y`@e=4KEtYmrV=_ zRyT5k)!Bvm>SAwoxUe$6wwCG)d*!D)^|eHCX)(2Yxsab->#Q9IXBlHqEN9ahvph&y z<$T#~ZXOQ1Mtb{s_GvlI(2-I$2(hyD!bNL7NDcDagY!8%QLwg;_Xn=m+n%qr_DcCn zZ}0G_+sGYQ?qYv&@#%T#vXLE_XGSNt7c|zEQw_U)ytTYNSIXE8bI)&gH;n$}N@2aW zw4TWC9~uYcjaGTNxRD+%E@d<8rNNnN=r*ysaAjK=;>nWcs5vD-RTFjy_2QA zrByo9Nm})~?P6QcY_fTyr+1qN-ScK~m~c9Cda7ae^&>+!O13dDAQ*;GPWearMSsnn zJ3%zOQ*f2l#hD;X`XIm3@#b{zsOt_^s)wtHXbM#Xpo!g9z1ly}SFKXcGV)t|vN4}p zUF_5^J3H0G;o=H>>=mreGsA<~%%YIwWWSjz7dt2Astt#5l+cez*|Z(lnUuW)1Em|w zc^z>xJlJe!Z9xCXo3nLuvsZE#R%%Xqu9jJLt%IfP%9frQWEQh98=Zw9NL;Lz>_Ki7 z2lB)9%ku66O$zcUIbG>rc0v9Xwy5TBf#(%xv(1v@dMht-`VWe8aGpOa0Vdzgt^v z4mOO|(Z;5pY2`AWJ}6!4t$r$(NF6j5OPA?Ea9JDV&J6o#qc%7>zFZyTs%g9fmf0B; zGv(D{8a+Gd#ep??{{>TE*>rDOM{}G z-(I$s?Q(XnlzFNjWiIapB}@SVY?9J3E)weA~D%d&{Y%l|*f6b$M-Z zeqKM?KEAZcJNoH0=V&8i968OMe7@KlT zq!jpMaJG3-SU0@9=n;X;=bE)az3E&YuJl&7kGC%`3Mc)&wUv{GS8Sxpx%{ft-x<_) z&o}l(0c2srSeH3U$Z z&T2UY`V|bf>ga<(u~n+~i`YbQey^W!H(jI^_>gYrE`)!!KD0^)?O}Vd)5X90T5ILd{w3&(G%0)(A`#4v`n=o#s6NP;iNQ+#G<$N{ zd@jT`HqHIztarL;+cq57W4>R9m#y$`K3wyUSm%o`3EfW0?o9lUE6pZVg$4*D>Td@5=L~A& zORRm#Lf%i3zd`&1-hRX47bwPCmD(Ge(MLQ`#(nU0PoD c>8aTJcr)qVdym#0?LPY9%sc2=pZVbb0#?&YI{*Lx literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageGrab.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageGrab.py new file mode 100644 index 0000000..712b02c --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageGrab.py @@ -0,0 +1,80 @@ +# +# The Python Imaging Library +# $Id$ +# +# screen grabber (macOS and Windows only) +# +# History: +# 2001-04-26 fl created +# 2001-09-17 fl use builtin driver, if present +# 2002-11-19 fl added grabclipboard support +# +# Copyright (c) 2001-2002 by Secret Labs AB +# Copyright (c) 2001-2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image + +import sys +if sys.platform not in ["win32", "darwin"]: + raise ImportError("ImageGrab is macOS and Windows only") + +if sys.platform == "win32": + grabber = Image.core.grabscreen +elif sys.platform == "darwin": + import os + import tempfile + import subprocess + + +def grab(bbox=None): + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp('.png') + os.close(fh) + subprocess.call(['screencapture', '-x', filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + else: + size, data = grabber() + im = Image.frombytes( + "RGB", size, data, + # RGB, 32-bit line padding, origin lower left corner + "raw", "BGR", (size[0]*3 + 3) & -4, -1 + ) + if bbox: + im = im.crop(bbox) + return im + + +def grabclipboard(): + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp('.jpg') + os.close(fh) + commands = [ + "set theFile to (open for access POSIX file \""+filepath+"\" with write permission)", + "try", + "write (the clipboard as JPEG picture) to theFile", + "end try", + "close access theFile" + ] + script = ["osascript"] + for command in commands: + script += ["-e", command] + subprocess.call(script) + + im = None + if os.stat(filepath).st_size != 0: + im = Image.open(filepath) + im.load() + os.unlink(filepath) + return im + else: + data = Image.core.grabclipboard() + if isinstance(data, bytes): + from . import BmpImagePlugin + import io + return BmpImagePlugin.DibImageFile(io.BytesIO(data)) + return data diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageGrab.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageGrab.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b191eb168236503c3354b38c59963a5c2a8c0ad9 GIT binary patch literal 2116 zcmbtVTW=dx5T3Jke2X2YAx+9fWtB?cN~A^wfrJo>(v~Pyl|*ZyR_0QzcQ?*)_QswQ zIYIUd=`(+WpTR2+Jn#ef7rY|DH?uY^;tgz{IoFvvGxL4NmESw9t^Bty16q74==adf zj}Re#iejQf(NK{J9SSQHJ2Z4Ca%fVauu122Dn6m8N@0zz6@9NLrR8pw&K)YAQKV?H zLX#Q|>y&=9++C5~A828=LBqy!+@xW1Id0Lg#WvwOtkVlzrA=XjUJwmCyg2B!a96D$ zdMxY;#9`u(BmE~nM>3!4^n?4hhMmwaFfn(QhYkvVNL!z#?8|B zDqxGO)@WiA|!|0{>)isla4D#tuiyr|%LQkMv-G;?TNDOVdb zY4RLL<`tS%Xwsr%Z98ny zUbsrvb+JrT{4Dm@XhsWnNGUuHdTj)BljcqR2XZcn?{zVi1Ln%$%0zkW+taK_WMZQvKh<$$>)1)o4bPEC zqRdFef;cmg<xMq2~B;C zX^|zPD;q706j|Qmx{B^-lwFGN(=)jn-z)d+nXKtV&KUh&B!kemeh-=?!t^of+a&Mj zI^PAbEUvfv_zUm({U`ks9mm48K=9XpL68`Q@WT+4f-5iuVB8L?XiLlhFyj>lD-bgl z3|`)5*ggDui=hU107d}T*rAUB&~Lw?rzMiH!>|tF25^KMz*vwD00VXB6)JuryGoPx zVjahTRG{`6u>yIl11y&8z|MdVcWJWD2j(@hH)saALDyiIt3pt|L-A{rY|^|A$7}pJ z#W!i*pjn+JTQmbFwpj=F!f$}l07nLb!dKxv$;akB&SGR;dlr3;QoA;DdkiEO=yd&n zq2`_(4-TKXj0AVb+=9Z6JJt5gofg_gZXOkhHb!UZU4ghQuFU&5RPOd**bQQxk21dq zUEjEmPaYk(xel01ciG>1izW_!APCkl8RADxtFir8kF~w zTyS<0UyOBHvXHOtu@{di=rNEyW|g;>@33Nc&3XP0?&gd7?dCY2W zoyCo%MvxVeJQ2ay#neB0^y?0oky;2--fd9Gjtgw%YA}hQd%q5MS z*z!I0HdsY!Cy9~Tz0GTHvfz8Z3{^(|>4oAff0|_BMI3#`9t{^@-DxAHu0+;FWSCXj Gn|}dRN2Zbh literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMath.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMath.py new file mode 100644 index 0000000..d985877 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMath.py @@ -0,0 +1,271 @@ +# +# The Python Imaging Library +# $Id$ +# +# a simple math add-on for the Python Imaging Library +# +# History: +# 1999-02-15 fl Original PIL Plus release +# 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 +# 2005-09-12 fl Fixed int() and float() for Python 2.4.1 +# +# Copyright (c) 1999-2005 by Secret Labs AB +# Copyright (c) 2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, _imagingmath +from ._util import py3 + +try: + import builtins +except ImportError: + import __builtin__ + builtins = __builtin__ + +VERBOSE = 0 + + +def _isconstant(v): + return isinstance(v, int) or isinstance(v, float) + + +class _Operand(object): + """Wraps an image operand, providing standard operators""" + + def __init__(self, im): + self.im = im + + def __fixup(self, im1): + # convert image to suitable mode + if isinstance(im1, _Operand): + # argument was an image. + if im1.im.mode in ("1", "L"): + return im1.im.convert("I") + elif im1.im.mode in ("I", "F"): + return im1.im + else: + raise ValueError("unsupported mode: %s" % im1.im.mode) + else: + # argument was a constant + if _isconstant(im1) and self.im.mode in ("1", "L", "I"): + return Image.new("I", self.im.size, im1) + else: + return Image.new("F", self.im.size, im1) + + def apply(self, op, im1, im2=None, mode=None): + im1 = self.__fixup(im1) + if im2 is None: + # unary operation + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + try: + op = getattr(_imagingmath, op+"_"+im1.mode) + except AttributeError: + raise TypeError("bad operand type for '%s'" % op) + _imagingmath.unop(op, out.im.id, im1.im.id) + else: + # binary operation + im2 = self.__fixup(im2) + if im1.mode != im2.mode: + # convert both arguments to floating point + if im1.mode != "F": + im1 = im1.convert("F") + if im2.mode != "F": + im2 = im2.convert("F") + if im1.mode != im2.mode: + raise ValueError("mode mismatch") + if im1.size != im2.size: + # crop both arguments to a common size + size = (min(im1.size[0], im2.size[0]), + min(im1.size[1], im2.size[1])) + if im1.size != size: + im1 = im1.crop((0, 0) + size) + if im2.size != size: + im2 = im2.crop((0, 0) + size) + out = Image.new(mode or im1.mode, size, None) + else: + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + im2.load() + try: + op = getattr(_imagingmath, op+"_"+im1.mode) + except AttributeError: + raise TypeError("bad operand type for '%s'" % op) + _imagingmath.binop(op, out.im.id, im1.im.id, im2.im.id) + return _Operand(out) + + # unary operators + def __bool__(self): + # an image is "true" if it contains at least one non-zero pixel + return self.im.getbbox() is not None + + if not py3: + # Provide __nonzero__ for pre-Py3k + __nonzero__ = __bool__ + del __bool__ + + def __abs__(self): + return self.apply("abs", self) + + def __pos__(self): + return self + + def __neg__(self): + return self.apply("neg", self) + + # binary operators + def __add__(self, other): + return self.apply("add", self, other) + + def __radd__(self, other): + return self.apply("add", other, self) + + def __sub__(self, other): + return self.apply("sub", self, other) + + def __rsub__(self, other): + return self.apply("sub", other, self) + + def __mul__(self, other): + return self.apply("mul", self, other) + + def __rmul__(self, other): + return self.apply("mul", other, self) + + def __truediv__(self, other): + return self.apply("div", self, other) + + def __rtruediv__(self, other): + return self.apply("div", other, self) + + def __mod__(self, other): + return self.apply("mod", self, other) + + def __rmod__(self, other): + return self.apply("mod", other, self) + + def __pow__(self, other): + return self.apply("pow", self, other) + + def __rpow__(self, other): + return self.apply("pow", other, self) + + if not py3: + # Provide __div__ and __rdiv__ for pre-Py3k + __div__ = __truediv__ + __rdiv__ = __rtruediv__ + del __truediv__ + del __rtruediv__ + + # bitwise + def __invert__(self): + return self.apply("invert", self) + + def __and__(self, other): + return self.apply("and", self, other) + + def __rand__(self, other): + return self.apply("and", other, self) + + def __or__(self, other): + return self.apply("or", self, other) + + def __ror__(self, other): + return self.apply("or", other, self) + + def __xor__(self, other): + return self.apply("xor", self, other) + + def __rxor__(self, other): + return self.apply("xor", other, self) + + def __lshift__(self, other): + return self.apply("lshift", self, other) + + def __rshift__(self, other): + return self.apply("rshift", self, other) + + # logical + def __eq__(self, other): + return self.apply("eq", self, other) + + def __ne__(self, other): + return self.apply("ne", self, other) + + def __lt__(self, other): + return self.apply("lt", self, other) + + def __le__(self, other): + return self.apply("le", self, other) + + def __gt__(self, other): + return self.apply("gt", self, other) + + def __ge__(self, other): + return self.apply("ge", self, other) + + +# conversions +def imagemath_int(self): + return _Operand(self.im.convert("I")) + + +def imagemath_float(self): + return _Operand(self.im.convert("F")) + + +# logical +def imagemath_equal(self, other): + return self.apply("eq", self, other, mode="I") + + +def imagemath_notequal(self, other): + return self.apply("ne", self, other, mode="I") + + +def imagemath_min(self, other): + return self.apply("min", self, other) + + +def imagemath_max(self, other): + return self.apply("max", self, other) + + +def imagemath_convert(self, mode): + return _Operand(self.im.convert(mode)) + + +ops = {} +for k, v in list(globals().items()): + if k[:10] == "imagemath_": + ops[k[10:]] = v + + +def eval(expression, _dict={}, **kw): + """ + Evaluates an image expression. + + :param expression: A string containing a Python-style expression. + :param options: Values to add to the evaluation context. You + can either use a dictionary, or one or more keyword + arguments. + :return: The evaluated expression. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + """ + + # build execution namespace + args = ops.copy() + args.update(_dict) + args.update(kw) + for k, v in list(args.items()): + if hasattr(v, "im"): + args[k] = _Operand(v) + + out = builtins.eval(expression, args) + try: + return out.im + except AttributeError: + return out diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMath.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMath.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e0765bd1ea2262a2c9c8fab23705c4df284d4b5 GIT binary patch literal 10883 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMode.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMode.py new file mode 100644 index 0000000..b227f21 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMode.py @@ -0,0 +1,55 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard mode descriptors +# +# History: +# 2006-03-20 fl Added +# +# Copyright (c) 2006 by Secret Labs AB. +# Copyright (c) 2006 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +# mode descriptor cache +_modes = None + + +class ModeDescriptor(object): + """Wrapper for mode strings.""" + + def __init__(self, mode, bands, basemode, basetype): + self.mode = mode + self.bands = bands + self.basemode = basemode + self.basetype = basetype + + def __str__(self): + return self.mode + + +def getmode(mode): + """Gets a mode descriptor for the given mode.""" + global _modes + if not _modes: + # initialize mode cache + + from . import Image + modes = {} + # core modes + for m, (basemode, basetype, bands) in Image._MODEINFO.items(): + modes[m] = ModeDescriptor(m, bands, basemode, basetype) + # extra experimental modes + modes["RGBa"] = ModeDescriptor("RGBa", ("R", "G", "B", "a"), "RGB", "L") + modes["LA"] = ModeDescriptor("LA", ("L", "A"), "L", "L") + modes["La"] = ModeDescriptor("La", ("L", "a"), "L", "L") + modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L") + # mapping modes + modes["I;16"] = ModeDescriptor("I;16", "I", "L", "L") + modes["I;16L"] = ModeDescriptor("I;16L", "I", "L", "L") + modes["I;16B"] = ModeDescriptor("I;16B", "I", "L", "L") + # set global mode cache atomically + _modes = modes + return _modes[mode] diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMode.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMode.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b1c68074d58072438b8398e7526571f8fa1b29a GIT binary patch literal 1621 zcmbtUZBG+H5T3g$C#_Uo#2OOO`oW|cX`>(fVxv;grlyo;i6J6pbM%&aP4C6-`a(iK z;m`D6_y?Ssg&u@&*vrn%%(FW;Gks>gzvWUT`}27KXFm_$Z*b|yC_)bc2SNbl!VxMC z{02A$__Xgq=#sHtpiR5A0`4}qP;956+ERKji87N;W?>zKTDWu-g~D?jcHcdVc`=^Y ztx*zs4aMFh$TBsl9;K6NjFGF_Orm6{>w`H&X}P%G;?gw~Ck~tdNK{-_(DYbAv%m`G z4VW&a)3Zra<`mjcw8J0?wV7v4D|Vk7<~UO|+GFU1R^uZ=vJ_`A~+vrE*ar(2-?{piTI2bDGT0J}FFH0FEk&*H)p4aqsaEkm4 z=zHgjYrcUFEO?Zc#3_;B5(VY^pDEEdq{O~UxsIx)dcm=spzNeff>=puN^D@yzK_YY z=fZR#rSK6F1A}`i4w4qBI(8s-Vd{Vr z0Zd)^^_s{s@?caTLT`Pk!vW$R9C$D-z;q6#J|HECKR%OZ4o;CmNF)!M-=4xAg2?>v zHiYvK7SBNRGzlm{xJup}C|O_u!aJ9N1q+lRtXvLNw!k8UOP5b9T44DKuxx>qE5Hgg zG4lW*;jSQM)^=;muP4~BwlcaJ*!c=)qsudAzN+dl`k@j=>(Pu^JS|LJ9tY8G1%^Pu zvdyx^GB6(b+t%tD;!k&zp-pQ9{OVg@U(*I#xnSlfm2FWXiys_b!euqnqjEXf=uSPtxqtAOO zKYO0)kMpa5Z-$)k*Wo%3(NGzR{}7|=dnmy3y(OgmBWK-RbNI1ux9Ifp8>*KkO3)q3 jC8mcXH85O&c!174uWJt?Usg>!@2{3ICjWE3S1JDk<_sUr literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMorph.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMorph.py new file mode 100644 index 0000000..579ee4e --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMorph.py @@ -0,0 +1,250 @@ +# A binary morphology add-on for the Python Imaging Library +# +# History: +# 2014-06-04 Initial version. +# +# Copyright (c) 2014 Dov Grobgeld + +from __future__ import print_function + +from . import Image, _imagingmorph +import re + +LUT_SIZE = 1 << 9 + + +class LutBuilder(object): + """A class for building a MorphLut from a descriptive language + + The input patterns is a list of a strings sequences like these:: + + 4:(... + .1. + 111)->1 + + (whitespaces including linebreaks are ignored). The option 4 + describes a series of symmetry operations (in this case a + 4-rotation), the pattern is described by: + + - . or X - Ignore + - 1 - Pixel is on + - 0 - Pixel is off + + The result of the operation is described after "->" string. + + The default is to return the current pixel value, which is + returned if no other match is found. + + Operations: + + - 4 - 4 way rotation + - N - Negate + - 1 - Dummy op for no other operation (an op must always be given) + - M - Mirroring + + Example:: + + lb = LutBuilder(patterns = ["4:(... .1. 111)->1"]) + lut = lb.build_lut() + + """ + def __init__(self, patterns=None, op_name=None): + if patterns is not None: + self.patterns = patterns + else: + self.patterns = [] + self.lut = None + if op_name is not None: + known_patterns = { + 'corner': ['1:(... ... ...)->0', + '4:(00. 01. ...)->1'], + 'dilation4': ['4:(... .0. .1.)->1'], + 'dilation8': ['4:(... .0. .1.)->1', + '4:(... .0. ..1)->1'], + 'erosion4': ['4:(... .1. .0.)->0'], + 'erosion8': ['4:(... .1. .0.)->0', + '4:(... .1. ..0)->0'], + 'edge': ['1:(... ... ...)->0', + '4:(.0. .1. ...)->1', + '4:(01. .1. ...)->1'] + } + if op_name not in known_patterns: + raise Exception('Unknown pattern '+op_name+'!') + + self.patterns = known_patterns[op_name] + + def add_patterns(self, patterns): + self.patterns += patterns + + def build_default_lut(self): + symbols = [0, 1] + m = 1 << 4 # pos of current pixel + self.lut = bytearray(symbols[(i & m) > 0] for i in range(LUT_SIZE)) + + def get_lut(self): + return self.lut + + def _string_permute(self, pattern, permutation): + """string_permute takes a pattern and a permutation and returns the + string permuted according to the permutation list. + """ + assert(len(permutation) == 9) + return ''.join(pattern[p] for p in permutation) + + def _pattern_permute(self, basic_pattern, options, basic_result): + """pattern_permute takes a basic pattern and its result and clones + the pattern according to the modifications described in the $options + parameter. It returns a list of all cloned patterns.""" + patterns = [(basic_pattern, basic_result)] + + # rotations + if '4' in options: + res = patterns[-1][1] + for i in range(4): + patterns.append( + (self._string_permute(patterns[-1][0], [6, 3, 0, + 7, 4, 1, + 8, 5, 2]), res)) + # mirror + if 'M' in options: + n = len(patterns) + for pattern, res in patterns[0:n]: + patterns.append( + (self._string_permute(pattern, [2, 1, 0, + 5, 4, 3, + 8, 7, 6]), res)) + + # negate + if 'N' in options: + n = len(patterns) + for pattern, res in patterns[0:n]: + # Swap 0 and 1 + pattern = (pattern + .replace('0', 'Z') + .replace('1', '0') + .replace('Z', '1')) + res = 1-int(res) + patterns.append((pattern, res)) + + return patterns + + def build_lut(self): + """Compile all patterns into a morphology lut. + + TBD :Build based on (file) morphlut:modify_lut + """ + self.build_default_lut() + patterns = [] + + # Parse and create symmetries of the patterns strings + for p in self.patterns: + m = re.search( + r'(\w*):?\s*\((.+?)\)\s*->\s*(\d)', p.replace('\n', '')) + if not m: + raise Exception('Syntax error in pattern "'+p+'"') + options = m.group(1) + pattern = m.group(2) + result = int(m.group(3)) + + # Get rid of spaces + pattern = pattern.replace(' ', '').replace('\n', '') + + patterns += self._pattern_permute(pattern, options, result) + +# # Debugging +# for p, r in patterns: +# print(p, r) +# print('--') + + # compile the patterns into regular expressions for speed + for i, pattern in enumerate(patterns): + p = pattern[0].replace('.', 'X').replace('X', '[01]') + p = re.compile(p) + patterns[i] = (p, pattern[1]) + + # Step through table and find patterns that match. + # Note that all the patterns are searched. The last one + # caught overrides + for i in range(LUT_SIZE): + # Build the bit pattern + bitpattern = bin(i)[2:] + bitpattern = ('0'*(9-len(bitpattern)) + bitpattern)[::-1] + + for p, r in patterns: + if p.match(bitpattern): + self.lut[i] = [0, 1][r] + + return self.lut + + +class MorphOp(object): + """A class for binary morphological operators""" + + def __init__(self, + lut=None, + op_name=None, + patterns=None): + """Create a binary morphological operator""" + self.lut = lut + if op_name is not None: + self.lut = LutBuilder(op_name=op_name).build_lut() + elif patterns is not None: + self.lut = LutBuilder(patterns=patterns).build_lut() + + def apply(self, image): + """Run a single morphological operation on an image + + Returns a tuple of the number of changed pixels and the + morphed image""" + if self.lut is None: + raise Exception('No operator loaded') + + if image.mode != 'L': + raise Exception('Image must be binary, meaning it must use mode L') + outimage = Image.new(image.mode, image.size, None) + count = _imagingmorph.apply( + bytes(self.lut), image.im.id, outimage.im.id) + return count, outimage + + def match(self, image): + """Get a list of coordinates matching the morphological operation on + an image. + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + if self.lut is None: + raise Exception('No operator loaded') + + if image.mode != 'L': + raise Exception('Image must be binary, meaning it must use mode L') + return _imagingmorph.match(bytes(self.lut), image.im.id) + + def get_on_pixels(self, image): + """Get a list of all turned on pixels in a binary image + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + + if image.mode != 'L': + raise Exception('Image must be binary, meaning it must use mode L') + return _imagingmorph.get_on_pixels(image.im.id) + + def load_lut(self, filename): + """Load an operator from an mrl file""" + with open(filename, 'rb') as f: + self.lut = bytearray(f.read()) + + if len(self.lut) != LUT_SIZE: + self.lut = None + raise Exception('Wrong size operator file!') + + def save_lut(self, filename): + """Save an operator to an mrl file""" + if self.lut is None: + raise Exception('No operator loaded') + with open(filename, 'wb') as f: + f.write(self.lut) + + def set_lut(self, lut): + """Set the lut from an external source""" + self.lut = lut diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMorph.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageMorph.pyc new file mode 100644 index 0000000000000000000000000000000000000000..709dabb4e8f20f0abcf12698c6298d7cc6d5e5f5 GIT binary patch literal 8875 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 MaeN)iXOI8pe=t>cb^rhX literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageOps.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageOps.py new file mode 100644 index 0000000..25d491a --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageOps.py @@ -0,0 +1,529 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard image operations +# +# History: +# 2001-10-20 fl Created +# 2001-10-23 fl Added autocontrast operator +# 2001-12-18 fl Added Kevin's fit operator +# 2004-03-14 fl Fixed potential division by zero in equalize +# 2005-05-05 fl Fixed equalize for low number of values +# +# Copyright (c) 2001-2004 by Secret Labs AB +# Copyright (c) 2001-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image +from ._util import isStringType +import operator +import functools +import warnings + + +# +# helpers + +def _border(border): + if isinstance(border, tuple): + if len(border) == 2: + left, top = right, bottom = border + elif len(border) == 4: + left, top, right, bottom = border + else: + left = top = right = bottom = border + return left, top, right, bottom + + +def _color(color, mode): + if isStringType(color): + from . import ImageColor + color = ImageColor.getcolor(color, mode) + return color + + +def _lut(image, lut): + if image.mode == "P": + # FIXME: apply to lookup table, not image data + raise NotImplementedError("mode P support coming soon") + elif image.mode in ("L", "RGB"): + if image.mode == "RGB" and len(lut) == 256: + lut = lut + lut + lut + return image.point(lut) + else: + raise IOError("not supported for this image mode") + +# +# actions + + +def autocontrast(image, cutoff=0, ignore=None): + """ + Maximize (normalize) image contrast. This function calculates a + histogram of the input image, removes **cutoff** percent of the + lightest and darkest pixels from the histogram, and remaps the image + so that the darkest pixel becomes black (0), and the lightest + becomes white (255). + + :param image: The image to process. + :param cutoff: How many percent to cut off from the histogram. + :param ignore: The background pixel value (use None for no background). + :return: An image. + """ + histogram = image.histogram() + lut = [] + for layer in range(0, len(histogram), 256): + h = histogram[layer:layer+256] + if ignore is not None: + # get rid of outliers + try: + h[ignore] = 0 + except TypeError: + # assume sequence + for ix in ignore: + h[ix] = 0 + if cutoff: + # cut off pixels from both ends of the histogram + # get number of pixels + n = 0 + for ix in range(256): + n = n + h[ix] + # remove cutoff% pixels from the low end + cut = n * cutoff // 100 + for lo in range(256): + if cut > h[lo]: + cut = cut - h[lo] + h[lo] = 0 + else: + h[lo] -= cut + cut = 0 + if cut <= 0: + break + # remove cutoff% samples from the hi end + cut = n * cutoff // 100 + for hi in range(255, -1, -1): + if cut > h[hi]: + cut = cut - h[hi] + h[hi] = 0 + else: + h[hi] -= cut + cut = 0 + if cut <= 0: + break + # find lowest/highest samples after preprocessing + for lo in range(256): + if h[lo]: + break + for hi in range(255, -1, -1): + if h[hi]: + break + if hi <= lo: + # don't bother + lut.extend(list(range(256))) + else: + scale = 255.0 / (hi - lo) + offset = -lo * scale + for ix in range(256): + ix = int(ix * scale + offset) + if ix < 0: + ix = 0 + elif ix > 255: + ix = 255 + lut.append(ix) + return _lut(image, lut) + + +def colorize(image, black, white): + """ + Colorize grayscale image. The **black** and **white** + arguments should be RGB tuples; this function calculates a color + wedge mapping all black pixels in the source image to the first + color, and all white pixels to the second color. + + :param image: The image to colorize. + :param black: The color to use for black input pixels. + :param white: The color to use for white input pixels. + :return: An image. + """ + assert image.mode == "L" + black = _color(black, "RGB") + white = _color(white, "RGB") + red = [] + green = [] + blue = [] + for i in range(256): + red.append(black[0]+i*(white[0]-black[0])//255) + green.append(black[1]+i*(white[1]-black[1])//255) + blue.append(black[2]+i*(white[2]-black[2])//255) + image = image.convert("RGB") + return _lut(image, red + green + blue) + + +def crop(image, border=0): + """ + Remove border from image. The same amount of pixels are removed + from all four sides. This function works on all image modes. + + .. seealso:: :py:meth:`~PIL.Image.Image.crop` + + :param image: The image to crop. + :param border: The number of pixels to remove. + :return: An image. + """ + left, top, right, bottom = _border(border) + return image.crop( + (left, top, image.size[0]-right, image.size[1]-bottom) + ) + + +def scale(image, factor, resample=Image.NEAREST): + """ + Returns a rescaled image by a specific factor given in parameter. + A factor greater than 1 expands the image, between 0 and 1 contracts the + image. + + :param image: The image to rescale. + :param factor: The expansion factor, as a float. + :param resample: An optional resampling filter. Same values possible as + in the PIL.Image.resize function. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + if factor == 1: + return image.copy() + elif factor <= 0: + raise ValueError("the factor must be greater than 0") + else: + size = (int(round(factor * image.width)), + int(round(factor * image.height))) + return image.resize(size, resample) + + +def deform(image, deformer, resample=Image.BILINEAR): + """ + Deform the image. + + :param image: The image to deform. + :param deformer: A deformer object. Any object that implements a + **getmesh** method can be used. + :param resample: An optional resampling filter. Same values possible as + in the PIL.Image.transform function. + :return: An image. + """ + return image.transform( + image.size, Image.MESH, deformer.getmesh(image), resample + ) + + +def equalize(image, mask=None): + """ + Equalize the image histogram. This function applies a non-linear + mapping to the input image, in order to create a uniform + distribution of grayscale values in the output image. + + :param image: The image to equalize. + :param mask: An optional mask. If given, only the pixels selected by + the mask are included in the analysis. + :return: An image. + """ + if image.mode == "P": + image = image.convert("RGB") + h = image.histogram(mask) + lut = [] + for b in range(0, len(h), 256): + histo = [_f for _f in h[b:b+256] if _f] + if len(histo) <= 1: + lut.extend(list(range(256))) + else: + step = (functools.reduce(operator.add, histo) - histo[-1]) // 255 + if not step: + lut.extend(list(range(256))) + else: + n = step // 2 + for i in range(256): + lut.append(n // step) + n = n + h[i+b] + return _lut(image, lut) + + +def expand(image, border=0, fill=0): + """ + Add border to the image + + :param image: The image to expand. + :param border: Border width, in pixels. + :param fill: Pixel fill value (a color value). Default is 0 (black). + :return: An image. + """ + left, top, right, bottom = _border(border) + width = left + image.size[0] + right + height = top + image.size[1] + bottom + out = Image.new(image.mode, (width, height), _color(fill, image.mode)) + out.paste(image, (left, top)) + return out + + +def fit(image, size, method=Image.NEAREST, bleed=0.0, centering=(0.5, 0.5)): + """ + Returns a sized and cropped version of the image, cropped to the + requested aspect ratio and size. + + This function was contributed by Kevin Cazabon. + + :param image: The image to size and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: What resampling method to use. Default is + :py:attr:`PIL.Image.NEAREST`. + :param bleed: Remove a border around the outside of the image (from all + four edges. The value is a decimal percentage (use 0.01 for + one percent). The default value is 0 (no border). + :param centering: Control the cropping position. Use (0.5, 0.5) for + center cropping (e.g. if cropping the width, take 50% off + of the left side, and therefore 50% off the right side). + (0.0, 0.0) will crop from the top left corner (i.e. if + cropping the width, take all of the crop off of the right + side, and if cropping the height, take all of it off the + bottom). (1.0, 0.0) will crop from the bottom left + corner, etc. (i.e. if cropping the width, take all of the + crop off the left side, and if cropping the height take + none from the top, and therefore all off the bottom). + :return: An image. + """ + + # by Kevin Cazabon, Feb 17/2000 + # kevin@cazabon.com + # http://www.cazabon.com + + # ensure inputs are valid + if not isinstance(centering, list): + centering = [centering[0], centering[1]] + + if centering[0] > 1.0 or centering[0] < 0.0: + centering[0] = 0.50 + if centering[1] > 1.0 or centering[1] < 0.0: + centering[1] = 0.50 + + if bleed > 0.49999 or bleed < 0.0: + bleed = 0.0 + + # calculate the area to use for resizing and cropping, subtracting + # the 'bleed' around the edges + + # number of pixels to trim off on Top and Bottom, Left and Right + bleedPixels = ( + int((float(bleed) * float(image.size[0])) + 0.5), + int((float(bleed) * float(image.size[1])) + 0.5) + ) + + liveArea = (0, 0, image.size[0], image.size[1]) + if bleed > 0.0: + liveArea = ( + bleedPixels[0], bleedPixels[1], image.size[0] - bleedPixels[0] - 1, + image.size[1] - bleedPixels[1] - 1 + ) + + liveSize = (liveArea[2] - liveArea[0], liveArea[3] - liveArea[1]) + + # calculate the aspect ratio of the liveArea + liveAreaAspectRatio = float(liveSize[0])/float(liveSize[1]) + + # calculate the aspect ratio of the output image + aspectRatio = float(size[0]) / float(size[1]) + + # figure out if the sides or top/bottom will be cropped off + if liveAreaAspectRatio >= aspectRatio: + # liveArea is wider than what's needed, crop the sides + cropWidth = int((aspectRatio * float(liveSize[1])) + 0.5) + cropHeight = liveSize[1] + else: + # liveArea is taller than what's needed, crop the top and bottom + cropWidth = liveSize[0] + cropHeight = int((float(liveSize[0])/aspectRatio) + 0.5) + + # make the crop + leftSide = int(liveArea[0] + (float(liveSize[0]-cropWidth) * centering[0])) + if leftSide < 0: + leftSide = 0 + topSide = int(liveArea[1] + (float(liveSize[1]-cropHeight) * centering[1])) + if topSide < 0: + topSide = 0 + + out = image.crop( + (leftSide, topSide, leftSide + cropWidth, topSide + cropHeight) + ) + + # resize the image and return it + return out.resize(size, method) + + +def flip(image): + """ + Flip the image vertically (top to bottom). + + :param image: The image to flip. + :return: An image. + """ + return image.transpose(Image.FLIP_TOP_BOTTOM) + + +def grayscale(image): + """ + Convert the image to grayscale. + + :param image: The image to convert. + :return: An image. + """ + return image.convert("L") + + +def invert(image): + """ + Invert (negate) the image. + + :param image: The image to invert. + :return: An image. + """ + lut = [] + for i in range(256): + lut.append(255-i) + return _lut(image, lut) + + +def mirror(image): + """ + Flip image horizontally (left to right). + + :param image: The image to mirror. + :return: An image. + """ + return image.transpose(Image.FLIP_LEFT_RIGHT) + + +def posterize(image, bits): + """ + Reduce the number of bits for each color channel. + + :param image: The image to posterize. + :param bits: The number of bits to keep for each channel (1-8). + :return: An image. + """ + lut = [] + mask = ~(2**(8-bits)-1) + for i in range(256): + lut.append(i & mask) + return _lut(image, lut) + + +def solarize(image, threshold=128): + """ + Invert all pixel values above a threshold. + + :param image: The image to solarize. + :param threshold: All pixels above this greyscale level are inverted. + :return: An image. + """ + lut = [] + for i in range(256): + if i < threshold: + lut.append(i) + else: + lut.append(255-i) + return _lut(image, lut) + + +# -------------------------------------------------------------------- +# PIL USM components, from Kevin Cazabon. + +def gaussian_blur(im, radius=None): + """ PIL_usm.gblur(im, [radius])""" + + warnings.warn( + 'PIL.ImageOps.gaussian_blur is deprecated. ' + 'Use PIL.ImageFilter.GaussianBlur instead. ' + 'This function will be removed in a future version.', + DeprecationWarning + ) + + if radius is None: + radius = 5.0 + + im.load() + + return im.im.gaussian_blur(radius) + + +def gblur(im, radius=None): + """ PIL_usm.gblur(im, [radius])""" + + warnings.warn( + 'PIL.ImageOps.gblur is deprecated. ' + 'Use PIL.ImageFilter.GaussianBlur instead. ' + 'This function will be removed in a future version.', + DeprecationWarning + ) + + return gaussian_blur(im, radius) + + +def unsharp_mask(im, radius=None, percent=None, threshold=None): + """ PIL_usm.usm(im, [radius, percent, threshold])""" + + warnings.warn( + 'PIL.ImageOps.unsharp_mask is deprecated. ' + 'Use PIL.ImageFilter.UnsharpMask instead. ' + 'This function will be removed in a future version.', + DeprecationWarning + ) + + if radius is None: + radius = 5.0 + if percent is None: + percent = 150 + if threshold is None: + threshold = 3 + + im.load() + + return im.im.unsharp_mask(radius, percent, threshold) + + +def usm(im, radius=None, percent=None, threshold=None): + """ PIL_usm.usm(im, [radius, percent, threshold])""" + + warnings.warn( + 'PIL.ImageOps.usm is deprecated. ' + 'Use PIL.ImageFilter.UnsharpMask instead. ' + 'This function will be removed in a future version.', + DeprecationWarning + ) + + return unsharp_mask(im, radius, percent, threshold) + + +def box_blur(image, radius): + """ + Blur the image by setting each pixel to the average value of the pixels + in a square box extending radius pixels in each direction. + Supports float radius of arbitrary size. Uses an optimized implementation + which runs in linear time relative to the size of the image + for any radius value. + + :param image: The image to blur. + :param radius: Size of the box in one direction. Radius 0 does not blur, + returns an identical image. Radius 1 takes 1 pixel + in each direction, i.e. 9 pixels in total. + :return: An image. + """ + warnings.warn( + 'PIL.ImageOps.box_blur is deprecated. ' + 'Use PIL.ImageFilter.BoxBlur instead. ' + 'This function will be removed in a future version.', + DeprecationWarning + ) + + image.load() + + return image._new(image.im.box_blur(radius)) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageOps.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageOps.pyc new file mode 100644 index 0000000000000000000000000000000000000000..13d81f851c15864d81457ed21cfc428bbdb354f5 GIT binary patch literal 15545 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 F^nXDyOLqVO literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImagePalette.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImagePalette.py new file mode 100644 index 0000000..cecc645 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImagePalette.py @@ -0,0 +1,216 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image palette object +# +# History: +# 1996-03-11 fl Rewritten. +# 1997-01-03 fl Up and running. +# 1997-08-23 fl Added load hack +# 2001-04-16 fl Fixed randint shadow bug in random() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import array +from . import ImageColor, GimpPaletteFile, GimpGradientFile, PaletteFile + + +class ImagePalette(object): + """ + Color palette for palette mapped images + + :param mode: The mode to use for the Palette. See: + :ref:`concept-modes`. Defaults to "RGB" + :param palette: An optional palette. If given, it must be a bytearray, + an array or a list of ints between 0-255 and of length ``size`` + times the number of colors in ``mode``. The list must be aligned + by channel (All R values must be contiguous in the list before G + and B values.) Defaults to 0 through 255 per channel. + :param size: An optional palette size. If given, it cannot be equal to + or greater than 256. Defaults to 0. + """ + + def __init__(self, mode="RGB", palette=None, size=0): + self.mode = mode + self.rawmode = None # if set, palette contains raw data + self.palette = palette or bytearray(range(256))*len(self.mode) + self.colors = {} + self.dirty = None + if ((size == 0 and len(self.mode)*256 != len(self.palette)) or + (size != 0 and size != len(self.palette))): + raise ValueError("wrong palette size") + + def copy(self): + new = ImagePalette() + + new.mode = self.mode + new.rawmode = self.rawmode + if self.palette is not None: + new.palette = self.palette[:] + new.colors = self.colors.copy() + new.dirty = self.dirty + + return new + + def getdata(self): + """ + Get palette contents in format suitable # for the low-level + ``im.putpalette`` primitive. + + .. warning:: This method is experimental. + """ + if self.rawmode: + return self.rawmode, self.palette + return self.mode + ";L", self.tobytes() + + def tobytes(self): + """Convert palette to bytes. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(self.palette, bytes): + return self.palette + arr = array.array("B", self.palette) + if hasattr(arr, 'tobytes'): + return arr.tobytes() + return arr.tostring() + + # Declare tostring as an alias for tobytes + tostring = tobytes + + def getcolor(self, color): + """Given an rgb tuple, allocate palette entry. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(color, tuple): + try: + return self.colors[color] + except KeyError: + # allocate new color slot + if isinstance(self.palette, bytes): + self.palette = bytearray(self.palette) + index = len(self.colors) + if index >= 256: + raise ValueError("cannot allocate more than 256 colors") + self.colors[color] = index + self.palette[index] = color[0] + self.palette[index+256] = color[1] + self.palette[index+512] = color[2] + self.dirty = 1 + return index + else: + raise ValueError("unknown color specifier: %r" % color) + + def save(self, fp): + """Save palette to text file. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(fp, str): + fp = open(fp, "w") + fp.write("# Palette\n") + fp.write("# Mode: %s\n" % self.mode) + for i in range(256): + fp.write("%d" % i) + for j in range(i*len(self.mode), (i+1)*len(self.mode)): + try: + fp.write(" %d" % self.palette[j]) + except IndexError: + fp.write(" 0") + fp.write("\n") + fp.close() + + +# -------------------------------------------------------------------- +# Internal + +def raw(rawmode, data): + palette = ImagePalette() + palette.rawmode = rawmode + palette.palette = data + palette.dirty = 1 + return palette + + +# -------------------------------------------------------------------- +# Factories + +def make_linear_lut(black, white): + lut = [] + if black == 0: + for i in range(256): + lut.append(white*i//255) + else: + raise NotImplementedError # FIXME + return lut + + +def make_gamma_lut(exp): + lut = [] + for i in range(256): + lut.append(int(((i / 255.0) ** exp) * 255.0 + 0.5)) + return lut + + +def negative(mode="RGB"): + palette = list(range(256)) + palette.reverse() + return ImagePalette(mode, palette * len(mode)) + + +def random(mode="RGB"): + from random import randint + palette = [] + for i in range(256*len(mode)): + palette.append(randint(0, 255)) + return ImagePalette(mode, palette) + + +def sepia(white="#fff0c0"): + r, g, b = ImageColor.getrgb(white) + r = make_linear_lut(0, r) + g = make_linear_lut(0, g) + b = make_linear_lut(0, b) + return ImagePalette("RGB", r + g + b) + + +def wedge(mode="RGB"): + return ImagePalette(mode, list(range(256)) * len(mode)) + + +def load(filename): + + # FIXME: supports GIMP gradients only + + with open(filename, "rb") as fp: + + for paletteHandler in [ + GimpPaletteFile.GimpPaletteFile, + GimpGradientFile.GimpGradientFile, + PaletteFile.PaletteFile + ]: + try: + fp.seek(0) + lut = paletteHandler(fp).getpalette() + if lut: + break + except (SyntaxError, ValueError): + # import traceback + # traceback.print_exc() + pass + else: + raise IOError("cannot load palette") + + return lut # data, rawmode diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImagePalette.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImagePalette.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b0e50be9ddc78e624dcf4e06551f3e2491970a4 GIT binary patch literal 6834 zcmcgxTXP&o74F`ZR?=FEj3isJW5UG7umMX}OfH2I5+_y=CW$b!Br*cmYP8e48fz}= znO;ju*)Jq-JW$006a^2wP^qGTHy(N5fAEkWKv7ij1H$*6o*gN!6h&F7taf@&_w?i?N(o*n$-CtX#3>iE5mr}!O;5MQlgrM5uSR9IKBR!L25)l^bfTXmI;sjV@U zjH|72rNc308mgyNIIcca>I0>IyfvZ11}j^WDx45vN`;d`G*t+?sXo+d>y*%^gq~I* zzB5A4Nc$5)KcT`|892*LwOgmL!RQlwHX;qOHHN}AQQS;|zPXXbS#D=hU5}E%tspkm zn(s#V;W)Of=Rp{m)Jo$iG#>9XJ({O%tmMO0-oR6|Q5Y}=c2Pn&Ai$4E=|c!-Ood~z z-SJW$TaA${CX|`@Y>D{o7C9)2no>;7mqJfZfezgJ@vAIjj}X|N4s10ZuY!>bl;>`yvTaVu&~~a@d9t>(3&96gTpJ; z(n0D;iwEWcFOJYP>v>U%Wp|9-HzxH~mae_E+g)#ayNKR5+uPMVHcAY3 z3Kr90vSV`g?GgnACPQ~JwGE~y7+Iy-RUGwG6IK)L9D3c|AWco|wO)^7&-d;J@ep&5 z20%JPJ_%*+*Kz8wSo7;n9rh#P*R9K8JOr=+=pjpo^~zw42+0d`w1xh$hgO_IaU zl&{A(j|jPoEoUNTb8iS$*sR(JB-_tTV6lt^XIS&aPb+uDEo! zr}zts2U6iN&+6i5tHgco%XU< zQ~CSq_yEkZP}UoqV6U!<-;R3MRsKiPk90tzh56Ol|7TjIvca}Eg^ftTK?qO999Y=T zv$Q`#sz_3d4%=6XAQ56COO2gCOCIb?;}qx$y;z)Y(!LRq0g}?UGzr_lTL(Sq7)H50 z6xZ|~f%ImcXSs7%T(U56&*uoAPDd7}c3Y?@DT-^LuG(a9br21fqO`C<94~$UUB7ef z?W?z+KNMZxMX6QC(NH&Nlu$0Tr_|n*%CDEzr}?f<+4J?dx(n@rMx#T+gwRs9TU>Xe z#Xb6zf|Gz$DF&aS_h(RuK)TuB(0>B87Psn?5fOZ9_C-WeJf@uddCazgXC$B6w4T

5OX77BZJT$W|nqkuafwH1nJsWNL(WEE{SU-x+Fd!afie{iPuQ%k$8i|WfEUPG!X;^$na*E zW)@GvULbLv#6=R%k$8awDO-FuF6c9fXb4-r4(&NYXeWfAO6Kk@X*UR_ox33Fk9=lCec1v6C(w$Ig zx_kdme;o85bWhNfidpyMs|Q_rxt#C^qPU#9gM5({dYYP}V|b`LE`#l4DBnSXp`7D~(2A}V zEfqPBu7n@hC*=Iq1?mf*+GpgjPmfK1QB=WSafk%F_2~@GA)!@l5u4{IVmS=hq)$sk zM)f@!0SMSZ`x~PmSo*XKsCuzhZi@1E%He`Ow?zGLt=<;(A2;fOs0UKm&Z@90l#P^I z;&Y2eoOYK+1qy(8Tf}>v_#GMzmpzeyWy6&{%DltZef$rXA?3Fzza#V7rr{Ml&>^HD z6~J@A&2#Jl@8~po7c)LKyh1w!Th(ryR^vBUVxS@$fPDD$Q)9Nl2*?F_M@FE|Tbo(| z{O3=e9vZe@T|YTEv<#+2Wfx6Tw@&9bDT=zCr_O9~M1DogJtmAc!>gVp3&H&xZsIbpb1jTDKX;4+bR&jsC)Q;Vujg_Z@3Vrn$SJ-I?z$+fUS~GB zeoOB#FCnQLU3~<`-UlInUwxo(i-pSAzUT(^C4 1: + self.category = Image.CONTAINER + + self.seek(0) + + @property + def n_frames(self): + return len(self.images) + + @property + def is_animated(self): + return len(self.images) > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + try: + filename = self.images[frame] + except IndexError: + raise EOFError("no such frame") + + self.fp = self.ole.openstream(filename) + + TiffImagePlugin.TiffImageFile._open(self) + + self.frame = frame + + def tell(self): + + return self.frame + + +# +# -------------------------------------------------------------------- + +Image.register_open(MicImageFile.format, MicImageFile, _accept) + +Image.register_extension(MicImageFile.format, ".mic") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MicImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MicImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d6167efe7c31f580fa7f971379d8c44c461f4f4 GIT binary patch literal 2618 zcmcIl-*4PR5T3Ptce%7_Qc6<-f?Sb6_dpXsJRpG(Vh^>a-4f6R8<w}2uKgh4p?24>hrJ~um#t^d;?40zOLL+w*vM7BoDSCjh z$29t)XN#jGw^?s|Z%0Oi(H1Mo{sqpu2-?=|!7%2b*PAHHo@L_qOyO&5T%Xw-a}qq) z$T&Almf_g*(6o{~g2uwK;drO6%i3SU)a0b_$#L_|d={flmgUy@%+^Blq^eAjd3K`D zvr%i<=5R-4(bUJZPUc43<))AWNI-+}=;7_*XeaiJOPYAISJo%8)fscp)EXOdCZEc1 zmH7ROs4FI=E)o7mZ2dh5YK3Y;t*EtDSFNipbtCGk)!?$~2G{XU|IsK`umx0R4hV@R zQvM@}IlhL;m{-VPe1kPS|Fs)1N`)3M-S^O&cJP|u*#G(9P)Z=^X&>XW{I78`hpf{{ z0pfU*jn9S3%;WZP))kKM!5~5kj_w-Q*yQBu0$Pl2JP#HP0(FK4F^~p<+vI$MU>gz5 zTJ-F!t+WZ0MU~?c!7SGxj6u_AXP&n=|-R}vseGXshKr;( znz;bh#OpB6*MVbaq*hg=LUom?9$XLBUa^Pclt#@xzDda`sd=i2RkVxZGnckEd7j|C z;Bud@Hi1BE20&}URO@+}9p?PW4QX1|V3y|tHLA{xOKV$sTNZL7-$`<3{7o#-X^#6y zo8vS;boR)gIq78TO|A1X$!xJFnGly%joj7#Bz_zF;&)guc=7uXuQDOpzrNCAj{ieE zZVjRxv=#n>?&fN=8g;KUU4CxUhJ;u_(k_KWO($n|YJFsChqG!Ob0x(+7HkMF}!{*q7qS$^>hZ6L@Y*O^qn{eegjqAbXpxx> (self.bits - bits) & (1 << bits) - 1 + + def skip(self, bits): + while self.bits < bits: + self.bitbuffer = (self.bitbuffer << 8) + i8(self.fp.read(1)) + self.bits += 8 + self.bits = self.bits - bits + + def read(self, bits): + v = self.peek(bits) + self.bits = self.bits - bits + return v + + +## +# Image plugin for MPEG streams. This plugin can identify a stream, +# but it cannot read it. + +class MpegImageFile(ImageFile.ImageFile): + + format = "MPEG" + format_description = "MPEG" + + def _open(self): + + s = BitStream(self.fp) + + if s.read(32) != 0x1B3: + raise SyntaxError("not an MPEG file") + + self.mode = "RGB" + self.size = s.read(12), s.read(12) + + +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open(MpegImageFile.format, MpegImageFile) + +Image.register_extensions(MpegImageFile.format, [".mpg", ".mpeg"]) + +Image.register_mime(MpegImageFile.format, "video/mpeg") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpegImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpegImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a7f4b0125355d8383e9679f8bcf9a65b85972944 GIT binary patch literal 2507 zcmb_d?QY{l6usl5Zqs&Y*+OX%h$2=ff41RMfP~7b)w1krx2jwrL=m#mcoIz-JH|6D zT~zo%c@AEJ*WoRA0nWKj()KST$y{I0Ovd+|d+v4PpL@%j<=;Q_Wb$d^`Uu1S36tSx zWF(RsIWdw)auSK*Y$T(G~xv}+;kK= zomi6NHiPK#VbgKI^WK5EGIAx7Dy4LAc0Gf$1!(w(LkA;mMyV0^%g}^>>Vnsh;hdiL z`?jhPbIsdPKcUmcsEvl-33=HmUHQ-zK6FQ;htIxE(vO~Zj@)Q8{<(AX^m*q+X$MN! z(dc~Oirw;MSi%`;>IxUq^ey;4=BcKIZ;$M7FgiuG2`2!U$PlShimr{|HwDAp3ML^q zjZ*P|^i0!|EOH0N{|=lC6!tQ_i>v3;#Aq5A>@48laC7;i2CVrw6RFZk{MRDCMslSn zIRC{oJt99fq^MzHHIhASdV?9nc9G^#%i*&KnZ?HM$c8Rp9x31Y3NpcU50|Y+$8E-0 zXW5bKTD}Z0p>mRC8ggFKMtXE1kjmcNm@2J3dw>)DI*ge6W)d4I|W!y_lk$9r%HSU~_Sg`-8lgcB2BN5I6S9oDh3 zSJkodq?^z+u^00Ipu~KF!zVSnX4Xxc0-6+c(amj|1}ZE~^Ko`Q!fisJwdyp&d%RVK z;moBn6XJan!}G~;)LLjYTFb3C@KLi4#75o2gnmfdK8AlA#-g)o8)grNj|N9#nIy@J^qn1eB=R!@50PF6cdHS+-gRCgok0s#L26g+pVX0?L<}-z@H!pDM zw%^x;r)d3@E(Ln%c3|CK2tkXg7>Av1vBR)-`T&O~fY~Sejx_5(lo;)aN_beo!tu)@ zbT1!Q)wohrNRw5^yI<^$=v6d+9-`5gW;!lyp?on#60JqAo3*HA^ktT;VJcyt2*lYR zS9v#t`!hGqtnXE>3~pQ`TbRBHOTGX8GD=>>X?qwd=s1c^9C`Mn-Mk!lwgxzMpt`zn znH_g{d)TJ1kaR??hN1|pgY?uD-Rh;b5@kD0FKp!zH_C$8#-~Hu3w2)jY?Wwb2hImu zDM`sTr#E0`(|G6Df`|CK+jE!Oxly4d{AFFVdkoFL0<&q>qd4Atu)VPnZAbqC^!mm% literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpoImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpoImagePlugin.py new file mode 100644 index 0000000..460ccec --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpoImagePlugin.py @@ -0,0 +1,99 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPO file handling +# +# See "Multi-Picture Format" (CIPA DC-007-Translation 2009, Standard of the +# Camera & Imaging Products Association) +# +# The multi-picture object combines multiple JPEG images (with a modified EXIF +# data format) into a single file. While it can theoretically be used much like +# a GIF animation, it is commonly used to represent 3D photographs and is (as +# of this writing) the most commonly used format by 3D cameras. +# +# History: +# 2014-03-13 Feneric Created +# +# See the README file for information on usage and redistribution. +# + +from . import Image, JpegImagePlugin + +__version__ = "0.1" + + +def _accept(prefix): + return JpegImagePlugin._accept(prefix) + + +def _save(im, fp, filename): + # Note that we can only save the current frame at present + return JpegImagePlugin._save(im, fp, filename) + + +## +# Image plugin for MPO images. + +class MpoImageFile(JpegImagePlugin.JpegImageFile): + + format = "MPO" + format_description = "MPO (CIPA DC-007)" + _close_exclusive_fp_after_loading = False + + def _open(self): + self.fp.seek(0) # prep the fp in order to pass the JPEG test + JpegImagePlugin.JpegImageFile._open(self) + self.mpinfo = self._getmp() + self.__framecount = self.mpinfo[0xB001] + self.__mpoffsets = [mpent['DataOffset'] + self.info['mpoffset'] + for mpent in self.mpinfo[0xB002]] + self.__mpoffsets[0] = 0 + # Note that the following assertion will only be invalid if something + # gets broken within JpegImagePlugin. + assert self.__framecount == len(self.__mpoffsets) + del self.info['mpoffset'] # no longer needed + self.__fp = self.fp # FIXME: hack + self.__fp.seek(self.__mpoffsets[0]) # get ready to read first frame + self.__frame = 0 + self.offset = 0 + # for now we can only handle reading and individual frame extraction + self.readonly = 1 + + def load_seek(self, pos): + self.__fp.seek(pos) + + @property + def n_frames(self): + return self.__framecount + + @property + def is_animated(self): + return self.__framecount > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + self.fp = self.__fp + self.offset = self.__mpoffsets[frame] + self.tile = [ + ("jpeg", (0, 0) + self.size, self.offset, (self.mode, "")) + ] + self.__frame = frame + + def tell(self): + return self.__frame + + +# -------------------------------------------------------------------q- +# Registry stuff + +# Note that since MPO shares a factory with JPEG, we do not need to do a +# separate registration for it here. +# Image.register_open(MpoImageFile.format, +# JpegImagePlugin.jpeg_factory, _accept) +Image.register_save(MpoImageFile.format, _save) + +Image.register_extension(MpoImageFile.format, ".mpo") + +Image.register_mime(MpoImageFile.format, "image/mpo") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpoImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/MpoImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4c493adb6a2aba4177411777e6d59fd247dca898 GIT binary patch literal 2892 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/OleFileIO.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/OleFileIO.py new file mode 100644 index 0000000..b3caa10 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/OleFileIO.py @@ -0,0 +1,4 @@ +raise ImportError( + 'PIL.OleFileIO is deprecated. Use the olefile Python package ' + 'instead. This module will be removed in a future version.' +) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/OleFileIO.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/OleFileIO.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f2eb3a19734c4a1181476b1c94143d78bba48ee4 GIT binary patch literal 286 zcmYLE!Ab)`49(b!CdfafA!EUXl}s6F*i#+}q1oZT5_vMs&pZ~7PhfLRm` zBTI5ZX5WmGnu#2`AUEQEWn3?cLi3#Q!!riAW&DUa_wp9JXLFS87;*` zjbXASZZaXagu&BZ2w0!E4LwHFyqQ-**JmapyysSgU9f|2j?R00AxzYT16d)V!TrEP zB0NyaF7)L?p~RXm1*$HF#CIu$RLBbdkhQFuyQrg!^U=$AKfm8R?ygt57MF0;l3xF% UFXM^NMYH%xax;45@zII;26MMeH2?qr literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PSDraw.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PSDraw.py new file mode 100644 index 0000000..d2ded6f --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PSDraw.py @@ -0,0 +1,237 @@ +# +# The Python Imaging Library +# $Id$ +# +# simple postscript graphics interface +# +# History: +# 1996-04-20 fl Created +# 1999-01-10 fl Added gsave/grestore to image method +# 2005-05-04 fl Fixed floating point issue in image (from Eric Etheridge) +# +# Copyright (c) 1997-2005 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from . import EpsImagePlugin +from ._util import py3 +import sys + +## +# Simple Postscript graphics interface. + + +class PSDraw(object): + """ + Sets up printing to the given file. If **fp** is omitted, + :py:attr:`sys.stdout` is assumed. + """ + + def __init__(self, fp=None): + if not fp: + fp = sys.stdout + self.fp = fp + + def _fp_write(self, to_write): + if not py3 or self.fp == sys.stdout: + self.fp.write(to_write) + else: + self.fp.write(bytes(to_write, 'UTF-8')) + + def begin_document(self, id=None): + """Set up printing of a document. (Write Postscript DSC header.)""" + # FIXME: incomplete + self._fp_write("%!PS-Adobe-3.0\n" + "save\n" + "/showpage { } def\n" + "%%EndComments\n" + "%%BeginDocument\n") + # self._fp_write(ERROR_PS) # debugging! + self._fp_write(EDROFF_PS) + self._fp_write(VDI_PS) + self._fp_write("%%EndProlog\n") + self.isofont = {} + + def end_document(self): + """Ends printing. (Write Postscript DSC footer.)""" + self._fp_write("%%EndDocument\n" + "restore showpage\n" + "%%End\n") + if hasattr(self.fp, "flush"): + self.fp.flush() + + def setfont(self, font, size): + """ + Selects which font to use. + + :param font: A Postscript font name + :param size: Size in points. + """ + if font not in self.isofont: + # reencode font + self._fp_write("/PSDraw-%s ISOLatin1Encoding /%s E\n" % + (font, font)) + self.isofont[font] = 1 + # rough + self._fp_write("/F0 %d /PSDraw-%s F\n" % (size, font)) + + def line(self, xy0, xy1): + """ + Draws a line between the two points. Coordinates are given in + Postscript point coordinates (72 points per inch, (0, 0) is the lower + left corner of the page). + """ + xy = xy0 + xy1 + self._fp_write("%d %d %d %d Vl\n" % xy) + + def rectangle(self, box): + """ + Draws a rectangle. + + :param box: A 4-tuple of integers whose order and function is currently + undocumented. + + Hint: the tuple is passed into this format string: + + .. code-block:: python + + %d %d M %d %d 0 Vr\n + """ + self._fp_write("%d %d M %d %d 0 Vr\n" % box) + + def text(self, xy, text): + """ + Draws text at the given position. You must use + :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method. + """ + text = "\\(".join(text.split("(")) + text = "\\)".join(text.split(")")) + xy = xy + (text,) + self._fp_write("%d %d M (%s) S\n" % xy) + + def image(self, box, im, dpi=None): + """Draw a PIL image, centered in the given box.""" + # default resolution depends on mode + if not dpi: + if im.mode == "1": + dpi = 200 # fax + else: + dpi = 100 # greyscale + # image size (on paper) + x = float(im.size[0] * 72) / dpi + y = float(im.size[1] * 72) / dpi + # max allowed size + xmax = float(box[2] - box[0]) + ymax = float(box[3] - box[1]) + if x > xmax: + y = y * xmax / x + x = xmax + if y > ymax: + x = x * ymax / y + y = ymax + dx = (xmax - x) / 2 + box[0] + dy = (ymax - y) / 2 + box[1] + self._fp_write("gsave\n%f %f translate\n" % (dx, dy)) + if (x, y) != im.size: + # EpsImagePlugin._save prints the image at (0,0,xsize,ysize) + sx = x / im.size[0] + sy = y / im.size[1] + self._fp_write("%f %f scale\n" % (sx, sy)) + EpsImagePlugin._save(im, self.fp, None, 0) + self._fp_write("\ngrestore\n") + +# -------------------------------------------------------------------- +# Postscript driver + +# +# EDROFF.PS -- Postscript driver for Edroff 2 +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + + +EDROFF_PS = """\ +/S { show } bind def +/P { moveto show } bind def +/M { moveto } bind def +/X { 0 rmoveto } bind def +/Y { 0 exch rmoveto } bind def +/E { findfont + dup maxlength dict begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + /Encoding exch def + dup /FontName exch def + currentdict end definefont pop +} bind def +/F { findfont exch scalefont dup setfont + [ exch /setfont cvx ] cvx bind def +} bind def +""" + +# +# VDI.PS -- Postscript driver for VDI meta commands +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + +VDI_PS = """\ +/Vm { moveto } bind def +/Va { newpath arcn stroke } bind def +/Vl { moveto lineto stroke } bind def +/Vc { newpath 0 360 arc closepath } bind def +/Vr { exch dup 0 rlineto + exch dup neg 0 exch rlineto + exch neg 0 rlineto + 0 exch rlineto + 100 div setgray fill 0 setgray } bind def +/Tm matrix def +/Ve { Tm currentmatrix pop + translate scale newpath 0 0 .5 0 360 arc closepath + Tm setmatrix +} bind def +/Vf { currentgray exch setgray fill setgray } bind def +""" + +# +# ERROR.PS -- Error handler +# +# History: +# 89-11-21 fl: created (pslist 1.10) +# + +ERROR_PS = """\ +/landscape false def +/errorBUF 200 string def +/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def +errordict begin /handleerror { + initmatrix /Courier findfont 10 scalefont setfont + newpath 72 720 moveto $error begin /newerror false def + (PostScript Error) show errorNL errorNL + (Error: ) show + /errorname load errorBUF cvs show errorNL errorNL + (Command: ) show + /command load dup type /stringtype ne { errorBUF cvs } if show + errorNL errorNL + (VMstatus: ) show + vmstatus errorBUF cvs show ( bytes available, ) show + errorBUF cvs show ( bytes used at level ) show + errorBUF cvs show errorNL errorNL + (Operand stargck: ) show errorNL /ostargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall errorNL + (Execution stargck: ) show errorNL /estargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall + end showpage +} def end +""" diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PSDraw.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PSDraw.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3bf0c2ec0761c67e647eb998f7e0f8d55fdab581 GIT binary patch literal 6584 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 100: + raise SyntaxError("bad palette file") + + v = [int(x) for x in s.split()] + try: + [i, r, g, b] = v + except ValueError: + [i, r] = v + g = b = r + + if 0 <= i <= 255: + self.palette[i] = o8(r) + o8(g) + o8(b) + + self.palette = b"".join(self.palette) + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PaletteFile.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PaletteFile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..51205b7e1132d74f5d7184fb443eecd307793551 GIT binary patch literal 1334 zcmb_b?M@Rx6g@M$T?&E_jP>&eMvaXI8c9t2L5#t#NC+WY6~&Lu(%q72mu=Y{1d{fT z@B+S{58!_vK+m04c>rv7&fb|hd*_~errxiasapTX#}>vvkME}(<$XfJM7}mXR=)qT&*Vx&p%(rP-F1-X?yshu|Ii%n(bRW~vbrR;u)hRuSYP&-KdGSWqd0}FAPHpU zn-T(RAfdw*u!eaIeb@;Md|^ld-!ZJ;J9@f{`Ku22r2t)z<1 zl=Otlq>h?H6Pk7D?uG%|Y8Z`Nwc^-q!+n%!tp&lN3cJH#Ul{GedbtGU^9> shift)) + # we ignore the palette here + im.mode = "P" + rawmode = "P;" + str(bpp) + version = 1 + + elif im.mode == "L" and "bpp" in im.info and im.info["bpp"] in (1, 2, 4): + + # here we assume that even though the inherent mode is 8-bit grayscale, + # only the lower bpp bits are significant. + # We invert them to match the Palm. + bpp = im.info["bpp"] + im = im.point(lambda x, maxval=(1 << bpp)-1: maxval - (x & maxval)) + # we ignore the palette here + im.mode = "P" + rawmode = "P;" + str(bpp) + version = 1 + + elif im.mode == "1": + + # monochrome -- write it inverted, as is the Palm standard + rawmode = "1;I" + bpp = 1 + version = 0 + + else: + + raise IOError("cannot write mode %s as Palm" % im.mode) + + # + # make sure image data is available + im.load() + + # write header + + cols = im.size[0] + rows = im.size[1] + + rowbytes = int((cols + (16//bpp - 1)) / (16 // bpp)) * 2 + transparent_index = 0 + compression_type = _COMPRESSION_TYPES["none"] + + flags = 0 + if im.mode == "P" and "custom-colormap" in im.info: + flags = flags & _FLAGS["custom-colormap"] + colormapsize = 4 * 256 + 2 + colormapmode = im.palette.mode + colormap = im.getdata().getpalette() + else: + colormapsize = 0 + + if "offset" in im.info: + offset = (rowbytes * rows + 16 + 3 + colormapsize) // 4 + else: + offset = 0 + + fp.write(o16b(cols) + o16b(rows) + o16b(rowbytes) + o16b(flags)) + fp.write(o8(bpp)) + fp.write(o8(version)) + fp.write(o16b(offset)) + fp.write(o8(transparent_index)) + fp.write(o8(compression_type)) + fp.write(o16b(0)) # reserved by Palm + + # now write colormap if necessary + + if colormapsize > 0: + fp.write(o16b(256)) + for i in range(256): + fp.write(o8(i)) + if colormapmode == 'RGB': + fp.write( + o8(colormap[3 * i]) + + o8(colormap[3 * i + 1]) + + o8(colormap[3 * i + 2])) + elif colormapmode == 'RGBA': + fp.write( + o8(colormap[4 * i]) + + o8(colormap[4 * i + 1]) + + o8(colormap[4 * i + 2])) + + # now convert data to raw form + ImageFile._save( + im, fp, [("raw", (0, 0)+im.size, 0, (rawmode, rowbytes, 1))]) + + if hasattr(fp, "flush"): + fp.flush() + + +# +# -------------------------------------------------------------------- + +Image.register_save("Palm", _save) + +Image.register_extension("Palm", ".palm") + +Image.register_mime("Palm", "image/palm") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PalmImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PalmImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3730ee7d3ebd8147c0f0945fb8e7da38ce04d837 GIT binary patch literal 9609 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 r--yPq6tga@EA^L07bfGY;eIpLV9D zsnVOK*E|L<(%0x)@BraEXWjN5uy@XWbLPzX{Wke~d+S>J`oWSmzXb2wSfPQicodaH zm7;~BO4CAuU5X+36n4iBuF zY*e;a*%2LOW5o0dBGV9Y2ywqEj$NF*K|lD?Wo!}I!haJu-%s~GiqnpA414@-x+MSe2T>)p==9ChP-MekKo*ifX)>*zK7GJ(>fMUzwf%H z%Y`qT?qO5AIOV%Y(zH#8rfXsmo!qS&+k@br^?=PXE@Km^+z1x z1NN9q)sCL3%X(K$)TREfC%{Y2f)`hIfEB)m=t%UeD7E#$0*0|b!1spgUsfoU!GKP^2jH!#t z854Qj#$Y~=F*YNat(vYXV%)(=4~=zU+4+{|k?%sCUx#>?tDt{9o}5|mAy(kTQk|+) zPj&;7Y7gu^>=}t2x2L~4__*K it9DPLtNGIZRgd)d+rFdUaT5dg_?nvPbbRyUtNI@jKO^k` literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcfFontFile.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcfFontFile.py new file mode 100644 index 0000000..eba85fe --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcfFontFile.py @@ -0,0 +1,245 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library +# $Id$ +# +# portable compiled font file parser +# +# history: +# 1997-08-19 fl created +# 2003-09-13 fl fixed loading of unicode fonts +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from . import Image, FontFile +from ._binary import i8, i16le as l16, i32le as l32, i16be as b16, i32be as b32 + +# -------------------------------------------------------------------- +# declarations + +PCF_MAGIC = 0x70636601 # "\x01fcp" + +PCF_PROPERTIES = (1 << 0) +PCF_ACCELERATORS = (1 << 1) +PCF_METRICS = (1 << 2) +PCF_BITMAPS = (1 << 3) +PCF_INK_METRICS = (1 << 4) +PCF_BDF_ENCODINGS = (1 << 5) +PCF_SWIDTHS = (1 << 6) +PCF_GLYPH_NAMES = (1 << 7) +PCF_BDF_ACCELERATORS = (1 << 8) + +BYTES_PER_ROW = [ + lambda bits: ((bits+7) >> 3), + lambda bits: ((bits+15) >> 3) & ~1, + lambda bits: ((bits+31) >> 3) & ~3, + lambda bits: ((bits+63) >> 3) & ~7, +] + + +def sz(s, o): + return s[o:s.index(b"\0", o)] + + +## +# Font file plugin for the X11 PCF format. + +class PcfFontFile(FontFile.FontFile): + + name = "name" + + def __init__(self, fp): + + magic = l32(fp.read(4)) + if magic != PCF_MAGIC: + raise SyntaxError("not a PCF file") + + FontFile.FontFile.__init__(self) + + count = l32(fp.read(4)) + self.toc = {} + for i in range(count): + type = l32(fp.read(4)) + self.toc[type] = l32(fp.read(4)), l32(fp.read(4)), l32(fp.read(4)) + + self.fp = fp + + self.info = self._load_properties() + + metrics = self._load_metrics() + bitmaps = self._load_bitmaps(metrics) + encoding = self._load_encoding() + + # + # create glyph structure + + for ch in range(256): + ix = encoding[ch] + if ix is not None: + x, y, l, r, w, a, d, f = metrics[ix] + glyph = (w, 0), (l, d-y, x+l, d), (0, 0, x, y), bitmaps[ix] + self.glyph[ch] = glyph + + def _getformat(self, tag): + + format, size, offset = self.toc[tag] + + fp = self.fp + fp.seek(offset) + + format = l32(fp.read(4)) + + if format & 4: + i16, i32 = b16, b32 + else: + i16, i32 = l16, l32 + + return fp, format, i16, i32 + + def _load_properties(self): + + # + # font properties + + properties = {} + + fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) + + nprops = i32(fp.read(4)) + + # read property description + p = [] + for i in range(nprops): + p.append((i32(fp.read(4)), i8(fp.read(1)), i32(fp.read(4)))) + if nprops & 3: + fp.seek(4 - (nprops & 3), 1) # pad + + data = fp.read(i32(fp.read(4))) + + for k, s, v in p: + k = sz(data, k) + if s: + v = sz(data, v) + properties[k] = v + + return properties + + def _load_metrics(self): + + # + # font metrics + + metrics = [] + + fp, format, i16, i32 = self._getformat(PCF_METRICS) + + append = metrics.append + + if (format & 0xff00) == 0x100: + + # "compressed" metrics + for i in range(i16(fp.read(2))): + left = i8(fp.read(1)) - 128 + right = i8(fp.read(1)) - 128 + width = i8(fp.read(1)) - 128 + ascent = i8(fp.read(1)) - 128 + descent = i8(fp.read(1)) - 128 + xsize = right - left + ysize = ascent + descent + append( + (xsize, ysize, left, right, width, + ascent, descent, 0) + ) + + else: + + # "jumbo" metrics + for i in range(i32(fp.read(4))): + left = i16(fp.read(2)) + right = i16(fp.read(2)) + width = i16(fp.read(2)) + ascent = i16(fp.read(2)) + descent = i16(fp.read(2)) + attributes = i16(fp.read(2)) + xsize = right - left + ysize = ascent + descent + append( + (xsize, ysize, left, right, width, + ascent, descent, attributes) + ) + + return metrics + + def _load_bitmaps(self, metrics): + + # + # bitmap data + + bitmaps = [] + + fp, format, i16, i32 = self._getformat(PCF_BITMAPS) + + nbitmaps = i32(fp.read(4)) + + if nbitmaps != len(metrics): + raise IOError("Wrong number of bitmaps") + + offsets = [] + for i in range(nbitmaps): + offsets.append(i32(fp.read(4))) + + bitmapSizes = [] + for i in range(4): + bitmapSizes.append(i32(fp.read(4))) + + # byteorder = format & 4 # non-zero => MSB + bitorder = format & 8 # non-zero => MSB + padindex = format & 3 + + bitmapsize = bitmapSizes[padindex] + offsets.append(bitmapsize) + + data = fp.read(bitmapsize) + + pad = BYTES_PER_ROW[padindex] + mode = "1;R" + if bitorder: + mode = "1" + + for i in range(nbitmaps): + x, y, l, r, w, a, d, f = metrics[i] + b, e = offsets[i], offsets[i+1] + bitmaps.append( + Image.frombytes("1", (x, y), data[b:e], "raw", mode, pad(x)) + ) + + return bitmaps + + def _load_encoding(self): + + # map character code to bitmap index + encoding = [None] * 256 + + fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) + + firstCol, lastCol = i16(fp.read(2)), i16(fp.read(2)) + firstRow, lastRow = i16(fp.read(2)), i16(fp.read(2)) + + default = i16(fp.read(2)) + + nencoding = (lastCol - firstCol + 1) * (lastRow - firstRow + 1) + + for i in range(nencoding): + encodingOffset = i16(fp.read(2)) + if encodingOffset != 0xFFFF: + try: + encoding[i+firstCol] = encodingOffset + except IndexError: + break # only load ISO-8859-1 glyphs + + return encoding diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcfFontFile.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcfFontFile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..150d185b19d7a4afed92c235c25165a92145159b GIT binary patch literal 6236 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 EAG%~!S^xk5 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcxImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcxImagePlugin.py new file mode 100644 index 0000000..564713a --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcxImagePlugin.py @@ -0,0 +1,179 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCX file handling +# +# This format was originally used by ZSoft's popular PaintBrush +# program for the IBM PC. It is also supported by many MS-DOS and +# Windows applications, including the Windows PaintBrush program in +# Windows 3. +# +# history: +# 1995-09-01 fl Created +# 1996-05-20 fl Fixed RGB support +# 1997-01-03 fl Fixed 2-bit and 4-bit support +# 1999-02-03 fl Fixed 8-bit support (broken in 1.0b1) +# 1999-02-07 fl Added write support +# 2002-06-09 fl Made 2-bit and 4-bit support a bit more robust +# 2002-07-30 fl Seek from to current position, not beginning of file +# 2003-06-03 fl Extract DPI settings (info["dpi"]) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import logging +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, o8, o16le as o16 + +logger = logging.getLogger(__name__) + +__version__ = "0.6" + + +def _accept(prefix): + return i8(prefix[0]) == 10 and i8(prefix[1]) in [0, 2, 3, 5] + + +## +# Image plugin for Paintbrush images. + +class PcxImageFile(ImageFile.ImageFile): + + format = "PCX" + format_description = "Paintbrush" + + def _open(self): + + # header + s = self.fp.read(128) + if not _accept(s): + raise SyntaxError("not a PCX file") + + # image + bbox = i16(s, 4), i16(s, 6), i16(s, 8)+1, i16(s, 10)+1 + if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]: + raise SyntaxError("bad PCX image size") + logger.debug("BBox: %s %s %s %s", *bbox) + + # format + version = i8(s[1]) + bits = i8(s[3]) + planes = i8(s[65]) + stride = i16(s, 66) + logger.debug("PCX version %s, bits %s, planes %s, stride %s", + version, bits, planes, stride) + + self.info["dpi"] = i16(s, 12), i16(s, 14) + + if bits == 1 and planes == 1: + mode = rawmode = "1" + + elif bits == 1 and planes in (2, 4): + mode = "P" + rawmode = "P;%dL" % planes + self.palette = ImagePalette.raw("RGB", s[16:64]) + + elif version == 5 and bits == 8 and planes == 1: + mode = rawmode = "L" + # FIXME: hey, this doesn't work with the incremental loader !!! + self.fp.seek(-769, 2) + s = self.fp.read(769) + if len(s) == 769 and i8(s[0]) == 12: + # check if the palette is linear greyscale + for i in range(256): + if s[i*3+1:i*3+4] != o8(i)*3: + mode = rawmode = "P" + break + if mode == "P": + self.palette = ImagePalette.raw("RGB", s[1:]) + self.fp.seek(128) + + elif version == 5 and bits == 8 and planes == 3: + mode = "RGB" + rawmode = "RGB;L" + + else: + raise IOError("unknown PCX mode") + + self.mode = mode + self.size = bbox[2]-bbox[0], bbox[3]-bbox[1] + + bbox = (0, 0) + self.size + logger.debug("size: %sx%s", *self.size) + + self.tile = [("pcx", bbox, self.fp.tell(), (rawmode, planes * stride))] + +# -------------------------------------------------------------------- +# save PCX files + + +SAVE = { + # mode: (version, bits, planes, raw mode) + "1": (2, 1, 1, "1"), + "L": (5, 8, 1, "L"), + "P": (5, 8, 1, "P"), + "RGB": (5, 8, 3, "RGB;L"), +} + + +def _save(im, fp, filename): + + try: + version, bits, planes, rawmode = SAVE[im.mode] + except KeyError: + raise ValueError("Cannot save %s images as PCX" % im.mode) + + # bytes per plane + stride = (im.size[0] * bits + 7) // 8 + # stride should be even + stride += stride % 2 + # Stride needs to be kept in sync with the PcxEncode.c version. + # Ideally it should be passed in in the state, but the bytes value + # gets overwritten. + + logger.debug("PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d", + im.size[0], bits, stride) + + # under windows, we could determine the current screen size with + # "Image.core.display_mode()[1]", but I think that's overkill... + + screen = im.size + + dpi = 100, 100 + + # PCX header + fp.write( + o8(10) + o8(version) + o8(1) + o8(bits) + o16(0) + + o16(0) + o16(im.size[0]-1) + o16(im.size[1]-1) + o16(dpi[0]) + + o16(dpi[1]) + b"\0"*24 + b"\xFF"*24 + b"\0" + o8(planes) + + o16(stride) + o16(1) + o16(screen[0]) + o16(screen[1]) + + b"\0"*54 + ) + + assert fp.tell() == 128 + + ImageFile._save(im, fp, [("pcx", (0, 0)+im.size, 0, + (rawmode, bits*planes))]) + + if im.mode == "P": + # colour palette + fp.write(o8(12)) + fp.write(im.im.getpalette("RGB", "RGB")) # 768 bytes + elif im.mode == "L": + # greyscale palette + fp.write(o8(12)) + for i in range(256): + fp.write(o8(i)*3) + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PcxImageFile.format, PcxImageFile, _accept) +Image.register_save(PcxImageFile.format, _save) + +Image.register_extension(PcxImageFile.format, ".pcx") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcxImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PcxImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1fd4be78fc33edcd3d1f2ec8c3120ce4d84a6736 GIT binary patch literal 4256 zcmb_f&r>7E6@EP<2_%01SOg9jt#^rKXMt=IW0&o6yo>GBI@FpP60al2r4r158>EqT zW-uaws#M4^hotuCn-BhXa&}ezgxqp<75={0BcRqkIRVYn>o?u6yI;TeeJ%gLW0kqy zzdzlR{I7`bck!hEfe7(2(iUkz@g(%6ZKUH#!;_9L4PQD1X%xipT|wGK>6D~VlFpDc zhNV-MMp-%)X^e=8L=HzK8j}knjd2N!(wLC2B!7eNNePD}^5xK%eIwy8jTa(+XiSMM zNH{BDMK;1)5{}_(PQr0~RVAE~jmETu)9PbJB2NxyC7P1MTa?kHT=Ym?H%VcHD_@-P@a=WZd?4%f{Jma-4py0i}tX*~F6~ zSsBekeBjYA@y-p8=uGu=RWkJs`(KU3h(m#|FbqkO>xCP7kvcNAn!g(wwD${g4zGAQ zEDQW9%fgY7^qJZ!&Q?-e@|8|H!o}p17Ui%c;VAq5-5^dwx(IaVdVR^;@WOUs&>nN` z;$WfUT+Dfi`AT;aa^}k!_EVIzl3Wzw*KH0(akaTA>ibwZA~ei8dK)9KL1bO>JA|oBD`!31y)ux|5^N?lNJJB>W@vnJSc__ZQ5en!CMMb@S;~|cW?u&W|qmltLm-8&b zb46EqnRx<)t-nV2NKk z3Vq+&O4<83K8m|1v2LZ)4Wo1fM(&22=&z*ey0_P_YY0>@O0Ee7PT9N#p#-wuL-mRz zQ7a4>#EkxSPUEcAe?LjOiTVTID3G_i2M1B26ck3g#|Mh@I^M?n-GH-c|D<)IP~CI< zr9ILpI?|WzC{_f|;w!Gj5Cd#oHLA-!$lNk2tioi62974YrCA3=&f z3G2K_UV0MWl>(Cas3OUx7-NuT;ADb~kvX6%+0e)*G=K~|kY)i`3;+%b@&b^LAP4*d zwY-j2j#?#kaMd3jE^rxjKEOc4OojGCj6f5-feQez3>0s`<1i_*Q^Ry>0||KF*RGd^ z5%YP++z4{HX;cTKn<@y9MB>P&3MdXoWVQ;bci$CV0Wf~h7pr%p2CKq&ED^C7^w0%s zi{8fI4Q~v%3q*SXEE^|Tr2jAg2*eXtu0t>);2Y$H%XT%7RuwLBE5MF1`8A^Rw#+SE z5oN)nXBRr$6&zhT6Z?(JA)M+392Cce#5?(c;=aI3#FHO#&|g#Xn&pW1K3kIW3fJeR zIm0$E{VkcLyQjbOo`5hzat!b0kJCk_TPr5Rq^&QA<~5~?wAMnzBks_GP%*nLb)C+>5d_Yc)%Dr^ qZwIL9^R{EYcUa5mix8t`(Y%DiD*5H1g%5mh$nd{XD8Dub0{sqSCiGYU literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfImagePlugin.py new file mode 100644 index 0000000..8538bcd --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfImagePlugin.py @@ -0,0 +1,227 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PDF (Acrobat) file handling +# +# History: +# 1996-07-16 fl Created +# 1997-01-18 fl Fixed header +# 2004-02-21 fl Fixes for 1/L/CMYK images, etc. +# 2004-02-24 fl Fixes for 1 and P images. +# +# Copyright (c) 1997-2004 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996-1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +# Image plugin for PDF images (output only). +## + +from . import Image, ImageFile, ImageSequence, PdfParser +import io + +__version__ = "0.5" + + +# +# -------------------------------------------------------------------- + +# object ids: +# 1. catalogue +# 2. pages +# 3. image +# 4. page +# 5. page contents + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +## +# (Internal) Image save plugin for the PDF format. + +def _save(im, fp, filename, save_all=False): + resolution = im.encoderinfo.get("resolution", 72.0) + is_appending = im.encoderinfo.get("append", False) + title = im.encoderinfo.get("title", None) + author = im.encoderinfo.get("author", None) + subject = im.encoderinfo.get("subject", None) + keywords = im.encoderinfo.get("keywords", None) + creator = im.encoderinfo.get("creator", None) + producer = im.encoderinfo.get("producer", None) + + if is_appending: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="r+b") + else: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="w+b") + + if title: + existing_pdf.info.Title = title + if author: + existing_pdf.info.Author = author + if subject: + existing_pdf.info.Subject = subject + if keywords: + existing_pdf.info.Keywords = keywords + if creator: + existing_pdf.info.Creator = creator + if producer: + existing_pdf.info.Producer = producer + + # + # make sure image data is available + im.load() + + existing_pdf.start_writing() + existing_pdf.write_header() + existing_pdf.write_comment("created by PIL PDF driver " + __version__) + + # + # pages + ims = [im] + if save_all: + append_images = im.encoderinfo.get("append_images", []) + for append_im in append_images: + append_im.encoderinfo = im.encoderinfo.copy() + ims.append(append_im) + numberOfPages = 0 + image_refs = [] + page_refs = [] + contents_refs = [] + for im in ims: + im_numberOfPages = 1 + if save_all: + try: + im_numberOfPages = im.n_frames + except AttributeError: + # Image format does not have n_frames. It is a single frame image + pass + numberOfPages += im_numberOfPages + for i in range(im_numberOfPages): + image_refs.append(existing_pdf.next_object_id(0)) + page_refs.append(existing_pdf.next_object_id(0)) + contents_refs.append(existing_pdf.next_object_id(0)) + existing_pdf.pages.append(page_refs[-1]) + + # + # catalog and list of pages + existing_pdf.write_catalog() + + pageNumber = 0 + for imSequence in ims: + im_pages = ImageSequence.Iterator(imSequence) if save_all else [imSequence] + for im in im_pages: + # FIXME: Should replace ASCIIHexDecode with RunLengthDecode (packbits) + # or LZWDecode (tiff/lzw compression). Note that PDF 1.2 also supports + # Flatedecode (zip compression). + + bits = 8 + params = None + + if im.mode == "1": + filter = "ASCIIHexDecode" + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + bits = 1 + elif im.mode == "L": + filter = "DCTDecode" + # params = "<< /Predictor 15 /Columns %d >>" % (width-2) + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "P": + filter = "ASCIIHexDecode" + palette = im.im.getpalette("RGB") + colorspace = [PdfParser.PdfName("Indexed"), PdfParser.PdfName("DeviceRGB"), 255, PdfParser.PdfBinary(palette)] + procset = "ImageI" # indexed color + elif im.mode == "RGB": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceRGB") + procset = "ImageC" # color images + elif im.mode == "CMYK": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceCMYK") + procset = "ImageC" # color images + else: + raise ValueError("cannot save mode %s" % im.mode) + + # + # image + + op = io.BytesIO() + + if filter == "ASCIIHexDecode": + if bits == 1: + # FIXME: the hex encoder doesn't support packed 1-bit + # images; do things the hard way... + data = im.tobytes("raw", "1") + im = Image.new("L", (len(data), 1), None) + im.putdata(data) + ImageFile._save(im, op, [("hex", (0, 0)+im.size, 0, im.mode)]) + elif filter == "DCTDecode": + Image.SAVE["JPEG"](im, op, filename) + elif filter == "FlateDecode": + ImageFile._save(im, op, [("zip", (0, 0)+im.size, 0, im.mode)]) + elif filter == "RunLengthDecode": + ImageFile._save(im, op, [("packbits", (0, 0)+im.size, 0, im.mode)]) + else: + raise ValueError("unsupported PDF filter (%s)" % filter) + + # + # Get image characteristics + + width, height = im.size + + existing_pdf.write_obj(image_refs[pageNumber], stream=op.getvalue(), + Type=PdfParser.PdfName("XObject"), + Subtype=PdfParser.PdfName("Image"), + Width=width, # * 72.0 / resolution, + Height=height, # * 72.0 / resolution, + Filter=PdfParser.PdfName(filter), + BitsPerComponent=bits, + DecodeParams=params, + ColorSpace=colorspace) + + # + # page + + existing_pdf.write_page(page_refs[pageNumber], + Resources=PdfParser.PdfDict( + ProcSet=[PdfParser.PdfName("PDF"), PdfParser.PdfName(procset)], + XObject=PdfParser.PdfDict(image=image_refs[pageNumber])), + MediaBox=[0, 0, int(width * 72.0 / resolution), int(height * 72.0 / resolution)], + Contents=contents_refs[pageNumber] + ) + + # + # page contents + + page_contents = PdfParser.make_bytes( + "q %d 0 0 %d 0 0 cm /image Do Q\n" % ( + int(width * 72.0 / resolution), + int(height * 72.0 / resolution))) + + existing_pdf.write_obj(contents_refs[pageNumber], stream=page_contents) + + pageNumber += 1 + + # + # trailer + existing_pdf.write_xref_and_trailer() + if hasattr(fp, "flush"): + fp.flush() + existing_pdf.close() + +# +# -------------------------------------------------------------------- + + +Image.register_save("PDF", _save) +Image.register_save_all("PDF", _save_all) + +Image.register_extension("PDF", ".pdf") + +Image.register_mime("PDF", "application/pdf") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b30a3920f77b529d19e519ae26f929195f7a6b80 GIT binary patch literal 4719 zcmbtYOLH4p6+X8m`R({^$9CcTuQ?zP>r)Gc>k z#r9NdgQwWd-(UsBil4xS4OJ9Wv6vqLH47Fj!go$fj$M@i1(N#qz2~0yIrsEwWxnh0 z8Lxl)^D?zQ8QdS>ioe02@l#YKswrAmRC8$Ep<0I4GgQmcdX|)SNN1>;qxBqVfI3L$ z=xd_&PBLAjJLqdrc9T(5=^+hZHyt{pc-<@O&ZBi7uXWeax?k2QK4h#GdZ3Z7Fch*F zY!1Ux&D%1zyFFXwf*ZAH)`HuYdkiw{+`SamBAz!@c6l5~g}n3|^@=w)|kW zejt{MR8a(6VwOj$%t~CsHI7Tn8tD|9Dnu2S_i7F1>LF?hhvpFT zX%5RcLi@jC^o7^Ip(c=qsW~cw7o7uW0NEo9S=(K7vUZeqVDy}$l*0NI`*4twQMw1l z`xUZdynx7s*I!Z-iy_ehHjlG(Y>0Wo?}d)M7Yf=5*%&50LX%?7YiDhD&{<<&o)!2srpyfeU|0;b6zaSv;;jUn*B>%znskXI;1bJ*6@(jAvyXpKG^tK)FY_j&}fpSG3EdOGvg#jEG9q#hRYtLlo22jm7qrL_ zc3Sgd+e;}I_7dl+Qm_SCcMnxyHU9%ndB9uWqQMYg!)}L>#Y2_i#zw`I ztvuUz%)wq5=~y<(k?|~$xLK%2p>C8-gjRxR)8&o@&Ol=oY9qZ!^vQ8k|(AlF$85>;pgTjHJ2oS)d5IX-{GLaCLrZ>5182Fl9&+ zTNlh5zib{y-ho&nUB#S`Jd>VcVg5x6oAq6>8I11ZIWcP~&}QH06i@hI$A8N**)zgx z>D_c*?41ANXHSnw=4Ctr?6MaGq0MvSlxJV$FUKM*^7iDuZT5x!^OZ-BZ7&EGtDZG2 z-B_!y{JI^$-E9QVOt59QTYKVkue`J2+c=&ELL-P9^*X`A)kUlZ~*0z-?I#6)MW1VOYl2=SLAJ*z& zU;=CV08F(*C+gK=@yC2v4Wre%*J@K;Bw-^en>2$~qOiPbtat)COAboNC8xeH+V|$d zeOb(hfrXGbJ_jkg`O7+g1K-xIT+0`QF24}wf6^m-Hmi+zTYA?teLzP4VR;uQ5(ISB zh*jhVo1y529$a`Xdet~>fR|yi%kdG13L^LGFOCk-!*>S=o;^B1Pmdp<`C|tNu1F6M zpPFjuX*mYylp|Z(i+t-N_UvGuo6@%Npr4?mfO1%?aSS+xN+lel80WlH679-i{lH~f zab!^1L~sxQIXc!x{zk)^M^S{-VG|-RfVsRGAU8{)=w3oD@MfKl<8iSbTKRCx<*r<~ zFCja)D7d2x;k-gqzYKXU&m|+kz3!pR*rOMhIY02C1KE7(RU0j3^;rFqH`2uymE@YW#+^@i0@%jJ{pveM#&*#9bx-0H)ZkK}Bpj)Q%oIJA1hvPFw@ zi;ZoYu;8NtvNRt~=4x8=c1%e$vHT8_QtU@&v*ZQ3WFrr6L23Qm_F@lic0XlRSf6q= zj7{MZX5ti=kFr!umt*g82qn~hTuRFzV(;=>pUY8kr5f-7bcc8t#vtfs-;X&>N_D-N zs#=TPG2Z2Bd{j^+dO@SMVWQ`FW#o9WJ#u_X&_5P*wmn_3;BxEmr4W|w*GeaOu(y5T z#H7o@zs30IJ(UdwAtS^R6fRy;R_bZN;QE@@Eg>y)?TDpzaQ5ICQ^xU2gWSp>PLi-L z%sA-c-@T*4wVf6&HbD$(+fe}E|9mx-%qoIS{5NK%#!h~n4t3s{!8oAab7gy+9@V3U zvfbDnQ~hdKjbfI5`{kYiwBP9j)`%LH?-@{a06L@kbHH@koV!^DR&ocY>#bQEg1a-4 z>vQ^4UuIaHSA(jk`qUIIz89Ur+< (offset, generation) + self.new_entries = {} # object ID => (offset, generation) + self.deleted_entries = {0: 65536} # object ID => generation + self.reading_finished = False + + def __setitem__(self, key, value): + if self.reading_finished: + self.new_entries[key] = value + else: + self.existing_entries[key] = value + if key in self.deleted_entries: + del self.deleted_entries[key] + + def __getitem__(self, key): + try: + return self.new_entries[key] + except KeyError: + return self.existing_entries[key] + + def __delitem__(self, key): + if key in self.new_entries: + generation = self.new_entries[key][1] + 1 + del self.new_entries[key] + self.deleted_entries[key] = generation + elif key in self.existing_entries: + generation = self.existing_entries[key][1] + 1 + self.deleted_entries[key] = generation + elif key in self.deleted_entries: + generation = self.deleted_entries[key] + else: + raise IndexError("object ID " + str(key) + " cannot be deleted because it doesn't exist") + + def __contains__(self, key): + return key in self.existing_entries or key in self.new_entries + + def __len__(self): + return len(set(self.existing_entries.keys()) | set(self.new_entries.keys()) | set(self.deleted_entries.keys())) + + def keys(self): + return (set(self.existing_entries.keys()) - set(self.deleted_entries.keys())) | set(self.new_entries.keys()) + + def write(self, f): + keys = sorted(set(self.new_entries.keys()) | set(self.deleted_entries.keys())) + deleted_keys = sorted(set(self.deleted_entries.keys())) + startxref = f.tell() + f.write(b"xref\n") + while keys: + # find a contiguous sequence of object IDs + prev = None + for index, key in enumerate(keys): + if prev is None or prev+1 == key: + prev = key + else: + contiguous_keys = keys[:index] + keys = keys[index:] + break + else: + contiguous_keys = keys + keys = None + f.write(make_bytes("%d %d\n" % (contiguous_keys[0], len(contiguous_keys)))) + for object_id in contiguous_keys: + if object_id in self.new_entries: + f.write(make_bytes("%010d %05d n \n" % self.new_entries[object_id])) + else: + this_deleted_object_id = deleted_keys.pop(0) + check_format_condition(object_id == this_deleted_object_id, + "expected the next deleted object " + "ID to be %s, instead found %s" % + (object_id, this_deleted_object_id)) + try: + next_in_linked_list = deleted_keys[0] + except IndexError: + next_in_linked_list = 0 + f.write(make_bytes("%010d %05d f \n" % (next_in_linked_list, self.deleted_entries[object_id]))) + return startxref + + +class PdfName: + def __init__(self, name): + if isinstance(name, PdfName): + self.name = name.name + elif isinstance(name, bytes): + self.name = name + else: + self.name = name.encode("us-ascii") + + def name_as_str(self): + return self.name.decode("us-ascii") + + def __eq__(self, other): + return (isinstance(other, PdfName) and other.name == self.name) or other == self.name + + def __hash__(self): + return hash(self.name) + + def __repr__(self): + return "PdfName(%s)" % repr(self.name) + + @classmethod + def from_pdf_stream(cls, data): + return cls(PdfParser.interpret_name(data)) + + allowed_chars = set(range(33, 127)) - set(ord(c) for c in "#%/()<>[]{}") + + def __bytes__(self): + result = bytearray(b"/") + for b in self.name: + if py3: # Python 3.x + if b in self.allowed_chars: + result.append(b) + else: + result.extend(make_bytes("#%02X" % b)) + else: # Python 2.x + if ord(b) in self.allowed_chars: + result.append(b) + else: + result.extend(b"#%02X" % ord(b)) + return bytes(result) + + __str__ = __bytes__ + + +class PdfArray(list): + def __bytes__(self): + return b"[ " + b" ".join(pdf_repr(x) for x in self) + b" ]" + + __str__ = __bytes__ + + +class PdfDict(UserDict): + def __setattr__(self, key, value): + if key == "data": + if hasattr(UserDict, "__setattr__"): + UserDict.__setattr__(self, key, value) + else: + self.__dict__[key] = value + else: + if isinstance(key, str): + key = key.encode("us-ascii") + self[key] = value + + def __getattr__(self, key): + try: + value = self[key] + except KeyError: + try: + value = self[key.encode("us-ascii")] + except KeyError: + raise AttributeError(key) + if isinstance(value, bytes): + return decode_text(value) + else: + return value + + def __bytes__(self): + out = bytearray(b"<<") + for key, value in self.items(): + if value is None: + continue + value = pdf_repr(value) + out.extend(b"\n") + out.extend(bytes(PdfName(key))) + out.extend(b" ") + out.extend(value) + out.extend(b"\n>>") + return bytes(out) + + if not py3: + __str__ = __bytes__ + + +class PdfBinary: + def __init__(self, data): + self.data = data + + if py3: # Python 3.x + def __bytes__(self): + return make_bytes("<%s>" % "".join("%02X" % b for b in self.data)) + else: # Python 2.x + def __str__(self): + return "<%s>" % "".join("%02X" % ord(b) for b in self.data) + + +class PdfStream: + def __init__(self, dictionary, buf): + self.dictionary = dictionary + self.buf = buf + + def decode(self): + try: + filter = self.dictionary.Filter + except AttributeError: + return self.buf + if filter == b"FlateDecode": + try: + expected_length = self.dictionary.DL + except AttributeError: + expected_length = self.dictionary.Length + return zlib.decompress(self.buf, bufsize=int(expected_length)) + else: + raise NotImplementedError("stream filter %s unknown/unsupported" % repr(self.dictionary.Filter)) + + +def pdf_repr(x): + if x is True: + return b"true" + elif x is False: + return b"false" + elif x is None: + return b"null" + elif isinstance(x, PdfName) or isinstance(x, PdfDict) or isinstance(x, PdfArray) or isinstance(x, PdfBinary): + return bytes(x) + elif isinstance(x, int): + return str(x).encode("us-ascii") + elif isinstance(x, dict): + return bytes(PdfDict(x)) + elif isinstance(x, list): + return bytes(PdfArray(x)) + elif (py3 and isinstance(x, str)) or (not py3 and isinstance(x, unicode)): + return pdf_repr(encode_text(x)) + elif isinstance(x, bytes): + return b"(" + x.replace(b"\\", b"\\\\").replace(b"(", b"\\(").replace(b")", b"\\)") + b")" # XXX escape more chars? handle binary garbage + else: + return bytes(x) + + +class PdfParser: + """Based on https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf + Supports PDF up to 1.4 + """ + + def __init__(self, filename=None, f=None, buf=None, start_offset=0, mode="rb"): + # type: (PdfParser, str, file, Union[bytes, bytearray], int, str) -> None + if buf and f: + raise RuntimeError("specify buf or f or filename, but not both buf and f") + self.filename = filename + self.buf = buf + self.f = f + self.start_offset = start_offset + self.should_close_buf = False + self.should_close_file = False + if filename is not None and f is None: + self.f = f = open(filename, mode) + self.should_close_file = True + if f is not None: + self.buf = buf = self.get_buf_from_file(f) + self.should_close_buf = True + if not filename and hasattr(f, "name"): + self.filename = f.name + self.cached_objects = {} + if buf: + self.read_pdf_info() + else: + self.file_size_total = self.file_size_this = 0 + self.root = PdfDict() + self.root_ref = None + self.info = PdfDict() + self.info_ref = None + self.page_tree_root = {} + self.pages = [] + self.orig_pages = [] + self.pages_ref = None + self.last_xref_section_offset = None + self.trailer_dict = {} + self.xref_table = XrefTable() + self.xref_table.reading_finished = True + if f: + self.seek_end() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + return False # do not suppress exceptions + + def start_writing(self): + self.close_buf() + self.seek_end() + + def close_buf(self): + try: + self.buf.close() + except AttributeError: + pass + self.buf = None + + def close(self): + if self.should_close_buf: + self.close_buf() + if self.f is not None and self.should_close_file: + self.f.close() + self.f = None + + def seek_end(self): + self.f.seek(0, os.SEEK_END) + + def write_header(self): + self.f.write(b"%PDF-1.4\n") + + def write_comment(self, s): + self.f.write(("%% %s\n" % (s,)).encode("utf-8")) + + def write_catalog(self): + self.del_root() + self.root_ref = self.next_object_id(self.f.tell()) + self.pages_ref = self.next_object_id(0) + self.rewrite_pages() + self.write_obj(self.root_ref, + Type=PdfName(b"Catalog"), + Pages=self.pages_ref) + self.write_obj(self.pages_ref, + Type=PdfName(b"Pages"), + Count=len(self.pages), + Kids=self.pages) + return self.root_ref + + def rewrite_pages(self): + pages_tree_nodes_to_delete = [] + for i, page_ref in enumerate(self.orig_pages): + page_info = self.cached_objects[page_ref] + del self.xref_table[page_ref.object_id] + pages_tree_nodes_to_delete.append(page_info[PdfName(b"Parent")]) + if page_ref not in self.pages: + # the page has been deleted + continue + # make dict keys into strings for passing to write_page + stringified_page_info = {} + for key, value in page_info.items(): + # key should be a PdfName + stringified_page_info[key.name_as_str()] = value + stringified_page_info["Parent"] = self.pages_ref + new_page_ref = self.write_page(None, **stringified_page_info) + for j, cur_page_ref in enumerate(self.pages): + if cur_page_ref == page_ref: + # replace the page reference with the new one + self.pages[j] = new_page_ref + # delete redundant Pages tree nodes from xref table + for pages_tree_node_ref in pages_tree_nodes_to_delete: + while pages_tree_node_ref: + pages_tree_node = self.cached_objects[pages_tree_node_ref] + if pages_tree_node_ref.object_id in self.xref_table: + del self.xref_table[pages_tree_node_ref.object_id] + pages_tree_node_ref = pages_tree_node.get(b"Parent", None) + self.orig_pages = [] + + def write_xref_and_trailer(self, new_root_ref=None): + if new_root_ref: + self.del_root() + self.root_ref = new_root_ref + if self.info: + self.info_ref = self.write_obj(None, self.info) + start_xref = self.xref_table.write(self.f) + num_entries = len(self.xref_table) + trailer_dict = {b"Root": self.root_ref, b"Size": num_entries} + if self.last_xref_section_offset is not None: + trailer_dict[b"Prev"] = self.last_xref_section_offset + if self.info: + trailer_dict[b"Info"] = self.info_ref + self.last_xref_section_offset = start_xref + self.f.write(b"trailer\n" + bytes(PdfDict(trailer_dict)) + make_bytes("\nstartxref\n%d\n%%%%EOF" % start_xref)) + + def write_page(self, ref, *objs, **dict_obj): + if isinstance(ref, int): + ref = self.pages[ref] + if "Type" not in dict_obj: + dict_obj["Type"] = PdfName(b"Page") + if "Parent" not in dict_obj: + dict_obj["Parent"] = self.pages_ref + return self.write_obj(ref, *objs, **dict_obj) + + def write_obj(self, ref, *objs, **dict_obj): + f = self.f + if ref is None: + ref = self.next_object_id(f.tell()) + else: + self.xref_table[ref.object_id] = (f.tell(), ref.generation) + f.write(bytes(IndirectObjectDef(*ref))) + stream = dict_obj.pop("stream", None) + if stream is not None: + dict_obj["Length"] = len(stream) + if dict_obj: + f.write(pdf_repr(dict_obj)) + for obj in objs: + f.write(pdf_repr(obj)) + if stream is not None: + f.write(b"stream\n") + f.write(stream) + f.write(b"\nendstream\n") + f.write(b"endobj\n") + return ref + + def del_root(self): + if self.root_ref is None: + return + del self.xref_table[self.root_ref.object_id] + del self.xref_table[self.root[b"Pages"].object_id] + + @staticmethod + def get_buf_from_file(f): + if hasattr(f, "getbuffer"): + return f.getbuffer() + elif hasattr(f, "getvalue"): + return f.getvalue() + else: + try: + return mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) + except ValueError: # cannot mmap an empty file + return b"" + + def read_pdf_info(self): + self.file_size_total = len(self.buf) + self.file_size_this = self.file_size_total - self.start_offset + self.read_trailer() + self.root_ref = self.trailer_dict[b"Root"] + self.info_ref = self.trailer_dict.get(b"Info", None) + self.root = PdfDict(self.read_indirect(self.root_ref)) + if self.info_ref is None: + self.info = PdfDict() + else: + self.info = PdfDict(self.read_indirect(self.info_ref)) + check_format_condition(b"Type" in self.root, "/Type missing in Root") + check_format_condition(self.root[b"Type"] == b"Catalog", "/Type in Root is not /Catalog") + check_format_condition(b"Pages" in self.root, "/Pages missing in Root") + check_format_condition(isinstance(self.root[b"Pages"], IndirectReference), "/Pages in Root is not an indirect reference") + self.pages_ref = self.root[b"Pages"] + self.page_tree_root = self.read_indirect(self.pages_ref) + self.pages = self.linearize_page_tree(self.page_tree_root) + # save the original list of page references in case the user modifies, adds or deletes some pages and we need to rewrite the pages and their list + self.orig_pages = self.pages[:] + + def next_object_id(self, offset=None): + try: + # TODO: support reuse of deleted objects + reference = IndirectReference(max(self.xref_table.keys()) + 1, 0) + except ValueError: + reference = IndirectReference(1, 0) + if offset is not None: + self.xref_table[reference.object_id] = (offset, 0) + return reference + + delimiter = br"[][()<>{}/%]" + delimiter_or_ws = br"[][()<>{}/%\000\011\012\014\015\040]" + whitespace = br"[\000\011\012\014\015\040]" + whitespace_or_hex = br"[\000\011\012\014\015\0400-9a-fA-F]" + whitespace_optional = whitespace + b"*" + whitespace_mandatory = whitespace + b"+" + newline_only = br"[\r\n]+" + newline = whitespace_optional + newline_only + whitespace_optional + re_trailer_end = re.compile(whitespace_mandatory + br"trailer" + whitespace_optional + br"\<\<(.*\>\>)" + newline + + br"startxref" + newline + br"([0-9]+)" + newline + br"%%EOF" + whitespace_optional + br"$", re.DOTALL) + re_trailer_prev = re.compile(whitespace_optional + br"trailer" + whitespace_optional + br"\<\<(.*?\>\>)" + newline + + br"startxref" + newline + br"([0-9]+)" + newline + br"%%EOF" + whitespace_optional, re.DOTALL) + + def read_trailer(self): + search_start_offset = len(self.buf) - 16384 + if search_start_offset < self.start_offset: + search_start_offset = self.start_offset + m = self.re_trailer_end.search(self.buf, search_start_offset) + check_format_condition(m, "trailer end not found") + # make sure we found the LAST trailer + last_match = m + while m: + last_match = m + m = self.re_trailer_end.search(self.buf, m.start()+16) + if not m: + m = last_match + trailer_data = m.group(1) + self.last_xref_section_offset = int(m.group(2)) + self.trailer_dict = self.interpret_trailer(trailer_data) + self.xref_table = XrefTable() + self.read_xref_table(xref_section_offset=self.last_xref_section_offset) + if b"Prev" in self.trailer_dict: + self.read_prev_trailer(self.trailer_dict[b"Prev"]) + + def read_prev_trailer(self, xref_section_offset): + trailer_offset = self.read_xref_table(xref_section_offset=xref_section_offset) + m = self.re_trailer_prev.search(self.buf[trailer_offset:trailer_offset+16384]) + check_format_condition(m, "previous trailer not found") + trailer_data = m.group(1) + check_format_condition(int(m.group(2)) == xref_section_offset, "xref section offset in previous trailer doesn't match what was expected") + trailer_dict = self.interpret_trailer(trailer_data) + if b"Prev" in trailer_dict: + self.read_prev_trailer(trailer_dict[b"Prev"]) + + re_whitespace_optional = re.compile(whitespace_optional) + re_name = re.compile(whitespace_optional + br"/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=" + delimiter_or_ws + br")") + re_dict_start = re.compile(whitespace_optional + br"\<\<") + re_dict_end = re.compile(whitespace_optional + br"\>\>" + whitespace_optional) + + @classmethod + def interpret_trailer(cls, trailer_data): + trailer = {} + offset = 0 + while True: + m = cls.re_name.match(trailer_data, offset) + if not m: + m = cls.re_dict_end.match(trailer_data, offset) + check_format_condition(m and m.end() == len(trailer_data), "name not found in trailer, remaining data: " + repr(trailer_data[offset:])) + break + key = cls.interpret_name(m.group(1)) + value, offset = cls.get_value(trailer_data, m.end()) + trailer[key] = value + check_format_condition(b"Size" in trailer and isinstance(trailer[b"Size"], int), "/Size not in trailer or not an integer") + check_format_condition(b"Root" in trailer and isinstance(trailer[b"Root"], IndirectReference), "/Root not in trailer or not an indirect reference") + return trailer + + re_hashes_in_name = re.compile(br"([^#]*)(#([0-9a-fA-F]{2}))?") + + @classmethod + def interpret_name(cls, raw, as_text=False): + name = b"" + for m in cls.re_hashes_in_name.finditer(raw): + if m.group(3): + name += m.group(1) + bytearray.fromhex(m.group(3).decode("us-ascii")) + else: + name += m.group(1) + if as_text: + return name.decode("utf-8") + else: + return bytes(name) + + re_null = re.compile(whitespace_optional + br"null(?=" + delimiter_or_ws + br")") + re_true = re.compile(whitespace_optional + br"true(?=" + delimiter_or_ws + br")") + re_false = re.compile(whitespace_optional + br"false(?=" + delimiter_or_ws + br")") + re_int = re.compile(whitespace_optional + br"([-+]?[0-9]+)(?=" + delimiter_or_ws + br")") + re_real = re.compile(whitespace_optional + br"([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=" + delimiter_or_ws + br")") + re_array_start = re.compile(whitespace_optional + br"\[") + re_array_end = re.compile(whitespace_optional + br"]") + re_string_hex = re.compile(whitespace_optional + br"\<(" + whitespace_or_hex + br"*)\>") + re_string_lit = re.compile(whitespace_optional + br"\(") + re_indirect_reference = re.compile(whitespace_optional + br"([-+]?[0-9]+)" + whitespace_mandatory + br"([-+]?[0-9]+)" + whitespace_mandatory + br"R(?=" + delimiter_or_ws + br")") + re_indirect_def_start = re.compile(whitespace_optional + br"([-+]?[0-9]+)" + whitespace_mandatory + br"([-+]?[0-9]+)" + whitespace_mandatory + br"obj(?=" + delimiter_or_ws + br")") + re_indirect_def_end = re.compile(whitespace_optional + br"endobj(?=" + delimiter_or_ws + br")") + re_comment = re.compile(br"(" + whitespace_optional + br"%[^\r\n]*" + newline + br")*") + re_stream_start = re.compile(whitespace_optional + br"stream\r?\n") + re_stream_end = re.compile(whitespace_optional + br"endstream(?=" + delimiter_or_ws + br")") + + @classmethod + def get_value(cls, data, offset, expect_indirect=None, max_nesting=-1): + if max_nesting == 0: + return None, None + m = cls.re_comment.match(data, offset) + if m: + offset = m.end() + m = cls.re_indirect_def_start.match(data, offset) + if m: + check_format_condition(int(m.group(1)) > 0, "indirect object definition: object ID must be greater than 0") + check_format_condition(int(m.group(2)) >= 0, "indirect object definition: generation must be non-negative") + check_format_condition(expect_indirect is None or expect_indirect == IndirectReference(int(m.group(1)), int(m.group(2))), + "indirect object definition different than expected") + object, offset = cls.get_value(data, m.end(), max_nesting=max_nesting-1) + if offset is None: + return object, None + m = cls.re_indirect_def_end.match(data, offset) + check_format_condition(m, "indirect object definition end not found") + return object, m.end() + check_format_condition(not expect_indirect, "indirect object definition not found") + m = cls.re_indirect_reference.match(data, offset) + if m: + check_format_condition(int(m.group(1)) > 0, "indirect object reference: object ID must be greater than 0") + check_format_condition(int(m.group(2)) >= 0, "indirect object reference: generation must be non-negative") + return IndirectReference(int(m.group(1)), int(m.group(2))), m.end() + m = cls.re_dict_start.match(data, offset) + if m: + offset = m.end() + result = {} + m = cls.re_dict_end.match(data, offset) + while not m: + key, offset = cls.get_value(data, offset, max_nesting=max_nesting-1) + if offset is None: + return result, None + value, offset = cls.get_value(data, offset, max_nesting=max_nesting-1) + result[key] = value + if offset is None: + return result, None + m = cls.re_dict_end.match(data, offset) + offset = m.end() + m = cls.re_stream_start.match(data, offset) + if m: + try: + stream_len = int(result[b"Length"]) + except (TypeError, KeyError, ValueError): + raise PdfFormatError("bad or missing Length in stream dict (%r)" % result.get(b"Length", None)) + stream_data = data[m.end():m.end() + stream_len] + m = cls.re_stream_end.match(data, m.end() + stream_len) + check_format_condition(m, "stream end not found") + offset = m.end() + result = PdfStream(PdfDict(result), stream_data) + else: + result = PdfDict(result) + return result, offset + m = cls.re_array_start.match(data, offset) + if m: + offset = m.end() + result = [] + m = cls.re_array_end.match(data, offset) + while not m: + value, offset = cls.get_value(data, offset, max_nesting=max_nesting-1) + result.append(value) + if offset is None: + return result, None + m = cls.re_array_end.match(data, offset) + return result, m.end() + m = cls.re_null.match(data, offset) + if m: + return None, m.end() + m = cls.re_true.match(data, offset) + if m: + return True, m.end() + m = cls.re_false.match(data, offset) + if m: + return False, m.end() + m = cls.re_name.match(data, offset) + if m: + return PdfName(cls.interpret_name(m.group(1))), m.end() + m = cls.re_int.match(data, offset) + if m: + return int(m.group(1)), m.end() + m = cls.re_real.match(data, offset) + if m: + return float(m.group(1)), m.end() # XXX Decimal instead of float??? + m = cls.re_string_hex.match(data, offset) + if m: + hex_string = bytearray([b for b in m.group(1) if b in b"0123456789abcdefABCDEF"]) # filter out whitespace + if len(hex_string) % 2 == 1: + hex_string.append(ord(b"0")) # append a 0 if the length is not even - yes, at the end + return bytearray.fromhex(hex_string.decode("us-ascii")), m.end() + m = cls.re_string_lit.match(data, offset) + if m: + return cls.get_literal_string(data, m.end()) + #return None, offset # fallback (only for debugging) + raise PdfFormatError("unrecognized object: " + repr(data[offset:offset+32])) + + re_lit_str_token = re.compile(br"(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))") + escaped_chars = { + b"n": b"\n", + b"r": b"\r", + b"t": b"\t", + b"b": b"\b", + b"f": b"\f", + b"(": b"(", + b")": b")", + b"\\": b"\\", + ord(b"n"): b"\n", + ord(b"r"): b"\r", + ord(b"t"): b"\t", + ord(b"b"): b"\b", + ord(b"f"): b"\f", + ord(b"("): b"(", + ord(b")"): b")", + ord(b"\\"): b"\\", + } + + @classmethod + def get_literal_string(cls, data, offset): + nesting_depth = 0 + result = bytearray() + for m in cls.re_lit_str_token.finditer(data, offset): + result.extend(data[offset:m.start()]) + if m.group(1): + result.extend(cls.escaped_chars[m.group(1)[1]]) + elif m.group(2): + result.append(int(m.group(2)[1:], 8)) + elif m.group(3): + pass + elif m.group(5): + result.extend(b"\n") + elif m.group(6): + result.extend(b"(") + nesting_depth += 1 + elif m.group(7): + if nesting_depth == 0: + return bytes(result), m.end() + result.extend(b")") + nesting_depth -= 1 + offset = m.end() + raise PdfFormatError("unfinished literal string") + + re_xref_section_start = re.compile(whitespace_optional + br"xref" + newline) + re_xref_subsection_start = re.compile(whitespace_optional + br"([0-9]+)" + whitespace_mandatory + br"([0-9]+)" + whitespace_optional + newline_only) + re_xref_entry = re.compile(br"([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)") + + def read_xref_table(self, xref_section_offset): + subsection_found = False + m = self.re_xref_section_start.match(self.buf, xref_section_offset + self.start_offset) + check_format_condition(m, "xref section start not found") + offset = m.end() + while True: + m = self.re_xref_subsection_start.match(self.buf, offset) + if not m: + check_format_condition(subsection_found, "xref subsection start not found") + break + subsection_found = True + offset = m.end() + first_object = int(m.group(1)) + num_objects = int(m.group(2)) + for i in range(first_object, first_object+num_objects): + m = self.re_xref_entry.match(self.buf, offset) + check_format_condition(m, "xref entry not found") + offset = m.end() + is_free = m.group(3) == b"f" + generation = int(m.group(2)) + if not is_free: + new_entry = (int(m.group(1)), generation) + check_format_condition(i not in self.xref_table or self.xref_table[i] == new_entry, "xref entry duplicated (and not identical)") + self.xref_table[i] = new_entry + return offset + + def read_indirect(self, ref, max_nesting=-1): + offset, generation = self.xref_table[ref[0]] + check_format_condition(generation == ref[1], "expected to find generation %s for object ID %s in xref table, instead found generation %s at offset %s" \ + % (ref[1], ref[0], generation, offset)) + value = self.get_value(self.buf, offset + self.start_offset, expect_indirect=IndirectReference(*ref), max_nesting=max_nesting)[0] + self.cached_objects[ref] = value + return value + + def linearize_page_tree(self, node=None): + if node is None: + node = self.page_tree_root + check_format_condition(node[b"Type"] == b"Pages", "/Type of page tree node is not /Pages") + pages = [] + for kid in node[b"Kids"]: + kid_object = self.read_indirect(kid) + if kid_object[b"Type"] == b"Page": + pages.append(kid) + else: + pages.extend(self.linearize_page_tree(node=kid_object)) + return pages diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfParser.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PdfParser.pyc new file mode 100644 index 0000000000000000000000000000000000000000..93357ec7580ee9ef67c030eba4ac3b914391fd00 GIT binary patch literal 32808 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 Wf5*n>HXi6-)xU3J&&Ew%1OE>PtG_(} literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PixarImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PixarImagePlugin.py new file mode 100644 index 0000000..220577c --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PixarImagePlugin.py @@ -0,0 +1,71 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIXAR raster support for PIL +# +# history: +# 97-01-29 fl Created +# +# notes: +# This is incomplete; it is based on a few samples created with +# Photoshop 2.5 and 3.0, and a summary description provided by +# Greg Coats . Hopefully, "L" and +# "RGBA" support will be added in future versions. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile +from ._binary import i16le as i16 + +__version__ = "0.1" + + +# +# helpers + +def _accept(prefix): + return prefix[:4] == b"\200\350\000\000" + + +## +# Image plugin for PIXAR raster images. + +class PixarImageFile(ImageFile.ImageFile): + + format = "PIXAR" + format_description = "PIXAR raster image" + + def _open(self): + + # assuming a 4-byte magic label + s = self.fp.read(4) + if s != b"\200\350\000\000": + raise SyntaxError("not a PIXAR file") + + # read rest of header + s = s + self.fp.read(508) + + self.size = i16(s[418:420]), i16(s[416:418]) + + # get channel/depth descriptions + mode = i16(s[424:426]), i16(s[426:428]) + + if mode == (14, 2): + self.mode = "RGB" + # FIXME: to be continued... + + # create tile descriptor (assuming "dumped") + self.tile = [("raw", (0, 0)+self.size, 1024, (self.mode, 0, 1))] + + +# +# -------------------------------------------------------------------- + +Image.register_open(PixarImageFile.format, PixarImageFile, _accept) + +Image.register_extension(PixarImageFile.format, ".pxr") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PixarImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PixarImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45f738efc5949fc980992a6b27ffd609ba48532f GIT binary patch literal 1479 zcmb_bO>fgc5S_K1&!!&~NW}p)T&f_{hH~f$At(Y=gsR9D5`=?g;&rsaajf;0rqD`= z@chX!$_QTBOuc4lYh&8+)#zTV8fzv$ES=iz%7D}M`!@E4R2 zjRf@sjU4JZBv|WE;?l^YUI}}bdS!|{`asmHP*fu6(9oe+P*i5+3DNUjm876yjbxRE zbw*jC6PE;Q=cd{SDh^Pky><=pl>oFIfGGiXM&UpjKCse5mB=<**h96smB`%1_U6WB zpVhqB_dZs>064Pcw2=HO2NBqIS9yHO@a_j<;Y-DxWk{Kpv6>W0KFPNL9W%;0nab8x znwv05)*nChgIiBJU6mx`gHCsc#Yw1bj@@K`pwf-(&{W_Wg#EtE%qm~SnUOG@*UX$t z>hl5rIR9;|{3<|#Tkr{VxF6yL9`V}}B*ZP#W-PfR-?(Hb> zK6cnE@ctZBDXRT#Sfi+J_b@z$En+Tni}Wc)^VYS*!J`F=F537Wtwc*!Ld->qE>P@J z?9src7ho6({k??h{^@VN1YJ5dt*}+_6N7N|3rwp|44)Z3GJIh;W%$a#ZBlj+nLz*1 zHfki&;eo=36k&j7!#cCJvpY3`U7LphloG|6feUFFMrIDe-eGFO$pfv&+TM(5wg$O+ zBdstRM}=T`>N$9EE|b_GLCSqj@q9*=-&!!vWO{=y=3ydtSv16=+jOqGYfeKnyfzz| zDj*2ba3q7k)a?d|?kBwEDT~K?6dJ=<6k-s`ysuSe)HwB7JLA not yet available + (8, 6): ("RGBA", "RGBA"), + (16, 6): ("RGBA", "RGBA;16B"), +} + + +_simple_palette = re.compile(b'^\xff*\x00\xff*$') + +# Maximum decompressed size for a iTXt or zTXt chunk. +# Eliminates decompression bombs where compressed chunks can expand 1000x +MAX_TEXT_CHUNK = ImageFile.SAFEBLOCK +# Set the maximum total text chunk size. +MAX_TEXT_MEMORY = 64 * MAX_TEXT_CHUNK + + +def _safe_zlib_decompress(s): + dobj = zlib.decompressobj() + plaintext = dobj.decompress(s, MAX_TEXT_CHUNK) + if dobj.unconsumed_tail: + raise ValueError("Decompressed Data Too Large") + return plaintext + + +def _crc32(data, seed=0): + return zlib.crc32(data, seed) & 0xffffffff + + +# -------------------------------------------------------------------- +# Support classes. Suitable for PNG and related formats like MNG etc. + +class ChunkStream(object): + + def __init__(self, fp): + + self.fp = fp + self.queue = [] + + def read(self): + "Fetch a new chunk. Returns header information." + cid = None + + if self.queue: + cid, pos, length = self.queue.pop() + self.fp.seek(pos) + else: + s = self.fp.read(8) + cid = s[4:] + pos = self.fp.tell() + length = i32(s) + + if not is_cid(cid): + if not ImageFile.LOAD_TRUNCATED_IMAGES: + raise SyntaxError("broken PNG file (chunk %s)" % repr(cid)) + + return cid, pos, length + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + self.queue = self.crc = self.fp = None + + def push(self, cid, pos, length): + + self.queue.append((cid, pos, length)) + + def call(self, cid, pos, length): + "Call the appropriate chunk handler" + + logger.debug("STREAM %r %s %s", cid, pos, length) + return getattr(self, "chunk_" + cid.decode('ascii'))(pos, length) + + def crc(self, cid, data): + "Read and verify checksum" + + # Skip CRC checks for ancillary chunks if allowed to load truncated images + # 5th byte of first char is 1 [specs, section 5.4] + if ImageFile.LOAD_TRUNCATED_IMAGES and (i8(cid[0]) >> 5 & 1): + self.crc_skip(cid, data) + return + + try: + crc1 = _crc32(data, _crc32(cid)) + crc2 = i32(self.fp.read(4)) + if crc1 != crc2: + raise SyntaxError("broken PNG file (bad header checksum in %r)" + % cid) + except struct.error: + raise SyntaxError("broken PNG file (incomplete checksum in %r)" + % cid) + + def crc_skip(self, cid, data): + "Read checksum. Used if the C module is not present" + + self.fp.read(4) + + def verify(self, endchunk=b"IEND"): + + # Simple approach; just calculate checksum for all remaining + # blocks. Must be called directly after open. + + cids = [] + + while True: + try: + cid, pos, length = self.read() + except struct.error: + raise IOError("truncated PNG file") + + if cid == endchunk: + break + self.crc(cid, ImageFile._safe_read(self.fp, length)) + cids.append(cid) + + return cids + + +class iTXt(str): + """ + Subclass of string to allow iTXt chunks to look like strings while + keeping their extra information + + """ + @staticmethod + def __new__(cls, text, lang, tkey): + """ + :param cls: the class to use when creating the instance + :param text: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + """ + + self = str.__new__(cls, text) + self.lang = lang + self.tkey = tkey + return self + + +class PngInfo(object): + """ + PNG chunk container (for use with save(pnginfo=)) + + """ + + def __init__(self): + self.chunks = [] + + def add(self, cid, data): + """Appends an arbitrary chunk. Use with caution. + + :param cid: a byte string, 4 bytes long. + :param data: a byte string of the encoded data + + """ + + self.chunks.append((cid, data)) + + def add_itxt(self, key, value, lang="", tkey="", zip=False): + """Appends an iTXt chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + :param zip: compression flag + + """ + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + if not isinstance(value, bytes): + value = value.encode("utf-8", "strict") + if not isinstance(lang, bytes): + lang = lang.encode("utf-8", "strict") + if not isinstance(tkey, bytes): + tkey = tkey.encode("utf-8", "strict") + + if zip: + self.add(b"iTXt", key + b"\0\x01\0" + lang + b"\0" + tkey + b"\0" + + zlib.compress(value)) + else: + self.add(b"iTXt", key + b"\0\0\0" + lang + b"\0" + tkey + b"\0" + + value) + + def add_text(self, key, value, zip=False): + """Appends a text chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key, text or an + :py:class:`PIL.PngImagePlugin.iTXt` instance + :param zip: compression flag + + """ + if isinstance(value, iTXt): + return self.add_itxt(key, value, value.lang, value.tkey, zip=zip) + + # The tEXt chunk stores latin-1 text + if not isinstance(value, bytes): + try: + value = value.encode('latin-1', 'strict') + except UnicodeError: + return self.add_itxt(key, value, zip=zip) + + if not isinstance(key, bytes): + key = key.encode('latin-1', 'strict') + + if zip: + self.add(b"zTXt", key + b"\0\0" + zlib.compress(value)) + else: + self.add(b"tEXt", key + b"\0" + value) + + +# -------------------------------------------------------------------- +# PNG image stream (IHDR/IEND) + +class PngStream(ChunkStream): + + def __init__(self, fp): + + ChunkStream.__init__(self, fp) + + # local copies of Image attributes + self.im_info = {} + self.im_text = {} + self.im_size = (0, 0) + self.im_mode = None + self.im_tile = None + self.im_palette = None + + self.text_memory = 0 + + def check_text_memory(self, chunklen): + self.text_memory += chunklen + if self.text_memory > MAX_TEXT_MEMORY: + raise ValueError("Too much memory used in text chunks: %s>MAX_TEXT_MEMORY" % + self.text_memory) + + def chunk_iCCP(self, pos, length): + + # ICC profile + s = ImageFile._safe_read(self.fp, length) + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + i = s.find(b"\0") + logger.debug("iCCP profile name %r", s[:i]) + logger.debug("Compression method %s", i8(s[i])) + comp_method = i8(s[i]) + if comp_method != 0: + raise SyntaxError("Unknown compression method %s in iCCP chunk" % + comp_method) + try: + icc_profile = _safe_zlib_decompress(s[i+2:]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + icc_profile = None + else: + raise + except zlib.error: + icc_profile = None # FIXME + self.im_info["icc_profile"] = icc_profile + return s + + def chunk_IHDR(self, pos, length): + + # image header + s = ImageFile._safe_read(self.fp, length) + self.im_size = i32(s), i32(s[4:]) + try: + self.im_mode, self.im_rawmode = _MODES[(i8(s[8]), i8(s[9]))] + except: + pass + if i8(s[12]): + self.im_info["interlace"] = 1 + if i8(s[11]): + raise SyntaxError("unknown filter category") + return s + + def chunk_IDAT(self, pos, length): + + # image data + self.im_tile = [("zip", (0, 0)+self.im_size, pos, self.im_rawmode)] + self.im_idat = length + raise EOFError + + def chunk_IEND(self, pos, length): + + # end of PNG image + raise EOFError + + def chunk_PLTE(self, pos, length): + + # palette + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + self.im_palette = "RGB", s + return s + + def chunk_tRNS(self, pos, length): + + # transparency + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + if _simple_palette.match(s): + # tRNS contains only one full-transparent entry, + # other entries are full opaque + i = s.find(b"\0") + if i >= 0: + self.im_info["transparency"] = i + else: + # otherwise, we have a byte string with one alpha value + # for each palette entry + self.im_info["transparency"] = s + elif self.im_mode == "L": + self.im_info["transparency"] = i16(s) + elif self.im_mode == "RGB": + self.im_info["transparency"] = i16(s), i16(s[2:]), i16(s[4:]) + return s + + def chunk_gAMA(self, pos, length): + # gamma setting + s = ImageFile._safe_read(self.fp, length) + self.im_info["gamma"] = i32(s) / 100000.0 + return s + + def chunk_cHRM(self, pos, length): + # chromaticity, 8 unsigned ints, actual value is scaled by 100,000 + # WP x,y, Red x,y, Green x,y Blue x,y + + s = ImageFile._safe_read(self.fp, length) + raw_vals = struct.unpack('>%dI' % (len(s) // 4), s) + self.im_info['chromaticity'] = tuple(elt/100000.0 for elt in raw_vals) + return s + + def chunk_sRGB(self, pos, length): + # srgb rendering intent, 1 byte + # 0 perceptual + # 1 relative colorimetric + # 2 saturation + # 3 absolute colorimetric + + s = ImageFile._safe_read(self.fp, length) + self.im_info['srgb'] = i8(s) + return s + + def chunk_pHYs(self, pos, length): + + # pixels per unit + s = ImageFile._safe_read(self.fp, length) + px, py = i32(s), i32(s[4:]) + unit = i8(s[8]) + if unit == 1: # meter + dpi = int(px * 0.0254 + 0.5), int(py * 0.0254 + 0.5) + self.im_info["dpi"] = dpi + elif unit == 0: + self.im_info["aspect"] = px, py + return s + + def chunk_tEXt(self, pos, length): + + # text + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + # fallback for broken tEXt tags + k = s + v = b"" + if k: + if py3: + k = k.decode('latin-1', 'strict') + v = v.decode('latin-1', 'replace') + + self.im_info[k] = self.im_text[k] = v + self.check_text_memory(len(v)) + + return s + + def chunk_zTXt(self, pos, length): + + # compressed text + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + k = s + v = b"" + if v: + comp_method = i8(v[0]) + else: + comp_method = 0 + if comp_method != 0: + raise SyntaxError("Unknown compression method %s in zTXt chunk" % + comp_method) + try: + v = _safe_zlib_decompress(v[1:]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + v = b"" + else: + raise + except zlib.error: + v = b"" + + if k: + if py3: + k = k.decode('latin-1', 'strict') + v = v.decode('latin-1', 'replace') + + self.im_info[k] = self.im_text[k] = v + self.check_text_memory(len(v)) + + return s + + def chunk_iTXt(self, pos, length): + + # international text + r = s = ImageFile._safe_read(self.fp, length) + try: + k, r = r.split(b"\0", 1) + except ValueError: + return s + if len(r) < 2: + return s + cf, cm, r = i8(r[0]), i8(r[1]), r[2:] + try: + lang, tk, v = r.split(b"\0", 2) + except ValueError: + return s + if cf != 0: + if cm == 0: + try: + v = _safe_zlib_decompress(v) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + else: + raise + except zlib.error: + return s + else: + return s + if py3: + try: + k = k.decode("latin-1", "strict") + lang = lang.decode("utf-8", "strict") + tk = tk.decode("utf-8", "strict") + v = v.decode("utf-8", "strict") + except UnicodeError: + return s + + self.im_info[k] = self.im_text[k] = iTXt(v, lang, tk) + self.check_text_memory(len(v)) + + return s + + +# -------------------------------------------------------------------- +# PNG reader + +def _accept(prefix): + return prefix[:8] == _MAGIC + + +## +# Image plugin for PNG images. + +class PngImageFile(ImageFile.ImageFile): + + format = "PNG" + format_description = "Portable network graphics" + + def _open(self): + + if self.fp.read(8) != _MAGIC: + raise SyntaxError("not a PNG file") + + # + # Parse headers up to the first IDAT chunk + + self.png = PngStream(self.fp) + + while True: + + # + # get next chunk + + cid, pos, length = self.png.read() + + try: + s = self.png.call(cid, pos, length) + except EOFError: + break + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + + self.png.crc(cid, s) + + # + # Copy relevant attributes from the PngStream. An alternative + # would be to let the PngStream class modify these attributes + # directly, but that introduces circular references which are + # difficult to break if things go wrong in the decoder... + # (believe me, I've tried ;-) + + self.mode = self.png.im_mode + self.size = self.png.im_size + self.info = self.png.im_info + self.text = self.png.im_text # experimental + self.tile = self.png.im_tile + + if self.png.im_palette: + rawmode, data = self.png.im_palette + self.palette = ImagePalette.raw(rawmode, data) + + self.__idat = length # used by load_read() + + def verify(self): + "Verify PNG file" + + if self.fp is None: + raise RuntimeError("verify must be called directly after open") + + # back up to beginning of IDAT block + self.fp.seek(self.tile[0][2] - 8) + + self.png.verify() + self.png.close() + + self.fp = None + + def load_prepare(self): + "internal: prepare to read PNG file" + + if self.info.get("interlace"): + self.decoderconfig = self.decoderconfig + (1,) + + ImageFile.ImageFile.load_prepare(self) + + def load_read(self, read_bytes): + "internal: read more image data" + + while self.__idat == 0: + # end of chunk, skip forward to next one + + self.fp.read(4) # CRC + + cid, pos, length = self.png.read() + + if cid not in [b"IDAT", b"DDAT"]: + self.png.push(cid, pos, length) + return b"" + + self.__idat = length # empty chunks are allowed + + # read more data from this chunk + if read_bytes <= 0: + read_bytes = self.__idat + else: + read_bytes = min(read_bytes, self.__idat) + + self.__idat = self.__idat - read_bytes + + return self.fp.read(read_bytes) + + def load_end(self): + "internal: finished reading image data" + + self.png.close() + self.png = None + + +# -------------------------------------------------------------------- +# PNG writer + +_OUTMODES = { + # supported PIL modes, and corresponding rawmodes/bits/color combinations + "1": ("1", b'\x01\x00'), + "L;1": ("L;1", b'\x01\x00'), + "L;2": ("L;2", b'\x02\x00'), + "L;4": ("L;4", b'\x04\x00'), + "L": ("L", b'\x08\x00'), + "LA": ("LA", b'\x08\x04'), + "I": ("I;16B", b'\x10\x00'), + "P;1": ("P;1", b'\x01\x03'), + "P;2": ("P;2", b'\x02\x03'), + "P;4": ("P;4", b'\x04\x03'), + "P": ("P", b'\x08\x03'), + "RGB": ("RGB", b'\x08\x02'), + "RGBA": ("RGBA", b'\x08\x06'), +} + + +def putchunk(fp, cid, *data): + """Write a PNG chunk (including CRC field)""" + + data = b"".join(data) + + fp.write(o32(len(data)) + cid) + fp.write(data) + crc = _crc32(data, _crc32(cid)) + fp.write(o32(crc)) + + +class _idat(object): + # wrap output from the encoder in IDAT chunks + + def __init__(self, fp, chunk): + self.fp = fp + self.chunk = chunk + + def write(self, data): + self.chunk(self.fp, b"IDAT", data) + + +def _save(im, fp, filename, chunk=putchunk): + # save an image to disk (called by the save method) + + mode = im.mode + + if mode == "P": + + # + # attempt to minimize storage requirements for palette images + if "bits" in im.encoderinfo: + # number of bits specified by user + colors = 1 << im.encoderinfo["bits"] + else: + # check palette contents + if im.palette: + colors = max(min(len(im.palette.getdata()[1])//3, 256), 2) + else: + colors = 256 + + if colors <= 2: + bits = 1 + elif colors <= 4: + bits = 2 + elif colors <= 16: + bits = 4 + else: + bits = 8 + if bits != 8: + mode = "%s;%d" % (mode, bits) + + # encoder options + im.encoderconfig = (im.encoderinfo.get("optimize", False), + im.encoderinfo.get("compress_level", -1), + im.encoderinfo.get("compress_type", -1), + im.encoderinfo.get("dictionary", b"")) + + # get the corresponding PNG mode + try: + rawmode, mode = _OUTMODES[mode] + except KeyError: + raise IOError("cannot write mode %s as PNG" % mode) + + # + # write minimal PNG file + + fp.write(_MAGIC) + + chunk(fp, b"IHDR", + o32(im.size[0]), o32(im.size[1]), # 0: size + mode, # 8: depth/type + b'\0', # 10: compression + b'\0', # 11: filter category + b'\0') # 12: interlace flag + + chunks = [b"cHRM", b"gAMA", b"sBIT", b"sRGB", b"tIME"] + + icc = im.encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + # ICC profile + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + name = b"ICC Profile" + data = name + b"\0\0" + zlib.compress(icc) + chunk(fp, b"iCCP", data) + + # You must either have sRGB or iCCP. + # Disallow sRGB chunks when an iCCP-chunk has been emitted. + chunks.remove(b"sRGB") + + info = im.encoderinfo.get("pnginfo") + if info: + chunks_multiple_allowed = [b"sPLT", b"iTXt", b"tEXt", b"zTXt"] + for cid, data in info.chunks: + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + elif cid in chunks_multiple_allowed: + chunk(fp, cid, data) + + if im.mode == "P": + palette_byte_number = (2 ** bits) * 3 + palette_bytes = im.im.getpalette("RGB")[:palette_byte_number] + while len(palette_bytes) < palette_byte_number: + palette_bytes += b'\0' + chunk(fp, b"PLTE", palette_bytes) + + transparency = im.encoderinfo.get('transparency', + im.info.get('transparency', None)) + + if transparency or transparency == 0: + if im.mode == "P": + # limit to actual palette size + alpha_bytes = 2**bits + if isinstance(transparency, bytes): + chunk(fp, b"tRNS", transparency[:alpha_bytes]) + else: + transparency = max(0, min(255, transparency)) + alpha = b'\xFF' * transparency + b'\0' + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + elif im.mode == "L": + transparency = max(0, min(65535, transparency)) + chunk(fp, b"tRNS", o16(transparency)) + elif im.mode == "RGB": + red, green, blue = transparency + chunk(fp, b"tRNS", o16(red) + o16(green) + o16(blue)) + else: + if "transparency" in im.encoderinfo: + # don't bother with transparency if it's an RGBA + # and it's in the info dict. It's probably just stale. + raise IOError("cannot use transparency for this mode") + else: + if im.mode == "P" and im.im.getpalettemode() == "RGBA": + alpha = im.im.getpalette("RGBA", "A") + alpha_bytes = 2**bits + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + + dpi = im.encoderinfo.get("dpi") + if dpi: + chunk(fp, b"pHYs", + o32(int(dpi[0] / 0.0254 + 0.5)), + o32(int(dpi[1] / 0.0254 + 0.5)), + b'\x01') + + info = im.encoderinfo.get("pnginfo") + if info: + chunks = [b"bKGD", b"hIST"] + for cid, data in info.chunks: + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + + ImageFile._save(im, _idat(fp, chunk), + [("zip", (0, 0)+im.size, 0, rawmode)]) + + chunk(fp, b"IEND", b"") + + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- +# PNG chunk converter + +def getchunks(im, **params): + """Return a list of PNG chunks representing this image.""" + + class collector(object): + data = [] + + def write(self, data): + pass + + def append(self, chunk): + self.data.append(chunk) + + def append(fp, cid, *data): + data = b"".join(data) + crc = o32(_crc32(data, _crc32(cid))) + fp.append((cid, data, crc)) + + fp = collector() + + try: + im.encoderinfo = params + _save(im, fp, None, append) + finally: + del im.encoderinfo + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(PngImageFile.format, PngImageFile, _accept) +Image.register_save(PngImageFile.format, _save) + +Image.register_extension(PngImageFile.format, ".png") + +Image.register_mime(PngImageFile.format, "image/png") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PngImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PngImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dad16acd617d6a9861b4ffe0348a413411898aa1 GIT binary patch literal 23954 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PpmImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PpmImagePlugin.py new file mode 100644 index 0000000..c599ba8 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PpmImagePlugin.py @@ -0,0 +1,157 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PPM support for PIL +# +# History: +# 96-03-24 fl Created +# 98-03-06 fl Write RGBA images (as RGB, that is) +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile + +__version__ = "0.2" + +# +# -------------------------------------------------------------------- + +b_whitespace = b'\x20\x09\x0a\x0b\x0c\x0d' + +MODES = { + # standard + b"P4": "1", + b"P5": "L", + b"P6": "RGB", + # extensions + b"P0CMYK": "CMYK", + # PIL extensions (for test purposes only) + b"PyP": "P", + b"PyRGBA": "RGBA", + b"PyCMYK": "CMYK" +} + + +def _accept(prefix): + return prefix[0:1] == b"P" and prefix[1] in b"0456y" + + +## +# Image plugin for PBM, PGM, and PPM images. + +class PpmImageFile(ImageFile.ImageFile): + + format = "PPM" + format_description = "Pbmplus image" + + def _token(self, s=b""): + while True: # read until next whitespace + c = self.fp.read(1) + if not c or c in b_whitespace: + break + if c > b'\x79': + raise ValueError("Expected ASCII value, found binary") + s = s + c + if (len(s) > 9): + raise ValueError("Expected int, got > 9 digits") + return s + + def _open(self): + + # check magic + s = self.fp.read(1) + if s != b"P": + raise SyntaxError("not a PPM file") + mode = MODES[self._token(s)] + + if mode == "1": + self.mode = "1" + rawmode = "1;I" + else: + self.mode = rawmode = mode + + for ix in range(3): + while True: + while True: + s = self.fp.read(1) + if s not in b_whitespace: + break + if s == b"": + raise ValueError("File does not extend beyond magic number") + if s != b"#": + break + s = self.fp.readline() + s = int(self._token(s)) + if ix == 0: + xsize = s + elif ix == 1: + ysize = s + if mode == "1": + break + elif ix == 2: + # maxgrey + if s > 255: + if not mode == 'L': + raise ValueError("Too many colors for band: %s" % s) + if s < 2**16: + self.mode = 'I' + rawmode = 'I;16B' + else: + self.mode = 'I' + rawmode = 'I;32B' + + self.size = xsize, ysize + self.tile = [("raw", + (0, 0, xsize, ysize), + self.fp.tell(), + (rawmode, 0, 1))] + + +# +# -------------------------------------------------------------------- + +def _save(im, fp, filename): + if im.mode == "1": + rawmode, head = "1;I", b"P4" + elif im.mode == "L": + rawmode, head = "L", b"P5" + elif im.mode == "I": + if im.getextrema()[1] < 2**16: + rawmode, head = "I;16B", b"P5" + else: + rawmode, head = "I;32B", b"P5" + elif im.mode == "RGB": + rawmode, head = "RGB", b"P6" + elif im.mode == "RGBA": + rawmode, head = "RGB", b"P6" + else: + raise IOError("cannot write mode %s as PPM" % im.mode) + fp.write(head + ("\n%d %d\n" % im.size).encode('ascii')) + if head == b"P6": + fp.write(b"255\n") + if head == b"P5": + if rawmode == "L": + fp.write(b"255\n") + elif rawmode == "I;16B": + fp.write(b"65535\n") + elif rawmode == "I;32B": + fp.write(b"2147483648\n") + ImageFile._save(im, fp, [("raw", (0, 0)+im.size, 0, (rawmode, 0, 1))]) + + # ALTERNATIVE: save via builtin debug function + # im._dump(filename) + +# +# -------------------------------------------------------------------- + + +Image.register_open(PpmImageFile.format, PpmImageFile, _accept) +Image.register_save(PpmImageFile.format, _save) + +Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm"]) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PpmImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PpmImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..04308e5c9fbc6c1a6acec714bfcb5951b50dda88 GIT binary patch literal 3702 zcmb_eOLH4l7CyK2vSc}Sti;9;LI+5dsLIRFVF*Q$m`uum6IB~X;Th;^tFJ`cQmfs! z9ZO&rGnf_2SgO&6eLVQ}Y96!*5{6X68HRN|94!m5QzVI_KPT?|FTFbH7ei z=92&Zxk*dI%)iiu_$lfTbro$Z>N>RTkP0#6D9q7zo}v zjG;o|B!()5Qy9)rIBkhDw6{Jy z0T6Wb4rdvs6ec{sL86?X*`PK{)$O| zKp9c`6}xK}=^+Q5C^~lN$f2sa#sf6Nhv^bEVz?S24(;VB-6X^c*MayqikPLCJAbU$ zvsi$^?uTejL<>XF{T$)<01{huPJ?@rbCNa#^C}2;`iX94I&^Pst#53&4};EuzT&oe z2XW}`L~)P~BF;#2;k0ZNXII>IFLU2<|LBHMJIah`mxTH#JU=TUc&bq(v_nofkS$5)DQsp9O21PdX-@C>F~fFmd_7EvtVP)5ppQ~ zoI?e+59le-agO3C4rbnxu%g0^rEk|HX=111oewY~B9f=s`C5gc(D#k%<*idr?8h zae?;xbOfRj;<^xvlDyX5N2;;^NDYN1MF<;kdQ}qkk>Wg`V!HWK@kP%tcg|kc<~jg) z54H0T70!%2ca}Z3|KlmjtWe}69QNP{g;Asystc|L^w;>>_zme20*>eu8+?R<2Uk%m zN3A@y5nb%Umx53@=aC1ta0JWD8LVSuf8aJ6n{ErB;&G)5STEk(h;mqXoLz>qmO;l2 zd)m0XNB1+$rKJZw41kQN>Ba}$9i2*^zh-fh)kXhfH4NfXd>{3C5RV6Lv)AdR1|^!h zJ3$=2Pm$4=mi zI#-r=fxDNvyNph-8yA#=#P+_N*Eg(!Z#3Z9^S}UB=JygE-@?Q+&{1wyiofPm0S0Af z%Bk@PD5wf7)MTuw^BBu$MYNKtLb?jzuzSjC#+g<*KuA?tBxJAnejIeQ?+e)ZKCCKffwc6xNWsfk# zucMhC9wXhboGYWO?hH#-E{E>rup*Tim}V3i zK6Yt!wIUDIwbj*SOc`007FYhT^5*i|%9|DMRjdWx@CyX*Z2)qrQHpHW#{Dq{it*kXph~^!xCuXa zC=dIV^-b_l%Trh0I#E|3Rltxx2weEy6&7aCd;xeISMswL@mtV!h-SEw31~C=pHtJo zpW#37>k@Ei2F><7t0{@mwPdF|oU})iqt0`@r^Rxoa%ODGMx&xddt5fv%9j|X+ilCvTFHCo0}% literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PsdImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PsdImagePlugin.py new file mode 100644 index 0000000..f6e04f7 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PsdImagePlugin.py @@ -0,0 +1,307 @@ +# +# The Python Imaging Library +# $Id$ +# +# Adobe PSD 2.5/3.0 file handling +# +# History: +# 1995-09-01 fl Created +# 1997-01-03 fl Read most PSD images +# 1997-01-18 fl Fixed P and CMYK support +# 2001-10-21 fl Added seek/tell support (for layers) +# +# Copyright (c) 1997-2001 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +__version__ = "0.4" + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16be as i16, i32be as i32 + +MODES = { + # (photoshop mode, bits) -> (pil mode, required channels) + (0, 1): ("1", 1), + (0, 8): ("L", 1), + (1, 8): ("L", 1), + (2, 8): ("P", 1), + (3, 8): ("RGB", 3), + (4, 8): ("CMYK", 4), + (7, 8): ("L", 1), # FIXME: multilayer + (8, 8): ("L", 1), # duotone + (9, 8): ("LAB", 3) +} + + +# --------------------------------------------------------------------. +# read PSD images + +def _accept(prefix): + return prefix[:4] == b"8BPS" + + +## +# Image plugin for Photoshop images. + +class PsdImageFile(ImageFile.ImageFile): + + format = "PSD" + format_description = "Adobe Photoshop" + + def _open(self): + + read = self.fp.read + + # + # header + + s = read(26) + if s[:4] != b"8BPS" or i16(s[4:]) != 1: + raise SyntaxError("not a PSD file") + + psd_bits = i16(s[22:]) + psd_channels = i16(s[12:]) + psd_mode = i16(s[24:]) + + mode, channels = MODES[(psd_mode, psd_bits)] + + if channels > psd_channels: + raise IOError("not enough channels") + + self.mode = mode + self.size = i32(s[18:]), i32(s[14:]) + + # + # color mode data + + size = i32(read(4)) + if size: + data = read(size) + if mode == "P" and size == 768: + self.palette = ImagePalette.raw("RGB;L", data) + + # + # image resources + + self.resources = [] + + size = i32(read(4)) + if size: + # load resources + end = self.fp.tell() + size + while self.fp.tell() < end: + signature = read(4) + id = i16(read(2)) + name = read(i8(read(1))) + if not (len(name) & 1): + read(1) # padding + data = read(i32(read(4))) + if (len(data) & 1): + read(1) # padding + self.resources.append((id, name, data)) + if id == 1039: # ICC profile + self.info["icc_profile"] = data + + # + # layer and mask information + + self.layers = [] + + size = i32(read(4)) + if size: + end = self.fp.tell() + size + size = i32(read(4)) + if size: + self.layers = _layerinfo(self.fp) + self.fp.seek(end) + + # + # image descriptor + + self.tile = _maketile(self.fp, mode, (0, 0) + self.size, channels) + + # keep the file open + self._fp = self.fp + self.frame = 1 + self._min_frame = 1 + + @property + def n_frames(self): + return len(self.layers) + + @property + def is_animated(self): + return len(self.layers) > 1 + + def seek(self, layer): + if not self._seek_check(layer): + return + + # seek to given layer (1..max) + try: + name, mode, bbox, tile = self.layers[layer-1] + self.mode = mode + self.tile = tile + self.frame = layer + self.fp = self._fp + return name, bbox + except IndexError: + raise EOFError("no such layer") + + def tell(self): + # return layer number (0=image, 1..max=layers) + return self.frame + + def load_prepare(self): + # create image memory if necessary + if not self.im or\ + self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.fill(self.mode, self.size, 0) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + +def _layerinfo(file): + # read layerinfo block + layers = [] + read = file.read + for i in range(abs(i16(read(2)))): + + # bounding box + y0 = i32(read(4)) + x0 = i32(read(4)) + y1 = i32(read(4)) + x1 = i32(read(4)) + + # image info + info = [] + mode = [] + types = list(range(i16(read(2)))) + if len(types) > 4: + continue + + for i in types: + type = i16(read(2)) + + if type == 65535: + m = "A" + else: + m = "RGBA"[type] + + mode.append(m) + size = i32(read(4)) + info.append((m, size)) + + # figure out the image mode + mode.sort() + if mode == ["R"]: + mode = "L" + elif mode == ["B", "G", "R"]: + mode = "RGB" + elif mode == ["A", "B", "G", "R"]: + mode = "RGBA" + else: + mode = None # unknown + + # skip over blend flags and extra information + filler = read(12) + name = "" + size = i32(read(4)) + combined = 0 + if size: + length = i32(read(4)) + if length: + mask_y = i32(read(4)) + mask_x = i32(read(4)) + mask_h = i32(read(4)) - mask_y + mask_w = i32(read(4)) - mask_x + file.seek(length - 16, 1) + combined += length + 4 + + length = i32(read(4)) + if length: + file.seek(length, 1) + combined += length + 4 + + length = i8(read(1)) + if length: + # Don't know the proper encoding, + # Latin-1 should be a good guess + name = read(length).decode('latin-1', 'replace') + combined += length + 1 + + file.seek(size - combined, 1) + layers.append((name, mode, (x0, y0, x1, y1))) + + # get tiles + i = 0 + for name, mode, bbox in layers: + tile = [] + for m in mode: + t = _maketile(file, m, bbox, 1) + if t: + tile.extend(t) + layers[i] = name, mode, bbox, tile + i += 1 + + return layers + + +def _maketile(file, mode, bbox, channels): + + tile = None + read = file.read + + compression = i16(read(2)) + + xsize = bbox[2] - bbox[0] + ysize = bbox[3] - bbox[1] + + offset = file.tell() + + if compression == 0: + # + # raw compression + tile = [] + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append(("raw", bbox, offset, layer)) + offset = offset + xsize*ysize + + elif compression == 1: + # + # packbits compression + i = 0 + tile = [] + bytecount = read(channels * ysize * 2) + offset = file.tell() + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append( + ("packbits", bbox, offset, layer) + ) + for y in range(ysize): + offset = offset + i16(bytecount[i:i+2]) + i += 2 + + file.seek(offset) + + if offset & 1: + read(1) # padding + + return tile + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PsdImageFile.format, PsdImageFile, _accept) + +Image.register_extension(PsdImageFile.format, ".psd") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PsdImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PsdImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ec5389405c57b678f9dd202063d0c31facd60d9a GIT binary patch literal 6652 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 8 + + +class _PyAccessI16_B(PyAccess): + """ I;16B access, with conversion """ + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast('struct Pixel_I16 **', self.image) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.l * 256 + pixel.r + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + try: + color = min(color, 65535) + except: + color = min(color[0], 65535) + + pixel.l = color >> 8 + pixel.r = color & 0xFF + + +class _PyAccessI32_N(PyAccess): + """ Signed Int32 access, native endian """ + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + self.pixels[y][x] = color + + +class _PyAccessI32_Swap(PyAccess): + """ I;32L/B access, with byteswapping conversion """ + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def reverse(self, i): + orig = ffi.new('int *', i) + chars = ffi.cast('unsigned char *', orig) + chars[0], chars[1], chars[2], chars[3] = chars[3], chars[2], \ + chars[1], chars[0] + return ffi.cast('int *', chars)[0] + + def get_pixel(self, x, y): + return self.reverse(self.pixels[y][x]) + + def set_pixel(self, x, y, color): + self.pixels[y][x] = self.reverse(color) + + +class _PyAccessF(PyAccess): + """ 32 bit float access """ + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast('float **', self.image32) + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # not a tuple + self.pixels[y][x] = color + except TypeError: + # tuple + self.pixels[y][x] = color[0] + + +mode_map = {'1': _PyAccess8, + 'L': _PyAccess8, + 'P': _PyAccess8, + 'LA': _PyAccess32_2, + 'La': _PyAccess32_2, + 'PA': _PyAccess32_2, + 'RGB': _PyAccess32_3, + 'LAB': _PyAccess32_3, + 'HSV': _PyAccess32_3, + 'YCbCr': _PyAccess32_3, + 'RGBA': _PyAccess32_4, + 'RGBa': _PyAccess32_4, + 'RGBX': _PyAccess32_4, + 'CMYK': _PyAccess32_4, + 'F': _PyAccessF, + 'I': _PyAccessI32_N, + } + +if sys.byteorder == 'little': + mode_map['I;16'] = _PyAccessI16_N + mode_map['I;16L'] = _PyAccessI16_N + mode_map['I;16B'] = _PyAccessI16_B + + mode_map['I;32L'] = _PyAccessI32_N + mode_map['I;32B'] = _PyAccessI32_Swap +else: + mode_map['I;16'] = _PyAccessI16_L + mode_map['I;16L'] = _PyAccessI16_L + mode_map['I;16B'] = _PyAccessI16_N + + mode_map['I;32L'] = _PyAccessI32_Swap + mode_map['I;32B'] = _PyAccessI32_N + + +def new(img, readonly=False): + access_type = mode_map.get(img.mode, None) + if not access_type: + logger.debug("PyAccess Not Implemented: %s", img.mode) + return None + return access_type(img, readonly) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PyAccess.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/PyAccess.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e83545ffeb0478f08e3bbc9800741e845c1c3de9 GIT binary patch literal 13073 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SgiImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SgiImagePlugin.py new file mode 100644 index 0000000..ef0f40e --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SgiImagePlugin.py @@ -0,0 +1,227 @@ +# +# The Python Imaging Library. +# $Id$ +# +# SGI image file handling +# +# See "The SGI Image File Format (Draft version 0.97)", Paul Haeberli. +# +# +# +# History: +# 2017-22-07 mb Add RLE decompression +# 2016-16-10 mb Add save method without compression +# 1995-09-10 fl Created +# +# Copyright (c) 2016 by Mickael Bonfill. +# Copyright (c) 2008 by Karsten Hiddemann. +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1995 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile +from ._binary import i8, o8, i16be as i16 +from ._util import py3 +import struct +import os + + +__version__ = "0.3" + + +def _accept(prefix): + return len(prefix) >= 2 and i16(prefix) == 474 + + +MODES = { + (1, 1, 1): "L", + (1, 2, 1): "L", + (2, 1, 1): "L;16B", + (2, 2, 1): "L;16B", + (1, 3, 3): "RGB", + (2, 3, 3): "RGB;16B", + (1, 3, 4): "RGBA", + (2, 3, 4): "RGBA;16B" +} + + +## +# Image plugin for SGI images. +class SgiImageFile(ImageFile.ImageFile): + + format = "SGI" + format_description = "SGI Image File Format" + + def _open(self): + + # HEAD + headlen = 512 + s = self.fp.read(headlen) + + # magic number : 474 + if i16(s) != 474: + raise ValueError("Not an SGI image file") + + # compression : verbatim or RLE + compression = i8(s[2]) + + # bpc : 1 or 2 bytes (8bits or 16bits) + bpc = i8(s[3]) + + # dimension : 1, 2 or 3 (depending on xsize, ysize and zsize) + dimension = i16(s[4:]) + + # xsize : width + xsize = i16(s[6:]) + + # ysize : height + ysize = i16(s[8:]) + + # zsize : channels count + zsize = i16(s[10:]) + + # layout + layout = bpc, dimension, zsize + + # determine mode from bits/zsize + rawmode = "" + try: + rawmode = MODES[layout] + except KeyError: + pass + + if rawmode == "": + raise ValueError("Unsupported SGI image mode") + + self.size = xsize, ysize + self.mode = rawmode.split(";")[0] + + # orientation -1 : scanlines begins at the bottom-left corner + orientation = -1 + + # decoder info + if compression == 0: + pagesize = xsize * ysize * bpc + if bpc == 2: + self.tile = [("SGI16", (0, 0) + self.size, + headlen, (self.mode, 0, orientation))] + else: + self.tile = [] + offset = headlen + for layer in self.mode: + self.tile.append( + ("raw", (0, 0) + self.size, + offset, (layer, 0, orientation))) + offset += pagesize + elif compression == 1: + self.tile = [("sgi_rle", (0, 0) + self.size, + headlen, (rawmode, orientation, bpc))] + + +def _save(im, fp, filename): + if im.mode != "RGB" and im.mode != "RGBA" and im.mode != "L": + raise ValueError("Unsupported SGI image mode") + + # Get the keyword arguments + info = im.encoderinfo + + # Byte-per-pixel precision, 1 = 8bits per pixel + bpc = info.get("bpc", 1) + + if bpc not in (1, 2): + raise ValueError("Unsupported number of bytes per pixel") + + # Flip the image, since the origin of SGI file is the bottom-left corner + orientation = -1 + # Define the file as SGI File Format + magicNumber = 474 + # Run-Length Encoding Compression - Unsupported at this time + rle = 0 + + # Number of dimensions (x,y,z) + dim = 3 + # X Dimension = width / Y Dimension = height + x, y = im.size + if im.mode == "L" and y == 1: + dim = 1 + elif im.mode == "L": + dim = 2 + # Z Dimension: Number of channels + z = len(im.mode) + + if dim == 1 or dim == 2: + z = 1 + + # assert we've got the right number of bands. + if len(im.getbands()) != z: + raise ValueError("incorrect number of bands in SGI write: %s vs %s" % + (z, len(im.getbands()))) + + # Minimum Byte value + pinmin = 0 + # Maximum Byte value (255 = 8bits per pixel) + pinmax = 255 + # Image name (79 characters max, truncated below in write) + imgName = os.path.splitext(os.path.basename(filename))[0] + if py3: + imgName = imgName.encode('ascii', 'ignore') + # Standard representation of pixel in the file + colormap = 0 + fp.write(struct.pack('>h', magicNumber)) + fp.write(o8(rle)) + fp.write(o8(bpc)) + fp.write(struct.pack('>H', dim)) + fp.write(struct.pack('>H', x)) + fp.write(struct.pack('>H', y)) + fp.write(struct.pack('>H', z)) + fp.write(struct.pack('>l', pinmin)) + fp.write(struct.pack('>l', pinmax)) + fp.write(struct.pack('4s', b'')) # dummy + fp.write(struct.pack('79s', imgName)) # truncates to 79 chars + fp.write(struct.pack('s', b'')) # force null byte after imgname + fp.write(struct.pack('>l', colormap)) + fp.write(struct.pack('404s', b'')) # dummy + + rawmode = 'L' + if bpc == 2: + rawmode = 'L;16B' + + for channel in im.split(): + fp.write(channel.tobytes('raw', rawmode, 0, orientation)) + + fp.close() + + +class SGI16Decoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer): + rawmode, stride, orientation = self.args + pagesize = self.state.xsize * self.state.ysize + zsize = len(self.mode) + self.fd.seek(512) + + for band in range(zsize): + channel = Image.new('L', (self.state.xsize, self.state.ysize)) + channel.frombytes(self.fd.read(2 * pagesize), 'raw', + 'L;16B', stride, orientation) + self.im.putband(channel.im, band) + + return -1, 0 + +# +# registry + + +Image.register_decoder("SGI16", SGI16Decoder) +Image.register_open(SgiImageFile.format, SgiImageFile, _accept) +Image.register_save(SgiImageFile.format, _save) +Image.register_mime(SgiImageFile.format, "image/sgi") +Image.register_mime(SgiImageFile.format, "image/rgb") + +Image.register_extensions(SgiImageFile.format, [".bw", ".rgb", ".rgba", ".sgi"]) + +# End of file diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SgiImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SgiImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f8dca6e81ad1f61bf3d7b2e9bb51273dfbce0b53 GIT binary patch literal 5264 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SpiderImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SpiderImagePlugin.py new file mode 100644 index 0000000..d502779 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SpiderImagePlugin.py @@ -0,0 +1,314 @@ +# +# The Python Imaging Library. +# +# SPIDER image file handling +# +# History: +# 2004-08-02 Created BB +# 2006-03-02 added save method +# 2006-03-13 added support for stack images +# +# Copyright (c) 2004 by Health Research Inc. (HRI) RENSSELAER, NY 12144. +# Copyright (c) 2004 by William Baxter. +# Copyright (c) 2004 by Secret Labs AB. +# Copyright (c) 2004 by Fredrik Lundh. +# + +## +# Image plugin for the Spider image format. This format is is used +# by the SPIDER software, in processing image data from electron +# microscopy and tomography. +## + +# +# SpiderImagePlugin.py +# +# The Spider image format is used by SPIDER software, in processing +# image data from electron microscopy and tomography. +# +# Spider home page: +# https://spider.wadsworth.org/spider_doc/spider/docs/spider.html +# +# Details about the Spider image format: +# https://spider.wadsworth.org/spider_doc/spider/docs/image_doc.html +# + +from __future__ import print_function + +from PIL import Image, ImageFile +import os +import struct +import sys + + +def isInt(f): + try: + i = int(f) + if f-i == 0: + return 1 + else: + return 0 + except (ValueError, OverflowError): + return 0 + + +iforms = [1, 3, -11, -12, -21, -22] + + +# There is no magic number to identify Spider files, so just check a +# series of header locations to see if they have reasonable values. +# Returns no. of bytes in the header, if it is a valid Spider header, +# otherwise returns 0 + +def isSpiderHeader(t): + h = (99,) + t # add 1 value so can use spider header index start=1 + # header values 1,2,5,12,13,22,23 should be integers + for i in [1, 2, 5, 12, 13, 22, 23]: + if not isInt(h[i]): + return 0 + # check iform + iform = int(h[5]) + if iform not in iforms: + return 0 + # check other header values + labrec = int(h[13]) # no. records in file header + labbyt = int(h[22]) # total no. of bytes in header + lenbyt = int(h[23]) # record length in bytes + # print("labrec = %d, labbyt = %d, lenbyt = %d" % (labrec,labbyt,lenbyt)) + if labbyt != (labrec * lenbyt): + return 0 + # looks like a valid header + return labbyt + + +def isSpiderImage(filename): + with open(filename, 'rb') as fp: + f = fp.read(92) # read 23 * 4 bytes + t = struct.unpack('>23f', f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + t = struct.unpack('<23f', f) # little-endian + hdrlen = isSpiderHeader(t) + return hdrlen + + +class SpiderImageFile(ImageFile.ImageFile): + + format = "SPIDER" + format_description = "Spider 2D image" + _close_exclusive_fp_after_loading = False + + def _open(self): + # check header + n = 27 * 4 # read 27 float values + f = self.fp.read(n) + + try: + self.bigendian = 1 + t = struct.unpack('>27f', f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + self.bigendian = 0 + t = struct.unpack('<27f', f) # little-endian + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + raise SyntaxError("not a valid Spider file") + except struct.error: + raise SyntaxError("not a valid Spider file") + + h = (99,) + t # add 1 value : spider header index starts at 1 + iform = int(h[5]) + if iform != 1: + raise SyntaxError("not a Spider 2D image") + + self.size = int(h[12]), int(h[2]) # size in pixels (width, height) + self.istack = int(h[24]) + self.imgnumber = int(h[27]) + + if self.istack == 0 and self.imgnumber == 0: + # stk=0, img=0: a regular 2D image + offset = hdrlen + self._nimages = 1 + elif self.istack > 0 and self.imgnumber == 0: + # stk>0, img=0: Opening the stack for the first time + self.imgbytes = int(h[12]) * int(h[2]) * 4 + self.hdrlen = hdrlen + self._nimages = int(h[26]) + # Point to the first image in the stack + offset = hdrlen * 2 + self.imgnumber = 1 + elif self.istack == 0 and self.imgnumber > 0: + # stk=0, img>0: an image within the stack + offset = hdrlen + self.stkoffset + self.istack = 2 # So Image knows it's still a stack + else: + raise SyntaxError("inconsistent stack header values") + + if self.bigendian: + self.rawmode = "F;32BF" + else: + self.rawmode = "F;32F" + self.mode = "F" + + self.tile = [ + ("raw", (0, 0) + self.size, offset, + (self.rawmode, 0, 1))] + self.__fp = self.fp # FIXME: hack + + @property + def n_frames(self): + return self._nimages + + @property + def is_animated(self): + return self._nimages > 1 + + # 1st image index is zero (although SPIDER imgnumber starts at 1) + def tell(self): + if self.imgnumber < 1: + return 0 + else: + return self.imgnumber - 1 + + def seek(self, frame): + if self.istack == 0: + raise EOFError("attempt to seek in a non-stack file") + if not self._seek_check(frame): + return + self.stkoffset = self.hdrlen + frame * (self.hdrlen + self.imgbytes) + self.fp = self.__fp + self.fp.seek(self.stkoffset) + self._open() + + # returns a byte image after rescaling to 0..255 + def convert2byte(self, depth=255): + (minimum, maximum) = self.getextrema() + m = 1 + if maximum != minimum: + m = depth / (maximum-minimum) + b = -m * minimum + return self.point(lambda i, m=m, b=b: i * m + b).convert("L") + + # returns a ImageTk.PhotoImage object, after rescaling to 0..255 + def tkPhotoImage(self): + from PIL import ImageTk + return ImageTk.PhotoImage(self.convert2byte(), palette=256) + + +# -------------------------------------------------------------------- +# Image series + +# given a list of filenames, return a list of images +def loadImageSeries(filelist=None): + """create a list of Image.images for use in montage""" + if filelist is None or len(filelist) < 1: + return + + imglist = [] + for img in filelist: + if not os.path.exists(img): + print("unable to find %s" % img) + continue + try: + im = Image.open(img).convert2byte() + except: + if not isSpiderImage(img): + print(img + " is not a Spider image file") + continue + im.info['filename'] = img + imglist.append(im) + return imglist + + +# -------------------------------------------------------------------- +# For saving images in Spider format + +def makeSpiderHeader(im): + nsam, nrow = im.size + lenbyt = nsam * 4 # There are labrec records in the header + labrec = 1024 / lenbyt + if 1024 % lenbyt != 0: + labrec += 1 + labbyt = labrec * lenbyt + hdr = [] + nvalues = int(labbyt / 4) + for i in range(nvalues): + hdr.append(0.0) + + if len(hdr) < 23: + return [] + + # NB these are Fortran indices + hdr[1] = 1.0 # nslice (=1 for an image) + hdr[2] = float(nrow) # number of rows per slice + hdr[5] = 1.0 # iform for 2D image + hdr[12] = float(nsam) # number of pixels per line + hdr[13] = float(labrec) # number of records in file header + hdr[22] = float(labbyt) # total number of bytes in header + hdr[23] = float(lenbyt) # record length in bytes + + # adjust for Fortran indexing + hdr = hdr[1:] + hdr.append(0.0) + # pack binary data into a string + hdrstr = [] + for v in hdr: + hdrstr.append(struct.pack('f', v)) + return hdrstr + + +def _save(im, fp, filename): + if im.mode[0] != "F": + im = im.convert('F') + + hdr = makeSpiderHeader(im) + if len(hdr) < 256: + raise IOError("Error creating Spider header") + + # write the SPIDER header + fp.writelines(hdr) + + rawmode = "F;32NF" # 32-bit native floating point + ImageFile._save(im, fp, [("raw", (0, 0)+im.size, 0, (rawmode, 0, 1))]) + + +def _save_spider(im, fp, filename): + # get the filename extension and register it with Image + ext = os.path.splitext(filename)[1] + Image.register_extension(SpiderImageFile.format, ext) + _save(im, fp, filename) + +# -------------------------------------------------------------------- + + +Image.register_open(SpiderImageFile.format, SpiderImageFile) +Image.register_save(SpiderImageFile.format, _save_spider) + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python SpiderImagePlugin.py [infile] [outfile]") + sys.exit() + + filename = sys.argv[1] + if not isSpiderImage(filename): + print("input image must be in Spider format") + sys.exit() + + im = Image.open(filename) + print("image: " + str(im)) + print("format: " + str(im.format)) + print("size: " + str(im.size)) + print("mode: " + str(im.mode)) + print("max, min: ", end=' ') + print(im.getextrema()) + + if len(sys.argv) > 2: + outfile = sys.argv[2] + + # perform some image operation + im = im.transpose(Image.FLIP_LEFT_RIGHT) + print( + "saving a flipped version of %s as %s " % + (os.path.basename(filename), outfile)) + im.save(outfile, SpiderImageFile.format) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SpiderImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SpiderImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60a74727c39e73bf236664b89f41b197b9febb2b GIT binary patch literal 8076 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 4 and i32(prefix) == 0x59a66a95 + + +## +# Image plugin for Sun raster files. + +class SunImageFile(ImageFile.ImageFile): + + format = "SUN" + format_description = "Sun Raster File" + + def _open(self): + + # The Sun Raster file header is 32 bytes in length + # and has the following format: + + # typedef struct _SunRaster + # { + # DWORD MagicNumber; /* Magic (identification) number */ + # DWORD Width; /* Width of image in pixels */ + # DWORD Height; /* Height of image in pixels */ + # DWORD Depth; /* Number of bits per pixel */ + # DWORD Length; /* Size of image data in bytes */ + # DWORD Type; /* Type of raster file */ + # DWORD ColorMapType; /* Type of color map */ + # DWORD ColorMapLength; /* Size of the color map in bytes */ + # } SUNRASTER; + + # HEAD + s = self.fp.read(32) + if i32(s) != 0x59a66a95: + raise SyntaxError("not an SUN raster file") + + offset = 32 + + self.size = i32(s[4:8]), i32(s[8:12]) + + depth = i32(s[12:16]) + data_length = i32(s[16:20]) # unreliable, ignore. + file_type = i32(s[20:24]) + palette_type = i32(s[24:28]) # 0: None, 1: RGB, 2: Raw/arbitrary + palette_length = i32(s[28:32]) + + if depth == 1: + self.mode, rawmode = "1", "1;I" + elif depth == 4: + self.mode, rawmode = "L", "L;4" + elif depth == 8: + self.mode = rawmode = "L" + elif depth == 24: + if file_type == 3: + self.mode, rawmode = "RGB", "RGB" + else: + self.mode, rawmode = "RGB", "BGR" + elif depth == 32: + if file_type == 3: + self.mode, rawmode = 'RGB', 'RGBX' + else: + self.mode, rawmode = 'RGB', 'BGRX' + else: + raise SyntaxError("Unsupported Mode/Bit Depth") + + if palette_length: + if palette_length > 1024: + raise SyntaxError("Unsupported Color Palette Length") + + if palette_type != 1: + raise SyntaxError("Unsupported Palette Type") + + offset = offset + palette_length + self.palette = ImagePalette.raw("RGB;L", self.fp.read(palette_length)) + if self.mode == "L": + self.mode = "P" + rawmode = rawmode.replace('L', 'P') + + # 16 bit boundaries on stride + stride = ((self.size[0] * depth + 15) // 16) * 2 + + # file type: Type is the version (or flavor) of the bitmap + # file. The following values are typically found in the Type + # field: + # 0000h Old + # 0001h Standard + # 0002h Byte-encoded + # 0003h RGB format + # 0004h TIFF format + # 0005h IFF format + # FFFFh Experimental + + # Old and standard are the same, except for the length tag. + # byte-encoded is run-length-encoded + # RGB looks similar to standard, but RGB byte order + # TIFF and IFF mean that they were converted from T/IFF + # Experimental means that it's something else. + # (https://www.fileformat.info/format/sunraster/egff.htm) + + if file_type in (0, 1, 3, 4, 5): + self.tile = [("raw", (0, 0)+self.size, offset, (rawmode, stride))] + elif file_type == 2: + self.tile = [("sun_rle", (0, 0)+self.size, offset, rawmode)] + else: + raise SyntaxError('Unsupported Sun Raster file type') + +# +# registry + + +Image.register_open(SunImageFile.format, SunImageFile, _accept) + +Image.register_extension(SunImageFile.format, ".ras") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SunImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/SunImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c4d690aa125c282870703242751b0ff3c4756bb GIT binary patch literal 2568 zcmb_e&2Ah;5U%e1-#E50#*RZQ#({(lC^1QVA_yS|2#Jhkjj@y%q|s!%*O~S1>}0x4 zVzd^5ga_cj5s4Eoz&#h90ttzS;EcpqHM_Bw+)!+HO?OpSchy%v?b6?;n+w^WU$$xV zQ^xlr4EG&~!JncYQD4!nqQ0hGP5lz>mPoNoQ?E?@3hh?02D?V4Oizh+>trfqHFY(0 z6qzbBpAg;KZID&eZIW$J_Y_lGrzbd#xl<#qsnHXS1M9TiYQTy_fwW2>z5;T)AMaVu z0-1f9^sJv6ueM^Wylt_H>`tyfz3VIJ&Mv|pjY3VAi= zXxi5>gY`F)GHCKs_t$$Z*7wZp*;Kx`rns{TW|rGd^0|iFpf@{!onpneS2rq&0sqY48quXn+I|xpVh=*j|8jV zaXWzO;!m&wVn>R+rlAt_fK`d|>kJH%0n+akrIJBMdbADcfy7vWtWd)O$-(Omj)AY` zv7kyw0~Q>W#w=u4yLk(qBYc5$TdL(^O`I3(cn@Ylv(|4dKBkeg-zsx)VkhgqJ;6z*1nk#FU=M4QuW3-TK>KCNpD7N-;&CX3Ko!m-N`Hvx z%n1>IsL>)vs!ClPv2+}32oMO=Bs*LeK0KTji`TR{EBp!#>(mAM(*zDS1JQ?T8VSHT zgSfv=O8|e~oTEjA_N-Z^`J)CgRxR4EQvQQBZ;-h(+P*l%b-1g+nb9fJo|I(Nr1X8! zS(e*>(}VC?F8;)9P-{0|a>h710)=jNa{$b(VO3pQ-J=N~vW?c_mY@fU}g zb=*L4?~M&Hax1}-60ZJ)TT8-Xu`!PyN%L_BX_WWu3pbx=77SG2akzBFkXyzWiGp)# z%mEq&hrtY)oLHWoTux6e*~AuGS6Iw=3$R6mSRh9gQmkHBvJvPxM4e19&uwf%ahE0A zhpCSrf0F0Go&uEh(gF};VU2lNme{DGS6++i`&Ik4;)(TeQ|>Abp&IFdLkNh zIt~vLUuZaJ58eRbV*k76b z@256oQ&un>hpP(ftJ-lYTtPqBY;ktt{{-ZL5Y9hIi{gd8pQLeq7;>c_=TsDZZF2`Z zqbTH9$qk+l%I#jl@2p@Pvfbk0bGCi#ZOWQ2%Q?aMg96zPxqmq>zH@3;S4)lBl3mdM E0%^zSw*UYD literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TarIO.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TarIO.py new file mode 100644 index 0000000..0e949ff --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TarIO.py @@ -0,0 +1,56 @@ +# +# The Python Imaging Library. +# $Id$ +# +# read files from within a tar file +# +# History: +# 95-06-18 fl Created +# 96-05-28 fl Open files in binary mode +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-96. +# +# See the README file for information on usage and redistribution. +# + +from . import ContainerIO + + +## +# A file object that provides read access to a given member of a TAR +# file. + +class TarIO(ContainerIO.ContainerIO): + + def __init__(self, tarfile, file): + """ + Create file object. + + :param tarfile: Name of TAR file. + :param file: Name of member file. + """ + fh = open(tarfile, "rb") + + while True: + + s = fh.read(512) + if len(s) != 512: + raise IOError("unexpected end of tar file") + + name = s[:100].decode('utf-8') + i = name.find('\0') + if i == 0: + raise IOError("cannot find subfile") + if i > 0: + name = name[:i] + + size = int(s[124:135], 8) + + if file == name: + break + + fh.seek((size + 511) & (~511), 1) + + # Open region + ContainerIO.ContainerIO.__init__(self, fh, fh.tell(), size) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TarIO.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TarIO.pyc new file mode 100644 index 0000000000000000000000000000000000000000..abbb77fddc5d1cb4b27ac73bd4464276b62da87f GIT binary patch literal 1214 zcmbtU-D(p-6#iy6KW&tWo47l{TGAV% z_!d5m*FJ&ZLwIlf&LmXrr7nBUo;l|`|C5A2mMiO{Z?C$TKOw(cq`X0<`6?v9K;c+H z=>SHduh3J_AwB?8;N@`uUBF?zNDr&X>cZR-+4eAXu}w|3v+u-w6jQp)C9ub&{5qL| zq+muyWyIE@kJ6QT7D(c~P0B-hIbcGp!Zg5nh|{ld3fXr|LiAZofT_ZH0WQR(ATl*4 zA+o1%1*w~w_X;V4@K`|9FG3f+PZ5(M`X%U+KbA0|T*gU&?4x&H_``W-Dj@qTUPMOc zMTzRlKJX%R1$Xq4FOsT2P!j124kR~gUBILaUBwMu!AH=|rEzl(n z!tyn;Zk(n=MVIw|QWb zWcapuu(R9rznhKGyOwkPw%wXP%l)+Xi z)U?}!p&lnZ`f$Ii`L~j!)tjVTZbK>9n`Na8KgyQa|1*d0;lZrxhw^9PbFGwr0ZTaW AM*si- literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TgaImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TgaImagePlugin.py new file mode 100644 index 0000000..57b6ae2 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TgaImagePlugin.py @@ -0,0 +1,209 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TGA file handling +# +# History: +# 95-09-01 fl created (reads 24-bit files only) +# 97-01-04 fl support more TGA versions, including compressed images +# 98-07-04 fl fixed orientation and alpha layer bugs +# 98-09-11 fl fixed orientation for runlength decoder +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, o8, o16le as o16 + +__version__ = "0.3" + + +# +# -------------------------------------------------------------------- +# Read RGA file + + +MODES = { + # map imagetype/depth to rawmode + (1, 8): "P", + (3, 1): "1", + (3, 8): "L", + (3, 16): "LA", + (2, 16): "BGR;5", + (2, 24): "BGR", + (2, 32): "BGRA", +} + + +## +# Image plugin for Targa files. + +class TgaImageFile(ImageFile.ImageFile): + + format = "TGA" + format_description = "Targa" + + def _open(self): + + # process header + s = self.fp.read(18) + + idlen = i8(s[0]) + + colormaptype = i8(s[1]) + imagetype = i8(s[2]) + + depth = i8(s[16]) + + flags = i8(s[17]) + + self.size = i16(s[12:]), i16(s[14:]) + + # validate header fields + if colormaptype not in (0, 1) or\ + self.size[0] <= 0 or self.size[1] <= 0 or\ + depth not in (1, 8, 16, 24, 32): + raise SyntaxError("not a TGA file") + + # image mode + if imagetype in (3, 11): + self.mode = "L" + if depth == 1: + self.mode = "1" # ??? + elif depth == 16: + self.mode = "LA" + elif imagetype in (1, 9): + self.mode = "P" + elif imagetype in (2, 10): + self.mode = "RGB" + if depth == 32: + self.mode = "RGBA" + else: + raise SyntaxError("unknown TGA mode") + + # orientation + orientation = flags & 0x30 + if orientation == 0x20: + orientation = 1 + elif not orientation: + orientation = -1 + else: + raise SyntaxError("unknown TGA orientation") + + self.info["orientation"] = orientation + + if imagetype & 8: + self.info["compression"] = "tga_rle" + + if idlen: + self.info["id_section"] = self.fp.read(idlen) + + if colormaptype: + # read palette + start, size, mapdepth = i16(s[3:]), i16(s[5:]), i16(s[7:]) + if mapdepth == 16: + self.palette = ImagePalette.raw( + "BGR;16", b"\0"*2*start + self.fp.read(2*size)) + elif mapdepth == 24: + self.palette = ImagePalette.raw( + "BGR", b"\0"*3*start + self.fp.read(3*size)) + elif mapdepth == 32: + self.palette = ImagePalette.raw( + "BGRA", b"\0"*4*start + self.fp.read(4*size)) + + # setup tile descriptor + try: + rawmode = MODES[(imagetype & 7, depth)] + if imagetype & 8: + # compressed + self.tile = [("tga_rle", (0, 0)+self.size, + self.fp.tell(), (rawmode, orientation, depth))] + else: + self.tile = [("raw", (0, 0)+self.size, + self.fp.tell(), (rawmode, 0, orientation))] + except KeyError: + pass # cannot decode + +# +# -------------------------------------------------------------------- +# Write TGA file + + +SAVE = { + "1": ("1", 1, 0, 3), + "L": ("L", 8, 0, 3), + "LA": ("LA", 16, 0, 3), + "P": ("P", 8, 1, 1), + "RGB": ("BGR", 24, 0, 2), + "RGBA": ("BGRA", 32, 0, 2), +} + + +def _save(im, fp, filename): + + try: + rawmode, bits, colormaptype, imagetype = SAVE[im.mode] + except KeyError: + raise IOError("cannot write mode %s as TGA" % im.mode) + + rle = im.encoderinfo.get("rle", False) + + if rle: + imagetype += 8 + + if colormaptype: + colormapfirst, colormaplength, colormapentry = 0, 256, 24 + else: + colormapfirst, colormaplength, colormapentry = 0, 0, 0 + + if im.mode in ("LA", "RGBA"): + flags = 8 + else: + flags = 0 + + orientation = im.info.get("orientation", -1) + if orientation > 0: + flags = flags | 0x20 + + fp.write(b"\000" + + o8(colormaptype) + + o8(imagetype) + + o16(colormapfirst) + + o16(colormaplength) + + o8(colormapentry) + + o16(0) + + o16(0) + + o16(im.size[0]) + + o16(im.size[1]) + + o8(bits) + + o8(flags)) + + if colormaptype: + fp.write(im.im.getpalette("RGB", "BGR")) + + if rle: + ImageFile._save( + im, + fp, + [("tga_rle", (0, 0) + im.size, 0, (rawmode, orientation))]) + else: + ImageFile._save( + im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, orientation))]) + + # write targa version 2 footer + fp.write(b"\000" * 8 + b"TRUEVISION-XFILE." + b"\000") + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(TgaImageFile.format, TgaImageFile) +Image.register_save(TgaImageFile.format, _save) + +Image.register_extension(TgaImageFile.format, ".tga") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TgaImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TgaImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46f3ec9931f82c63c90af65ddbf489393241bc6c GIT binary patch literal 4342 zcmbtX-)|eo5uUxHD3T&gS&}8owj#!fZ6>uOOKH>}5emz$Y^YUj;iUX16M&$3NA)D~ z$lRUdD4%_H2*@;KOp_SSyH6cqz?_r+uNDlnc1D4{buO? zyHuF({o~`N3_cTh-^Y^_jEIk)k+w+3NXpjyclKNM}N76Vk~_ZBjZp zspX`Tms$ZcFmX!4N%1q{FUqE$75^GuIq|RKl^6d8UQ^;P;Z+j5Lzk%U7P;v0$rQ_O@XdW{|(yN^xqVJ4zF9{UxA`a;?GmK zR+hlX@w5abIfm+zymZ8nH8W(D&snnrmcO7Z|Ee5RZ^I`cTq0E$O-eWIb{a=PnjiKa zh3z0M4ypYHs5Gc%INL!J{#b>=^-T`h5ayxR=ew=S|fK)h4!|? zX%GqRKX~lD_ijj4DQAHUuacli5Zhse6jyY3)X>FpiA~V@q0$Fb$H}B zU>q*}mJ#p3ZkaX?A8+d}4jb`Nqe%@^pT+YKPx4#L>5ClW2W3WH8aXrEejlVGi=>?) z?ONI$(iuxH0-3{&z+q>gQ#NUWNJz#zs8S*ET z9~s23oeX|-sCwR3JsZZK9SlWV%Kw4#pBV)0NdMGO&-|F4qAm}Ssmtr*He8kaXOq&$ zJ+lH|@#cXOT_-d7qrv4PX(g`>B_V=yg4A`{;uiCAKmMD+ogA>2WQ&`}4*zAy(nAFa z!-E;G*%_|HUps?yD2*S=@;FgZ!gbDaa+a5~g7gbRPX$hzlVjk)>*C*)eop4j?cqxI z^D+mU3%Iag*9-FL*A8V1>YYCgWpVviF36U?Q`R~PtG0H58LJm$Z+)vQ9CG@5NvHJ8 zDsmsEjhI_JvkZFhT^Ano*VIKBSr}{t(F9jw7MuFUd(k;xAldOl0IET;GH0Ixgaqa0YFN$6}U(gaSu+nLJ+F@Ddv$jiQEv zMM7TGO)HHGZhEB!xKIEJr@;4!bRGq~0-8|CN%lx81bL4iDEi>Noe-yBnuaYyKxvqX(J805&R2y9HVI^J!;frKqtqV-A*qKl7w@0Eq*--niLHQ zj7T{EBcc)^a(y!)P>H9T(5(|8b-{7tMODF>6D+)|0t#5)a2F#7*~vgTQI}X!C(|32 zRDE1k!X93n&Nr>{GiLGI$TFCU^{t*dGY%TQM;*FiDi>D5dN#DKi@gfiD}So+YU1r5BQhCsVc0}TRM~k?UrVw#AY$S zjl<$-v)k^*oklM`?b%!yYE~pgPx?VG{f+io?Z#2!F)o!%(ng$m*GSSLG}x(JCQgOB zsG=*{BtJxNE$#HydSP!Rj3C@@ul(YDufDOjwjZ|J-4|>7yL)THJh$I|eiTNly;C(+ z@AiV|9cV~!eMQ_EXWE%Ic<_D0Et=b=Xv%o!@#eQYc#|$WMYn)=-egVQDLN&m0LiSm z;bff+@U!Oav3A9E&73JXC36Q))!?BMbcgkN)aV5Dx&~~$jtxFFk6FhX(#7(En#5h4}YpV(()evn6jPh@1|7#R{pK$f+Y&0BF> zn8#fC5tQMK0Fm*Rf)x1)j11F7gwk;C6^_-9jLFpeXUYSIBPhbU0JShSsm7343Tmt< zeH4}%Imt-;Pr@-0<^#&WBq~AFrAU!^nrFUY4~t|E$tri=%b$-zs~v^T|LV~`EZC|> zRaizz%NW%@kb<2lm4^=25Aj#VE{7_La*Wa#WvrH`oWa$iO!=z;{2yyM!fI%mg|4-^ z0HY{?uvg?Jn`mC5V2?KB6^YA&`t}tG%0XzDohUT$%T?Ck3vkZ@SD<-j5s~pExsJBk zh?p~8#98!8ufyOaUNuJRKa&-`hR0_!etLXRo)Ncb6O{n`dE~c>Lqy-C?sqJ_U!E-3sF* zMNEu1&~OC29-jo9k59d~sDSvS@T1ND4a(jY^!x!&!VQSynk69Rf^!9ERKhdkl$|or zHtSpgwt`c5ZZ3hpOtdmCzPHi4>uN$>MP2a3p5l4Zwj`ZuQ@VOoNuKA}C{NUqI^_b% zKT~6)6_RwT) pil compression name + 1: "raw", + 2: "tiff_ccitt", + 3: "group3", + 4: "group4", + 5: "tiff_lzw", + 6: "tiff_jpeg", # obsolete + 7: "jpeg", + 8: "tiff_adobe_deflate", + 32771: "tiff_raw_16", # 16-bit padding + 32773: "packbits", + 32809: "tiff_thunderscan", + 32946: "tiff_deflate", + 34676: "tiff_sgilog", + 34677: "tiff_sgilog24", +} + +COMPRESSION_INFO_REV = {v: k for k, v in COMPRESSION_INFO.items()} + +OPEN_INFO = { + # (ByteOrder, PhotoInterpretation, SampleFormat, FillOrder, BitsPerSample, + # ExtraSamples) => mode, rawmode + (II, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (MM, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (II, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (MM, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (II, 1, (1,), 1, (1,), ()): ("1", "1"), + (MM, 1, (1,), 1, (1,), ()): ("1", "1"), + (II, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (MM, 1, (1,), 2, (1,), ()): ("1", "1;R"), + + (II, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (MM, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (II, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (MM, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (II, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (MM, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (II, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (MM, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + + (II, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (MM, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (II, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (MM, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (II, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (MM, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (II, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (MM, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + + (II, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (MM, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (II, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (MM, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (II, 1, (1,), 1, (8,), ()): ("L", "L"), + (MM, 1, (1,), 1, (8,), ()): ("L", "L"), + (II, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (MM, 1, (1,), 2, (8,), ()): ("L", "L;R"), + + (II, 1, (1,), 1, (12,), ()): ("I;16", "I;12"), + + (II, 1, (1,), 1, (16,), ()): ("I;16", "I;16"), + (MM, 1, (1,), 1, (16,), ()): ("I;16B", "I;16B"), + (II, 1, (2,), 1, (16,), ()): ("I", "I;16S"), + (MM, 1, (2,), 1, (16,), ()): ("I", "I;16BS"), + + (II, 0, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 0, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (32,), ()): ("I", "I;32N"), + (II, 1, (2,), 1, (32,), ()): ("I", "I;32S"), + (MM, 1, (2,), 1, (32,), ()): ("I", "I;32BS"), + (II, 1, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 1, (3,), 1, (32,), ()): ("F", "F;32BF"), + + (II, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (MM, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + + (II, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (MM, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (II, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (MM, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (II, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (MM, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (II, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGBX", "RGBX"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGBX", "RGBX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "RGBXXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "RGBXXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (II, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (II, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (MM, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + + (II, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16L"), + (MM, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGBX", "RGBX;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGBX", "RGBX;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16B"), + + (II, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (MM, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (II, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (MM, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (II, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (MM, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (II, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (MM, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (II, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (MM, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (II, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (MM, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (II, 3, (1,), 1, (8,), ()): ("P", "P"), + (MM, 3, (1,), 1, (8,), ()): ("P", "P"), + (II, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (MM, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (II, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (MM, 3, (1,), 2, (8,), ()): ("P", "P;R"), + + (II, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (MM, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + + (II, 6, (1,), 1, (8, 8, 8), ()): ("YCbCr", "YCbCr"), + (MM, 6, (1,), 1, (8, 8, 8), ()): ("YCbCr", "YCbCr"), + (II, 6, (1,), 1, (8, 8, 8, 8), (0,)): ("YCbCr", "YCbCrX"), + (MM, 6, (1,), 1, (8, 8, 8, 8), (0,)): ("YCbCr", "YCbCrX"), + (II, 6, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("YCbCr", "YCbCrXXX"), + (MM, 6, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("YCbCr", "YCbCrXXX"), + (II, 6, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("YCbCr", "YCbCrXXX"), + (MM, 6, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("YCbCr", "YCbCrXXX"), + + (II, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), + (MM, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), +} + +PREFIXES = [ + b"MM\x00\x2A", # Valid TIFF header with big-endian byte order + b"II\x2A\x00", # Valid TIFF header with little-endian byte order + b"MM\x2A\x00", # Invalid TIFF header, assume big-endian + b"II\x00\x2A", # Invalid TIFF header, assume little-endian +] + + +def _accept(prefix): + return prefix[:4] in PREFIXES + + +def _limit_rational(val, max_val): + inv = abs(val) > 1 + n_d = IFDRational(1 / val if inv else val).limit_rational(max_val) + return n_d[::-1] if inv else n_d + + +## +# Wrapper for TIFF IFDs. + +_load_dispatch = {} +_write_dispatch = {} + + +class IFDRational(Rational): + """ Implements a rational class where 0/0 is a legal value to match + the in the wild use of exif rationals. + + e.g., DigitalZoomRatio - 0.00/0.00 indicates that no digital zoom was used + """ + + """ If the denominator is 0, store this as a float('nan'), otherwise store + as a fractions.Fraction(). Delegate as appropriate + + """ + + __slots__ = ('_numerator', '_denominator', '_val') + + def __init__(self, value, denominator=1): + """ + :param value: either an integer numerator, a + float/rational/other number, or an IFDRational + :param denominator: Optional integer denominator + """ + self._denominator = denominator + self._numerator = value + self._val = float(1) + + if isinstance(value, Fraction): + self._numerator = value.numerator + self._denominator = value.denominator + self._val = value + + if isinstance(value, IFDRational): + self._denominator = value.denominator + self._numerator = value.numerator + self._val = value._val + return + + if denominator == 0: + self._val = float('nan') + return + + elif denominator == 1: + self._val = Fraction(value) + else: + self._val = Fraction(value, denominator) + + @property + def numerator(a): + return a._numerator + + @property + def denominator(a): + return a._denominator + + def limit_rational(self, max_denominator): + """ + + :param max_denominator: Integer, the maximum denominator value + :returns: Tuple of (numerator, denominator) + """ + + if self.denominator == 0: + return (self.numerator, self.denominator) + + f = self._val.limit_denominator(max_denominator) + return (f.numerator, f.denominator) + + def __repr__(self): + return str(float(self._val)) + + def __hash__(self): + return self._val.__hash__() + + def __eq__(self, other): + return self._val == other + + def _delegate(op): + def delegate(self, *args): + return getattr(self._val, op)(*args) + return delegate + + """ a = ['add','radd', 'sub', 'rsub','div', 'rdiv', 'mul', 'rmul', + 'truediv', 'rtruediv', 'floordiv', + 'rfloordiv','mod','rmod', 'pow','rpow', 'pos', 'neg', + 'abs', 'trunc', 'lt', 'gt', 'le', 'ge', 'nonzero', + 'ceil', 'floor', 'round'] + print("\n".join("__%s__ = _delegate('__%s__')" % (s,s) for s in a)) + """ + + __add__ = _delegate('__add__') + __radd__ = _delegate('__radd__') + __sub__ = _delegate('__sub__') + __rsub__ = _delegate('__rsub__') + __div__ = _delegate('__div__') + __rdiv__ = _delegate('__rdiv__') + __mul__ = _delegate('__mul__') + __rmul__ = _delegate('__rmul__') + __truediv__ = _delegate('__truediv__') + __rtruediv__ = _delegate('__rtruediv__') + __floordiv__ = _delegate('__floordiv__') + __rfloordiv__ = _delegate('__rfloordiv__') + __mod__ = _delegate('__mod__') + __rmod__ = _delegate('__rmod__') + __pow__ = _delegate('__pow__') + __rpow__ = _delegate('__rpow__') + __pos__ = _delegate('__pos__') + __neg__ = _delegate('__neg__') + __abs__ = _delegate('__abs__') + __trunc__ = _delegate('__trunc__') + __lt__ = _delegate('__lt__') + __gt__ = _delegate('__gt__') + __le__ = _delegate('__le__') + __ge__ = _delegate('__ge__') + __nonzero__ = _delegate('__nonzero__') + __ceil__ = _delegate('__ceil__') + __floor__ = _delegate('__floor__') + __round__ = _delegate('__round__') + + +class ImageFileDirectory_v2(MutableMapping): + """This class represents a TIFF tag directory. To speed things up, we + don't decode tags unless they're asked for. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v2() + ifd[key] = 'Some Data' + ifd.tagtype[key] = 2 + print(ifd[key]) + 'Some Data' + + Individual values are returned as the strings or numbers, sequences are + returned as tuples of the values. + + The tiff metadata type of each item is stored in a dictionary of + tag types in + `~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types + are read from a tiff file, guessed from the type added, or added + manually. + + Data Structures: + + * self.tagtype = {} + + * Key: numerical tiff tag number + * Value: integer corresponding to the data type from `~PIL.TiffTags.TYPES` + + .. versionadded:: 3.0.0 + """ + """ + Documentation: + + 'internal' data structures: + * self._tags_v2 = {} Key: numerical tiff tag number + Value: decoded data, as tuple for multiple values + * self._tagdata = {} Key: numerical tiff tag number + Value: undecoded byte string from file + * self._tags_v1 = {} Key: numerical tiff tag number + Value: decoded data in the v1 format + + Tags will be found in the private attributes self._tagdata, and in + self._tags_v2 once decoded. + + Self.legacy_api is a value for internal use, and shouldn't be + changed from outside code. In cooperation with the + ImageFileDirectory_v1 class, if legacy_api is true, then decoded + tags will be populated into both _tags_v1 and _tags_v2. _Tags_v2 + will be used if this IFD is used in the TIFF save routine. Tags + should be read from tags_v1 if legacy_api == true. + + """ + + def __init__(self, ifh=b"II\052\0\0\0\0\0", prefix=None): + """Initialize an ImageFileDirectory. + + To construct an ImageFileDirectory from a real file, pass the 8-byte + magic header to the constructor. To only set the endianness, pass it + as the 'prefix' keyword argument. + + :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets + endianness. + :param prefix: Override the endianness of the file. + """ + if ifh[:4] not in PREFIXES: + raise SyntaxError("not a TIFF file (header %r not valid)" % ifh) + self._prefix = prefix if prefix is not None else ifh[:2] + if self._prefix == MM: + self._endian = ">" + elif self._prefix == II: + self._endian = "<" + else: + raise SyntaxError("not a TIFF IFD") + self.reset() + self.next, = self._unpack("L", ifh[4:]) + self._legacy_api = False + + prefix = property(lambda self: self._prefix) + offset = property(lambda self: self._offset) + legacy_api = property(lambda self: self._legacy_api) + + @legacy_api.setter + def legacy_api(self, value): + raise Exception("Not allowing setting of legacy api") + + def reset(self): + self._tags_v1 = {} # will remain empty if legacy_api is false + self._tags_v2 = {} # main tag storage + self._tagdata = {} + self.tagtype = {} # added 2008-06-05 by Florian Hoech + self._next = None + self._offset = None + + def __str__(self): + return str(dict(self)) + + def named(self): + """ + :returns: dict of name|key: value + + Returns the complete tag dictionary, with named tags where possible. + """ + return dict((TiffTags.lookup(code).name, value) + for code, value in self.items()) + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v2)) + + def __getitem__(self, tag): + if tag not in self._tags_v2: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + self[tag] = handler(self, data, self.legacy_api) # check type + val = self._tags_v2[tag] + if self.legacy_api and not isinstance(val, (tuple, bytes)): + val = val, + return val + + def __contains__(self, tag): + return tag in self._tags_v2 or tag in self._tagdata + + if not py3: + def has_key(self, tag): + return tag in self + + def __setitem__(self, tag, value): + self._setitem(tag, value, self.legacy_api) + + def _setitem(self, tag, value, legacy_api): + basetypes = (Number, bytes, str) + if not py3: + basetypes += unicode, + + info = TiffTags.lookup(tag) + values = [value] if isinstance(value, basetypes) else value + + if tag not in self.tagtype: + if info.type: + self.tagtype[tag] = info.type + else: + self.tagtype[tag] = 7 + if all(isinstance(v, IFDRational) for v in values): + self.tagtype[tag] = 5 + elif all(isinstance(v, int) for v in values): + if all(v < 2 ** 16 for v in values): + self.tagtype[tag] = 3 + else: + self.tagtype[tag] = 4 + elif all(isinstance(v, float) for v in values): + self.tagtype[tag] = 12 + else: + if py3: + if all(isinstance(v, str) for v in values): + self.tagtype[tag] = 2 + else: + # Never treat data as binary by default on Python 2. + self.tagtype[tag] = 2 + + if self.tagtype[tag] == 7 and py3: + values = [value.encode("ascii", 'replace') if isinstance( + value, str) else value] + + values = tuple(info.cvt_enum(value) for value in values) + + dest = self._tags_v1 if legacy_api else self._tags_v2 + + # Three branches: + # Spec'd length == 1, Actual length 1, store as element + # Spec'd length == 1, Actual > 1, Warn and truncate. Formerly barfed. + # No Spec, Actual length 1, Formerly (<4.2) returned a 1 element tuple. + # Don't mess with the legacy api, since it's frozen. + if ((info.length == 1) or + (info.length is None and len(values) == 1 and not legacy_api)): + # Don't mess with the legacy api, since it's frozen. + if legacy_api and self.tagtype[tag] in [5, 10]: # rationals + values = values, + try: + dest[tag], = values + except ValueError: + # We've got a builtin tag with 1 expected entry + warnings.warn( + "Metadata Warning, tag %s had too many entries: %s, expected 1" % ( + tag, len(values))) + dest[tag] = values[0] + + else: + # Spec'd length > 1 or undefined + # Unspec'd, and length > 1 + dest[tag] = values + + def __delitem__(self, tag): + self._tags_v2.pop(tag, None) + self._tags_v1.pop(tag, None) + self._tagdata.pop(tag, None) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v2)) + + def _unpack(self, fmt, data): + return struct.unpack(self._endian + fmt, data) + + def _pack(self, fmt, *values): + return struct.pack(self._endian + fmt, *values) + + def _register_loader(idx, size): + def decorator(func): + from .TiffTags import TYPES + if func.__name__.startswith("load_"): + TYPES[idx] = func.__name__[5:].replace("_", " ") + _load_dispatch[idx] = size, func + return func + return decorator + + def _register_writer(idx): + def decorator(func): + _write_dispatch[idx] = func + return func + return decorator + + def _register_basic(idx_fmt_name): + from .TiffTags import TYPES + idx, fmt, name = idx_fmt_name + TYPES[idx] = name + size = struct.calcsize("=" + fmt) + _load_dispatch[idx] = size, lambda self, data, legacy_api=True: ( + self._unpack("{}{}".format(len(data) // size, fmt), data)) + _write_dispatch[idx] = lambda self, *values: ( + b"".join(self._pack(fmt, value) for value in values)) + + list(map(_register_basic, + [(3, "H", "short"), + (4, "L", "long"), + (6, "b", "signed byte"), + (8, "h", "signed short"), + (9, "l", "signed long"), + (11, "f", "float"), + (12, "d", "double")])) + + @_register_loader(1, 1) # Basic type, except for the legacy API. + def load_byte(self, data, legacy_api=True): + return data + + @_register_writer(1) # Basic type, except for the legacy API. + def write_byte(self, data): + return data + + @_register_loader(2, 1) + def load_string(self, data, legacy_api=True): + if data.endswith(b"\0"): + data = data[:-1] + return data.decode("latin-1", "replace") + + @_register_writer(2) + def write_string(self, value): + # remerge of https://github.com/python-pillow/Pillow/pull/1416 + if sys.version_info.major == 2: + value = value.decode('ascii', 'replace') + return b"" + value.encode('ascii', 'replace') + b"\0" + + @_register_loader(5, 8) + def load_rational(self, data, legacy_api=True): + vals = self._unpack("{}L".format(len(data) // 4), data) + + def combine(a, b): return (a, b) if legacy_api else IFDRational(a, b) + return tuple(combine(num, denom) + for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(5) + def write_rational(self, *values): + return b"".join(self._pack("2L", *_limit_rational(frac, 2 ** 31)) + for frac in values) + + @_register_loader(7, 1) + def load_undefined(self, data, legacy_api=True): + return data + + @_register_writer(7) + def write_undefined(self, value): + return value + + @_register_loader(10, 8) + def load_signed_rational(self, data, legacy_api=True): + vals = self._unpack("{}l".format(len(data) // 4), data) + + def combine(a, b): return (a, b) if legacy_api else IFDRational(a, b) + return tuple(combine(num, denom) + for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(10) + def write_signed_rational(self, *values): + return b"".join(self._pack("2L", *_limit_rational(frac, 2 ** 30)) + for frac in values) + + def _ensure_read(self, fp, size): + ret = fp.read(size) + if len(ret) != size: + raise IOError("Corrupt EXIF data. " + + "Expecting to read %d bytes but only got %d. " % + (size, len(ret))) + return ret + + def load(self, fp): + + self.reset() + self._offset = fp.tell() + + try: + for i in range(self._unpack("H", self._ensure_read(fp, 2))[0]): + tag, typ, count, data = self._unpack("HHL4s", + self._ensure_read(fp, 12)) + if DEBUG: + tagname = TiffTags.lookup(tag).name + typname = TYPES.get(typ, "unknown") + print("tag: %s (%d) - type: %s (%d)" % + (tagname, tag, typname, typ), end=" ") + + try: + unit_size, handler = self._load_dispatch[typ] + except KeyError: + if DEBUG: + print("- unsupported type", typ) + continue # ignore unsupported type + size = count * unit_size + if size > 4: + here = fp.tell() + offset, = self._unpack("L", data) + if DEBUG: + print("Tag Location: %s - Data Location: %s" % + (here, offset), end=" ") + fp.seek(offset) + data = ImageFile._safe_read(fp, size) + fp.seek(here) + else: + data = data[:size] + + if len(data) != size: + warnings.warn("Possibly corrupt EXIF data. " + "Expecting to read %d bytes but only got %d." + " Skipping tag %s" % (size, len(data), tag)) + continue + + if not data: + continue + + self._tagdata[tag] = data + self.tagtype[tag] = typ + + if DEBUG: + if size > 32: + print("- value: " % size) + else: + print("- value:", self[tag]) + + self.next, = self._unpack("L", self._ensure_read(fp, 4)) + except IOError as msg: + warnings.warn(str(msg)) + return + + def save(self, fp): + + if fp.tell() == 0: # skip TIFF header on subsequent pages + # tiff header -- PIL always starts the first IFD at offset 8 + fp.write(self._prefix + self._pack("HL", 42, 8)) + + # FIXME What about tagdata? + fp.write(self._pack("H", len(self._tags_v2))) + + entries = [] + offset = fp.tell() + len(self._tags_v2) * 12 + 4 + stripoffsets = None + + # pass 1: convert tags to binary format + # always write tags in ascending order + for tag, value in sorted(self._tags_v2.items()): + if tag == STRIPOFFSETS: + stripoffsets = len(entries) + typ = self.tagtype.get(tag) + if DEBUG: + print("Tag %s, Type: %s, Value: %s" % (tag, typ, value)) + values = value if isinstance(value, tuple) else (value,) + data = self._write_dispatch[typ](self, *values) + if DEBUG: + tagname = TiffTags.lookup(tag).name + typname = TYPES.get(typ, "unknown") + print("save: %s (%d) - type: %s (%d)" % + (tagname, tag, typname, typ), end=" ") + if len(data) >= 16: + print("- value: " % len(data)) + else: + print("- value:", values) + + # count is sum of lengths for string and arbitrary data + count = len(data) if typ in [2, 7] else len(values) + # figure out if data fits into the entry + if len(data) <= 4: + entries.append((tag, typ, count, data.ljust(4, b"\0"), b"")) + else: + entries.append((tag, typ, count, self._pack("L", offset), + data)) + offset += (len(data) + 1) // 2 * 2 # pad to word + + # update strip offset data to point beyond auxiliary data + if stripoffsets is not None: + tag, typ, count, value, data = entries[stripoffsets] + if data: + raise NotImplementedError( + "multistrip support not yet implemented") + value = self._pack("L", self._unpack("L", value)[0] + offset) + entries[stripoffsets] = tag, typ, count, value, data + + # pass 2: write entries to file + for tag, typ, count, value, data in entries: + if DEBUG > 1: + print(tag, typ, count, repr(value), repr(data)) + fp.write(self._pack("HHL4s", tag, typ, count, value)) + + # -- overwrite here for multi-page -- + fp.write(b"\0\0\0\0") # end of entries + + # pass 3: write auxiliary data to file + for tag, typ, count, value, data in entries: + fp.write(data) + if len(data) & 1: + fp.write(b"\0") + + return offset + + +ImageFileDirectory_v2._load_dispatch = _load_dispatch +ImageFileDirectory_v2._write_dispatch = _write_dispatch +for idx, name in TYPES.items(): + name = name.replace(" ", "_") + setattr(ImageFileDirectory_v2, "load_" + name, _load_dispatch[idx][1]) + setattr(ImageFileDirectory_v2, "write_" + name, _write_dispatch[idx]) +del _load_dispatch, _write_dispatch, idx, name + + +# Legacy ImageFileDirectory support. +class ImageFileDirectory_v1(ImageFileDirectory_v2): + """This class represents the **legacy** interface to a TIFF tag directory. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v1() + ifd[key] = 'Some Data' + ifd.tagtype[key] = 2 + print(ifd[key]) + ('Some Data',) + + Also contains a dictionary of tag types as read from the tiff image file, + `~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`. + + Values are returned as a tuple. + + .. deprecated:: 3.0.0 + """ + def __init__(self, *args, **kwargs): + ImageFileDirectory_v2.__init__(self, *args, **kwargs) + self._legacy_api = True + + tags = property(lambda self: self._tags_v1) + tagdata = property(lambda self: self._tagdata) + + @classmethod + def from_v2(cls, original): + """ Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + + """ + + ifd = cls(prefix=original.prefix) + ifd._tagdata = original._tagdata + ifd.tagtype = original.tagtype + ifd.next = original.next # an indicator for multipage tiffs + return ifd + + def to_v2(self): + """ Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + + """ + + ifd = ImageFileDirectory_v2(prefix=self.prefix) + ifd._tagdata = dict(self._tagdata) + ifd.tagtype = dict(self.tagtype) + ifd._tags_v2 = dict(self._tags_v2) + return ifd + + def __contains__(self, tag): + return tag in self._tags_v1 or tag in self._tagdata + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v1)) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v1)) + + def __setitem__(self, tag, value): + for legacy_api in (False, True): + self._setitem(tag, value, legacy_api) + + def __getitem__(self, tag): + if tag not in self._tags_v1: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + for legacy in (False, True): + self._setitem(tag, handler(self, data, legacy), legacy) + val = self._tags_v1[tag] + if not isinstance(val, (tuple, bytes)): + val = val, + return val + + +# undone -- switch this pointer when IFD_LEGACY_API == False +ImageFileDirectory = ImageFileDirectory_v1 + + +## +# Image plugin for TIFF files. + +class TiffImageFile(ImageFile.ImageFile): + + format = "TIFF" + format_description = "Adobe TIFF" + _close_exclusive_fp_after_loading = False + + def _open(self): + "Open the first image in a TIFF file" + + # Header + ifh = self.fp.read(8) + + # image file directory (tag dictionary) + self.tag_v2 = ImageFileDirectory_v2(ifh) + + # legacy tag/ifd entries will be filled in later + self.tag = self.ifd = None + + # setup frame pointers + self.__first = self.__next = self.tag_v2.next + self.__frame = -1 + self.__fp = self.fp + self._frame_pos = [] + self._n_frames = None + self._is_animated = None + + if DEBUG: + print("*** TiffImageFile._open ***") + print("- __first:", self.__first) + print("- ifh: ", ifh) + + # and load the first frame + self._seek(0) + + @property + def n_frames(self): + if self._n_frames is None: + current = self.tell() + try: + while True: + self._seek(self.tell() + 1) + except EOFError: + self._n_frames = self.tell() + 1 + self.seek(current) + return self._n_frames + + @property + def is_animated(self): + if self._is_animated is None: + if self._n_frames is not None: + self._is_animated = self._n_frames != 1 + else: + current = self.tell() + + try: + self.seek(1) + self._is_animated = True + except EOFError: + self._is_animated = False + + self.seek(current) + return self._is_animated + + def seek(self, frame): + "Select a given frame as current image" + if not self._seek_check(frame): + return + self._seek(frame) + # Create a new core image object on second and + # subsequent frames in the image. Image may be + # different size/mode. + Image._decompression_bomb_check(self.size) + self.im = Image.core.new(self.mode, self.size) + + def _seek(self, frame): + self.fp = self.__fp + while len(self._frame_pos) <= frame: + if not self.__next: + raise EOFError("no more images in TIFF file") + if DEBUG: + print("Seeking to frame %s, on frame %s, " + "__next %s, location: %s" % + (frame, self.__frame, self.__next, self.fp.tell())) + # reset python3 buffered io handle in case fp + # was passed to libtiff, invalidating the buffer + self.fp.tell() + self.fp.seek(self.__next) + self._frame_pos.append(self.__next) + if DEBUG: + print("Loading tags, location: %s" % self.fp.tell()) + self.tag_v2.load(self.fp) + self.__next = self.tag_v2.next + self.__frame += 1 + self.fp.seek(self._frame_pos[frame]) + self.tag_v2.load(self.fp) + self.__next = self.tag_v2.next + # fill the legacy tag/ifd entries + self.tag = self.ifd = ImageFileDirectory_v1.from_v2(self.tag_v2) + self.__frame = frame + self._setup() + + def tell(self): + "Return the current frame number" + return self.__frame + + def _decoder(self, rawmode, layer, tile=None): + "Setup decoder contexts" + + args = None + if rawmode == "RGB" and self._planar_configuration == 2: + rawmode = rawmode[layer] + compression = self._compression + if compression == "raw": + args = (rawmode, 0, 1) + elif compression == "packbits": + args = rawmode + + return args + + def load(self): + if self.use_load_libtiff: + return self._load_libtiff() + return super(TiffImageFile, self).load() + + def load_end(self): + # allow closing if we're on the first frame, there's no next + # This is the ImageFile.load path only, libtiff specific below. + if self.__frame == 0 and not self.__next: + self._close_exclusive_fp_after_loading = True + + def _load_libtiff(self): + """ Overload method triggered when we detect a compressed tiff + Calls out to libtiff """ + + pixel = Image.Image.load(self) + + if self.tile is None: + raise IOError("cannot load this image") + if not self.tile: + return pixel + + self.load_prepare() + + if not len(self.tile) == 1: + raise IOError("Not exactly one tile") + + # (self._compression, (extents tuple), + # 0, (rawmode, self._compression, fp)) + extents = self.tile[0][1] + args = list(self.tile[0][3]) + [self.tag_v2.offset] + + # To be nice on memory footprint, if there's a + # file descriptor, use that instead of reading + # into a string in python. + # libtiff closes the file descriptor, so pass in a dup. + try: + fp = hasattr(self.fp, "fileno") and os.dup(self.fp.fileno()) + # flush the file descriptor, prevents error on pypy 2.4+ + # should also eliminate the need for fp.tell for py3 + # in _seek + if hasattr(self.fp, "flush"): + self.fp.flush() + except IOError: + # io.BytesIO have a fileno, but returns an IOError if + # it doesn't use a file descriptor. + fp = False + + if fp: + args[2] = fp + + decoder = Image._getdecoder(self.mode, 'libtiff', tuple(args), + self.decoderconfig) + try: + decoder.setimage(self.im, extents) + except ValueError: + raise IOError("Couldn't set the image") + + if hasattr(self.fp, "getvalue"): + # We've got a stringio like thing passed in. Yay for all in memory. + # The decoder needs the entire file in one shot, so there's not + # a lot we can do here other than give it the entire file. + # unless we could do something like get the address of the + # underlying string for stringio. + # + # Rearranging for supporting byteio items, since they have a fileno + # that returns an IOError if there's no underlying fp. Easier to + # deal with here by reordering. + if DEBUG: + print("have getvalue. just sending in a string from getvalue") + n, err = decoder.decode(self.fp.getvalue()) + elif hasattr(self.fp, "fileno"): + # we've got a actual file on disk, pass in the fp. + if DEBUG: + print("have fileno, calling fileno version of the decoder.") + self.fp.seek(0) + # 4 bytes, otherwise the trace might error out + n, err = decoder.decode(b"fpfp") + else: + # we have something else. + if DEBUG: + print("don't have fileno or getvalue. just reading") + # UNDONE -- so much for that buffer size thing. + n, err = decoder.decode(self.fp.read()) + + self.tile = [] + self.readonly = 0 + # libtiff closed the fp in a, we need to close self.fp, if possible + if self._exclusive_fp: + if self.__frame == 0 and not self.__next: + self.fp.close() + self.fp = None # might be shared + + if err < 0: + raise IOError(err) + + return Image.Image.load(self) + + def _setup(self): + "Setup this image object based on current tags" + + if 0xBC01 in self.tag_v2: + raise IOError("Windows Media Photo files not yet supported") + + # extract relevant tags + self._compression = COMPRESSION_INFO[self.tag_v2.get(COMPRESSION, 1)] + self._planar_configuration = self.tag_v2.get(PLANAR_CONFIGURATION, 1) + + # photometric is a required tag, but not everyone is reading + # the specification + photo = self.tag_v2.get(PHOTOMETRIC_INTERPRETATION, 0) + + fillorder = self.tag_v2.get(FILLORDER, 1) + + if DEBUG: + print("*** Summary ***") + print("- compression:", self._compression) + print("- photometric_interpretation:", photo) + print("- planar_configuration:", self._planar_configuration) + print("- fill_order:", fillorder) + + # size + xsize = self.tag_v2.get(IMAGEWIDTH) + ysize = self.tag_v2.get(IMAGELENGTH) + self.size = xsize, ysize + + if DEBUG: + print("- size:", self.size) + + sampleFormat = self.tag_v2.get(SAMPLEFORMAT, (1,)) + if (len(sampleFormat) > 1 + and max(sampleFormat) == min(sampleFormat) == 1): + # SAMPLEFORMAT is properly per band, so an RGB image will + # be (1,1,1). But, we don't support per band pixel types, + # and anything more than one band is a uint8. So, just + # take the first element. Revisit this if adding support + # for more exotic images. + sampleFormat = (1,) + + bps_tuple = self.tag_v2.get(BITSPERSAMPLE, (1,)) + extra_tuple = self.tag_v2.get(EXTRASAMPLES, ()) + if photo in (2, 6, 8): # RGB, YCbCr, LAB + bps_count = 3 + elif photo == 5: # CMYK + bps_count = 4 + else: + bps_count = 1 + bps_count += len(extra_tuple) + # Some files have only one value in bps_tuple, + # while should have more. Fix it + if bps_count > len(bps_tuple) and len(bps_tuple) == 1: + bps_tuple = bps_tuple * bps_count + + # mode: check photometric interpretation and bits per pixel + key = (self.tag_v2.prefix, photo, sampleFormat, fillorder, + bps_tuple, extra_tuple) + if DEBUG: + print("format key:", key) + try: + self.mode, rawmode = OPEN_INFO[key] + except KeyError: + if DEBUG: + print("- unsupported format") + raise SyntaxError("unknown pixel mode") + + if DEBUG: + print("- raw mode:", rawmode) + print("- pil mode:", self.mode) + + self.info["compression"] = self._compression + + xres = self.tag_v2.get(X_RESOLUTION, 1) + yres = self.tag_v2.get(Y_RESOLUTION, 1) + + if xres and yres: + resunit = self.tag_v2.get(RESOLUTION_UNIT) + if resunit == 2: # dots per inch + self.info["dpi"] = xres, yres + elif resunit == 3: # dots per centimeter. convert to dpi + self.info["dpi"] = xres * 2.54, yres * 2.54 + elif resunit is None: # used to default to 1, but now 2) + self.info["dpi"] = xres, yres + # For backward compatibility, + # we also preserve the old behavior + self.info["resolution"] = xres, yres + else: # No absolute unit of measurement + self.info["resolution"] = xres, yres + + # build tile descriptors + x = y = l = 0 + self.tile = [] + self.use_load_libtiff = False + if STRIPOFFSETS in self.tag_v2: + # striped image + offsets = self.tag_v2[STRIPOFFSETS] + h = self.tag_v2.get(ROWSPERSTRIP, ysize) + w = self.size[0] + if READ_LIBTIFF or self._compression != 'raw': + # if DEBUG: + # print("Activating g4 compression for whole file") + + # Decoder expects entire file as one tile. + # There's a buffer size limit in load (64k) + # so large g4 images will fail if we use that + # function. + # + # Setup the one tile for the whole image, then + # use the _load_libtiff function. + + self.use_load_libtiff = True + + # libtiff handles the fillmode for us, so 1;IR should + # actually be 1;I. Including the R double reverses the + # bits, so stripes of the image are reversed. See + # https://github.com/python-pillow/Pillow/issues/279 + if fillorder == 2: + key = ( + self.tag_v2.prefix, photo, sampleFormat, 1, + self.tag_v2.get(BITSPERSAMPLE, (1,)), + self.tag_v2.get(EXTRASAMPLES, ()) + ) + if DEBUG: + print("format key:", key) + # this should always work, since all the + # fillorder==2 modes have a corresponding + # fillorder=1 mode + self.mode, rawmode = OPEN_INFO[key] + # libtiff always returns the bytes in native order. + # we're expecting image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if rawmode == 'I;16': + rawmode = 'I;16N' + if ';16B' in rawmode: + rawmode = rawmode.replace(';16B', ';16N') + if ';16L' in rawmode: + rawmode = rawmode.replace(';16L', ';16N') + + # Offset in the tile tuple is 0, we go from 0,0 to + # w,h, and we only do this once -- eds + a = (rawmode, self._compression, False) + self.tile.append( + (self._compression, + (0, 0, w, ysize), + 0, a)) + a = None + + else: + for i, offset in enumerate(offsets): + a = self._decoder(rawmode, l, i) + self.tile.append( + (self._compression, + (0, min(y, ysize), w, min(y+h, ysize)), + offset, a)) + if DEBUG: + print("tiles: ", self.tile) + y = y + h + if y >= self.size[1]: + x = y = 0 + l += 1 + a = None + elif TILEOFFSETS in self.tag_v2: + # tiled image + w = self.tag_v2.get(322) + h = self.tag_v2.get(323) + a = None + for o in self.tag_v2[TILEOFFSETS]: + if not a: + a = self._decoder(rawmode, l) + # FIXME: this doesn't work if the image size + # is not a multiple of the tile size... + self.tile.append( + (self._compression, + (x, y, x+w, y+h), + o, a)) + x = x + w + if x >= self.size[0]: + x, y = 0, y + h + if y >= self.size[1]: + x = y = 0 + l += 1 + a = None + else: + if DEBUG: + print("- unsupported data organization") + raise SyntaxError("unknown data organization") + + # Fix up info. + if ICCPROFILE in self.tag_v2: + self.info['icc_profile'] = self.tag_v2[ICCPROFILE] + + # fixup palette descriptor + + if self.mode == "P": + palette = [o8(b // 256) for b in self.tag_v2[COLORMAP]] + self.palette = ImagePalette.raw("RGB;L", b"".join(palette)) + + +# +# -------------------------------------------------------------------- +# Write TIFF files + +# little endian is default except for image modes with +# explicit big endian byte-order + +SAVE_INFO = { + # mode => rawmode, byteorder, photometrics, + # sampleformat, bitspersample, extra + "1": ("1", II, 1, 1, (1,), None), + "L": ("L", II, 1, 1, (8,), None), + "LA": ("LA", II, 1, 1, (8, 8), 2), + "P": ("P", II, 3, 1, (8,), None), + "PA": ("PA", II, 3, 1, (8, 8), 2), + "I": ("I;32S", II, 1, 2, (32,), None), + "I;16": ("I;16", II, 1, 1, (16,), None), + "I;16S": ("I;16S", II, 1, 2, (16,), None), + "F": ("F;32F", II, 1, 3, (32,), None), + "RGB": ("RGB", II, 2, 1, (8, 8, 8), None), + "RGBX": ("RGBX", II, 2, 1, (8, 8, 8, 8), 0), + "RGBA": ("RGBA", II, 2, 1, (8, 8, 8, 8), 2), + "CMYK": ("CMYK", II, 5, 1, (8, 8, 8, 8), None), + "YCbCr": ("YCbCr", II, 6, 1, (8, 8, 8), None), + "LAB": ("LAB", II, 8, 1, (8, 8, 8), None), + + "I;32BS": ("I;32BS", MM, 1, 2, (32,), None), + "I;16B": ("I;16B", MM, 1, 1, (16,), None), + "I;16BS": ("I;16BS", MM, 1, 2, (16,), None), + "F;32BF": ("F;32BF", MM, 1, 3, (32,), None), +} + + +def _save(im, fp, filename): + + try: + rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] + except KeyError: + raise IOError("cannot write mode %s as TIFF" % im.mode) + + ifd = ImageFileDirectory_v2(prefix=prefix) + + compression = im.encoderinfo.get('compression', + im.info.get('compression', 'raw')) + + libtiff = WRITE_LIBTIFF or compression != 'raw' + + # required for color libtiff images + ifd[PLANAR_CONFIGURATION] = getattr(im, '_planar_configuration', 1) + + ifd[IMAGEWIDTH] = im.size[0] + ifd[IMAGELENGTH] = im.size[1] + + # write any arbitrary tags passed in as an ImageFileDirectory + info = im.encoderinfo.get("tiffinfo", {}) + if DEBUG: + print("Tiffinfo Keys: %s" % list(info)) + if isinstance(info, ImageFileDirectory_v1): + info = info.to_v2() + for key in info: + ifd[key] = info.get(key) + try: + ifd.tagtype[key] = info.tagtype[key] + except: + pass # might not be an IFD, Might not have populated type + + # additions written by Greg Couch, gregc@cgl.ucsf.edu + # inspired by image-sig posting from Kevin Cazabon, kcazabon@home.com + if hasattr(im, 'tag_v2'): + # preserve tags from original TIFF image file + for key in (RESOLUTION_UNIT, X_RESOLUTION, Y_RESOLUTION, + IPTC_NAA_CHUNK, PHOTOSHOP_CHUNK, XMP): + if key in im.tag_v2: + ifd[key] = im.tag_v2[key] + ifd.tagtype[key] = im.tag_v2.tagtype[key] + + # preserve ICC profile (should also work when saving other formats + # which support profiles as TIFF) -- 2008-06-06 Florian Hoech + if "icc_profile" in im.info: + ifd[ICCPROFILE] = im.info["icc_profile"] + + for key, name in [(IMAGEDESCRIPTION, "description"), + (X_RESOLUTION, "resolution"), + (Y_RESOLUTION, "resolution"), + (X_RESOLUTION, "x_resolution"), + (Y_RESOLUTION, "y_resolution"), + (RESOLUTION_UNIT, "resolution_unit"), + (SOFTWARE, "software"), + (DATE_TIME, "date_time"), + (ARTIST, "artist"), + (COPYRIGHT, "copyright")]: + if name in im.encoderinfo: + ifd[key] = im.encoderinfo[name] + + dpi = im.encoderinfo.get("dpi") + if dpi: + ifd[RESOLUTION_UNIT] = 2 + ifd[X_RESOLUTION] = dpi[0] + ifd[Y_RESOLUTION] = dpi[1] + + if bits != (1,): + ifd[BITSPERSAMPLE] = bits + if len(bits) != 1: + ifd[SAMPLESPERPIXEL] = len(bits) + if extra is not None: + ifd[EXTRASAMPLES] = extra + if format != 1: + ifd[SAMPLEFORMAT] = format + + ifd[PHOTOMETRIC_INTERPRETATION] = photo + + if im.mode == "P": + lut = im.im.getpalette("RGB", "RGB;L") + ifd[COLORMAP] = tuple(i8(v) * 256 for v in lut) + # data orientation + stride = len(bits) * ((im.size[0]*bits[0]+7)//8) + ifd[ROWSPERSTRIP] = im.size[1] + ifd[STRIPBYTECOUNTS] = stride * im.size[1] + ifd[STRIPOFFSETS] = 0 # this is adjusted by IFD writer + # no compression by default: + ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1) + + if libtiff: + if DEBUG: + print("Saving using libtiff encoder") + print("Items: %s" % sorted(ifd.items())) + _fp = 0 + if hasattr(fp, "fileno"): + try: + fp.seek(0) + _fp = os.dup(fp.fileno()) + except io.UnsupportedOperation: + pass + + # STRIPOFFSETS and STRIPBYTECOUNTS are added by the library + # based on the data in the strip. + blocklist = [STRIPOFFSETS, STRIPBYTECOUNTS] + atts = {} + # bits per sample is a single short in the tiff directory, not a list. + atts[BITSPERSAMPLE] = bits[0] + # Merge the ones that we have with (optional) more bits from + # the original file, e.g x,y resolution so that we can + # save(load('')) == original file. + legacy_ifd = {} + if hasattr(im, 'tag'): + legacy_ifd = im.tag.to_v2() + for tag, value in itertools.chain(ifd.items(), + getattr(im, 'tag_v2', {}).items(), + legacy_ifd.items()): + # Libtiff can only process certain core items without adding + # them to the custom dictionary. It will segfault if it attempts + # to add a custom tag without the dictionary entry + # + # UNDONE -- add code for the custom dictionary + if tag not in TiffTags.LIBTIFF_CORE: + continue + if tag not in atts and tag not in blocklist: + if isinstance(value, str if py3 else unicode): + atts[tag] = value.encode('ascii', 'replace') + b"\0" + elif isinstance(value, IFDRational): + atts[tag] = float(value) + else: + atts[tag] = value + + if DEBUG: + print("Converted items: %s" % sorted(atts.items())) + + # libtiff always expects the bytes in native order. + # we're storing image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if im.mode in ('I;16B', 'I;16'): + rawmode = 'I;16N' + + a = (rawmode, compression, _fp, filename, atts) + # print(im.mode, compression, a, im.encoderconfig) + e = Image._getencoder(im.mode, 'libtiff', a, im.encoderconfig) + e.setimage(im.im, (0, 0)+im.size) + while True: + # undone, change to self.decodermaxblock: + l, s, d = e.encode(16*1024) + if not _fp: + fp.write(d) + if s: + break + if s < 0: + raise IOError("encoder error %d when writing image file" % s) + + else: + offset = ifd.save(fp) + + ImageFile._save(im, fp, [ + ("raw", (0, 0)+im.size, offset, (rawmode, stride, 1)) + ]) + + # -- helper for multi-page save -- + if "_debug_multipage" in im.encoderinfo: + # just to access o32 and o16 (using correct byte order) + im._debug_multipage = ifd + + +class AppendingTiffWriter: + fieldSizes = [ + 0, # None + 1, # byte + 1, # ascii + 2, # short + 4, # long + 8, # rational + 1, # sbyte + 1, # undefined + 2, # sshort + 4, # slong + 8, # srational + 4, # float + 8, # double + ] + + # StripOffsets = 273 + # FreeOffsets = 288 + # TileOffsets = 324 + # JPEGQTables = 519 + # JPEGDCTables = 520 + # JPEGACTables = 521 + Tags = {273, 288, 324, 519, 520, 521} + + def __init__(self, fn, new=False): + if hasattr(fn, 'read'): + self.f = fn + self.close_fp = False + else: + self.name = fn + self.close_fp = True + try: + self.f = io.open(fn, "w+b" if new else "r+b") + except IOError: + self.f = io.open(fn, "w+b") + self.beginning = self.f.tell() + self.setup() + + def setup(self): + # Reset everything. + self.f.seek(self.beginning, os.SEEK_SET) + + self.whereToWriteNewIFDOffset = None + self.offsetOfNewPage = 0 + + self.IIMM = IIMM = self.f.read(4) + if not IIMM: + # empty file - first page + self.isFirst = True + return + + self.isFirst = False + if IIMM == b"II\x2a\x00": + self.setEndian("<") + elif IIMM == b"MM\x00\x2a": + self.setEndian(">") + else: + raise RuntimeError("Invalid TIFF file header") + + self.skipIFDs() + self.goToEnd() + + def finalize(self): + if self.isFirst: + return + + # fix offsets + self.f.seek(self.offsetOfNewPage) + + IIMM = self.f.read(4) + if not IIMM: + # raise RuntimeError("nothing written into new page") + # Make it easy to finish a frame without committing to a new one. + return + + if IIMM != self.IIMM: + raise RuntimeError("IIMM of new page doesn't match IIMM of " + "first page") + + IFDoffset = self.readLong() + IFDoffset += self.offsetOfNewPage + self.f.seek(self.whereToWriteNewIFDOffset) + self.writeLong(IFDoffset) + self.f.seek(IFDoffset) + self.fixIFD() + + def newFrame(self): + # Call this to finish a frame. + self.finalize() + self.setup() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + if self.close_fp: + self.close() + return False + + def tell(self): + return self.f.tell() - self.offsetOfNewPage + + def seek(self, offset, whence): + if whence == os.SEEK_SET: + offset += self.offsetOfNewPage + + self.f.seek(offset, whence) + return self.tell() + + def goToEnd(self): + self.f.seek(0, os.SEEK_END) + pos = self.f.tell() + + # pad to 16 byte boundary + padBytes = 16 - pos % 16 + if 0 < padBytes < 16: + self.f.write(bytes(bytearray(padBytes))) + self.offsetOfNewPage = self.f.tell() + + def setEndian(self, endian): + self.endian = endian + self.longFmt = self.endian + "L" + self.shortFmt = self.endian + "H" + self.tagFormat = self.endian + "HHL" + + def skipIFDs(self): + while True: + IFDoffset = self.readLong() + if IFDoffset == 0: + self.whereToWriteNewIFDOffset = self.f.tell() - 4 + break + + self.f.seek(IFDoffset) + numTags = self.readShort() + self.f.seek(numTags * 12, os.SEEK_CUR) + + def write(self, data): + return self.f.write(data) + + def readShort(self): + value, = struct.unpack(self.shortFmt, self.f.read(2)) + return value + + def readLong(self): + value, = struct.unpack(self.longFmt, self.f.read(4)) + return value + + def rewriteLastShortToLong(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError("wrote only %u bytes but wanted 4" % + bytesWritten) + + def rewriteLastShort(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.shortFmt, value)) + if bytesWritten is not None and bytesWritten != 2: + raise RuntimeError("wrote only %u bytes but wanted 2" % + bytesWritten) + + def rewriteLastLong(self, value): + self.f.seek(-4, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError("wrote only %u bytes but wanted 4" % + bytesWritten) + + def writeShort(self, value): + bytesWritten = self.f.write(struct.pack(self.shortFmt, value)) + if bytesWritten is not None and bytesWritten != 2: + raise RuntimeError("wrote only %u bytes but wanted 2" % + bytesWritten) + + def writeLong(self, value): + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError("wrote only %u bytes but wanted 4" % + bytesWritten) + + def close(self): + self.finalize() + self.f.close() + + def fixIFD(self): + numTags = self.readShort() + + for i in range(numTags): + tag, fieldType, count = struct.unpack(self.tagFormat, + self.f.read(8)) + + fieldSize = self.fieldSizes[fieldType] + totalSize = fieldSize * count + isLocal = (totalSize <= 4) + if not isLocal: + offset = self.readLong() + offset += self.offsetOfNewPage + self.rewriteLastLong(offset) + + if tag in self.Tags: + curPos = self.f.tell() + + if isLocal: + self.fixOffsets(count, isShort=(fieldSize == 2), + isLong=(fieldSize == 4)) + self.f.seek(curPos + 4) + else: + self.f.seek(offset) + self.fixOffsets(count, isShort=(fieldSize == 2), + isLong=(fieldSize == 4)) + self.f.seek(curPos) + + offset = curPos = None + + elif isLocal: + # skip the locally stored value that is not an offset + self.f.seek(4, os.SEEK_CUR) + + def fixOffsets(self, count, isShort=False, isLong=False): + if not isShort and not isLong: + raise RuntimeError("offset is neither short nor long") + + for i in range(count): + offset = self.readShort() if isShort else self.readLong() + offset += self.offsetOfNewPage + if isShort and offset >= 65536: + # offset is now too large - we must convert shorts to longs + if count != 1: + raise RuntimeError("not implemented") # XXX TODO + + # simple case - the offset is just one and therefore it is + # local (not referenced with another offset) + self.rewriteLastShortToLong(offset) + self.f.seek(-10, os.SEEK_CUR) + self.writeShort(4) # rewrite the type to LONG + self.f.seek(8, os.SEEK_CUR) + elif isShort: + self.rewriteLastShort(offset) + else: + self.rewriteLastLong(offset) + + +def _save_all(im, fp, filename): + encoderinfo = im.encoderinfo.copy() + encoderconfig = im.encoderconfig + append_images = list(encoderinfo.get("append_images", [])) + if not hasattr(im, "n_frames") and not append_images: + return _save(im, fp, filename) + + cur_idx = im.tell() + try: + with AppendingTiffWriter(fp) as tf: + for ims in [im]+append_images: + ims.encoderinfo = encoderinfo + ims.encoderconfig = encoderconfig + if not hasattr(ims, "n_frames"): + nfr = 1 + else: + nfr = ims.n_frames + + for idx in range(nfr): + ims.seek(idx) + ims.load() + _save(ims, tf, filename) + tf.newFrame() + finally: + im.seek(cur_idx) + + +# +# -------------------------------------------------------------------- +# Register + +Image.register_open(TiffImageFile.format, TiffImageFile, _accept) +Image.register_save(TiffImageFile.format, _save) +Image.register_save_all(TiffImageFile.format, _save_all) + +Image.register_extensions(TiffImageFile.format, [".tif", ".tiff"]) + +Image.register_mime(TiffImageFile.format, "image/tiff") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff767a6e77d3f38ad18901572dc416b8b2bcdb04 GIT binary patch literal 56354 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffTags.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffTags.py new file mode 100644 index 0000000..427f3a4 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffTags.py @@ -0,0 +1,448 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF tags +# +# This module provides clear-text names for various well-known +# TIFF tags. the TIFF codec works just fine without it. +# +# Copyright (c) Secret Labs AB 1999. +# +# See the README file for information on usage and redistribution. +# + +## +# This module provides constants and clear-text names for various +# well-known TIFF tags. +## + +from collections import namedtuple + + +class TagInfo(namedtuple("_TagInfo", "value name type length enum")): + __slots__ = [] + + def __new__(cls, value=None, name="unknown", type=None, length=None, enum=None): + return super(TagInfo, cls).__new__( + cls, value, name, type, length, enum or {}) + + def cvt_enum(self, value): + return self.enum.get(value, value) + + +def lookup(tag): + """ + :param tag: Integer tag number + :returns: Taginfo namedtuple, From the TAGS_V2 info if possible, + otherwise just populating the value and name from TAGS. + If the tag is not recognized, "unknown" is returned for the name + + """ + + return TAGS_V2.get(tag, TagInfo(tag, TAGS.get(tag, 'unknown'))) + + +## +# Map tag numbers to tag info. +# +# id: (Name, Type, Length, enum_values) +# +# The length here differs from the length in the tiff spec. For +# numbers, the tiff spec is for the number of fields returned. We +# agree here. For string-like types, the tiff spec uses the length of +# field in bytes. In Pillow, we are using the number of expected +# fields, in general 1 for string-like types. + + +BYTE = 1 +ASCII = 2 +SHORT = 3 +LONG = 4 +RATIONAL = 5 +UNDEFINED = 7 +SIGNED_RATIONAL = 10 +DOUBLE = 12 + +TAGS_V2 = { + + 254: ("NewSubfileType", LONG, 1), + 255: ("SubfileType", SHORT, 1), + 256: ("ImageWidth", LONG, 1), + 257: ("ImageLength", LONG, 1), + 258: ("BitsPerSample", SHORT, 0), + 259: ("Compression", SHORT, 1, + {"Uncompressed": 1, "CCITT 1d": 2, "Group 3 Fax": 3, "Group 4 Fax": 4, + "LZW": 5, "JPEG": 6, "PackBits": 32773}), + + 262: ("PhotometricInterpretation", SHORT, 1, + {"WhiteIsZero": 0, "BlackIsZero": 1, "RGB": 2, "RGB Palette": 3, + "Transparency Mask": 4, "CMYK": 5, "YCbCr": 6, "CieLAB": 8, + "CFA": 32803, # TIFF/EP, Adobe DNG + "LinearRaw": 32892}), # Adobe DNG + 263: ("Threshholding", SHORT, 1), + 264: ("CellWidth", SHORT, 1), + 265: ("CellLength", SHORT, 1), + 266: ("FillOrder", SHORT, 1), + 269: ("DocumentName", ASCII, 1), + + 270: ("ImageDescription", ASCII, 1), + 271: ("Make", ASCII, 1), + 272: ("Model", ASCII, 1), + 273: ("StripOffsets", LONG, 0), + 274: ("Orientation", SHORT, 1), + 277: ("SamplesPerPixel", SHORT, 1), + 278: ("RowsPerStrip", LONG, 1), + 279: ("StripByteCounts", LONG, 0), + + 280: ("MinSampleValue", LONG, 0), + 281: ("MaxSampleValue", SHORT, 0), + 282: ("XResolution", RATIONAL, 1), + 283: ("YResolution", RATIONAL, 1), + 284: ("PlanarConfiguration", SHORT, 1, {"Contiguous": 1, "Separate": 2}), + 285: ("PageName", ASCII, 1), + 286: ("XPosition", RATIONAL, 1), + 287: ("YPosition", RATIONAL, 1), + 288: ("FreeOffsets", LONG, 1), + 289: ("FreeByteCounts", LONG, 1), + + 290: ("GrayResponseUnit", SHORT, 1), + 291: ("GrayResponseCurve", SHORT, 0), + 292: ("T4Options", LONG, 1), + 293: ("T6Options", LONG, 1), + 296: ("ResolutionUnit", SHORT, 1, {"none": 1, "inch": 2, "cm": 3}), + 297: ("PageNumber", SHORT, 2), + + 301: ("TransferFunction", SHORT, 0), + 305: ("Software", ASCII, 1), + 306: ("DateTime", ASCII, 1), + + 315: ("Artist", ASCII, 1), + 316: ("HostComputer", ASCII, 1), + 317: ("Predictor", SHORT, 1, {"none": 1, "Horizontal Differencing": 2}), + 318: ("WhitePoint", RATIONAL, 2), + 319: ("PrimaryChromaticities", SHORT, 6), + + 320: ("ColorMap", SHORT, 0), + 321: ("HalftoneHints", SHORT, 2), + 322: ("TileWidth", LONG, 1), + 323: ("TileLength", LONG, 1), + 324: ("TileOffsets", LONG, 0), + 325: ("TileByteCounts", LONG, 0), + + 332: ("InkSet", SHORT, 1), + 333: ("InkNames", ASCII, 1), + 334: ("NumberOfInks", SHORT, 1), + 336: ("DotRange", SHORT, 0), + 337: ("TargetPrinter", ASCII, 1), + 338: ("ExtraSamples", SHORT, 0), + 339: ("SampleFormat", SHORT, 0), + + 340: ("SMinSampleValue", DOUBLE, 0), + 341: ("SMaxSampleValue", DOUBLE, 0), + 342: ("TransferRange", SHORT, 6), + + 347: ("JPEGTables", UNDEFINED, 1), + + # obsolete JPEG tags + 512: ("JPEGProc", SHORT, 1), + 513: ("JPEGInterchangeFormat", LONG, 1), + 514: ("JPEGInterchangeFormatLength", LONG, 1), + 515: ("JPEGRestartInterval", SHORT, 1), + 517: ("JPEGLosslessPredictors", SHORT, 0), + 518: ("JPEGPointTransforms", SHORT, 0), + 519: ("JPEGQTables", LONG, 0), + 520: ("JPEGDCTables", LONG, 0), + 521: ("JPEGACTables", LONG, 0), + + 529: ("YCbCrCoefficients", RATIONAL, 3), + 530: ("YCbCrSubSampling", SHORT, 2), + 531: ("YCbCrPositioning", SHORT, 1), + 532: ("ReferenceBlackWhite", LONG, 0), + + 700: ('XMP', BYTE, 1), + + 33432: ("Copyright", ASCII, 1), + 34377: ('PhotoshopInfo', BYTE, 1), + + # FIXME add more tags here + 34665: ("ExifIFD", SHORT, 1), + 34675: ('ICCProfile', UNDEFINED, 1), + 34853: ('GPSInfoIFD', BYTE, 1), + + # MPInfo + 45056: ("MPFVersion", UNDEFINED, 1), + 45057: ("NumberOfImages", LONG, 1), + 45058: ("MPEntry", UNDEFINED, 1), + 45059: ("ImageUIDList", UNDEFINED, 0), # UNDONE, check + 45060: ("TotalFrames", LONG, 1), + 45313: ("MPIndividualNum", LONG, 1), + 45569: ("PanOrientation", LONG, 1), + 45570: ("PanOverlap_H", RATIONAL, 1), + 45571: ("PanOverlap_V", RATIONAL, 1), + 45572: ("BaseViewpointNum", LONG, 1), + 45573: ("ConvergenceAngle", SIGNED_RATIONAL, 1), + 45574: ("BaselineLength", RATIONAL, 1), + 45575: ("VerticalDivergence", SIGNED_RATIONAL, 1), + 45576: ("AxisDistance_X", SIGNED_RATIONAL, 1), + 45577: ("AxisDistance_Y", SIGNED_RATIONAL, 1), + 45578: ("AxisDistance_Z", SIGNED_RATIONAL, 1), + 45579: ("YawAngle", SIGNED_RATIONAL, 1), + 45580: ("PitchAngle", SIGNED_RATIONAL, 1), + 45581: ("RollAngle", SIGNED_RATIONAL, 1), + + 50741: ("MakerNoteSafety", SHORT, 1, {"Unsafe": 0, "Safe": 1}), + 50780: ("BestQualityScale", RATIONAL, 1), + 50838: ("ImageJMetaDataByteCounts", LONG, 0), # Can be more than one + 50839: ("ImageJMetaData", UNDEFINED, 1) # see Issue #2006 +} + +# Legacy Tags structure +# these tags aren't included above, but were in the previous versions +TAGS = {347: 'JPEGTables', + 700: 'XMP', + + # Additional Exif Info + 32932: 'Wang Annotation', + 33434: 'ExposureTime', + 33437: 'FNumber', + 33445: 'MD FileTag', + 33446: 'MD ScalePixel', + 33447: 'MD ColorTable', + 33448: 'MD LabName', + 33449: 'MD SampleInfo', + 33450: 'MD PrepDate', + 33451: 'MD PrepTime', + 33452: 'MD FileUnits', + 33550: 'ModelPixelScaleTag', + 33723: 'IptcNaaInfo', + 33918: 'INGR Packet Data Tag', + 33919: 'INGR Flag Registers', + 33920: 'IrasB Transformation Matrix', + 33922: 'ModelTiepointTag', + 34264: 'ModelTransformationTag', + 34377: 'PhotoshopInfo', + 34735: 'GeoKeyDirectoryTag', + 34736: 'GeoDoubleParamsTag', + 34737: 'GeoAsciiParamsTag', + 34850: 'ExposureProgram', + 34852: 'SpectralSensitivity', + 34855: 'ISOSpeedRatings', + 34856: 'OECF', + 34864: 'SensitivityType', + 34865: 'StandardOutputSensitivity', + 34866: 'RecommendedExposureIndex', + 34867: 'ISOSpeed', + 34868: 'ISOSpeedLatitudeyyy', + 34869: 'ISOSpeedLatitudezzz', + 34908: 'HylaFAX FaxRecvParams', + 34909: 'HylaFAX FaxSubAddress', + 34910: 'HylaFAX FaxRecvTime', + 36864: 'ExifVersion', + 36867: 'DateTimeOriginal', + 36868: 'DateTImeDigitized', + 37121: 'ComponentsConfiguration', + 37122: 'CompressedBitsPerPixel', + 37724: 'ImageSourceData', + 37377: 'ShutterSpeedValue', + 37378: 'ApertureValue', + 37379: 'BrightnessValue', + 37380: 'ExposureBiasValue', + 37381: 'MaxApertureValue', + 37382: 'SubjectDistance', + 37383: 'MeteringMode', + 37384: 'LightSource', + 37385: 'Flash', + 37386: 'FocalLength', + 37396: 'SubjectArea', + 37500: 'MakerNote', + 37510: 'UserComment', + 37520: 'SubSec', + 37521: 'SubSecTimeOriginal', + 37522: 'SubsecTimeDigitized', + 40960: 'FlashPixVersion', + 40961: 'ColorSpace', + 40962: 'PixelXDimension', + 40963: 'PixelYDimension', + 40964: 'RelatedSoundFile', + 40965: 'InteroperabilityIFD', + 41483: 'FlashEnergy', + 41484: 'SpatialFrequencyResponse', + 41486: 'FocalPlaneXResolution', + 41487: 'FocalPlaneYResolution', + 41488: 'FocalPlaneResolutionUnit', + 41492: 'SubjectLocation', + 41493: 'ExposureIndex', + 41495: 'SensingMethod', + 41728: 'FileSource', + 41729: 'SceneType', + 41730: 'CFAPattern', + 41985: 'CustomRendered', + 41986: 'ExposureMode', + 41987: 'WhiteBalance', + 41988: 'DigitalZoomRatio', + 41989: 'FocalLengthIn35mmFilm', + 41990: 'SceneCaptureType', + 41991: 'GainControl', + 41992: 'Contrast', + 41993: 'Saturation', + 41994: 'Sharpness', + 41995: 'DeviceSettingDescription', + 41996: 'SubjectDistanceRange', + 42016: 'ImageUniqueID', + 42032: 'CameraOwnerName', + 42033: 'BodySerialNumber', + 42034: 'LensSpecification', + 42035: 'LensMake', + 42036: 'LensModel', + 42037: 'LensSerialNumber', + 42112: 'GDAL_METADATA', + 42113: 'GDAL_NODATA', + 42240: 'Gamma', + 50215: 'Oce Scanjob Description', + 50216: 'Oce Application Selector', + 50217: 'Oce Identification Number', + 50218: 'Oce ImageLogic Characteristics', + + # Adobe DNG + 50706: 'DNGVersion', + 50707: 'DNGBackwardVersion', + 50708: 'UniqueCameraModel', + 50709: 'LocalizedCameraModel', + 50710: 'CFAPlaneColor', + 50711: 'CFALayout', + 50712: 'LinearizationTable', + 50713: 'BlackLevelRepeatDim', + 50714: 'BlackLevel', + 50715: 'BlackLevelDeltaH', + 50716: 'BlackLevelDeltaV', + 50717: 'WhiteLevel', + 50718: 'DefaultScale', + 50719: 'DefaultCropOrigin', + 50720: 'DefaultCropSize', + 50721: 'ColorMatrix1', + 50722: 'ColorMatrix2', + 50723: 'CameraCalibration1', + 50724: 'CameraCalibration2', + 50725: 'ReductionMatrix1', + 50726: 'ReductionMatrix2', + 50727: 'AnalogBalance', + 50728: 'AsShotNeutral', + 50729: 'AsShotWhiteXY', + 50730: 'BaselineExposure', + 50731: 'BaselineNoise', + 50732: 'BaselineSharpness', + 50733: 'BayerGreenSplit', + 50734: 'LinearResponseLimit', + 50735: 'CameraSerialNumber', + 50736: 'LensInfo', + 50737: 'ChromaBlurRadius', + 50738: 'AntiAliasStrength', + 50740: 'DNGPrivateData', + 50778: 'CalibrationIlluminant1', + 50779: 'CalibrationIlluminant2', + 50784: 'Alias Layer Metadata' + } + + +def _populate(): + for k, v in TAGS_V2.items(): + # Populate legacy structure. + TAGS[k] = v[0] + if len(v) == 4: + for sk, sv in v[3].items(): + TAGS[(k, sv)] = sk + + TAGS_V2[k] = TagInfo(k, *v) + + +_populate() +## +# Map type numbers to type names -- defined in ImageFileDirectory. + +TYPES = {} + +# was: +# TYPES = { +# 1: "byte", +# 2: "ascii", +# 3: "short", +# 4: "long", +# 5: "rational", +# 6: "signed byte", +# 7: "undefined", +# 8: "signed short", +# 9: "signed long", +# 10: "signed rational", +# 11: "float", +# 12: "double", +# } + +# +# These tags are handled by default in libtiff, without +# adding to the custom dictionary. From tif_dir.c, searching for +# case TIFFTAG in the _TIFFVSetField function: +# Line: item. +# 148: case TIFFTAG_SUBFILETYPE: +# 151: case TIFFTAG_IMAGEWIDTH: +# 154: case TIFFTAG_IMAGELENGTH: +# 157: case TIFFTAG_BITSPERSAMPLE: +# 181: case TIFFTAG_COMPRESSION: +# 202: case TIFFTAG_PHOTOMETRIC: +# 205: case TIFFTAG_THRESHHOLDING: +# 208: case TIFFTAG_FILLORDER: +# 214: case TIFFTAG_ORIENTATION: +# 221: case TIFFTAG_SAMPLESPERPIXEL: +# 228: case TIFFTAG_ROWSPERSTRIP: +# 238: case TIFFTAG_MINSAMPLEVALUE: +# 241: case TIFFTAG_MAXSAMPLEVALUE: +# 244: case TIFFTAG_SMINSAMPLEVALUE: +# 247: case TIFFTAG_SMAXSAMPLEVALUE: +# 250: case TIFFTAG_XRESOLUTION: +# 256: case TIFFTAG_YRESOLUTION: +# 262: case TIFFTAG_PLANARCONFIG: +# 268: case TIFFTAG_XPOSITION: +# 271: case TIFFTAG_YPOSITION: +# 274: case TIFFTAG_RESOLUTIONUNIT: +# 280: case TIFFTAG_PAGENUMBER: +# 284: case TIFFTAG_HALFTONEHINTS: +# 288: case TIFFTAG_COLORMAP: +# 294: case TIFFTAG_EXTRASAMPLES: +# 298: case TIFFTAG_MATTEING: +# 305: case TIFFTAG_TILEWIDTH: +# 316: case TIFFTAG_TILELENGTH: +# 327: case TIFFTAG_TILEDEPTH: +# 333: case TIFFTAG_DATATYPE: +# 344: case TIFFTAG_SAMPLEFORMAT: +# 361: case TIFFTAG_IMAGEDEPTH: +# 364: case TIFFTAG_SUBIFD: +# 376: case TIFFTAG_YCBCRPOSITIONING: +# 379: case TIFFTAG_YCBCRSUBSAMPLING: +# 383: case TIFFTAG_TRANSFERFUNCTION: +# 389: case TIFFTAG_REFERENCEBLACKWHITE: +# 393: case TIFFTAG_INKNAMES: + +# some of these are not in our TAGS_V2 dict and were included from tiff.h + +LIBTIFF_CORE = {255, 256, 257, 258, 259, 262, 263, 266, 274, 277, + 278, 280, 281, 340, 341, 282, 283, 284, 286, 287, + 296, 297, 321, 320, 338, 32995, 322, 323, 32998, + 32996, 339, 32997, 330, 531, 530, 301, 532, 333, + # as above + 269 # this has been in our tests forever, and works + } + +LIBTIFF_CORE.remove(320) # Array of short, crashes +LIBTIFF_CORE.remove(301) # Array of short, crashes +LIBTIFF_CORE.remove(532) # Array of long, crashes + +LIBTIFF_CORE.remove(255) # We don't have support for subfiletypes +LIBTIFF_CORE.remove(322) # We don't have support for tiled images in libtiff +LIBTIFF_CORE.remove(323) # Tiled images +LIBTIFF_CORE.remove(333) # Ink Names either + +# Note to advanced users: There may be combinations of these +# parameters and values that when added properly, will work and +# produce valid tiff images that may work in your application. +# It is safe to add and remove tags from this set from Pillow's point +# of view so long as you test against libtiff. diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffTags.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/TiffTags.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ea522af5ca85711182f20d494f14d8fd15fb7446 GIT binary patch literal 11738 zcmds7XJA~#wVqiuORgB>f+>rESXASJlYk*etKv0k?8-&LM7iEGlEz-$yWD$Mwj7ff zObH={lAe$X=>^ggl8{1r@4ffldtP|oH+NUMCg%O%y>PSY7<9Cy~Ua2EWjf`fL zG!u+M+@eMsmCRG4O-fqTXtRkmgAH`vji^%K0YO127E#aF9%-X^jEs}tAJ0ewYRQUSq&D3J_!V4pA3S*PXU>) zIUvf_1_D;HHGuQ+fvTH9Jnvlz8`oXg$IF$T>GT|D}W2iz+;KM zMd0BS-VVH@Hl9Ti!NWVjg8r_=VIx4JsR>*OygSvwRltu=;W6MRqzv|e_oQ$MSW*)- zz~d={Cx9nY`WAR^3hx6h*9~^bE>mE^U>^i25hQk3fUb6W^ITSjz)@xl< zP2g{(@V9}#lhXe#@b{EKbx!R0KJX7x`acBzQA++};Gd-MPl11y!aoQ8MGF5C_*W_X zYvA9c@Na>Cm%_gX{zJ{btaR8?{sgKW`q3CN{d9tU!nmJX0kEjf@bE!`kJT6#gYYRQ9a({edTpO$`*0WE_dLt3r? zDQGEz3~SjAvO~*GkX>3vKt{D(39?(uRUnVoG6wPlEgr}oEhP}qVnD{VOn^*ku^@Z3 z>;oxlnF8^(1RxbHSA&FFB9K^16=Yh=evkuNWJZ~ zRgzb7xspL8S15Ujl9wqdD%q}NM9Ec3#*|c)gi3Bwa)Xi=;`E)7o0Xt)EXv5@jNFMs zcSerO$a|ICrzBQ#zmhwYT%sn|s?jCNEKz%pW7{LR2Gl^D2KT4I(lod^4Q@$;I~?#MMgK#4Uis-bCIX58`?FJyrwJYJh34Ts2v0XXBZQ z$(D^j5l?1~U!9u0)igt|6Q5`uz6_kH)dap#gK;duB?sThpH|m5xw}ioU1ge7q1fJt zHqL~qzt0c$`z7|q56#Nq6P<&v7=KzF!euC<_Gb9w5Fmaus6&nFP?M^xRS4seW>s`^ z9B6M~t0uOuR!mrM6K9uWW4_rxHrCD|Vk(u&k<)WCjcE>N>wa*?F%^?pJ054=4wiCX z(fRnbE}p8atJunU){kPZTt08x_QKePzI8*kTn_fH8_M^s8@A))aBFmaWu`!*PQ)kT zSV}L}C4@)uLv!4ekH-(paWDQbP4|b1*QZ9+!hC!=`zK7?PL8uKGUf3Cr}@7!(WOCY zIv(R>PeE@H2T*z-@tRALF?wli%q7#<*i<0ZGGQz9#>S#@5Jy0q;XvRUH|N44pgFr9 zvHuv#75GFhQ*?7?Wn+mverA*AOaLSe-G?78W8kd>;?@msCVxfeyXdb_Z_DDpiz;5| zO=V+m;-YNckIjS$39@j+9up=ip^2-ZA6=A1L@id0TOP?`Iyc)B253HMvcny{#jzb5 zvQEQ}XDdMz**#@*uIq$j1yBq3+sI`1R-+gSm1^0Gtv}(~Co9kMC0Tvr?3aC>KifV( z?i6XBjk10aXG2p8CVYF)$hp}ywFR|?!o*}F+3^7Lfpv^to9n5-teabgHM0wNK%tUV z!yuBI6c1`+#JM;=f+diwsUX-_t*k+JNp`hb1`sDVd~p!VaV-}M9x~vIRf~^JRLndY zF#C(uJ>#})hOtQPzscv4NHZTKlg;u|-h|m{C7!g*5~t{ReXg2WP3A%%#S?KL_CV*y#JQV!cM8|fuOk zPcF1H$b~CsOuNnHor9s6(6*69e|H6?>Xh;00c5USNbVAFT^PGeR0?f{9(Vh;5OV#;<&y|W^GSs5H3j|}{L9J%!5U}!Ob^Q>J;=3+3DWMEnh*#qd~ zgnA!^V82Tic4e2(suOn3#3mP1eRRHp0%mN#^^>l4a7(o-XZhZNG=CNOG-g-9L_xXg zCUs(+Ig(NabXyXhP5p=_9Qk;GHt>*cb-fR z!?SBBh^!m(lsaoMHuiLiXvgrTK^M-*o-xbXTxXq07Kfa320M09_p#f!AJ#8TqV8jVpR%l6F4cxm z2L@avw`Y+@``j`ZH(^iJFS(hYM~QP-Fdpy6`mpQkoG!R;*dqTnki+%c5ym!(?Zw2* z(yc)hvr<&COzjqOIh~=1d~D5kBspd5t#Ud3KU4r|#~uRI>Z8(Yy$WIM=qo<+$_ z7GNh?9Bvq_+5*gx#}JcO4{;Zn^f#HQ5Ok8t6=T8_rL=KG}_ClOzhC5wA1ZoNKa zp$*Roj$UcoDR6_b5F!kTEj!4jTUeEcJ?z+#y^=i6jJ%;RC|RD@TwKU;MY%M|sno2| z6!ZLiOmWTG87grBQwg~odtvOl!q#saC|q6>_TlURJEFNfvQ6p6E?1I7hBqSHOd-R_ zp0B7)qJ>NbgUqg6jXN*R?Wl8G$>kb#yFe~5Y!I1M_$3QIgrR z0SPZ4Zl(p3q`PsOl*@Cwj6!ZHyZVRhdkC1Pxu7x=+KI{7KJPlP7$>(4Mw3B>R~4JT z5p13ex)0d#d{39PH-W*x<#Rd2h-U*E)p@-`MYf{enNO+d^$+#zFd;W|tL_1hDL$L1 zJTgR9lg~l=hr0bZoUs`)=tQ^iY|nS~arrlp>y}M`Ro#OVB-%ET$&BnD%KKuctyH}- z`nURC2sqe~=cl(E{pMQV{Z6L+RQPyJ8T2FOVCHB7nvQ_?60s~u=mEg1RDZ6 znLu$d9sUHI(L@QyWt%d#>{=c+lfM*vcmtKiD|gv?L)%hs({aE?U6`wf?#6c6dB^0B z*w$n6M{OJVTtOq={=}O3IP_z@^OuV6J@0e9PYricj{yPJ}g&~tIy){g@ein*7nX3wDpy>qmNeJ=PB z4cO`7WZvQ9oQ-mWoVn{T8ZZ^Q58!NH4U?VW1NgZ^H;x%M55z#SM$5b551@}J6pb-cX1%aLF#}#3?&y)XV9=UF3)Ms zb(F9`CK6Y}ldT}|DgW9HwW;));Bqt5WpO#e4m?BIn^+c>qAg@yK@~NAh}XV|vU@0V z#}gBDL?vtIME6p}RH#QBWo82H>>8F7&a+s-AfZ<-8lUH=Y2=?hgF?2-7Y89XQos!T ziO8;{pb>(>?p%*;udAiny1UH<6!02Q#Nrb#l)-9@^F>O{uBQsKyMPPe6i&%vq;4Z> zk2zpBP-9-o2)mIS7n_<{eK0GoikX?2v6~)Fc<|ssdm)4o&m>!C%3e>$E?#Od@O0uR zyZaboY!e+KA+JwYQOt24(%NO^<2f#Kj71&gC@Idjg2`1~KYpQT;^NIsk`l(sN%B*s z3xb&UU)x9#Pg^{V;TVLi>!=g5)we-``9lR-W~6rgOBQ2>au+sk1;wBmmJAcy?!Kco zXmPTNyHx06njGr&?GSNYci@>59uk;@ogtfDb-EqR$6$$|fdblJ4_2r3YNAGpIO%@x zz|p-m)q8_e_afcuRoOOE;Fh%E>B*nq%CIfu(xrXeO_O=pd1Uflgf$sW+Sa;GPk?G! z+ZNjD%-T2|q4Df8GFhQ{y>jK)9;)kYj|^@hOuyLPNM7r4p0Ey4t20LlM&<+! z6wu8DgJ&;B;2&RDrfnl7Zhi198X%zF9?K1dXNV>W=~QP`w~u{x#?F5^m|TT0Cbm2W zn5(P2UE^%$u0M7GHMnw|pLuUH>1*Di{}iV$e2eS-&$UL+wL7A_S}mal=U)q1AHwPO zs$~=~G3$wzRD~1jY*$Q>FeaW1#I7KluB9Vt8KYhS9s^%289#aGqRDa*=;;{pxD?=M z^0#EFcCM`XIQhE%J#@y0&g~=`_n_dUI&zlMGL}vwA96ot&W)HfE zC5OG0l(Fo%8&aQ{Hsyk;7!PHB%C4f2`8g-FCz9uqgU|h3gDz8!y{&fj!$@}6lj{Ar zb?4gHlgZ->?K0zDwHzns=2OU}H)`A*Dq&K%?Wq(oT~neWoMN-}o@x&zc#vCfPdf&8 zgIz-|U6FV)2eb6wfbDQMAxZa-mFp>@SQIs%19XLA#6ZLYl zc9tC#@t}3URC$84?MJhnr*@6lv+CW~FH!Z1YR|4Ws7nR{JlnVDkWCNP*~Qs9axO*m zV5c`@!d^T;^NUyvu|1ChCPD4NYHk1MLkh(9d#@QH9DR0poDz05fRldg)? z?u@!dscYPeF}%%LmAv5Df~N?0S#|{f<77td%cyWl9av8eUO%qFs~^|+B-a@2p_{3_ z8Nyq{@r>GX^)|KB#{}_0(Y;@Mn&znZz2)kKYNw!>yVoQG78ccBPc-0HJ1bv-(Q-8q z596nz0;`03s8Ke)dySI3VZn1GwGVGH@nY3IoWw)-3_vv9j_*hOO3{^0^{UWy9fC9i)947aQnVe8TYMQ^rBh*l9Z0qoyDge zL#JKW^qrQ|nAJz?^zS;#ENQ6QFiY!t8P_6_|EJd6_;bH9iB-opwdt0I7R==T!N32r ed9*dQ&TnaKzU&lzie9Z(XIdK;YW&N%Z~fm1Qe_VS literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WalImageFile.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WalImageFile.py new file mode 100644 index 0000000..6602cc8 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WalImageFile.py @@ -0,0 +1,128 @@ +# encoding: utf-8 +# +# The Python Imaging Library. +# $Id$ +# +# WAL file handling +# +# History: +# 2003-04-23 fl created +# +# Copyright (c) 2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +# NOTE: This format cannot be automatically recognized, so the reader +# is not registered for use with Image.open(). To open a WAL file, use +# the WalImageFile.open() function instead. + +# This reader is based on the specification available from: +# https://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml +# and has been tested with a few sample files found using google. + +from . import Image +from ._binary import i32le as i32 + +try: + import builtins +except ImportError: + import __builtin__ + builtins = __builtin__ + + +def open(filename): + """ + Load texture from a Quake2 WAL texture file. + + By default, a Quake2 standard palette is attached to the texture. + To override the palette, use the putpalette method. + + :param filename: WAL file name, or an opened file handle. + :returns: An image instance. + """ + # FIXME: modify to return a WalImageFile instance instead of + # plain Image object ? + + def imopen(fp): + # read header fields + header = fp.read(32+24+32+12) + size = i32(header, 32), i32(header, 36) + offset = i32(header, 40) + + # load pixel data + fp.seek(offset) + + Image._decompression_bomb_check(size) + im = Image.frombytes("P", size, fp.read(size[0] * size[1])) + im.putpalette(quake2palette) + + im.format = "WAL" + im.format_description = "Quake2 Texture" + + # strings are null-terminated + im.info["name"] = header[:32].split(b"\0", 1)[0] + next_name = header[56:56+32].split(b"\0", 1)[0] + if next_name: + im.info["next_name"] = next_name + + return im + + if hasattr(filename, "read"): + return imopen(filename) + else: + with builtins.open(filename, "rb") as fp: + return imopen(fp) + + +quake2palette = ( + # default palette taken from piffo 0.93 by Hans Häggström + b"\x01\x01\x01\x0b\x0b\x0b\x12\x12\x12\x17\x17\x17\x1b\x1b\x1b\x1e" + b"\x1e\x1e\x22\x22\x22\x26\x26\x26\x29\x29\x29\x2c\x2c\x2c\x2f\x2f" + b"\x2f\x32\x32\x32\x35\x35\x35\x37\x37\x37\x3a\x3a\x3a\x3c\x3c\x3c" + b"\x24\x1e\x13\x22\x1c\x12\x20\x1b\x12\x1f\x1a\x10\x1d\x19\x10\x1b" + b"\x17\x0f\x1a\x16\x0f\x18\x14\x0d\x17\x13\x0d\x16\x12\x0d\x14\x10" + b"\x0b\x13\x0f\x0b\x10\x0d\x0a\x0f\x0b\x0a\x0d\x0b\x07\x0b\x0a\x07" + b"\x23\x23\x26\x22\x22\x25\x22\x20\x23\x21\x1f\x22\x20\x1e\x20\x1f" + b"\x1d\x1e\x1d\x1b\x1c\x1b\x1a\x1a\x1a\x19\x19\x18\x17\x17\x17\x16" + b"\x16\x14\x14\x14\x13\x13\x13\x10\x10\x10\x0f\x0f\x0f\x0d\x0d\x0d" + b"\x2d\x28\x20\x29\x24\x1c\x27\x22\x1a\x25\x1f\x17\x38\x2e\x1e\x31" + b"\x29\x1a\x2c\x25\x17\x26\x20\x14\x3c\x30\x14\x37\x2c\x13\x33\x28" + b"\x12\x2d\x24\x10\x28\x1f\x0f\x22\x1a\x0b\x1b\x14\x0a\x13\x0f\x07" + b"\x31\x1a\x16\x30\x17\x13\x2e\x16\x10\x2c\x14\x0d\x2a\x12\x0b\x27" + b"\x0f\x0a\x25\x0f\x07\x21\x0d\x01\x1e\x0b\x01\x1c\x0b\x01\x1a\x0b" + b"\x01\x18\x0a\x01\x16\x0a\x01\x13\x0a\x01\x10\x07\x01\x0d\x07\x01" + b"\x29\x23\x1e\x27\x21\x1c\x26\x20\x1b\x25\x1f\x1a\x23\x1d\x19\x21" + b"\x1c\x18\x20\x1b\x17\x1e\x19\x16\x1c\x18\x14\x1b\x17\x13\x19\x14" + b"\x10\x17\x13\x0f\x14\x10\x0d\x12\x0f\x0b\x0f\x0b\x0a\x0b\x0a\x07" + b"\x26\x1a\x0f\x23\x19\x0f\x20\x17\x0f\x1c\x16\x0f\x19\x13\x0d\x14" + b"\x10\x0b\x10\x0d\x0a\x0b\x0a\x07\x33\x22\x1f\x35\x29\x26\x37\x2f" + b"\x2d\x39\x35\x34\x37\x39\x3a\x33\x37\x39\x30\x34\x36\x2b\x31\x34" + b"\x27\x2e\x31\x22\x2b\x2f\x1d\x28\x2c\x17\x25\x2a\x0f\x20\x26\x0d" + b"\x1e\x25\x0b\x1c\x22\x0a\x1b\x20\x07\x19\x1e\x07\x17\x1b\x07\x14" + b"\x18\x01\x12\x16\x01\x0f\x12\x01\x0b\x0d\x01\x07\x0a\x01\x01\x01" + b"\x2c\x21\x21\x2a\x1f\x1f\x29\x1d\x1d\x27\x1c\x1c\x26\x1a\x1a\x24" + b"\x18\x18\x22\x17\x17\x21\x16\x16\x1e\x13\x13\x1b\x12\x12\x18\x10" + b"\x10\x16\x0d\x0d\x12\x0b\x0b\x0d\x0a\x0a\x0a\x07\x07\x01\x01\x01" + b"\x2e\x30\x29\x2d\x2e\x27\x2b\x2c\x26\x2a\x2a\x24\x28\x29\x23\x27" + b"\x27\x21\x26\x26\x1f\x24\x24\x1d\x22\x22\x1c\x1f\x1f\x1a\x1c\x1c" + b"\x18\x19\x19\x16\x17\x17\x13\x13\x13\x10\x0f\x0f\x0d\x0b\x0b\x0a" + b"\x30\x1e\x1b\x2d\x1c\x19\x2c\x1a\x17\x2a\x19\x14\x28\x17\x13\x26" + b"\x16\x10\x24\x13\x0f\x21\x12\x0d\x1f\x10\x0b\x1c\x0f\x0a\x19\x0d" + b"\x0a\x16\x0b\x07\x12\x0a\x07\x0f\x07\x01\x0a\x01\x01\x01\x01\x01" + b"\x28\x29\x38\x26\x27\x36\x25\x26\x34\x24\x24\x31\x22\x22\x2f\x20" + b"\x21\x2d\x1e\x1f\x2a\x1d\x1d\x27\x1b\x1b\x25\x19\x19\x21\x17\x17" + b"\x1e\x14\x14\x1b\x13\x12\x17\x10\x0f\x13\x0d\x0b\x0f\x0a\x07\x07" + b"\x2f\x32\x29\x2d\x30\x26\x2b\x2e\x24\x29\x2c\x21\x27\x2a\x1e\x25" + b"\x28\x1c\x23\x26\x1a\x21\x25\x18\x1e\x22\x14\x1b\x1f\x10\x19\x1c" + b"\x0d\x17\x1a\x0a\x13\x17\x07\x10\x13\x01\x0d\x0f\x01\x0a\x0b\x01" + b"\x01\x3f\x01\x13\x3c\x0b\x1b\x39\x10\x20\x35\x14\x23\x31\x17\x23" + b"\x2d\x18\x23\x29\x18\x3f\x3f\x3f\x3f\x3f\x39\x3f\x3f\x31\x3f\x3f" + b"\x2a\x3f\x3f\x20\x3f\x3f\x14\x3f\x3c\x12\x3f\x39\x0f\x3f\x35\x0b" + b"\x3f\x32\x07\x3f\x2d\x01\x3d\x2a\x01\x3b\x26\x01\x39\x21\x01\x37" + b"\x1d\x01\x34\x1a\x01\x32\x16\x01\x2f\x12\x01\x2d\x0f\x01\x2a\x0b" + b"\x01\x27\x07\x01\x23\x01\x01\x1d\x01\x01\x17\x01\x01\x10\x01\x01" + b"\x3d\x01\x01\x19\x19\x3f\x3f\x01\x01\x01\x01\x3f\x16\x16\x13\x10" + b"\x10\x0f\x0d\x0d\x0b\x3c\x2e\x2a\x36\x27\x20\x30\x21\x18\x29\x1b" + b"\x10\x3c\x39\x37\x37\x32\x2f\x31\x2c\x28\x2b\x26\x21\x30\x22\x20" +) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WalImageFile.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WalImageFile.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e21313601977ceec4212e21749539384cd37ba89 GIT binary patch literal 2437 zcmbtVTXWmS72YL9!2*l`22g;w5L|*Jco8oWEt!_em`O9~j9ZV#p_8#kec(U>R6*t~ z0F+i8>&boZAMC%#Lm%67AjX=>V~Qa@?z!yQb6pgF7I}U1@4sA-?NfsPui#B%fDnF^ zEC^Xraz+V7x_da(A z&rcmVhG+1+S_dJ^qQ7T1NyILb^^yhbyPM!cG-B_*e)S-U7tw&vcl_a&h0$ejv&ec6 zx@i`y!XOFRCRjvS7O^;GL6!v<5Q8`!G;}j zy-PAKw-N3kJ%?7~^97K(Gwhltp@2K#;M@%C0{StTpn^z3h17nnb5|lCOCSWFuGVTH%XMH@p?5s zUoX$+(18~p@-wiz&u_CR&3Mp#Xs%2I^2faAx9yf;>|o?nb=2T(@ykRzUSlZr}=>jgose<9|dsZ+&^0!hE1syqw`EVg~Oa9l>gtEjPnW zyy@rtxLEZ6^uugEdNq6#FBa>+4d1+cHGCH=^84eDIFp;(+-|(YRv&_a)Ioyman`Dn*eSQ-!GIRh7g@*6dQ1r{d z&2%7UPXPY!0A?0g@!(CdE=1fbOO!ACj;44I!c8j(f}$vfVc53qx~}JWzVCNBonEgu z91cgL(ed%|csxEmJ)KM@4OjIXh1p8gk}IZc8;0(Asx3AD^p zou?{KWsZs*?bO{?&GDJttXlPoS#!$FHe6G8%9?GcrY0Mzq{*Tp2@nGK?^{ycl$aqo zx@4*tAVdfJr(X5AGpV1%W?s?Y?97ETd~`ZA0~S zxuHrmMXbt#Bk?AD!39p?IfJf_JvvG|ie}xSD3G ziXls?C`jPaaMbA^`1^xKr&nur-DcaV`&O-4c0J9m%BCY47OxtdtWpuWPM~y3)rnxA z$n03F9~$+3x!x&H@j01J52w@abjqevZ8}k=C(`s-n2xwW4FYXQg2UR7xeE> 24) & 0xFF, \ + (bgcolor >> 16) & 0xFF, \ + (bgcolor >> 8) & 0xFF, \ + bgcolor & 0xFF + self.info["background"] = (bg_r, bg_g, bg_b, bg_a) + self._n_frames = frame_count + self.mode = mode + self.tile = [] + + # Attempt to read ICC / EXIF / XMP chunks from file + icc_profile = self._decoder.get_chunk("ICCP") + exif = self._decoder.get_chunk("EXIF") + xmp = self._decoder.get_chunk("XMP ") + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + if xmp: + self.info["xmp"] = xmp + + # Initialize seek state + self._reset(reset=False) + self.seek(0) + + def _getexif(self): + from .JpegImagePlugin import _getexif + return _getexif(self) + + @property + def n_frames(self): + return self._n_frames + + @property + def is_animated(self): + return self._n_frames > 1 + + def seek(self, frame): + if not _webp.HAVE_WEBPANIM: + return super(WebPImageFile, self).seek(frame) + + # Perform some simple checks first + if frame >= self._n_frames: + raise EOFError("attempted to seek beyond end of sequence") + if frame < 0: + raise EOFError("negative frame index is not valid") + + # Set logical frame to requested position + self.__logical_frame = frame + + def _reset(self, reset=True): + if reset: + self._decoder.reset() + self.__physical_frame = 0 + self.__loaded = -1 + self.__timestamp = 0 + + def _get_next(self): + # Get next frame + ret = self._decoder.get_next() + self.__physical_frame += 1 + + # Check if an error occurred + if ret is None: + self._reset() # Reset just to be safe + self.seek(0) + raise EOFError("failed to decode next frame in WebP file") + + # Compute duration + data, timestamp = ret + duration = timestamp - self.__timestamp + self.__timestamp = timestamp + + # libwebp gives frame end, adjust to start of frame + timestamp -= duration + return data, timestamp, duration + + def _seek(self, frame): + if self.__physical_frame == frame: + return # Nothing to do + if frame < self.__physical_frame: + self._reset() # Rewind to beginning + while self.__physical_frame < frame: + self._get_next() # Advance to the requested frame + + def load(self): + if _webp.HAVE_WEBPANIM: + if self.__loaded != self.__logical_frame: + self._seek(self.__logical_frame) + + # We need to load the image data for this frame + data, timestamp, duration = self._get_next() + self.info["timestamp"] = timestamp + self.info["duration"] = duration + self.__loaded = self.__logical_frame + + # Set tile + self.fp = BytesIO(data) + self.tile = [("raw", (0, 0) + self.size, 0, self.mode)] + + return super(WebPImageFile, self).load() + + def tell(self): + if not _webp.HAVE_WEBPANIM: + return super(WebPImageFile, self).tell() + + return self.__logical_frame + + +def _save_all(im, fp, filename): + encoderinfo = im.encoderinfo.copy() + append_images = list(encoderinfo.get("append_images", [])) + + # If total frame count is 1, then save using the legacy API, which + # will preserve non-alpha modes + total = 0 + for ims in [im]+append_images: + total += 1 if not hasattr(ims, "n_frames") else ims.n_frames + if total == 1: + _save(im, fp, filename) + return + + background = encoderinfo.get("background", (0, 0, 0, 0)) + duration = im.encoderinfo.get("duration", 0) + loop = im.encoderinfo.get("loop", 0) + minimize_size = im.encoderinfo.get("minimize_size", False) + kmin = im.encoderinfo.get("kmin", None) + kmax = im.encoderinfo.get("kmax", None) + allow_mixed = im.encoderinfo.get("allow_mixed", False) + verbose = False + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + method = im.encoderinfo.get("method", 0) + icc_profile = im.encoderinfo.get("icc_profile", "") + exif = im.encoderinfo.get("exif", "") + xmp = im.encoderinfo.get("xmp", "") + if allow_mixed: + lossless = False + + # Sensible keyframe defaults are from gif2webp.c script + if kmin is None: + kmin = 9 if lossless else 3 + if kmax is None: + kmax = 17 if lossless else 5 + + # Validate background color + if (not isinstance(background, (list, tuple)) or len(background) != 4 or + not all(v >= 0 and v < 256 for v in background)): + raise IOError("Background color is not an RGBA tuple clamped " + "to (0-255): %s" % str(background)) + + # Convert to packed uint + bg_r, bg_g, bg_b, bg_a = background + background = (bg_a << 24) | (bg_r << 16) | (bg_g << 8) | (bg_b << 0) + + # Setup the WebP animation encoder + enc = _webp.WebPAnimEncoder( + im.size[0], im.size[1], + background, + loop, + minimize_size, + kmin, kmax, + allow_mixed, + verbose + ) + + # Add each frame + frame_idx = 0 + timestamp = 0 + cur_idx = im.tell() + try: + for ims in [im]+append_images: + # Get # of frames in this image + if not hasattr(ims, "n_frames"): + nfr = 1 + else: + nfr = ims.n_frames + + for idx in range(nfr): + ims.seek(idx) + ims.load() + + # Make sure image mode is supported + frame = ims + if ims.mode not in _VALID_WEBP_MODES: + alpha = ims.mode == 'P' and 'A' in ims.im.getpalettemode() + frame = ims.convert('RGBA' if alpha else 'RGBX') + + # Append the frame to the animation encoder + enc.add( + frame.tobytes(), + timestamp, + frame.size[0], frame.size[1], + frame.mode, + lossless, + quality, + method + ) + + # Update timestamp and frame index + if isinstance(duration, (list, tuple)): + timestamp += duration[frame_idx] + else: + timestamp += duration + frame_idx += 1 + + finally: + im.seek(cur_idx) + + # Force encoder to flush frames + enc.add( + None, + timestamp, + 0, 0, "", lossless, quality, 0 + ) + + # Get the final output from the encoder + data = enc.assemble(icc_profile, exif, xmp) + if data is None: + raise IOError("cannot write file as WebP (encoder returned None)") + + fp.write(data) + + +def _save(im, fp, filename): + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + icc_profile = im.encoderinfo.get("icc_profile", "") + exif = im.encoderinfo.get("exif", "") + xmp = im.encoderinfo.get("xmp", "") + + if im.mode not in _VALID_WEBP_LEGACY_MODES: + alpha = im.mode == 'P' and 'A' in im.im.getpalettemode() + im = im.convert('RGBA' if alpha else 'RGB') + + data = _webp.WebPEncode( + im.tobytes(), + im.size[0], + im.size[1], + lossless, + float(quality), + im.mode, + icc_profile, + exif, + xmp + ) + if data is None: + raise IOError("cannot write file as WebP (encoder returned None)") + + fp.write(data) + + +Image.register_open(WebPImageFile.format, WebPImageFile, _accept) +Image.register_save(WebPImageFile.format, _save) +if _webp.HAVE_WEBPANIM: + Image.register_save_all(WebPImageFile.format, _save_all) +Image.register_extension(WebPImageFile.format, ".webp") +Image.register_mime(WebPImageFile.format, "image/webp") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WebPImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WebPImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..44be05d4a2486adef234838a531d3c731c23a63e GIT binary patch literal 8598 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 T4b1*1m*kGm;D=~bUeW#+M@UTk literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WmfImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WmfImagePlugin.py new file mode 100644 index 0000000..2135844 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WmfImagePlugin.py @@ -0,0 +1,170 @@ +# +# The Python Imaging Library +# $Id$ +# +# WMF stub codec +# +# history: +# 1996-12-14 fl Created +# 2004-02-22 fl Turned into a stub driver +# 2004-02-23 fl Added EMF support +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +# WMF/EMF reference documentation: +# https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-WMF/[MS-WMF].pdf +# http://wvware.sourceforge.net/caolan/index.html +# http://wvware.sourceforge.net/caolan/ora-wmf.html + +from __future__ import print_function + +from . import Image, ImageFile +from ._binary import i16le as word, si16le as short, i32le as dword, si32le as _long +from ._util import py3 + + +__version__ = "0.2" + +_handler = None + +if py3: + long = int + + +def register_handler(handler): + """ + Install application-specific WMF image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +if hasattr(Image.core, "drawwmf"): + # install default handler (windows only) + + class WmfHandler(object): + + def open(self, im): + im.mode = "RGB" + self.bbox = im.info["wmf_bbox"] + + def load(self, im): + im.fp.seek(0) # rewind + return Image.frombytes( + "RGB", im.size, + Image.core.drawwmf(im.fp.read(), im.size, self.bbox), + "raw", "BGR", (im.size[0]*3 + 3) & -4, -1 + ) + + register_handler(WmfHandler()) + +# +# -------------------------------------------------------------------- +# Read WMF file + + +def _accept(prefix): + return ( + prefix[:6] == b"\xd7\xcd\xc6\x9a\x00\x00" or + prefix[:4] == b"\x01\x00\x00\x00" + ) + + +## +# Image plugin for Windows metafiles. + +class WmfStubImageFile(ImageFile.StubImageFile): + + format = "WMF" + format_description = "Windows Metafile" + + def _open(self): + + # check placable header + s = self.fp.read(80) + + if s[:6] == b"\xd7\xcd\xc6\x9a\x00\x00": + + # placeable windows metafile + + # get units per inch + inch = word(s, 14) + + # get bounding box + x0 = short(s, 6) + y0 = short(s, 8) + x1 = short(s, 10) + y1 = short(s, 12) + + # normalize size to 72 dots per inch + size = (x1 - x0) * 72 // inch, (y1 - y0) * 72 // inch + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + self.info["dpi"] = 72 + + # print(self.mode, self.size, self.info) + + # sanity check (standard metafile header) + if s[22:26] != b"\x01\x00\t\x00": + raise SyntaxError("Unsupported WMF file format") + + elif dword(s) == 1 and s[40:44] == b" EMF": + # enhanced metafile + + # get bounding box + x0 = _long(s, 8) + y0 = _long(s, 12) + x1 = _long(s, 16) + y1 = _long(s, 20) + + # get frame (in 0.01 millimeter units) + frame = _long(s, 24), _long(s, 28), _long(s, 32), _long(s, 36) + + # normalize size to 72 dots per inch + size = x1 - x0, y1 - y0 + + # calculate dots per inch from bbox and frame + xdpi = 2540 * (x1 - y0) // (frame[2] - frame[0]) + ydpi = 2540 * (y1 - y0) // (frame[3] - frame[1]) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + if xdpi == ydpi: + self.info["dpi"] = xdpi + else: + self.info["dpi"] = xdpi, ydpi + + else: + raise SyntaxError("Unsupported file format") + + self.mode = "RGB" + self.size = size + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr(_handler, "save"): + raise IOError("WMF save handler not installed") + _handler.save(im, fp, filename) + +# +# -------------------------------------------------------------------- +# Registry stuff + + +Image.register_open(WmfStubImageFile.format, WmfStubImageFile, _accept) +Image.register_save(WmfStubImageFile.format, _save) + +Image.register_extensions(WmfStubImageFile.format, [".wmf", ".emf"]) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WmfImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/WmfImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f8904b0414bc835d658e59dd77a203261aa0ca46 GIT binary patch literal 4041 zcmb_f&2HS*6+R?qMw-#zL{el)mX&c}2Wk>avC|r@;TnO1*l}U2E``+S6evLr@5omk zau|||q(a(Md5IS2Tl5*a>$;mfLU-MCQ6T-kb7v$KK{s+K@$#H=f6sT%-vs}hX)Wd7 z{kA8gr-tum;z@bi6G`yz$v`Car0a>7_>u%N@FfkT8%SD{Zp}$+GN?=1knV(}lhSQU z+LG>+q|?%!aU<$7n3Z%+x^v($ur0|u63>g7lcE%}Al*gDu-}AyE7E;e%#xTu_OD4Y zDQCVEf03jqW?A~4BrT3P6ZuVdMGS_nkU7Hvxxkbzuqw&4n40Wg*BLYCGu9-T)e$#z z{dF;Gvi}}ivnpqSc-*x!mfqmrD!MrmC3BLrWzW|RsIap!56JBIcs2l;RI_OE!e&*} zKgfEO9cGsD4WFHLG|$p_&s5DZ^~4U$24UAud-wjpR1L7DBRRu00Z7?k zQ~nsuR+Z*kxy|obcc?qR_$rLPn12ZQ0^*2`zlw_c@v#qH(bV9#co`Ek|8#KP>^ zvNFYZquX4OK+8nM?UEusJWTr)k-!S0q0O)Hq=1o)UqC4!Ite z9lr|i4G1vm#FGd(d$Nz&zN`T82-5|Y!JFBx*oIFZS40GdiFS8~N7_~K*3)5Pl(1QU zsD$>bwXnZ5gMLNMrV7|wqQ)hMxycB7Nk+V;cdi?csJit*P$f~VJasOdVn3jY?5GLZ zy6iW`<0j~Yt_u+C!)q}Z|Fw}2P^~0&S;Tt{0pK%u`q>0P;-1?Ujf6936fRtwejh&# zE#b5OhI=_5qu(eV{an#1jd>IDBGse%#W3AHu1x9r?C%}6y&!eANNPYkLh~e9LoAPIaRwi&GOtYL`(26F3-v4HwZD(yT5{ zqSTe0B%H=#_wedfH~ePpJW9}{^s3iE;KFb{9o+33U-BEu2jFYucQzP|ZL`1DS7u&a@QakPgK z`kZ_A2Vl=VyQ^-E%mqcig}c{ipd{+_a_Xa2hv-)_y1cSkGCV9hFH9BpxjI)RqSR2a z3xOhy{gRuUYDB;W9jp!XitlKy@C$&6TypAj53-s;PJ=O9*Iu}l>uo4oAG7ck%!RMj z#rjG5p72syGLeGoVt6m7~w%o;H*dB`J7F-hJ`X5>vE#j1}4 zgxq-M$sauVdezS!c}PSU2MMwsb(!@!O;h*HWPT*V6;bLGfIg0OCx$+bT^Q@**u{}P zquzJPj_9RJ^tDU$GHK{@3N0K8Bki5m$%=}B#^TAOB&!I-_*|Ej<<--su-9Rwy=$&_ zPJ3Jb8?lq7oU~NUe|e-Glt2&gxIS!tAvAVF6Y?#w5tUI+J8 zRvzT}u&7L;DV|2%=?{w(>7TZ3>9F?W@x0C#FP>OBf@NT`%WT%zblBWt^ACh$tJw*h zXsj-;fx5iYrCl__Z}89|M}=HXL-OIUNVNVbU*mWoH?0`2caF0vKKi04AY~Lv&Id+= zVYU~}K^9U`?S%}HoriUMFtS%v%%uaH^l$s`hqv_->!{i_k+b?-CIY` zwAc2Rf@#0$H9d4;-~U06@I$QlN4&1`@-~Q4$g~pD zkQFp%WEC&Okx^pGUSV_Ao#9V7maANxMyV@jjqrUe_A9(4wQcwf54rF29!m+nghlar z45ETniM*MVa*dIiEJB_y)5S-0D8^~^X8g85A3`ad74Z(?m%kP;bzJ9h)iVCZlvJG+ zG?{U&+{uPjXH?#rL^G=1gxc2jFf)jLERV~$stTo_{Zh?7WF?{HqSh$tH(E;4tyo4} zV0LA=ob&Lwf2Iz+Kk?RJgBm_IQM5Y3r2Xv;LOUv4`UllP!NP?T01j@EhQ_SOXb$V% zwOL#ohXg&m&4wU_AF!eIhdg|!_VOc8?i>e|9fX{%5g>}bF+~Y0!8SkRXx^v>I{d^^ z^fVAK8io(pFwm*ZxgRB30);mzWO?~t<${_?`15h!`L7B3WO)AvVggjLP&^-Kjw+M! zaOK4Ujf605_YX`7o*m5&yw&sJS+4e-Uweq~#TJjeB{{XUy B2(17B literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XVThumbImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XVThumbImagePlugin.py new file mode 100644 index 0000000..a7d39ed --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XVThumbImagePlugin.py @@ -0,0 +1,80 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XV Thumbnail file handler by Charles E. "Gene" Cash +# (gcash@magicnet.net) +# +# see xvcolor.c and xvbrowse.c in the sources to John Bradley's XV, +# available from ftp://ftp.cis.upenn.edu/pub/xv/ +# +# history: +# 98-08-15 cec created (b/w only) +# 98-12-09 cec added color palette +# 98-12-28 fl added to PIL (with only a few very minor modifications) +# +# To do: +# FIXME: make save work (this requires quantization support) +# + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, o8 + +__version__ = "0.1" + +_MAGIC = b"P7 332" + +# standard color palette for thumbnails (RGB332) +PALETTE = b"" +for r in range(8): + for g in range(8): + for b in range(4): + PALETTE = PALETTE + (o8((r*255)//7)+o8((g*255)//7)+o8((b*255)//3)) + + +def _accept(prefix): + return prefix[:6] == _MAGIC + + +## +# Image plugin for XV thumbnail images. + +class XVThumbImageFile(ImageFile.ImageFile): + + format = "XVThumb" + format_description = "XV thumbnail image" + + def _open(self): + + # check magic + if not _accept(self.fp.read(6)): + raise SyntaxError("not an XV thumbnail file") + + # Skip to beginning of next line + self.fp.readline() + + # skip info comments + while True: + s = self.fp.readline() + if not s: + raise SyntaxError("Unexpected EOF reading XV thumbnail file") + if i8(s[0]) != 35: # ie. when not a comment: '#' + break + + # parse header line (already read) + s = s.strip().split() + + self.mode = "P" + self.size = int(s[0]), int(s[1]) + + self.palette = ImagePalette.raw("RGB", PALETTE) + + self.tile = [ + ("raw", (0, 0)+self.size, + self.fp.tell(), (self.mode, 0, 1) + )] + + +# -------------------------------------------------------------------- + +Image.register_open(XVThumbImageFile.format, XVThumbImageFile, _accept) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XVThumbImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XVThumbImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c414b93b4ed0ddd3a6cd7d916b5c9e99803806d GIT binary patch literal 1851 zcmb_cZExH}5T3O!zPDU1EhT9YphJ=1RH;2^KO`RzqA6(`6w1{}o7SkZob%qXSKH^< z8*)LV9|%8_f58ucXT}LRiI3&ZJD#1LnVo&+S-XFAT5I{AKaJ?(*TDN*j8ZA07>}Za zC{+|FN*xLuN?i(EQoQC+QloT{hbcAbHk#1Ampc`?MK0*REEH4_?+0v;jEpb_2$EL@pba)(N zJfp+7O@9ytD-@+!w560`wn}vFkAAPZIzth%e!Bd9^S*v-u?UcEHpBVxT&%D zn?;=k`;K^99-QVOM!5p5-gwn4C;Zb~it>TwfTC zMmo0}P)n|WlwE~f3}9GByu?2)Z5yNf1VW=3XaJ;jj-BkoX*{QU}M-s2)!d0q6L zgDyqMG_ z%h(Z@Hi1M_VX_7PDr1+x`xv1}*{1c2v#oM+*0ENjxK3l2#x|n5=a#9?TUah}|17i7e5WX8g=HsRNKB^1>!3K%KBt#^ zSK7klm6j*Qibpz&wQOv%%21kLwa>ipI~>PE8a~+DIXKu6J+H2(#9Eysl>!{93(KXI zIvLCH1e*Wj#_&fYoaH(jaQaUn$i1n$ZpUq^uJSO}RKvaQG}VUlq1#b?4iGfLFpE+h zh9C@5ggEUBjJv0 zZ@Hy~o|w|=LICwYgXQXkqP^EK1@*5hoWHq&NkzG%HApa+BvwrLIe*kl< BWbOa} literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XbmImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XbmImagePlugin.py new file mode 100644 index 0000000..b43fbef --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XbmImagePlugin.py @@ -0,0 +1,96 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XBM File handling +# +# History: +# 1995-09-08 fl Created +# 1996-11-01 fl Added save support +# 1997-07-07 fl Made header parser more tolerant +# 1997-07-22 fl Fixed yet another parser bug +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2001-05-13 fl Added hotspot handling (based on code from Bernhard Herzog) +# 2004-02-24 fl Allow some whitespace before first #define +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import re +from . import Image, ImageFile + +__version__ = "0.6" + +# XBM header +xbm_head = re.compile( + br"\s*#define[ \t]+.*_width[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+.*_height[ \t]+(?P[0-9]+)[\r\n]+" + b"(?P" + b"#define[ \t]+[^_]*_x_hot[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+[^_]*_y_hot[ \t]+(?P[0-9]+)[\r\n]+" + b")?" + b"[\\000-\\377]*_bits\\[\\]" +) + + +def _accept(prefix): + return prefix.lstrip()[:7] == b"#define" + + +## +# Image plugin for X11 bitmaps. + +class XbmImageFile(ImageFile.ImageFile): + + format = "XBM" + format_description = "X11 Bitmap" + + def _open(self): + + m = xbm_head.match(self.fp.read(512)) + + if m: + + xsize = int(m.group("width")) + ysize = int(m.group("height")) + + if m.group("hotspot"): + self.info["hotspot"] = ( + int(m.group("xhot")), int(m.group("yhot")) + ) + + self.mode = "1" + self.size = xsize, ysize + + self.tile = [("xbm", (0, 0)+self.size, m.end(), None)] + + +def _save(im, fp, filename): + + if im.mode != "1": + raise IOError("cannot write mode %s as XBM" % im.mode) + + fp.write(("#define im_width %d\n" % im.size[0]).encode('ascii')) + fp.write(("#define im_height %d\n" % im.size[1]).encode('ascii')) + + hotspot = im.encoderinfo.get("hotspot") + if hotspot: + fp.write(("#define im_x_hot %d\n" % hotspot[0]).encode('ascii')) + fp.write(("#define im_y_hot %d\n" % hotspot[1]).encode('ascii')) + + fp.write(b"static char im_bits[] = {\n") + + ImageFile._save(im, fp, [("xbm", (0, 0)+im.size, 0, None)]) + + fp.write(b"};\n") + + +Image.register_open(XbmImageFile.format, XbmImageFile, _accept) +Image.register_save(XbmImageFile.format, _save) + +Image.register_extension(XbmImageFile.format, ".xbm") + +Image.register_mime(XbmImageFile.format, "image/xbm") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XbmImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XbmImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ab326a818531f6da3c1f679b47beb0d9beede99e GIT binary patch literal 2576 zcmb_e+io015UrV6@6C3Ma&a&b(L~5%?Z}sqhzJoJ6a>g9G1f##VRy}FGSlnr&CW&B zox}$6f_dg|c;yp#;F(Y0jSqlRHM_nf@IqMa)OJ@_)l^rXQ@!4w^Xpj7j&?BYxDa**VmpoYm2FK&pXsqO9%h^C@0&mH+c&H4Bx;~D)${vy@A~>` z_*^G;Sj{?jckjq_tGBuK!QS+i)}8h*Gs zpWrbUA-=~!$|0eUK2H3Ji+Xa2c65VnSWGhLu(Pd0jEyaIaWXGT)bOB#6%t`?VYFe> zVx!Q-n$C=k#^bdwz6!$k?r-es@i>3JvAcbL`yq@ zS!`=ZGXjJj0&Y3c3baywz=?s1jEESFGGLHdF7^#6;lblnV^T3qM%9$h$u=Qi5Drz8 z$ZOKb#zV_TIVdDr$t!#mIDh9Gfc;ag=4b^`Dp8DxV?gFB?BHKKBrApOe<;>$JK!{N$;%7U`eorQcC(Syu^$hkk~82=-`n#)^1o{b z^SsRG{Nls5+=r)F%76?wE8+Y0m!FnpUP{8U&tQ?47%nP{nT6ans$nVg#IoI6tPTjeR z-+6b%H4N}|^dZ9q*8E3c12Z{b=|!bNgGV7m$X0ltVfajy1}p?qnI3VT7RWw0$EF-o z2qg(vu5qdMwXv#{z7Sl4=B%14BRoGgR0mdN{D!lJsZLKdsn;XD6#Y)sakjWbQl~jo WsqWRCR=d?$T54TfbS}6T+`j?DrWcO@ literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XpmImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XpmImagePlugin.py new file mode 100644 index 0000000..a5cca0e --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XpmImagePlugin.py @@ -0,0 +1,129 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XPM File handling +# +# History: +# 1996-12-29 fl Created +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# + + +import re +from . import Image, ImageFile, ImagePalette +from ._binary import i8, o8 + +__version__ = "0.2" + +# XPM header +xpm_head = re.compile(b"\"([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)") + + +def _accept(prefix): + return prefix[:9] == b"/* XPM */" + + +## +# Image plugin for X11 pixel maps. + +class XpmImageFile(ImageFile.ImageFile): + + format = "XPM" + format_description = "X11 Pixel Map" + + def _open(self): + + if not _accept(self.fp.read(9)): + raise SyntaxError("not an XPM file") + + # skip forward to next string + while True: + s = self.fp.readline() + if not s: + raise SyntaxError("broken XPM file") + m = xpm_head.match(s) + if m: + break + + self.size = int(m.group(1)), int(m.group(2)) + + pal = int(m.group(3)) + bpp = int(m.group(4)) + + if pal > 256 or bpp != 1: + raise ValueError("cannot read this XPM file") + + # + # load palette description + + palette = [b"\0\0\0"] * 256 + + for i in range(pal): + + s = self.fp.readline() + if s[-2:] == b'\r\n': + s = s[:-2] + elif s[-1:] in b'\r\n': + s = s[:-1] + + c = i8(s[1]) + s = s[2:-2].split() + + for i in range(0, len(s), 2): + + if s[i] == b"c": + + # process colour key + rgb = s[i+1] + if rgb == b"None": + self.info["transparency"] = c + elif rgb[0:1] == b"#": + # FIXME: handle colour names (see ImagePalette.py) + rgb = int(rgb[1:], 16) + palette[c] = (o8((rgb >> 16) & 255) + + o8((rgb >> 8) & 255) + + o8(rgb & 255)) + else: + # unknown colour + raise ValueError("cannot read this XPM file") + break + + else: + + # missing colour key + raise ValueError("cannot read this XPM file") + + self.mode = "P" + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + self.tile = [("raw", (0, 0)+self.size, self.fp.tell(), ("P", 0, 1))] + + def load_read(self, bytes): + + # + # load all image data in one chunk + + xsize, ysize = self.size + + s = [None] * ysize + + for i in range(ysize): + s[i] = self.fp.readline()[1:xsize+1].ljust(xsize) + + return b"".join(s) + +# +# Registry + + +Image.register_open(XpmImageFile.format, XpmImageFile, _accept) + +Image.register_extension(XpmImageFile.format, ".xpm") + +Image.register_mime(XpmImageFile.format, "image/xpm") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XpmImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/XpmImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..57d511f6fd0754fcd190983370e4cfabd1fc6f43 GIT binary patch literal 2843 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_binary.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_binary.py new file mode 100644 index 0000000..767c13b --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_binary.py @@ -0,0 +1,94 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Binary input/output support routines. +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1995-2003 by Fredrik Lundh +# Copyright (c) 2012 by Brian Crowell +# +# See the README file for information on usage and redistribution. +# + +from struct import unpack_from, pack +from ._util import py3 + +if py3: + def i8(c): + return c if c.__class__ is int else c[0] + + def o8(i): + return bytes((i & 255,)) +else: + def i8(c): + return ord(c) + + def o8(i): + return chr(i & 255) + + +# Input, le = little endian, be = big endian +def i16le(c, o=0): + """ + Converts a 2-bytes (16 bits) string to an unsigned integer. + + c: string containing bytes to convert + o: offset of bytes to convert in string + """ + return unpack_from("H", c, o)[0] + + +def i32be(c, o=0): + return unpack_from(">I", c, o)[0] + + +# Output, le = little endian, be = big endian +def o16le(i): + return pack("H", i) + + +def o32be(i): + return pack(">I", i) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_binary.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_binary.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b434ee06b157cfba633e0c0f3a04ed14159a30e8 GIT binary patch literal 3351 zcmd5;QBN8{5T4@zIRr&*O`E>lBW;32G{zWXY<$ti5PQal(li&iJ#_1FNA8w3B);jN zXwrYvztMluA7E$Z4rnZz2*vbZhi{MFx$nN6ogMvGF~8dV`O$&oO5yK5w&({MfnNoM&8QJkNN6aRJ04J1l}IF<1bx#9$G`GJ_I`6*w(F!}pN4c$MkZ z)I6G=-)%aVb~_9@Dvf>WNew}njMC{=f5V{;HJW#TEqaCK3g9!2(cm%%;R9 ziS)eSYxU&lxN5hg-wgX}-M%7La(kI369jF@m-sW^B?O8oBftH&2G<%2LZj>Q7Hv!= zgQ(S4ZZu*hr)CyxKS#HBnGKc9C=qZ5zfPVzc)(nz24z8#x#P2rCj6UIkJEKP>H0nTjMMd)dgVb< zN3$VCQFk^eslCJ5kXqkrxgRDbH8Z7J?xzu{dYQ{h-n%O7If@T?i-Lxi+wLjpSya_< z6=oTPXoW4RxvWJpB{Jm3qB_=EAw#8)Ma84Fie_}eF`A%G&Y_pxP9S=iUFgY?iDp$R XrLvl#7j#26GKGBdNf$Cknm)e)^AMOB literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imaging.so b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imaging.so new file mode 100755 index 0000000000000000000000000000000000000000..16d87480ab5e411e9042ca39cc001066e7b71be4 GIT binary patch literal 590992 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 a*PokF&dfhV$*OLSH@%53 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

#)foa})0I{WK+O+E4q^etM{_pI+6~Pp_i=^wV5F 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingcms.so b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingcms.so new file mode 100755 index 0000000000000000000000000000000000000000..df26fe93554ffff473f6d3d85d4f7ccc1a33809d GIT binary patch literal 45080 zcmeHw3wT@AmF}^fhZDdOkbrqz4pe}{1V>Ke)Cssqww%a8Nz}v%&V$N|q{I%gty)sz zgis8&(+K0%L!r%NxVOH&9d7#g27i>Hfil5)kOca`4IK!NX-vxFC<$Po1oJ4q|Jn~} z`$Xc=cJAD7t`DEJ&ieP-Ywxx8^Xzl7xUI@FFE=MglUJVhRgJj8B91s@!Z+oOra81S zEg!!ZX;Yc(_;k`~cPH0#NK#GH8Su4NW5EfhNoNPFB552b{q=|{o2gC6NlLPGc~KtS z+izm*X>@un$0e2ds2Hl}kg#KDz0L$B-F`M>wOxWr`(!??ho@_8JfEZyVZ5Z8Fp#Rj zl6pnH9+6MbAz`(b{&K2Z;T!^^GanK;o0pb@n zOrqMqEDj&!^SFE-?wiK*4U6Y>iAMyUf3wa6Brf^3=F#{!YPp_mCS1RU<2z0GEkeG} zgjrMD~g?z+>JA{0X3IE?he!B^`3;A6p z{4pWlZ^CsUKWM_A67q%#w+i|EZ;bZOOG4gi!rO|uy>=6R&kBy0nQ;B99IrLugF=6u z3Aft0e47b>TgY!S;r6d^`JE>Gu#oRF;hKxf518-~A%Db#duMa`VH3Ve*sHbZOhESM z-g#VJH{s1fzQ}~vxw*XCgijFiUK2hj>K`%T7Yg}S6W%tT>)&p|kFMl+uL$(0TCj1T|KWM@uLSBpMETi<#cZGbu3D<>u zkqPe=@^%yM730@y!hb5{YfZRa$hVsC$Ao;F3AZlc_V$|agF=3%3D=i$`9mgr+iH#v zm~eXq$A?UKpO7Cm;X__7Ul`Zfjr8Y>qCUC_k9>{GJ50DCeFMw$BXf}-Gn=;d3|=7@Uw+{zX|VIz~u)`_@zSLFyVc|pZObfmQng=x{$Y;@PSgU z-)_Pe2>CJ-K2XEuYfboSAzx?09YVg%gf|KKZ6>@&^tYWRyj95eneaAI{{a);E#!}w z@VYs?{=+7GhmhAc>P$fT%^~#bCj7@jzQ}}oujTsPCcJSu$Gs-pD%R7834cuJZ#Cg~ zt;DYFCVY>O?=|6l4ldts!e12fhfKKr%UoV>)!B{o!}{eMFEZi%(>Y#e!dKqN@p=NzvJ?)Cj2U)zsH1og?{(u(e;u0<609g_vMARjFz7z z^xI9iUFbJVxGwxMY{KO}dnnBH(>plviVk<0Hmu;%cPyb%XM|)gWOw{0U%@X@aI1m~ zm$B4B1)r|S>k2+g!HX2UOu_96F1BbawM@aqqXokq3cgU$Qz!6=!1yy6Ppnt)JVidD z;PTxmCATWL`kuH=!Kn;+ZBuYO;H9n}1)rQkHEp|spP}Hr3Vx=7?^N)!6ueKt3lw~p zf?E{4U%{;ken`R3R`3A@KS#ljDEPSwKB(YR6x>kosR}-%;O8m$u!5hj;98T;IP!g= zg6Avv1qyCe@QW3^P{A)za9zRwn}Qc9_@xSNS8!dy%M|=F1$QX;M-;qB!CMtv96hkqHU+<0k>94^*C=?8f{U#%OWm&EGZgt= z1s78xOWmp9C5n8Xf{UevrS4L2vBWaGU%|yzgW-o1e72&0K*7JF;71f(E>V;`sNi!I zc|*akRq!DNzfQr26}()*wPu}h)c?iSgz@5mE3( zihQerFII4O`^kL6hn2$JzCV9oI$@;rQMay*T=5uwEtfiQM|?dABnL-uUGX6C^tnrN zfbl;eo|dR&KjVK$JS|PhKF04Lo|dF!FXQhfo|d9y599A7o|f-q8{_XFp1MUc!uZX^ z(~_U8V|)wolZf{+em(KDBqbe;Uqd`CMM*p3R}z0F@jBy|5Kl`_(#rS+#1{~+F}{L$ z3-Lpr0Jvf<@wCJw2N^$;cv@PL1B}0#cv@1D{fxhycv?!5eT=`5cv?b|y^KGHcv?D= zJ&d1BJS`c?Hpb@?PfJBI!uSv8gQq1TS;zQyh^M6?>1F(J;%V!XbTIxH@wDYh+8O@> z@w8+lb;chio|cNFmGMszPfJ8nWBgv?X=z9f{h924lz5%^LB>BwJS_#u0mlD?cv=FI z{fz%1@ig@(`xw82c$)H)y^Oz`c$(^yJ&eDT_$!HTWBeV&)6|}fFn%-fG^Ho&7~ewt zG~&ICUr#(u;YkPM*AP!zyQH1*D~X>@yw3O~#M9KCv@(7H@x{bzjISVm2Ju55v-T&R zrtst-<7X02Q+INJ@mCX1Q+BeS@s|@%Q+2YB@fQ+LTgPNCJMpT!eYjv_?oIoU z@%NQH<2yHv4AOiA`LA*L1&aKh;XHR@uY1q&>)km6?%xf^S>~zFvCM~K@7&~092hx9 z`P<4bKt3&gmAk$CaU`S2#H+D0seGrd8JECfqaHsu9T-2fMAvfO-M5ym;#7Ux%iR#v zVppPa&7yJ_E<^sAfT3$-;HKn_P++;VO~aME0r%4>)PV94cz8GtSo#!n^ z-+G&d1IEA>ccRvcQQ%m$Z*33qI^%PZw<11^6D@!`I#2t8KbF zanx|KdO#oU@BNVJKk+}H{36tywLY5OfnNDz2RdSR=}OFD?yfRp87j2P8iS8_4hq{sM2h@<97Cph>Q`c`m#Kg1kK`X)1dC;plDPx$X6?!te-oXlLP zOBWiqL33hnNq^_z*d^|+TdZ9*HY*%xd<&M8z^4w&y$6jCsrdH&I@QU6?a0BxGT((yH26P5M6hH*Os|pza zIRN$eU20_jC)dGv;jg9W!&Z0KZRo&urCcNkoJUV4H< z3Hiy1>H3uGD_7J)?rzF;Y=gJFWliM@@ZTo>aJjyzmAI|M?Z?ge=tL)eiGEkEuUJ?K zU^Ausr2GcXO(O2T6VIm0E7v!~J&>DADR-3X74w&XBRNY4?H^D4BsGto3oyAFSVsHL zC4ZyxiG#^{R{fN}3z<8+W43(bx74w^w%{)I9uqI*%R{<8e7%D|-zDF3eTAd-34e?9 zJ?4$gYejI{n{mvWtXuS_JuXDL` znX_iu(vlb5x1Ti7=$_`tiUtb4MJUETg21lK)>%`^>rmYw$+}l2m^W`;6Ww4Zj!)_!}vZ5@Fd_K z41Hrg8p4x!%b7T6_;5=FAur@zi4Ul)9j-*smhVZtlQ@u=ZZj@IUV`1#iT%c+cSlAR zcD@p$K72R!ZEjSIjFuHN{!FdZ3A^^iE_Qd{V)Z26^dthhF&-Jg7rGN~8Xvra``h=k z21p!Pb(3?o^CsulojyJvc8!02E);i{#%$z`GUHBUJ@K^c4^B*ow17pCTGEf!EO~>b z05k;VTH_OR0<1X8-LS`6ath0ur>hQ?c-^q^6mQpcHscU=6;?@02d!tc`XvsK)F&tl z`4?c)rd4O;Z3rfgx)VfDI`-|KOgV$K@SGvZ};q_gEp-lCC0g@+vFYAl-0c`@cl`4$6Oz%rE=@?v0^_4aR?idprB%=OEWJl&f9K zp=HEHns2dknFZXs*o*D0_I%5?-lhKHM(>@vf+`p|^G?1U)`PL+y3r zb<&S^+gsf}BPTW;tv9udw;sj;Rch2AXrsKI#PA6;63Uy8u{bi~wVyad<)`{XtR);U z3Rr(-{bAo%xJKC@F!*+p%&O!E*c7JPHxrN8b3kI5 zH(R&_Qw&B4^D7%Cl*723mrqmGGw9>KE73Q)OZ#oEa<$ECSOc?IO9#r`t8V=1q{047!4Yfw|!yMy1-V;!m@f1?seBPr6zK=>#$?npB z!U+V;4)>u*blqy!jcHuBpRAYbv2J{wRVaQT@;yWOF#h4&`hDs34k>f0bPbdGESlMM z7iL0RR}9Nnmp8xrk?=&UYP@$M6|)&;O?TJSt)vY1`Pi{eM_*$~*}Sq8Q^B{WZrxL< ziq1#yU7UuYM5H<~Xsl)}6UWR@egj-#e2f~RQ&TdvIJCZQ7%GO&qxK)NZFe5LcH&+! zkAcr6zBA23nU-vUOYl4f`I1w~P|81?UnY66JUoX3o|1lA>E+tsPP}X!W$uezL(@B! zG^p*&$7wwNfO7IagKe?!FUBLu8|R3UpTi(?I8dM8 zp^mt3EyGX5j-UD>{M70Asij@Lm$vgX_wy~h#-1;XYpHv)Z8y{Jyb&}1L|Dd`?d{O% zT<%HiRd!J#{a zc2fUBiRk%tGzJ_r2JEz#qC6hHd7`}%+w*vA(_PS6L>mR8iH%$g&nJvZHh9@KsSLNI zXgVn>!idIBiS3V!rV}tW@fK~3zI>c-jh4f68@~#Bu{BDSXS|Avv8Fcdi{3~A7yF`@ z>HhZp%pIBbMSDu1wY#(lXPeaSEhzBB({kS19c#vV!0l)2!Ouxr*&nd=05YqRN$mPk z>w#Dw6Yn`|suLe$8omAGwn^xluaITbH?f{Z_t+d5u8$vrD`{pv6SaWH zzx@gLb|VMRr|siToUhDB?fb^L=bW%~{5u3(UDrC>NAflvcO^!QcThrA=Nr|D1JxK4 zkJ6ZTB|foq&c$dqmWhUZf{N)H|E3+rP|H&WlBOAfNq>wR<0>KjIG65+bje{M3MtB& zZ|S5|<71RcJ%n~Y?yk~%Nimuhy#ccyn(nHLXyP#9Fbn2eIv#`E!p>8cj-Rs(Td=oJ z?DZs0xnY;lOiqGvonONAL;a}`?MLoAeLaT}Z_f}$BxkePstp>c4$lKmZe);yjC~UP z>DBL`0}A63V`N0^amWG~bOs?Ke2K?;VSMyD_&q5eb&px9y9(UhUxPu1s}twNJTNR~ zad*L7hPe~g*dlTQ9{jMefv?=ulGOM)amYFI-HE5MD2VxD{0g!IJu7KJjjFqrBN=%- ziT6jAV0yzXPHC{%U;zbi;(pV7-+s`#o6YBU;Pe^uIe5(HaWGuJeBKYhj*QReiwg1N zt302(h)+GA&jfec^Z7dXNUZp!cJ`&(}cASUt$M%;bZ|sFZG}4~y z^6H-MvwnXbCddzSVpH2c%mq6D7JI70croU&R6WI?)ke_L{8{baFbyfsY7Ub9XUO(o zJGL7X>%bGxfVK5IAhaUW4q`jM_tNU@rq$VjQRtz0?W{1Bm!QX5+VORl2Elh(cTwLm zw(+Kh33T2)bpiCB_`cjPcTfE)@!v}GGr=cga=z-GdIj;pH1C=Mz9!92qI6f9|A^9O zrTO0yZxejU;p7FlO|4JN|MqnaEvfy?h48EJ|I=6N8TT_JZ&Z*~%>OW)k0LgF5_@SR z(SXW0j?Os7`l;L>(RmRbaj-1*!d0vT;GG9m04KcT7s(3TzMqn5+86sYIKQ+EZz<_m zy%tIArcU0}(+xIGF`Uvspq1n4vn7@kapSaU8ztca@(??tGOp%!VUJ?z*aTNmk8?ia zz?|ybMHA~Ig<3T%-n+XH-~1cDCUfveiU*IkUnYmVXz8e=T>K#U*dtiXA$^n%W(G+B z4_>WAasG$R)?3Cuf`Kt%9CLM---xCH6SUQ`r+wV6rsG^|jm?2ykBzp9*lQWH{|F7L zPg3&{p4Vb6kwE%+?FNiH@w}!@)A^Rg{Jcgvj26;KixPicdjJzX`myy~<$3M4LDD6j z*N&0p^pMY=*KXtTgXf(7yyiwWdQA7iRPnr4g~HhFKI1~9D$i>-6rqycrSF}M;;{=m ziB$D@4fX}1pgTM>euA!tJEz(GW5V`{p85vG3-qn0-@)eP^C-UoaHkkhZT2nuL80%9_bO%3(Z6 zy(-;)Z_$L*UFtQ9RmjI`Wv>FWA(mwBJvmN!V9MSu@&)9L8blCu#dEyuJ~Xld|vVzbp1taCvFp zQOuI?hXe9v`*tE5+1JPIB>VnJHswBJGg1}%etHG7ZyCPmAp1PXW45m)5KXt=ub@fT z*G5@0+J_v*JJe6o_RZk+?Lj#y`$k?;>|4X-rF|oqI$&QNB*fZIv-Jt3QN zpRog}ihaMbG5g{L+`cgKnC%Oy?RNs2gnhk~HKTpVVVpDCzQw%0eJCeo-=(U3cTm4d z&o7s9`8LR#?K58F_6>16$-Y-*Q|>b!MXF-oi7zqx?!^~7)P8p%&uII2(<$rG2harz zX+7FanPK6mxtHy$F)^3!#9aBeUypWhKYY&h=sMP#Y(4Um;h(l1d6{R98paFcq1R|N zItvg?;j7V;@DZ2{s}b#euJj%Xh{1QycqZ{$vSZ0sX(GQLj@r$Qi zV>z{q>eBT3ek0z>i1%!?Z(=WNW* zV4kjrnBeXaT<)%$^)B}m=bS}T=wVa0e5V$oU5-NMoOy+o@7w^!co2%Jy5<$)%nu@N zPgl^US9SJ(6IH{$yc*B->>HJs5C!R0aTe4@* z@iX=$&zkg9`>`BL=Z`31Z^;Yo$0k}jzfa7b#0zd5$m)BN6ZagSn7E5=@!EgH$V7vL7iCOUYAItfj<$(|2 zvcwi!t)=5QHj~&FVteXEKD>~K*&MgOPXCS+>Gg?&srzu^=RXFOWsKHFW8OzgXY zar_GeS7HE?4t6>OG2EagZ5s7}aZlufB3B2oXtc8KiV=|3?ut(m9k%U2yPYGryN~YX zQPP&%Q8v}V((y;sPn_v>j#xSpVCfLUi-wMMt%efUU^rOSk8OoH<7=ReONebv|kN_8v-r8_6HoNs=S?SRVMDd%HVu zn5u4f2k-`Gvf3b6_z@MuF?|X7y_vD;HFE-XahXYEq`INk{ zt=2W?MErSoJF3a_mbvHP*3ucJVFc8hgTlPPR$IRFz$dA55%!ALX!(fVm6q?;*dSU2>kEb_C7f+LNU3lHjQrmwJqK2~@f@acJ5LIZS3C z*+eq@;f9HIyFUR-{d3y$ID4A2+O`G0Pu>PGc1+uK59F6 z?1*RP@)dY_!e+;O`Sf!!eY-+mzOb)d@D)q>v*cxd8qfxF*!#NOGu7wUmAsO4eqc#g zQa*38+K{|)2dVnv&#yN;!)hS)jq=aaP$~R#&qbf^pBCdmCY<(9i!p@WVe-$dC=J$! z=}e(~&V5GLb25I{ajv2^3PirrYb4zVg4a`V-2qj&Q~yZeE#SAzdL-I ze|9%C#>1)eokyV;PNMRg)8&sk-ywP97`le=#_vUMX@>5UH~wz?XL`dzDtHGS_5LQ> z(2#zAb9K5tM=!|i50W>Q@cMjFe_Zst)BKTg#SfrT^p{||XgViKt@m>DtTXOl!s-69 z&giGEIC?xSL}@7xO~RT1CTPn(p5EZC#k`*$PqE0&Yf_b*%qvOl^>|^*Kcm`< z+Q{~Ld_bwqE!aeSMs0kl+KfJ*67Rn;&*OdDW|SlP&y1|~q4(dUjC)7cXNFpz6WA<# zMtz>8a(C&s(4Fa=sC|4HfE;5fRUd~%za-jSz7~Z+^`k2> z=k3O$5Un14RK4!fud$?~IFd4U|CR|8QgX_Opa6VSFn$|KX77sW?7yA=^Nc0)E1VjB zYU#&$ZOQBkt#aXt8#E7Y*-wSGqO#JdMYja!23kV?SjgMbytW}6(xS+qH8jj^i253u zVxgv(FB*?Tnp3|l78k<`-X_d`!NRj-yP>iHm72-`dH#Ki; z(p;r>%{9AJbItj(Hg6`_QmsmxSEeU+ zwZ)e$zAPHu0@pFyYf?s!@<`ejMT-|No~F$zonfD@+h@!w)$GCPdT@qaTNi59*7yTA zQ@xtkL_;kbLM>!ZgK7)zgZP6@Ys3DQkY=vfG_9#=u0Ik9Z_*kxUqhpR9n=LHquLe0 z;wyq$xFHq`hrs)wJlfFQqy^CjVhxRWiom1${+#7LRM8vRZ2wf;aX-U1U+Ahd;3T%b9!sik3EeN2l4qFPI+DHx&_5uHzC zof9g3R4py$Z$U?)ywn=3d|6}^lA$KbNwtz_Lm-f{&>urvuZhP(QLR4YM=?IQZe5BQ zRaYU<$f_C)ZDTC3)#8zLl z-XDSeu~4AC39{=pK?$pZOIt!gAH&hFwRL1nnq3o)qkPIli6j|8c0WcC7nB^6 zlT2eM*x>hVtZ#^ge351hW?wASh>G~BIkeMK1+pfLuE*syG0b3OpdMqzA46^ZL4PEM zJG62NY={Yy*pT$E!89T(>x&WVL+8-~Vf;{oG=}^bvY|$rT;R@N1JlNusv)$InlOz@ zhtgPGvx(YHBC%%9v(e_Ii6%YdDjTC|##`+vRz^TE5+TlpvsSfa$>Jq*_4GUx@P`BO zF#4L#9H%qK=~TMTOwtt}>Zr ztsnh0sK=UhKHKUop>M=PQB0~rE$>Sh#-@oyPBfTtvZYMJazT@in100kWAX@O=t>(J z48=k%m_@Vl~|c+Jlw7A9N6O5OfH17*xahYQ^%eVI8KAHgr%r zH}QhD62;QJ9W(;k2igmI2(%w`5Off97*xY{!8#84LG7RpP%o$zJJViJ4R#L_4jc2a zO|arHr54l++6vkWx*b%s{dhRWG84H=poPn9BmikL3R+-4mt$tCW<3{`WKcCyt-%u z?E&2mItbbaYR4;^L!fP-gP_zV)=A(&9iRhv14&G!Dd@qOr}cgGA<$k>`j?&dVdw*;i?&{LuRJ3+Ebm;nsVvB^hHX^lJ@`9>KI;MH`IZ*gH?Ul+yoUe}BOR_x zT~v=><8R1>PY3o2{tV#ngOa|jxvql3_PhlJ{W-a>78C+OeJBkV>6wE1?)uHh2)^Zj zaRt_eNTqsB2i^~ye8cPID$sA@xhdU)^Z}&*iPDiT*E_i&-vgs?k=`)U`!ELCd63Xc zIGr%<0)80@Lgi|dNBDiDFN6F;z>fgO8>3YHNdDKr2Tk%+uUCK@QeL!!w3pJyVeDs1 zr#7&O^h402RTNmilj|uc{B~YNf!;l?qM+!m@y-JK)(Osnvi6D91--d>x93bQD03Cq zodrdZsVFE!o{EC}D)Pj2_=`bbJ?0t%_oS~ocTqv%U3ty|ee1Z&f}-~EE_9Rn$puC5 zg;VC9&;3Zge+c;tX^x`$Fnj!P^t>~2t3h(PAl3UN$k{O`QNQ5zMqM)3dw#({ZtlIP zHcT;9+sz6lKTXHn)(3rGA$>}@3q=3$AbkMoG#=FS8l+Rb!(wjSoJ#i;I9BsPFprzZ z{BsZFYB6WNNOJJcUAY)~TggA|;~-8Q7VdPPk$Y!~afBm#>*C?IYv8tda*T*a3I%BbUJm4E5Z5!le8I+Cs+jYR(GT=49TY=-% zR_Y@8Fz`qQ`3~UqCYWxa~q^=ruYWsJs|f(XaJXd*rTA{osMjbgV^nkgrRPgQe7;sxpp)ft)j4LwXO=*PtJp`)?JEJB%?g?&cTtpPP3*m6xRhlmAabUmw<1bGwYg z+PD+A+P+l3i-FTx{3qOJn$NC7dK=d03ZAatD(0;k;JY&5VcGC@BX3fU!c(ERXr5aQJr2B``%A_#<-ZU42mgxvFCl*$_BMZM z`4?lp(D9c0FU`Li`TPHh{P!V$9rj>X>`&|}3OF+%eWTSu`E$-Exb6tv~$J(8DkJhQo;`t@VbXUCrMA8^m-@%gE7fcbu% z+OJ9eB;;E&_8)MJ> zdG)_U^@057_0O4@00$uddFyi>@k?-%r8 zK@SM}te~$6dP>j`aKmAw6l~2WyKV9T6 zLS+1T8E>AJ@-K49c=R&yaluZb@j2|!K#b*}vXOot3;bk27Y;rOlyo~>zO-{yvmvP^-$;tTdy@+1( zX_t)q-u4-CGTwWglj zwr7)*@!Ms*_H1%8Zo7=ro=r~1YnSoav&qRg?J_QVHaQueUB+Y2CMV;v%Q)=W(##@*1)w9XTIO{U5dNw&3UtPvi&n741 zs>?X)+2mwAbs0ZBo1BcJF5{+Wlauk&WxVukay#h52wXBwI_FORmGRPLeDu>LI3nYu z%ed&-P6i%{F>6zY1$~^GA3Ly z%U&|mt_lOcrUb&Hr9VrxRvfLzHwpO4L@UO3WTE19P4Qy(Nys($28VI={%E~c9Ng3t z-PFiwtc9n@Z=aZ$V0=hx35ETXLEJ^cF|D|vsR6&SP%D1dfS)}N9323zUxpgVV)*wlPUjT5to+qx@*+jINu%3YSaVN@-JS_1ti6h z_NdEL9gW_#Qhw?GB9ULx{E4Hor~D_;J52fQH}Mon>02B1GMC?jM78`nAD5Q&F7>4w zl4ScyojY(tZG>00?2`WH_My(`yobMUgnqozro?png2oLrTWYKnmk9m86Ylm zd1n3>kWur?bL{-jng2JY{PO>QG8CrL@gAF#)UPaG(!)qm%Xc^GOxE4Vvy_?IPv(=9 z-aV=L<-VbM$dvku8ZtxjVYW~aLsjk-4tG3jQv$nO^U z#dIRYPwP+nkwSBq^qntgMCnK6w6iDThj4a>Wu3UQTcgzE09vJh$mSnP*SEccgcVbjkOHv_GXwzNeP&9qWW5+QZT%KU+ATv#IYvBrd-%k@b|{naJ-Y zWO?*$3#pLbv(UFP#7n;p30{6L^MT;oN$5Y~^7+;^Qm7$BK8pE#h~z|{A^F$`NWSWt zg$Q=k5?a@QKr$^g3oFCTO`#eVeut%HPVog={iMJjrg$&D1si-zgoa8AaD)gu-c8Py zbw01ZB^s)UM<|$2W3-Y52}1xd89K-3-L!bkdPG9RTF$E#|?l}(kajxJ;onwIhaP2Nov&CTJoI!Me% zWJMM$N>roTm8lSCQ*bFclV|W&E){n?>pT`^N>%1eN22m>qMEZZmo-Hj)-{EK1Tb@W zma3)zqEH2^D=X#aYN8k(wr9DB-{svjk75roO|IrRi@~JSe~ApN#a+mnCfpoNg?&r4 z<~)QgqEuHXj0izW6s1j78xZYhseePLrXHOk$W+MCafl$)wC*(FC5Uj;+#==inO-1* zKv9iRQX(8$(~MAXTBAQ4ZVqT`schaqsu%Ol0qN>!jenhn{^nbR{*7iu=rPi=1eKr^ z+%CfBcfm@EkA(n7_)HF7#h8#iGo4!9w6>Y#sdrMZN%vVo7kZW!GVZaF2s$hL0B)5DEkZwbuO)}t|oXfLdpr8 zDnQ1cj?SY%e1Q3&Q{C!nNDnv^pBf3gRin&HH7#-JCGRGd0b{EgajRJB%1}#l+K1KA zO3$(yQD5f3r7Wl!x6Z`^pRs8{i0~dw@!-Ov5jD^oGP|17wdT4~JR$%hj@&$i1N5_I zgc+%{YKk@|k{Uye)Lm%8Q=)gFNqp6SP=$CnG|M-877)((poz={P=m05V4Dz1E7m2aa zLA;�Nu^jd?EHVr_YDaIr(f32q6pSd#WoceKU(^7MG@UUE`l!W-ke@nZ=YA+l$LI z+u|kF^Q#xlD2B%9XRI@M+W6FWjZ*Y0SV*msQRsKEuw}w;!NQ#he-jJvIZA$cy9ftL zndH}_+)VPcZ_s6Cg_dX0|LZLHFMww%cVia$m$TS=P8NGBAfKuJH^JUa_=+s${!145 zby@HoS^QR!1%CxT%;blfEbT_EbKU|u{|958T4>eipKQ&8z{HTwPKl62c7XPfu;^&+!e%K1d znc8b|7Cp8s^)G`S-CRlV^uO}Tq<;z0F3%wU&spUEoCVKCea^vCXC1w0!Sx6y+LNrF o=iqy0T_Bvi#PD;qohE!h;AVO13+H55$IoLp;_r#?_GKae2T7yPzW@LL literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingft.so b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingft.so new file mode 100755 index 0000000000000000000000000000000000000000..70791eac2516b93e21b8aef4cd2480a52387ae9e GIT binary patch literal 35776 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 F{9ib2*bD#w literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingmath.so b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingmath.so new file mode 100755 index 0000000000000000000000000000000000000000..212553eb191cc9a90ce2369697f1fe817214bdef GIT binary patch literal 24856 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 TYP+ghIE!=tP=&Y-uIs-53*r<3 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingmorph.so b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_imagingmorph.so new file mode 100755 index 0000000000000000000000000000000000000000..79052a58f9922c47c038a1dbdf124bc65a703107 GIT binary patch literal 8056 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 mNQpl8o8dQ6Q7K|bQnpX8LO-f&@4H 2: + from tkinter import _tkinter as tk +else: + from Tkinter import tkinter as tk + +if hasattr(sys, 'pypy_find_executable'): + # Tested with packages at https://bitbucket.org/pypy/pypy/downloads. + # PyPies 1.6, 2.0 do not have tkinter built in. PyPy3-2.3.1 gives an + # OSError trying to import tkinter. Otherwise: + try: # PyPy 5.1, 4.0.0, 2.6.1, 2.6.0 + TKINTER_LIB = tk.tklib_cffi.__file__ + except AttributeError: + # PyPy3 2.4, 2.1-beta1; PyPy 2.5.1, 2.5.0, 2.4.0, 2.3, 2.2, 2.1 + TKINTER_LIB = tk.tkffi.verifier.modulefilename +else: + TKINTER_LIB = tk.__file__ diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_tkinter_finder.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_tkinter_finder.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c20d9ba920f8f19b674e2b794791c1cb1a56e4c GIT binary patch literal 629 zcmYLFO>fjN5FIDkZJX}45ul!P+)IgsKwMA-NJUy$Rn?NJXgOHf!~rMH2lgzGGZzkA zIq={37yN*B?6ks?pY3_`W}e6YHxEzxzaMkBTN658(l&nx3V;nEgTe#FV8cK#s642A zD14{`(9azkfC`|Qz-9`pja+B~Y7d&gg~Yzq6;t@(f&K+U1Y!!+0aPJu4&nOCZwSN; z>Jao#V2oLE4%HD<$CfAhLwn#PE}y)-U+h_nPYL2TvMu7gYkH|f5jS12QzBNft!4Wu z#x72C6(@08Q*5g{6Td0v)sv`7w=pgxDhrSFy(>G_(kmap-M-mgd`w>uQ)T6fxY#QI)IW@IUacA4Xh zY^gSD#DcW&AIvj)CfM{zFZ)y38qAbBeS5X$PgcpLRI2-yTrOA1{kYsvgnrx)&f<%) b_?i8jv4fkknfHJ_^dj##@L9y>-idb$dli!} literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_util.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_util.py new file mode 100644 index 0000000..6618c62 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_util.py @@ -0,0 +1,29 @@ +import os, sys + +py3 = sys.version_info.major >= 3 + +if py3: + def isStringType(t): + return isinstance(t, str) + + def isPath(f): + return isinstance(f, (bytes, str)) +else: + def isStringType(t): + return isinstance(t, basestring) + + def isPath(f): + return isinstance(f, basestring) + + +# Checks if an object is a string, and that it points to a directory. +def isDirectory(f): + return isPath(f) and os.path.isdir(f) + + +class deferred_error(object): + def __init__(self, ex): + self.ex = ex + + def __getattr__(self, elt): + raise self.ex diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_util.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_util.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b462a80af6ad48f57063d4394b2d3e3e0bdb10e6 GIT binary patch literal 1663 zcmbtU+iuf95FOjOxwKpgLgn%Skx+>QuLvP751^`wHt;}rSf%m0Y;bJLy9I*!MEaTh z1s?!&#<^5|Kq9d+liBgE=gireiGJ_x+%1278q?y5`2Piq`@t&VUqBhraAgNH49EmD z3272h64I9@4I5+{RK1}jq6^;Kq@*E6i}HO+noDPE;Y`|Mv?=M3=};O_62mhm`Z$ac za?su3@b(Ws#}<&r0V@a=uUOn3D^GOJI-q&TNAUW%8^SNAoz0yeP%DH&ZxR)fG11!iOp zm~5No2lrZ^8b9*B(i)YqK-NX(3)uN+YP6Oqr1i8&&N5yq)R?-(YE6q+|2u&c8s~t; zA!I9vBbk;8l+~kd=448JHI=hP&Mc;d)Zlb9DJt1g&YnsSO1&y%9ixqg7B bk3P%*y@JXT4xkpB-29Z%oK!ool^`PlV5cGV literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_webp.so b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/_webp.so new file mode 100755 index 0000000000000000000000000000000000000000..0b8fcc502bc7d14a476e0573ed30bbc1e89f5d27 GIT binary patch literal 39328 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 V(odyOo+=lzF-GN~5$4Lp{{RJ7KEMC~ literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/INSTALLER b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/LICENSE.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/LICENSE.txt new file mode 100644 index 0000000..80456a7 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/LICENSE.txt @@ -0,0 +1,16 @@ +The Python Imaging Library (PIL) is + + Copyright © 1997-2011 by Secret Labs AB + Copyright © 1995-2011 by Fredrik Lundh + +Pillow is the friendly PIL fork. It is + + Copyright © 2010-2018 by Alex Clark and contributors + +Like PIL, Pillow is licensed under the open source PIL Software License: + +By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions: + +Permission to use, copy, modify, and distribute this software and its associated documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Secret Labs AB or the author not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. + +SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/METADATA b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/METADATA new file mode 100644 index 0000000..1895a9f --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/METADATA @@ -0,0 +1,107 @@ +Metadata-Version: 2.1 +Name: Pillow +Version: 5.2.0 +Summary: Python Imaging Library (Fork) +Home-page: http://python-pillow.org +Author: Alex Clark (Fork Author) +Author-email: aclark@aclark.net +License: Standard PIL License +Keywords: Imaging +Platform: UNKNOWN +Classifier: Development Status :: 6 - Mature +Classifier: Topic :: Multimedia :: Graphics +Classifier: Topic :: Multimedia :: Graphics :: Capture :: Digital Camera +Classifier: Topic :: Multimedia :: Graphics :: Capture :: Screen Capture +Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion +Classifier: Topic :: Multimedia :: Graphics :: Viewers +Classifier: License :: Other/Proprietary License +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: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* + +Pillow +====== + +Python Imaging Library (Fork) +----------------------------- + +Pillow is the friendly PIL fork by `Alex Clark and Contributors `_. PIL is the Python Imaging Library by Fredrik Lundh and Contributors. + +.. start-badges + +.. list-table:: + :stub-columns: 1 + + * - docs + - |docs| + * - tests + - |linux| |macos| |windows| |coverage| + * - package + - |zenodo| |version| + * - social + - |gitter| |twitter| + +.. |docs| image:: https://readthedocs.org/projects/pillow/badge/?version=latest + :target: https://pillow.readthedocs.io/?badge=latest + :alt: Documentation Status + +.. |linux| image:: https://img.shields.io/travis/python-pillow/Pillow/master.svg?label=Linux%20build + :target: https://travis-ci.org/python-pillow/Pillow + :alt: Travis CI build status (Linux) + +.. |macos| image:: https://img.shields.io/travis/python-pillow/pillow-wheels/latest.svg?label=macOS%20build + :target: https://travis-ci.org/python-pillow/pillow-wheels + :alt: Travis CI build status (macOS) + +.. |windows| image:: https://img.shields.io/appveyor/ci/python-pillow/Pillow/master.svg?label=Windows%20build + :target: https://ci.appveyor.com/project/python-pillow/Pillow + :alt: AppVeyor CI build status (Windows) + +.. |coverage| image:: https://coveralls.io/repos/python-pillow/Pillow/badge.svg?branch=master&service=github + :target: https://coveralls.io/github/python-pillow/Pillow?branch=master + :alt: Code coverage + +.. |zenodo| image:: https://zenodo.org/badge/17549/python-pillow/Pillow.svg + :target: https://zenodo.org/badge/latestdoi/17549/python-pillow/Pillow + +.. |version| image:: https://img.shields.io/pypi/v/pillow.svg + :target: https://pypi.org/project/Pillow/ + :alt: Latest PyPI version + +.. |gitter| image:: https://badges.gitter.im/python-pillow/Pillow.svg + :target: https://gitter.im/python-pillow/Pillow?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge + :alt: Join the chat at https://gitter.im/python-pillow/Pillow + +.. |twitter| image:: https://img.shields.io/badge/tweet-on%20Twitter-00aced.svg + :target: https://twitter.com/PythonPillow + :alt: Follow on https://twitter.com/PythonPillow + +.. end-badges + + + +More Information +---------------- + +- `Documentation `_ + + - `Installation `_ + - `Handbook `_ + +- `Contribute `_ + + - `Issues `_ + - `Pull requests `_ + +- `Changelog `_ + + - `Pre-fork `_ + + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/RECORD b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/RECORD new file mode 100644 index 0000000..450cf90 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/RECORD @@ -0,0 +1,209 @@ +PIL/.libs/libfreetype-6ed94974.so.6.16.1,sha256=7HFYgY53-x4NVIP14eHvGwPGLZmKs327kxs_1m6PvVU,1254200 +PIL/.libs/libjpeg-3fe7dfc0.so.9.3.0,sha256=4kAV2SMqD-qa-LK26xsUdUGe-hXdNFhUHA4hdWI6Cno,344704 +PIL/.libs/liblcms2-a6801db4.so.2.0.8,sha256=0yDBrtoWH6dLJfk2KCgE41hpqrFbc43rDLZXFfhpUtU,453104 +PIL/.libs/liblzma-90de1f11.so.5.2.2,sha256=osdreMNRCe59cUbV9pPueaURTBIJV76m044DdBtzOOU,216664 +PIL/.libs/libopenjp2-e366d6b0.so.2.1.0,sha256=GpeLTsAMZNDD1IaIBxtt43XQKFVpMFaEBaXD6aGlOzg,310256 +PIL/.libs/libpng16-8793a1b2.so.16.32.0,sha256=LlPL_INpz4apwAtBHAanWVI3TBtXHnyF2Rf4v9-rVLc,279824 +PIL/.libs/libtiff-8a6d997d.so.5.3.0,sha256=SMU1y4pKsu0c8VjLD_e5lvf-Uh0czIo75AFtjJ8nn-0,636464 +PIL/.libs/libwebp-8ccd29fd.so.7.0.2,sha256=XjUXjc-WovRk8DUqvYt3_iXD_JoUDGV3NFsveY75MAo,776912 +PIL/.libs/libwebpdemux-eba3dc32.so.2.0.4,sha256=xO0QPVfm6m-9i4MpFv5-YSpyR-fjzXWeQpZSxbK-dDc,29512 +PIL/.libs/libwebpmux-1c63fe99.so.3.0.2,sha256=Ld9g5ZSZYMm4cfF17XTBsqSuW-JBFXrSXmCwuXfNW8c,58600 +PIL/.libs/libz-a147dcb0.so.1.2.3,sha256=1IGoOjRpujOMRn7cZ29ERtAxBt6SxTUlRLBkSqa_lsk,87848 +PIL/BdfFontFile.py,sha256=dx--JzHUxLiUf0eyW2znQP4HRe941iZfDInK_l6A4J0,3367 +PIL/BdfFontFile.pyc,, +PIL/BlpImagePlugin.py,sha256=40hyRVgy4bTykbO8n_P-T_e-ZosJeuGWPsz8TKwTo5A,14415 +PIL/BlpImagePlugin.pyc,, +PIL/BmpImagePlugin.py,sha256=zQMJyXF1ugH9OqG1PaNgai1fCHsn2xLIpX1WVlQ5ZwQ,13137 +PIL/BmpImagePlugin.pyc,, +PIL/BufrStubImagePlugin.py,sha256=vlns5HsnrKuFom-0NR_WGLqv5k1Q07CnVCnup3eJkRE,1518 +PIL/BufrStubImagePlugin.pyc,, +PIL/ContainerIO.py,sha256=FZUZlQJh6ItrIC0W48B8pOwgqywZNH4YXPGQXqLbifE,2693 +PIL/ContainerIO.pyc,, +PIL/CurImagePlugin.py,sha256=fet0bN2V623xAbLT0YMzx8XeFCNbGnsGhI-7SB88t7g,2071 +PIL/CurImagePlugin.pyc,, +PIL/DcxImagePlugin.py,sha256=H-pUUjreLV8pcigxXi76XSaGCsfjugZVRJpjt5yV9dE,2025 +PIL/DcxImagePlugin.pyc,, +PIL/DdsImagePlugin.py,sha256=htg9LmzsEsha_NgxhUlQNgDw_Cp7YJMImTQ5vlEoPxc,5040 +PIL/DdsImagePlugin.pyc,, +PIL/EpsImagePlugin.py,sha256=rd6jB8VYaL741fzOOtg7NSBHzv8N8_aL1zDHv8WZ5DM,12883 +PIL/EpsImagePlugin.pyc,, +PIL/ExifTags.py,sha256=-Auwh-hnhpOuBCo6SW5hEmToJYmbjat13TTG4OnF9Q4,8837 +PIL/ExifTags.pyc,, +PIL/FitsStubImagePlugin.py,sha256=-kjVbGTjhKuVgmvaGryFyXEA0LZm7WofH7f0yR9wiXI,1622 +PIL/FitsStubImagePlugin.pyc,, +PIL/FliImagePlugin.py,sha256=Ef4A0mCYbk2cW7jWzp9sfpCVOALgjs1RJeyCpi28rsM,4093 +PIL/FliImagePlugin.pyc,, +PIL/FontFile.py,sha256=r_I7yEY1GGfgIv0l2AhzLNAjROWTaliEzsjmAwFT0Kc,2840 +PIL/FontFile.pyc,, +PIL/FpxImagePlugin.py,sha256=iIJ8QqOp9GlHrdFNZgEdkzzOAybHvfCdHPbgk3eTiT8,6379 +PIL/FpxImagePlugin.pyc,, +PIL/FtexImagePlugin.py,sha256=lAkYhwcmJEwMoVQZkrul7zo45QsDXom-QwZoSRXIHRQ,3268 +PIL/FtexImagePlugin.pyc,, +PIL/GbrImagePlugin.py,sha256=cztw3cPdpEjzlQnWj8mnC2rZxUR4G65v2ZeXhGc17JE,2723 +PIL/GbrImagePlugin.pyc,, +PIL/GdImageFile.py,sha256=3lsM1dhyf_UlxFo-ERCQc5FQ3wg1ROh5o7veQ0JiZTs,2266 +PIL/GdImageFile.pyc,, +PIL/GifImagePlugin.py,sha256=x4pWwoNEZoMKU1LGUoJpbGCW4MUSgPfmPOeAc8UjTt0,26714 +PIL/GifImagePlugin.pyc,, +PIL/GimpGradientFile.py,sha256=zs7-vHAdVCInRQRDx2K5fBpofMlRR0GRKxGVmcUGMag,3345 +PIL/GimpGradientFile.pyc,, +PIL/GimpPaletteFile.py,sha256=1o3b3WhPCeUHz_9uWforK0iQ_OBeGoFMHnEsn9lfCjM,1339 +PIL/GimpPaletteFile.pyc,, +PIL/GribStubImagePlugin.py,sha256=Y2p_W8PTvx3OCnpsOD71NJceoJtWmgWy_acOt5wSV3E,1541 +PIL/GribStubImagePlugin.pyc,, +PIL/Hdf5StubImagePlugin.py,sha256=1nacrTpO0tNzbVvek0dvxRbAmlnxi8n-J6gds-WODEo,1515 +PIL/Hdf5StubImagePlugin.pyc,, +PIL/IcnsImagePlugin.py,sha256=DfSq14eRyR93Jkj1j4Sffjb31wxnV9QTyhvM3-cHSg8,10980 +PIL/IcnsImagePlugin.pyc,, +PIL/IcoImagePlugin.py,sha256=wNdwhS3j3lhjLoRJ9CpHwkmeK9rqJm7TW2AyjRd3b1M,9331 +PIL/IcoImagePlugin.pyc,, +PIL/ImImagePlugin.py,sha256=vIi4nDl6ISY8Ox7e8KNiQM9JaI_crFZEcvX-FqZhpLQ,10162 +PIL/ImImagePlugin.pyc,, +PIL/Image.py,sha256=GK2CZ54qxV29EGiY1MYGCVTp07-mD7SOBX4WSSjtKvU,96860 +PIL/Image.pyc,, +PIL/ImageChops.py,sha256=f07JlSm9Ln3-PPIM1-ylbchp29FSnOPunFyciLZyMyc,6182 +PIL/ImageChops.pyc,, +PIL/ImageCms.py,sha256=_oTgU2CwnkLyp1lJIxtMdSuYer-AsrEWnPXPO2N5sig,36616 +PIL/ImageCms.pyc,, +PIL/ImageColor.py,sha256=ctBZpa78H8kqxM8kqpT12c0tw0D812YWy-KtRl-mupA,8703 +PIL/ImageColor.pyc,, +PIL/ImageDraw.py,sha256=nuGekoQeLk6AhiNMUF4P3LwZRk_HHVTDH86EYxeZLic,13689 +PIL/ImageDraw.pyc,, +PIL/ImageDraw2.py,sha256=kpFXgNEmf2Yn16zy9TpU4_z7ekN5sEhlKmmTXwnC3eg,3127 +PIL/ImageDraw2.pyc,, +PIL/ImageEnhance.py,sha256=eQUg_Uzi6PbeIaghBmtc6r5pdLvevFAqbn6C_1fHL1w,3195 +PIL/ImageEnhance.pyc,, +PIL/ImageFile.py,sha256=y7tyTk--nl86ZBW0VpfIoOg1EhA2wk9rQ8J0vyBE4hA,20584 +PIL/ImageFile.pyc,, +PIL/ImageFilter.py,sha256=1-b1Vi8SfxgWZoO_jbwTaGnOFc2ExHFDwihFYBgLyFI,15383 +PIL/ImageFilter.pyc,, +PIL/ImageFont.py,sha256=Did8yfJWkazO1HqVqh14GMrfgS6Vgzq0SpjnWk50RYY,21369 +PIL/ImageFont.pyc,, +PIL/ImageGrab.py,sha256=q7wTv2h-t6-2KqKKVIhLg3lNTTAhlo45bErT368pGz8,2150 +PIL/ImageGrab.pyc,, +PIL/ImageMath.py,sha256=k3KvcxS5Vm07IWVnZqq0Fx8ceVB1MdsBlYHoLYrpDys,7463 +PIL/ImageMath.pyc,, +PIL/ImageMode.py,sha256=frHm-hptD7oCyWbawKtYsjb3NV8CHNXn8R0dyrAStAE,1558 +PIL/ImageMode.pyc,, +PIL/ImageMorph.py,sha256=bgj3maI0a2XIg7A3_K2H_5aN14Elwqu4038GKQqEwgI,8370 +PIL/ImageMorph.pyc,, +PIL/ImageOps.py,sha256=AIONtNN8RgARADWmBPoiwazH-gukMECsO0gv5yXUOv8,16106 +PIL/ImageOps.pyc,, +PIL/ImagePalette.py,sha256=pZ_GQHxMFNnlkcMFDbdto-Iz86FWgxQnyugfxRxWjSY,6321 +PIL/ImagePalette.pyc,, +PIL/ImagePath.py,sha256=IPUmk_1SdD5NjpZWuwDEDMrRIq_izWrhiczq7zFgLl8,337 +PIL/ImagePath.pyc,, +PIL/ImageQt.py,sha256=JC5fEcAn9q0r3bH36a9YgBQwyPIQ1fd8RXrYHoWLW2k,6321 +PIL/ImageQt.pyc,, +PIL/ImageSequence.py,sha256=fp7ziB8L6zhEXz8bTrU5sYCdGnZ7OzADEOsvCd37Vc4,1240 +PIL/ImageSequence.pyc,, +PIL/ImageShow.py,sha256=tH6tIj8jh__hOeAUpnRDgSiU15kfhaOaoc8cREe5OTU,5262 +PIL/ImageShow.pyc,, +PIL/ImageStat.py,sha256=UkQwWW3JBfk7HtGdUf3EyZOyHGNuhp1TNOUmgXgyB0Q,3848 +PIL/ImageStat.pyc,, +PIL/ImageTk.py,sha256=mWWvseOE7X7PW-v6rZoUK4vZ0LduZZ4HjEpnPPmiDx0,9360 +PIL/ImageTk.pyc,, +PIL/ImageTransform.py,sha256=3tSnRn747qaNC-8BaOC0T1CyeMJoaKUzpLEwCPKyHFs,2839 +PIL/ImageTransform.pyc,, +PIL/ImageWin.py,sha256=cH6bBrWyk42copvCfPILYhpTkdngxA1d8v1S7R9ol-Y,7217 +PIL/ImageWin.pyc,, +PIL/ImtImagePlugin.py,sha256=WDXZldcCJiB0-dwjzdmcjz2JkRFBaj4QROWHj_kY3Yg,2240 +PIL/ImtImagePlugin.pyc,, +PIL/IptcImagePlugin.py,sha256=n-ZTYv4LEQ3AuvhZpJlDdFnJEVEK3caBHEJ1hpD84SY,6798 +PIL/IptcImagePlugin.pyc,, +PIL/Jpeg2KImagePlugin.py,sha256=irT7mcxIMc1arvJcVPRadpmzimEn1XkWKomRKpvJbZE,7730 +PIL/Jpeg2KImagePlugin.pyc,, +PIL/JpegImagePlugin.py,sha256=OxIm8FHtQW0Eo8jJnVPtluAQEqkLd8wKC4x9TnxnjrY,27685 +PIL/JpegImagePlugin.pyc,, +PIL/JpegPresets.py,sha256=t9_TuyTIVp9RkXlIv3BVLEh7T1NZtVZwzzLpIlcJiMQ,12399 +PIL/JpegPresets.pyc,, +PIL/McIdasImagePlugin.py,sha256=MAyW-gPGI8Vpq5bcc4_Fd95DEwFH-zTfUZEe3A1lJ_0,1768 +PIL/McIdasImagePlugin.pyc,, +PIL/MicImagePlugin.py,sha256=X0tFPFlbaHeY4tI70AmzViUs781-u-ycrqHM7Hb9oKk,2460 +PIL/MicImagePlugin.pyc,, +PIL/MpegImagePlugin.py,sha256=1a3yu5UpkAjRRQu_BnSuX90s9doVulfc7va9OT0THQU,1831 +PIL/MpegImagePlugin.pyc,, +PIL/MpoImagePlugin.py,sha256=tLqF8CuTfi2l1ebgIzVeCsSEGwt0wBnWYPrTyXQxTRU,2982 +PIL/MpoImagePlugin.pyc,, +PIL/MspImagePlugin.py,sha256=HXn-fjPaOH1X2w_UCARNdxXKbvfPS0u5jT_z5B0orKw,5518 +PIL/MspImagePlugin.pyc,, +PIL/OleFileIO.py,sha256=EJ54RgQCUPoQjO0lDdoe34MeOd9IH_RwYH2GKpKYlPY,152 +PIL/OleFileIO.pyc,, +PIL/PSDraw.py,sha256=hQuLYYkxbTOL6fw4eomK_Rop0U0JWZIlljBwtpj_jes,6870 +PIL/PSDraw.pyc,, +PIL/PaletteFile.py,sha256=xnAUCKhUxSIeqqn--4DFPRaNtVxeqoNvYgdzq_7kidQ,1110 +PIL/PaletteFile.pyc,, +PIL/PalmImagePlugin.py,sha256=-4otkAWd40ykwzLq06CZ8QWb_bFZO_cLirtZ_ZeP-7s,9150 +PIL/PalmImagePlugin.pyc,, +PIL/PcdImagePlugin.py,sha256=kYXV7kOTRxFmlvqYvDjy_4qNeeZjAbfZe921H7RTmsI,1519 +PIL/PcdImagePlugin.pyc,, +PIL/PcfFontFile.py,sha256=BdhMHBLk_DMvnO6IAe_IdddpHwZRjXPEzTeh2oglylQ,6136 +PIL/PcfFontFile.pyc,, +PIL/PcxImagePlugin.py,sha256=2FrzOXe_GdSajFPBZAfoJxqs48AT8B4RABFD_JZ5FMI,5224 +PIL/PcxImagePlugin.pyc,, +PIL/PdfImagePlugin.py,sha256=JcB71T4CPNCLBzZGkJmGFqy64WktRIlU0xWxCrS4cfg,7392 +PIL/PdfImagePlugin.pyc,, +PIL/PdfParser.py,sha256=gRIHXRXnQRWRcTapFFw5ufGytISfQthRHwIFVnjKo1M,33203 +PIL/PdfParser.pyc,, +PIL/PixarImagePlugin.py,sha256=IOu9VzegyC5RKTCfF6OHEgAza-6PZRDa7w_dBWIB5tY,1674 +PIL/PixarImagePlugin.pyc,, +PIL/PngImagePlugin.py,sha256=3l7LdeEXTENzZ1M-Y_5Jn-Ipebn_haMH2oyY3kYhjsE,25677 +PIL/PngImagePlugin.pyc,, +PIL/PpmImagePlugin.py,sha256=PG_t0FvDZDgxnUVgWn46MDamjCDkYNn0SLVUnj_i2P4,4212 +PIL/PpmImagePlugin.pyc,, +PIL/PsdImagePlugin.py,sha256=hJfd4YVj7wmE0kE5TkhuSagLbx37fJNb39Uto3tO4Yo,7550 +PIL/PsdImagePlugin.pyc,, +PIL/PyAccess.py,sha256=rIH60zn4NcjZmlMp5sZowFTWLjzUqvooECNZa87u9WQ,8895 +PIL/PyAccess.pyc,, +PIL/SgiImagePlugin.py,sha256=FQ4ottrWgu_5KLosbLbjG_3yFXYMtDryBlyXTCLIz2c,6125 +PIL/SgiImagePlugin.pyc,, +PIL/SpiderImagePlugin.py,sha256=3xaZ5uJNTPaUVRnW6p8ynfAMvCPp2_uXg8Hdkphq76c,9341 +PIL/SpiderImagePlugin.pyc,, +PIL/SunImagePlugin.py,sha256=1CRfLHH_gYgUJTSGa4yjLgwi4XF9CC5MtVloYHN3vus,4320 +PIL/SunImagePlugin.pyc,, +PIL/TarIO.py,sha256=0f0geSoJ9B0PPcM0jMcCCfa94hwYDS6hth7FRNFwmpM,1239 +PIL/TarIO.pyc,, +PIL/TgaImagePlugin.py,sha256=e_J9Jw2HbfLPd3354Ji23LEl2xsprkBOuVe3y_kks-I,5351 +PIL/TgaImagePlugin.pyc,, +PIL/TiffImagePlugin.py,sha256=_N4cti2SZ2tTf8ST2ALUbrC3b3etvELpnoDQFOIabrw,65125 +PIL/TiffImagePlugin.pyc,, +PIL/TiffTags.py,sha256=sKmw5-orRfR_KiltQIlpGZi46kLA_o27PSfqk2gXLOY,14438 +PIL/TiffTags.pyc,, +PIL/WalImageFile.py,sha256=rKggtH36cF0a7NaiwrxfWS1Lq2zSoI9bJfGvW5LIax8,5558 +PIL/WalImageFile.pyc,, +PIL/WebPImagePlugin.py,sha256=0hv4aLLMkiw9rC0tChuT-m1Bw0FNuCaEx4xgghStJYQ,9674 +PIL/WebPImagePlugin.pyc,, +PIL/WmfImagePlugin.py,sha256=eufTX7sE4UlGvbweIPCkq6UbV1iy8rZQN1mOMhIgWXQ,4267 +PIL/WmfImagePlugin.pyc,, +PIL/XVThumbImagePlugin.py,sha256=IFiuUbhqOdBH_5B8smM2aB29SDSe815JWwiXef-k_rU,1959 +PIL/XVThumbImagePlugin.pyc,, +PIL/XbmImagePlugin.py,sha256=uYemmzX39rtW_-XApHIr4so4qVkmlzdr-wMZiZaEV7s,2504 +PIL/XbmImagePlugin.pyc,, +PIL/XpmImagePlugin.py,sha256=5HtNdyiNpIVtjsjhTOaWTq038HbScPojyPBf-vRQrFQ,3102 +PIL/XpmImagePlugin.pyc,, +PIL/__init__.py,sha256=P5K0X-uz8-kB0YTvWmC-WWkZ6D8woM6_BOLRvXV90os,2167 +PIL/__init__.pyc,, +PIL/_binary.py,sha256=Wy_0dJYiAzbkg7rKBi2e9os-UsPqcgPFMaGUW1x7vNE,1822 +PIL/_binary.pyc,, +PIL/_imaging.so,sha256=4HOgx8nOgV1pVps_zf-IyByeanRWz6p28vvblyHsIMs,590992 +PIL/_imagingcms.so,sha256=SNkNkSbP7RvcD1JjBGbdbM7p-EZLbB5jEwvfiq07IFU,45080 +PIL/_imagingft.so,sha256=YNDZVHwFZhiwGpWNq01jRnHLqYvdpnZUkGyUGQcF1sM,35776 +PIL/_imagingmath.so,sha256=nvqCOk3TGnndpiaZdj-TGmjAvbtKYZGvu4cXVbPmJRk,24856 +PIL/_imagingmorph.so,sha256=7WMh1EmPLH8YOQCYwlRgkM2DwwHzB6lma9wF0CYq_DM,8056 +PIL/_imagingtk.so,sha256=SgF4SvI046T1er-Qj3MXm1jicq5g-utlaJjAl_PhbNQ,8984 +PIL/_tkinter_finder.py,sha256=OxAeW-nXH-BLvlWO-YjwMtaTG33_UQ5kmR3IbtyMAH8,702 +PIL/_tkinter_finder.pyc,, +PIL/_util.py,sha256=285thA2BR8MOP5fUupc3rOAF56Imy50uqkEH44GxqDM,584 +PIL/_util.pyc,, +PIL/_version.py,sha256=AgUEioJ4MrtghIObrh6qtCts3TpNe_R2tzkLf1rMQR4,50 +PIL/_version.pyc,, +PIL/_webp.so,sha256=-WE0UK4GkeCpN36__USQY5kXqjN4OaKGcizPzh1QNzs,39328 +PIL/features.py,sha256=9D3LoufNcZvNvp8ExVAqdequM0vD1LF_puH_byd3h38,1874 +PIL/features.pyc,, +Pillow-5.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Pillow-5.2.0.dist-info/LICENSE.txt,sha256=SWD8GL7MKGvoOcj_F71wzVIiUz92ESkUIVNENxiiUZk,1452 +Pillow-5.2.0.dist-info/METADATA,sha256=BaSj0IUHC5xF-YKLAqQAOj74Z_T33akeoIAEaO4eJho,4109 +Pillow-5.2.0.dist-info/RECORD,, +Pillow-5.2.0.dist-info/WHEEL,sha256=M5Ujap42zjfAFnpJOoFU72TFHuBKh-JF0Rqu5vZhkVE,110 +Pillow-5.2.0.dist-info/top_level.txt,sha256=riZqrk-hyZqh5f1Z0Zwii3dKfxEsByhu9cU9IODF-NY,4 +Pillow-5.2.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/WHEEL b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/WHEEL new file mode 100644 index 0000000..295a0ca --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.31.1) +Root-Is-Purelib: false +Tag: cp27-cp27mu-manylinux1_x86_64 + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/top_level.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/top_level.txt new file mode 100644 index 0000000..b338169 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/top_level.txt @@ -0,0 +1 @@ +PIL diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/zip-safe b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Pillow-5.2.0.dist-info/zip-safe @@ -0,0 +1 @@ + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/DESCRIPTION.rst b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..675f08d --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/DESCRIPTION.rst @@ -0,0 +1,80 @@ +Werkzeug +======== + +Werkzeug is a comprehensive `WSGI`_ web application library. It began as +a simple collection of various utilities for WSGI applications and has +become one of the most advanced WSGI utility libraries. + +It includes: + +* An interactive debugger that allows inspecting stack traces and source + code in the browser with an interactive interpreter for any frame in + the stack. +* A full-featured request object with objects to interact with headers, + query args, form data, files, and cookies. +* A response object that can wrap other WSGI applications and handle + streaming data. +* A routing system for matching URLs to endpoints and generating URLs + for endpoints, with an extensible system for capturing variables from + URLs. +* HTTP utilities to handle entity tags, cache control, dates, user + agents, cookies, files, and more. +* A threaded WSGI server for use while developing applications locally. +* A test client for simulating HTTP requests during testing without + requiring running a server. + +Werkzeug is Unicode aware and doesn't enforce any dependencies. It is up +to the developer to choose a template engine, database adapter, and even +how to handle requests. It can be used to build all sorts of end user +applications such as blogs, wikis, or bulletin boards. + +`Flask`_ wraps Werkzeug, using it to handle the details of WSGI while +providing more structure and patterns for defining powerful +applications. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + pip install -U Werkzeug + + +A Simple Example +---------------- + +.. code-block:: python + + from werkzeug.wrappers import Request, Response + + @Request.application + def application(request): + return Response('Hello, World!') + + if __name__ == '__main__': + from werkzeug.serving import run_simple + run_simple('localhost', 4000, application) + + +Links +----- + +* Website: https://www.palletsprojects.com/p/werkzeug/ +* Releases: https://pypi.org/project/Werkzeug/ +* Code: https://github.com/pallets/werkzeug +* Issue tracker: https://github.com/pallets/werkzeug/issues +* Test status: + + * Linux, Mac: https://travis-ci.org/pallets/werkzeug + * Windows: https://ci.appveyor.com/project/davidism/werkzeug + +* Test coverage: https://codecov.io/gh/pallets/werkzeug + +.. _WSGI: https://wsgi.readthedocs.io/en/latest/ +.. _Flask: https://www.palletsprojects.com/p/flask/ +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/INSTALLER b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/LICENSE.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/LICENSE.txt new file mode 100644 index 0000000..1cc75bb --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/LICENSE.txt @@ -0,0 +1,31 @@ +Copyright © 2007 by the Pallets team. + +Some 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 of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE AND DOCUMENTATION 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 AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/METADATA b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/METADATA new file mode 100644 index 0000000..bfc3c4e --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/METADATA @@ -0,0 +1,116 @@ +Metadata-Version: 2.0 +Name: Werkzeug +Version: 0.14.1 +Summary: The comprehensive WSGI web application library. +Home-page: https://www.palletsprojects.org/p/werkzeug/ +Author: Armin Ronacher +Author-email: armin.ronacher@active-4.com +License: BSD +Description-Content-Type: UNKNOWN +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: Programming Language :: Python :: 3.6 +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Provides-Extra: dev +Requires-Dist: coverage; extra == 'dev' +Requires-Dist: pytest; extra == 'dev' +Requires-Dist: sphinx; extra == 'dev' +Requires-Dist: tox; extra == 'dev' +Provides-Extra: termcolor +Requires-Dist: termcolor; extra == 'termcolor' +Provides-Extra: watchdog +Requires-Dist: watchdog; extra == 'watchdog' + +Werkzeug +======== + +Werkzeug is a comprehensive `WSGI`_ web application library. It began as +a simple collection of various utilities for WSGI applications and has +become one of the most advanced WSGI utility libraries. + +It includes: + +* An interactive debugger that allows inspecting stack traces and source + code in the browser with an interactive interpreter for any frame in + the stack. +* A full-featured request object with objects to interact with headers, + query args, form data, files, and cookies. +* A response object that can wrap other WSGI applications and handle + streaming data. +* A routing system for matching URLs to endpoints and generating URLs + for endpoints, with an extensible system for capturing variables from + URLs. +* HTTP utilities to handle entity tags, cache control, dates, user + agents, cookies, files, and more. +* A threaded WSGI server for use while developing applications locally. +* A test client for simulating HTTP requests during testing without + requiring running a server. + +Werkzeug is Unicode aware and doesn't enforce any dependencies. It is up +to the developer to choose a template engine, database adapter, and even +how to handle requests. It can be used to build all sorts of end user +applications such as blogs, wikis, or bulletin boards. + +`Flask`_ wraps Werkzeug, using it to handle the details of WSGI while +providing more structure and patterns for defining powerful +applications. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + pip install -U Werkzeug + + +A Simple Example +---------------- + +.. code-block:: python + + from werkzeug.wrappers import Request, Response + + @Request.application + def application(request): + return Response('Hello, World!') + + if __name__ == '__main__': + from werkzeug.serving import run_simple + run_simple('localhost', 4000, application) + + +Links +----- + +* Website: https://www.palletsprojects.com/p/werkzeug/ +* Releases: https://pypi.org/project/Werkzeug/ +* Code: https://github.com/pallets/werkzeug +* Issue tracker: https://github.com/pallets/werkzeug/issues +* Test status: + + * Linux, Mac: https://travis-ci.org/pallets/werkzeug + * Windows: https://ci.appveyor.com/project/davidism/werkzeug + +* Test coverage: https://codecov.io/gh/pallets/werkzeug + +.. _WSGI: https://wsgi.readthedocs.io/en/latest/ +.. _Flask: https://www.palletsprojects.com/p/flask/ +.. _pip: https://pip.pypa.io/en/stable/quickstart/ + + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/RECORD b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/RECORD new file mode 100644 index 0000000..450d790 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/RECORD @@ -0,0 +1,97 @@ +Werkzeug-0.14.1.dist-info/DESCRIPTION.rst,sha256=rOCN36jwsWtWsTpqPG96z7FMilB5qI1CIARSKRuUmz8,2452 +Werkzeug-0.14.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Werkzeug-0.14.1.dist-info/LICENSE.txt,sha256=xndz_dD4m269AF9l_Xbl5V3tM1N3C1LoZC2PEPxWO-8,1534 +Werkzeug-0.14.1.dist-info/METADATA,sha256=FbfadrPdJNUWAxMOKxGUtHe5R3IDSBKYYmAz3FvI3uY,3872 +Werkzeug-0.14.1.dist-info/RECORD,, +Werkzeug-0.14.1.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110 +Werkzeug-0.14.1.dist-info/metadata.json,sha256=4489UTt6HBp2NQil95-pBkjU4Je93SMHvMxZ_rjOpqA,1452 +Werkzeug-0.14.1.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9 +werkzeug/__init__.py,sha256=NR0d4n_-U9BLVKlOISean3zUt2vBwhvK-AZE6M0sC0k,6842 +werkzeug/__init__.pyc,, +werkzeug/_compat.py,sha256=8c4U9o6A_TR9nKCcTbpZNxpqCXcXDVIbFawwKM2s92c,6311 +werkzeug/_compat.pyc,, +werkzeug/_internal.py,sha256=GhEyGMlsSz_tYjsDWO9TG35VN7304MM8gjKDrXLEdVc,13873 +werkzeug/_internal.pyc,, +werkzeug/_reloader.py,sha256=AyPphcOHPbu6qzW0UbrVvTDJdre5WgpxbhIJN_TqzUc,9264 +werkzeug/_reloader.pyc,, +werkzeug/contrib/__init__.py,sha256=f7PfttZhbrImqpr5Ezre8CXgwvcGUJK7zWNpO34WWrw,623 +werkzeug/contrib/__init__.pyc,, +werkzeug/contrib/atom.py,sha256=qqfJcfIn2RYY-3hO3Oz0aLq9YuNubcPQ_KZcNsDwVJo,15575 +werkzeug/contrib/atom.pyc,, +werkzeug/contrib/cache.py,sha256=xBImHNj09BmX_7kC5NUCx8f_l4L8_O7zi0jCL21UZKE,32163 +werkzeug/contrib/cache.pyc,, +werkzeug/contrib/fixers.py,sha256=gR06T-w71ur-tHQ_31kP_4jpOncPJ4Wc1dOqTvYusr8,10179 +werkzeug/contrib/fixers.pyc,, +werkzeug/contrib/iterio.py,sha256=RlqDvGhz0RneTpzE8dVc-yWCUv4nkPl1jEc_EDp2fH0,10814 +werkzeug/contrib/iterio.pyc,, +werkzeug/contrib/jsrouting.py,sha256=QTmgeDoKXvNK02KzXgx9lr3cAH6fAzpwF5bBdPNvJPs,8564 +werkzeug/contrib/jsrouting.pyc,, +werkzeug/contrib/limiter.py,sha256=iS8-ahPZ-JLRnmfIBzxpm7O_s3lPsiDMVWv7llAIDCI,1334 +werkzeug/contrib/limiter.pyc,, +werkzeug/contrib/lint.py,sha256=Mj9NeUN7s4zIUWeQOAVjrmtZIcl3Mm2yDe9BSIr9YGE,12558 +werkzeug/contrib/lint.pyc,, +werkzeug/contrib/profiler.py,sha256=ISwCWvwVyGpDLRBRpLjo_qUWma6GXYBrTAco4PEQSHY,5151 +werkzeug/contrib/profiler.pyc,, +werkzeug/contrib/securecookie.py,sha256=uWMyHDHY3lkeBRiCSayGqWkAIy4a7xAbSE_Hln9ecqc,12196 +werkzeug/contrib/securecookie.pyc,, +werkzeug/contrib/sessions.py,sha256=39LVNvLbm5JWpbxM79WC2l87MJFbqeISARjwYbkJatw,12577 +werkzeug/contrib/sessions.pyc,, +werkzeug/contrib/testtools.py,sha256=G9xN-qeihJlhExrIZMCahvQOIDxdL9NiX874jiiHFMs,2453 +werkzeug/contrib/testtools.pyc,, +werkzeug/contrib/wrappers.py,sha256=v7OYlz7wQtDlS9fey75UiRZ1IkUWqCpzbhsLy4k14Hw,10398 +werkzeug/contrib/wrappers.pyc,, +werkzeug/datastructures.py,sha256=3IgNKNqrz-ZjmAG7y3YgEYK-enDiMT_b652PsypWcYg,90080 +werkzeug/datastructures.pyc,, +werkzeug/debug/__init__.py,sha256=uSn9BqCZ5E3ySgpoZtundpROGsn-uYvZtSFiTfAX24M,17452 +werkzeug/debug/__init__.pyc,, +werkzeug/debug/console.py,sha256=n3-dsKk1TsjnN-u4ZgmuWCU_HO0qw5IA7ttjhyyMM6I,5607 +werkzeug/debug/console.pyc,, +werkzeug/debug/repr.py,sha256=bKqstDYGfECpeLerd48s_hxuqK4b6UWnjMu3d_DHO8I,9340 +werkzeug/debug/repr.pyc,, +werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673 +werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507 +werkzeug/debug/shared/debugger.js,sha256=PKPVYuyO4SX1hkqLOwCLvmIEO5154WatFYaXE-zIfKI,6264 +werkzeug/debug/shared/jquery.js,sha256=7LkWEzqTdpEfELxcZZlS6wAx5Ff13zZ83lYO2_ujj7g,95957 +werkzeug/debug/shared/less.png,sha256=-4-kNRaXJSONVLahrQKUxMwXGm9R4OnZ9SxDGpHlIR4,191 +werkzeug/debug/shared/more.png,sha256=GngN7CioHQoV58rH6ojnkYi8c_qED2Aka5FO5UXrReY,200 +werkzeug/debug/shared/source.png,sha256=RoGcBTE4CyCB85GBuDGTFlAnUqxwTBiIfDqW15EpnUQ,818 +werkzeug/debug/shared/style.css,sha256=IEO0PC2pWmh2aEyGCaN--txuWsRCliuhlbEhPDFwh0A,6270 +werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220 +werkzeug/debug/tbtools.py,sha256=rBudXCmkVdAKIcdhxANxgf09g6kQjJWW9_5bjSpr4OY,18451 +werkzeug/debug/tbtools.pyc,, +werkzeug/exceptions.py,sha256=3wp95Hqj9FqV8MdikV99JRcHse_fSMn27V8tgP5Hw2c,20505 +werkzeug/exceptions.pyc,, +werkzeug/filesystem.py,sha256=hHWeWo_gqLMzTRfYt8-7n2wWcWUNTnDyudQDLOBEICE,2175 +werkzeug/filesystem.pyc,, +werkzeug/formparser.py,sha256=mUuCwjzjb8_E4RzrAT2AioLuZSYpqR1KXTK6LScRYzA,21722 +werkzeug/formparser.pyc,, +werkzeug/http.py,sha256=RQg4MJuhRv2isNRiEh__Phh09ebpfT3Kuu_GfrZ54_c,40079 +werkzeug/http.pyc,, +werkzeug/local.py,sha256=QdQhWV5L8p1Y1CJ1CDStwxaUs24SuN5aebHwjVD08C8,14553 +werkzeug/local.pyc,, +werkzeug/posixemulation.py,sha256=xEF2Bxc-vUCPkiu4IbfWVd3LW7DROYAT-ExW6THqyzw,3519 +werkzeug/posixemulation.pyc,, +werkzeug/routing.py,sha256=2JVtdSgxKGeANy4Z_FP-dKESvKtkYGCZ1J2fARCLGCY,67214 +werkzeug/routing.pyc,, +werkzeug/script.py,sha256=DwaVDcXdaOTffdNvlBdLitxWXjKaRVT32VbhDtljFPY,11365 +werkzeug/script.pyc,, +werkzeug/security.py,sha256=0m107exslz4QJLWQCpfQJ04z3re4eGHVggRvrQVAdWc,9193 +werkzeug/security.pyc,, +werkzeug/serving.py,sha256=A0flnIJHufdn2QJ9oeuHfrXwP3LzP8fn3rNW6hbxKUg,31926 +werkzeug/serving.pyc,, +werkzeug/test.py,sha256=XmECSmnpASiYQTct4oMiWr0LT5jHWCtKqnpYKZd2ui8,36100 +werkzeug/test.pyc,, +werkzeug/testapp.py,sha256=3HQRW1sHZKXuAjCvFMet4KXtQG3loYTFnvn6LWt-4zI,9396 +werkzeug/testapp.pyc,, +werkzeug/urls.py,sha256=dUeLg2IeTm0WLmSvFeD4hBZWGdOs-uHudR5-t8n9zPo,36771 +werkzeug/urls.pyc,, +werkzeug/useragents.py,sha256=BhYMf4cBTHyN4U0WsQedePIocmNlH_34C-UwqSThGCc,5865 +werkzeug/useragents.pyc,, +werkzeug/utils.py,sha256=BrY1j0DHQ8RTb0K1StIobKuMJhN9SQQkWEARbrh2qpk,22972 +werkzeug/utils.pyc,, +werkzeug/websocket.py,sha256=PpSeDxXD_0UsPAa5hQhQNM6mxibeUgn8lA8eRqiS0vM,11344 +werkzeug/websocket.pyc,, +werkzeug/wrappers.py,sha256=kbyL_aFjxELwPgMwfNCYjKu-CR6kNkh-oO8wv3GXbk8,84511 +werkzeug/wrappers.pyc,, +werkzeug/wsgi.py,sha256=1Nob-aeChWQf7MsiicO8RZt6J90iRzEcik44ev9Qu8s,49347 +werkzeug/wsgi.pyc,, diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/WHEEL b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/WHEEL new file mode 100644 index 0000000..0de529b --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.26.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/metadata.json b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/metadata.json new file mode 100644 index 0000000..bca8d12 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/metadata.json @@ -0,0 +1 @@ +{"generator": "bdist_wheel (0.26.0)", "summary": "The comprehensive WSGI web application library.", "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", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules"], "description_content_type": "UNKNOWN", "extensions": {"python.details": {"project_urls": {"Home": "https://www.palletsprojects.org/p/werkzeug/"}, "contacts": [{"email": "armin.ronacher@active-4.com", "name": "Armin Ronacher", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}}}, "license": "BSD", "metadata_version": "2.0", "name": "Werkzeug", "platform": "any", "extras": ["dev", "termcolor", "watchdog"], "run_requires": [{"requires": ["coverage", "pytest", "sphinx", "tox"], "extra": "dev"}, {"requires": ["termcolor"], "extra": "termcolor"}, {"requires": ["watchdog"], "extra": "watchdog"}], "version": "0.14.1"} \ No newline at end of file diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/top_level.txt b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/top_level.txt new file mode 100644 index 0000000..6fe8da8 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/Werkzeug-0.14.1.dist-info/top_level.txt @@ -0,0 +1 @@ +werkzeug diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/__init__.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/__init__.py new file mode 100644 index 0000000..46c7827 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/__init__.py @@ -0,0 +1,8 @@ +__all__ = ["__version__"] + +try: + from ._version import version as __version__ +except ImportError: + # broken installation, we don't even try + # unknown only works because we do poor mans version compare + __version__ = "unknown" diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/__init__.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f39212f0ba7199aba92d14f3d2e6b5639ebabd5d GIT binary patch literal 301 zcmYLC%}N773{G}d)Jks!UturpiU%)>c=2FC5A8u|51}}V4Bh!*CRO?lKB8~o3z*my z1NoBgOY+5hk4Ll5uk|YoaU}IlvRn&TfH#B{z=0.5.6 for python 3.2/3.3 (older versions fail +to find the magic string, so _ARGCOMPLETE env. var is never set, and +this does not need special code. + +Function try_argcomplete(parser) should be called directly before +the call to ArgumentParser.parse_args(). + +The filescompleter is what you normally would use on the positional +arguments specification, in order to get "dirname/" after "dirn" +instead of the default "dirname ": + + optparser.add_argument(Config._file_or_dir, nargs='*' + ).completer=filescompleter + +Other, application specific, completers should go in the file +doing the add_argument calls as they need to be specified as .completer +attributes as well. (If argcomplete is not installed, the function the +attribute points to will not be used). + +SPEEDUP +======= +The generic argcomplete script for bash-completion +(/etc/bash_completion.d/python-argcomplete.sh ) +uses a python program to determine startup script generated by pip. +You can speed up completion somewhat by changing this script to include + # PYTHON_ARGCOMPLETE_OK +so the the python-argcomplete-check-easy-install-script does not +need to be called to find the entry point of the code and see if that is +marked with PYTHON_ARGCOMPLETE_OK + +INSTALL/DEBUGGING +================= +To include this support in another application that has setup.py generated +scripts: +- add the line: + # PYTHON_ARGCOMPLETE_OK + near the top of the main python entry point +- include in the file calling parse_args(): + from _argcomplete import try_argcomplete, filescompleter + , call try_argcomplete just before parse_args(), and optionally add + filescompleter to the positional arguments' add_argument() +If things do not work right away: +- switch on argcomplete debugging with (also helpful when doing custom + completers): + export _ARC_DEBUG=1 +- run: + python-argcomplete-check-easy-install-script $(which appname) + echo $? + will echo 0 if the magic line has been found, 1 if not +- sometimes it helps to find early on errors using: + _ARGCOMPLETE=1 _ARC_DEBUG=1 appname + which should throw a KeyError: 'COMPLINE' (which is properly set by the + global argcomplete script). +""" +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os +import sys +from glob import glob + + +class FastFilesCompleter(object): + "Fast file completer class" + + def __init__(self, directories=True): + self.directories = directories + + def __call__(self, prefix, **kwargs): + """only called on non option completions""" + if os.path.sep in prefix[1:]: + prefix_dir = len(os.path.dirname(prefix) + os.path.sep) + else: + prefix_dir = 0 + completion = [] + globbed = [] + if "*" not in prefix and "?" not in prefix: + # we are on unix, otherwise no bash + if not prefix or prefix[-1] == os.path.sep: + globbed.extend(glob(prefix + ".*")) + prefix += "*" + globbed.extend(glob(prefix)) + for x in sorted(globbed): + if os.path.isdir(x): + x += "/" + # append stripping the prefix (like bash, not like compgen) + completion.append(x[prefix_dir:]) + return completion + + +if os.environ.get("_ARGCOMPLETE"): + try: + import argcomplete.completers + except ImportError: + sys.exit(-1) + filescompleter = FastFilesCompleter() + + def try_argcomplete(parser): + argcomplete.autocomplete(parser, always_complete_options=False) + + +else: + + def try_argcomplete(parser): + pass + + filescompleter = None diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_argcomplete.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_argcomplete.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bc9eba81f4970998df56aa879300dc9a32cd6db1 GIT binary patch literal 4437 zcmb_f-EQ2*6&~(ND~Xm8$3dMYXp*VpK&wDn*)?hdZsb&!WmT~w3o8YwRTL~m&hAp; za@d)nr3K`hI+uNfzCd4~?@*w(y(`c+=uICW{mvn|yH1;^c~m7sM-1n7@e8 z)tbzrI9d|lWFLtc^_DpGh53{4JWsX6$=f3KX}gzs;+G01Avum+A;L%Rhz#qCRX>Jc zSeg|F?Iq}F|2i*3n5Ozn9*1_Y7U^N0DwpU?_Oy|q>F1%bN}eTdK%;71$)qQf%sL!Z zv7adw+v(*88@DvuYLWLu}PGV+Bo7F?|Cg-Pl=Eqh58OE*w* z81|D$T4$21zbdVk!De@7>)BWPPqz=ZrOIA(Rg{FOjC8CzzW=z$BG%2BQ81-Vo0T*x(hhWy#`0Lnh&7XOVpQbP5vE`d1s>&+ zgv6VsUkp{|_Q^t~!!(GhZLfgWA$InXRN2~OEb`ePbaJE%h-ijjF_LG@v4D+XBqE<{ zn~;!U>Vp__u%#lsBnoL|6{eTkkQpIHUpaXLa%SOBt>2Jg&taY?K0n-i_~3?5eo|p9 zb&u)CsuvdN9?ZJErL$hr?*ybvpiKZyt1=@sH?eE%7=1+6g8(@L?inyc^_0}&{xozmB&Hd%-W`LPB*csMOC`wdXEv@$9| z02{%f4250-P+)N)l^;4F?YMA&4HnK+ns#J+w>OPu#u^|s2K;I%#u!ZlH6a84C7A<% zji5+1_+i2hX1P z2z2r-J^!xAS~O76>6!}dXszr9EDNy1-2H||> zC^i%84?}YbCCi-mpM~{z_YMv>pFUlGwEghwot@pio!X(5U-9w}$7(|>vPO~T+7OJu zRYOta*D35X`vEYBgjVF8e1ymbF31gjsjI#3uSuYtjg-P~_c{Fjn?)tyk3`8<)p@P; zFa-Y!3sXh`<;q7SADy8n<8UH(PA9jLYtQJRoKB)L8M1npa_j1)EJz|Fypj9lrJeGm zu&zq9uQBBGPWg$mB622dKxAG|DCB!a&p3ZlK$ZD(nT||y+KP_=hflITT^JmqXWE=f zlk^8phG*f3ENyY=MFUF9Qz3<*IWGDPalRAVVG869RGRmSRGtk~28v{{2+HUo#H>Tw z*pYVL_0N4r`KO48f%@kR={C}bUX8UZAKu7?I^8X40LPY~DZ+?M3XCNNlq8ppc zQ(mux9!X$3R*<--i!5H1w`mWMNxCDZT{1-CNE~a&35}x(n1Tyn6=jS@dM+%~Ek&P> z>5bcTagQ~uB_yF(;_9k(1B2Qlluy)Xo9Nw_%Y4`G?rks2N;$+1vR1B$FM@-T5;Os& zeyWdgyHC5Pj1*+rgi5-$hsM2)COoz}MV1drl$HyqeMFqRNT?DiXWqh0j>^LYy(+u! zl?yXiAa?E=I*&u^9@E{vRo_w(X8G4Z`;aQgPtZ{)zfj7*m^ ztx9`cs&LzQ%EsPBZ`}>^b!7Q*X8m$_Yxw0?be|~e)`R*zWoBe2N5%_+BuiWnJVM_R zBjK^MbLbJvCnW70oZy5w@x)1k#D*C@K5Yr}GvS)`!VE2-f*tRB4}+IYk)d#IP^T}% z%NcG_RyS$)>6|cs6fvJH`u9(@9pm^`4 zCo&ACwpCls9|<={3m8B8^{s#mB_uw|^Gj zVDg|%Mzf!y(HX#86`6>o3{RQh>U;r6+JxZCKz7vojN31g@9<-5cgmUdwvSau_ScqO zori7!lzWoJ71udGmfJyF%{6vIV_y6Z!3nuV_a^k%zq?g`FSug!5e7LIr-B45AnxIq*j^U ztTO4&`q9i@DFb!8H_?1AB6TS&Pw-TUto<&L{}4?DkzU~n1Bi4nCA!R=_uj-w^I-LP85s}mp>HLcmUor@jYV(KyV|_|qibFh<0bDMZ=tc+T4??Y D8<*W` literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/__init__.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/__init__.py new file mode 100644 index 0000000..fe755a3 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/__init__.py @@ -0,0 +1,14 @@ +""" python inspection/code generation API """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +from .code import Code # noqa +from .code import ExceptionInfo # noqa +from .code import filter_traceback # noqa +from .code import Frame # noqa +from .code import getrawcode # noqa +from .code import Traceback # noqa +from .source import compile_ as compile # noqa +from .source import getfslineno # noqa +from .source import Source # noqa diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/__init__.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e692334301aa20f4122b9c7e5f99eb0aeea5cb4d GIT binary patch literal 777 zcmY+C&2H2%5XUFUZgw}@{ovMPZtSHEM-B*q5J;^=Rk@tZ!K8_|SokA~9X{THC*v7- z3toU3dyz__{O#Y&*z>oX;?JhK{Q3K12d5{;@ztjc{4bpJ030=gJ_ntF$${sP5f_mQ z;6>tDzrMYy z6_&ywLkT;S_TD=^1u2vn+!#_~iHTl)RUQ|m$QC2RsB93&$;QnUZIO~QoV~$Ti8e@Y zzjtz=mRI)ZQkZ-ml@4+gVQf2j-*#V8W{#P6V{1<9E5rwhHQ&g7Dp_Id!~d(uW9Q7E zv=pgmofaOwR#w_m+Y*C!ZW=pzb9jRDus{)_cbyP{S_wQ+m_{iCLjp#}V)U~FIu==A z1%-$hS!J{(qiq;@2!uX%U}Q5kI2mKqfRV2QeviaIM{I%_nn4X0cw?c}`r_I=GuQ7M qyhrInBmRx#p%Fq^6@<9ND7AfITt8{~lI;3(lrr1Xn@3IasDA+u%9xA* literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/_py2traceback.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/_py2traceback.py new file mode 100644 index 0000000..8a8b7bc --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/_py2traceback.py @@ -0,0 +1,94 @@ +# copied from python-2.7.3's traceback.py +# CHANGES: +# - some_str is replaced, trying to create unicode strings +# +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +import types + +from six import text_type + + +def format_exception_only(etype, value): + """Format the exception part of a traceback. + + The arguments are the exception type and value such as given by + sys.last_type and sys.last_value. The return value is a list of + strings, each ending in a newline. + + Normally, the list contains a single string; however, for + SyntaxError exceptions, it contains several lines that (when + printed) display detailed information about where the syntax + error occurred. + + The message indicating which exception occurred is always the last + string in the list. + + """ + + # An instance should not have a meaningful value parameter, but + # sometimes does, particularly for string exceptions, such as + # >>> raise string1, string2 # deprecated + # + # Clear these out first because issubtype(string1, SyntaxError) + # would throw another exception and mask the original problem. + if ( + isinstance(etype, BaseException) + or isinstance(etype, types.InstanceType) + or etype is None + or type(etype) is str + ): + return [_format_final_exc_line(etype, value)] + + stype = etype.__name__ + + if not issubclass(etype, SyntaxError): + return [_format_final_exc_line(stype, value)] + + # It was a syntax error; show exactly where the problem was found. + lines = [] + try: + msg, (filename, lineno, offset, badline) = value.args + except Exception: + pass + else: + filename = filename or "" + lines.append(' File "{}", line {}\n'.format(filename, lineno)) + if badline is not None: + if isinstance(badline, bytes): # python 2 only + badline = badline.decode("utf-8", "replace") + lines.append(" {}\n".format(badline.strip())) + if offset is not None: + caretspace = badline.rstrip("\n")[:offset].lstrip() + # non-space whitespace (likes tabs) must be kept for alignment + caretspace = ((c.isspace() and c or " ") for c in caretspace) + # only three spaces to account for offset1 == pos 0 + lines.append(" {}^\n".format("".join(caretspace))) + value = msg + + lines.append(_format_final_exc_line(stype, value)) + return lines + + +def _format_final_exc_line(etype, value): + """Return a list of a single line -- normal case for format_exception_only""" + valuestr = _some_str(value) + if value is None or not valuestr: + line = "{}\n".format(etype) + else: + line = "{}: {}\n".format(etype, valuestr) + return line + + +def _some_str(value): + try: + return text_type(value) + except Exception: + try: + return bytes(value).decode("UTF-8", "replace") + except Exception: + pass + return "".format(type(value).__name__) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/_py2traceback.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/_py2traceback.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d3eb697de6b04b11c24b939249c52421a7b3b22d GIT binary patch literal 2993 zcmb_e+j1L45basr72o1qNCF{KsiGpPdNyV;qw zt+MnK9{B@4f@gk%Xa0g8;B>ESr}9c<@9a!ZPj}Dh+gAQvY;XMj&rbo(e;(dn{8}M< zj7f-pMKRG>(Vim3Yfsi5?Rn+8BI^q6Rmyc$)>Yc8mg^eDHQK9*tUASY8aHUKfxQO( zMzq(Yuql%kg)N!1DXh_Mrw#oP8`V)5+%g8gZ_~JNrWcK~G>Hz<<8ozho8FOn!oL(_{RXL3KbJLQoUwwyU~JvYfrz!X>^XBdo-)k^D511G^^9BL9-@3P0mx*EzpZL<$sb=D*2n9O>30>#qI;= zv_hjrcHL-+K%drG8LU%Nzz>^Slpia;V3UEyUS8v^(F%nX3adIxvauPeg{D*p1k?W#|a=DMe0gh?d;A zB2VUWBIwd_WZ9}xhC{dx?V2_|G?*mBN=FH}5_1?wiJ9BG!`F-B$(q_$qoIaIe`G_CGy2My$0hpb`eUpd) zNh%Y5sKdx+u|LtFf$rFZuoX&xJj3nx)52*Sn!{;Dtq3rpI}L&&&rSH66UN3`e`p{l zi~@+k^$+(W#^ThAC#N){7a#f)HqU5={xu94H6a7tx%`4F#8!#Qc5w*{tslT@ee-yB zb4_llk7wTnAar1Q_$B}$Q|NC^md zms2)-p9|j;^%8l6tnct4k)!98hjm5PX3!;@jyX1Nqs|Zo9SkIcy@T1N8)utYl&!n#3Gs`Sv|5EUT*1$rX=hzqAWb zXs5#2zRYBNElXAj5t^x{t;4b6c zD}$vsh!Q{U!Nn-Y;AKDcdWk)fwvm^~aTgfYsY_yJKI@@jgwaUYf)c?x^+?R&`}r zt*QmJ>aBP!Z&|HW>Z+n{s6|!v7SvVjEUQcEJ-n}i;{#RqE~|iJhaqCWN{{>+6K)|= zyV2J$LG$2th~DMVLjDnFzz7@CG0@Z!bO^L0p@4&%OoglbZifXIEU;Ua&C_bB{gW!k zu<7-6ok&U40V0zN9Y3f;98_iXm#Y?RC1)^Wemwh(vw5e(M2VlCO%Zc&dzS;b%ONTz zbg%RBeP-j>6t9Czf{*pT&GhWDJHEqXITi@OUw}ham6RJU1{`Ao^Z=8|()r zF#h=X!5f9~9hk9IB+?W7KFaCwOsD;k3EXyvVeYaMyBB$2*6tM^7}_pZk}iLY$+wr_ z`&N-;VNdW_)C*uSFW&s*?TDy=)M_J8?7yL12m literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/code.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/code.py new file mode 100644 index 0000000..d06e24f --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/code.py @@ -0,0 +1,1052 @@ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import inspect +import pprint +import re +import sys +import traceback +from inspect import CO_VARARGS +from inspect import CO_VARKEYWORDS +from weakref import ref + +import attr +import pluggy +import py +import six +from six import text_type + +import _pytest +from _pytest.compat import _PY2 +from _pytest.compat import _PY3 +from _pytest.compat import PY35 +from _pytest.compat import safe_str + +builtin_repr = repr + +if _PY3: + from traceback import format_exception_only +else: + from ._py2traceback import format_exception_only + + +class Code(object): + """ wrapper around Python code objects """ + + def __init__(self, rawcode): + if not hasattr(rawcode, "co_filename"): + rawcode = getrawcode(rawcode) + try: + self.filename = rawcode.co_filename + self.firstlineno = rawcode.co_firstlineno - 1 + self.name = rawcode.co_name + except AttributeError: + raise TypeError("not a code object: %r" % (rawcode,)) + self.raw = rawcode + + def __eq__(self, other): + return self.raw == other.raw + + __hash__ = None + + def __ne__(self, other): + return not self == other + + @property + def path(self): + """ return a path object pointing to source code (note that it + might not point to an actually existing file). """ + try: + p = py.path.local(self.raw.co_filename) + # maybe don't try this checking + if not p.check(): + raise OSError("py.path check failed.") + except OSError: + # XXX maybe try harder like the weird logic + # in the standard lib [linecache.updatecache] does? + p = self.raw.co_filename + + return p + + @property + def fullsource(self): + """ return a _pytest._code.Source object for the full source file of the code + """ + from _pytest._code import source + + full, _ = source.findsource(self.raw) + return full + + def source(self): + """ return a _pytest._code.Source object for the code object's source only + """ + # return source only for that part of code + import _pytest._code + + return _pytest._code.Source(self.raw) + + def getargs(self, var=False): + """ return a tuple with the argument names for the code object + + if 'var' is set True also return the names of the variable and + keyword arguments when present + """ + # handfull shortcut for getting args + raw = self.raw + argcount = raw.co_argcount + if var: + argcount += raw.co_flags & CO_VARARGS + argcount += raw.co_flags & CO_VARKEYWORDS + return raw.co_varnames[:argcount] + + +class Frame(object): + """Wrapper around a Python frame holding f_locals and f_globals + in which expressions can be evaluated.""" + + def __init__(self, frame): + self.lineno = frame.f_lineno - 1 + self.f_globals = frame.f_globals + self.f_locals = frame.f_locals + self.raw = frame + self.code = Code(frame.f_code) + + @property + def statement(self): + """ statement this frame is at """ + import _pytest._code + + if self.code.fullsource is None: + return _pytest._code.Source("") + return self.code.fullsource.getstatement(self.lineno) + + def eval(self, code, **vars): + """ evaluate 'code' in the frame + + 'vars' are optional additional local variables + + returns the result of the evaluation + """ + f_locals = self.f_locals.copy() + f_locals.update(vars) + return eval(code, self.f_globals, f_locals) + + def exec_(self, code, **vars): + """ exec 'code' in the frame + + 'vars' are optiona; additional local variables + """ + f_locals = self.f_locals.copy() + f_locals.update(vars) + six.exec_(code, self.f_globals, f_locals) + + def repr(self, object): + """ return a 'safe' (non-recursive, one-line) string repr for 'object' + """ + return py.io.saferepr(object) + + def is_true(self, object): + return object + + def getargs(self, var=False): + """ return a list of tuples (name, value) for all arguments + + if 'var' is set True also include the variable and keyword + arguments when present + """ + retval = [] + for arg in self.code.getargs(var): + try: + retval.append((arg, self.f_locals[arg])) + except KeyError: + pass # this can occur when using Psyco + return retval + + +class TracebackEntry(object): + """ a single entry in a traceback """ + + _repr_style = None + exprinfo = None + + def __init__(self, rawentry, excinfo=None): + self._excinfo = excinfo + self._rawentry = rawentry + self.lineno = rawentry.tb_lineno - 1 + + def set_repr_style(self, mode): + assert mode in ("short", "long") + self._repr_style = mode + + @property + def frame(self): + import _pytest._code + + return _pytest._code.Frame(self._rawentry.tb_frame) + + @property + def relline(self): + return self.lineno - self.frame.code.firstlineno + + def __repr__(self): + return "" % (self.frame.code.path, self.lineno + 1) + + @property + def statement(self): + """ _pytest._code.Source object for the current statement """ + source = self.frame.code.fullsource + return source.getstatement(self.lineno) + + @property + def path(self): + """ path to the source code """ + return self.frame.code.path + + def getlocals(self): + return self.frame.f_locals + + locals = property(getlocals, None, None, "locals of underlaying frame") + + def getfirstlinesource(self): + # on Jython this firstlineno can be -1 apparently + return max(self.frame.code.firstlineno, 0) + + def getsource(self, astcache=None): + """ return failing source code. """ + # we use the passed in astcache to not reparse asttrees + # within exception info printing + from _pytest._code.source import getstatementrange_ast + + source = self.frame.code.fullsource + if source is None: + return None + key = astnode = None + if astcache is not None: + key = self.frame.code.path + if key is not None: + astnode = astcache.get(key, None) + start = self.getfirstlinesource() + try: + astnode, _, end = getstatementrange_ast( + self.lineno, source, astnode=astnode + ) + except SyntaxError: + end = self.lineno + 1 + else: + if key is not None: + astcache[key] = astnode + return source[start:end] + + source = property(getsource) + + def ishidden(self): + """ return True if the current frame has a var __tracebackhide__ + resolving to True + + If __tracebackhide__ is a callable, it gets called with the + ExceptionInfo instance and can decide whether to hide the traceback. + + mostly for internal use + """ + try: + tbh = self.frame.f_locals["__tracebackhide__"] + except KeyError: + try: + tbh = self.frame.f_globals["__tracebackhide__"] + except KeyError: + return False + + if callable(tbh): + return tbh(None if self._excinfo is None else self._excinfo()) + else: + return tbh + + def __str__(self): + try: + fn = str(self.path) + except py.error.Error: + fn = "???" + name = self.frame.code.name + try: + line = str(self.statement).lstrip() + except KeyboardInterrupt: + raise + except: # noqa + line = "???" + return " File %r:%d in %s\n %s\n" % (fn, self.lineno + 1, name, line) + + def name(self): + return self.frame.code.raw.co_name + + name = property(name, None, None, "co_name of underlaying code") + + +class Traceback(list): + """ Traceback objects encapsulate and offer higher level + access to Traceback entries. + """ + + Entry = TracebackEntry + + def __init__(self, tb, excinfo=None): + """ initialize from given python traceback object and ExceptionInfo """ + self._excinfo = excinfo + if hasattr(tb, "tb_next"): + + def f(cur): + while cur is not None: + yield self.Entry(cur, excinfo=excinfo) + cur = cur.tb_next + + list.__init__(self, f(tb)) + else: + list.__init__(self, tb) + + def cut(self, path=None, lineno=None, firstlineno=None, excludepath=None): + """ return a Traceback instance wrapping part of this Traceback + + by provding any combination of path, lineno and firstlineno, the + first frame to start the to-be-returned traceback is determined + + this allows cutting the first part of a Traceback instance e.g. + for formatting reasons (removing some uninteresting bits that deal + with handling of the exception/traceback) + """ + for x in self: + code = x.frame.code + codepath = code.path + if ( + (path is None or codepath == path) + and ( + excludepath is None + or not hasattr(codepath, "relto") + or not codepath.relto(excludepath) + ) + and (lineno is None or x.lineno == lineno) + and (firstlineno is None or x.frame.code.firstlineno == firstlineno) + ): + return Traceback(x._rawentry, self._excinfo) + return self + + def __getitem__(self, key): + val = super(Traceback, self).__getitem__(key) + if isinstance(key, type(slice(0))): + val = self.__class__(val) + return val + + def filter(self, fn=lambda x: not x.ishidden()): + """ return a Traceback instance with certain items removed + + fn is a function that gets a single argument, a TracebackEntry + instance, and should return True when the item should be added + to the Traceback, False when not + + by default this removes all the TracebackEntries which are hidden + (see ishidden() above) + """ + return Traceback(filter(fn, self), self._excinfo) + + def getcrashentry(self): + """ return last non-hidden traceback entry that lead + to the exception of a traceback. + """ + for i in range(-1, -len(self) - 1, -1): + entry = self[i] + if not entry.ishidden(): + return entry + return self[-1] + + def recursionindex(self): + """ return the index of the frame/TracebackEntry where recursion + originates if appropriate, None if no recursion occurred + """ + cache = {} + for i, entry in enumerate(self): + # id for the code.raw is needed to work around + # the strange metaprogramming in the decorator lib from pypi + # which generates code objects that have hash/value equality + # XXX needs a test + key = entry.frame.code.path, id(entry.frame.code.raw), entry.lineno + # print "checking for recursion at", key + values = cache.setdefault(key, []) + if values: + f = entry.frame + loc = f.f_locals + for otherloc in values: + if f.is_true( + f.eval( + co_equal, + __recursioncache_locals_1=loc, + __recursioncache_locals_2=otherloc, + ) + ): + return i + values.append(entry.frame.f_locals) + return None + + +co_equal = compile( + "__recursioncache_locals_1 == __recursioncache_locals_2", "?", "eval" +) + + +class ExceptionInfo(object): + """ wraps sys.exc_info() objects and offers + help for navigating the traceback. + """ + + _striptext = "" + _assert_start_repr = ( + "AssertionError(u'assert " if _PY2 else "AssertionError('assert " + ) + + def __init__(self, tup=None, exprinfo=None): + import _pytest._code + + if tup is None: + tup = sys.exc_info() + if exprinfo is None and isinstance(tup[1], AssertionError): + exprinfo = getattr(tup[1], "msg", None) + if exprinfo is None: + exprinfo = py.io.saferepr(tup[1]) + if exprinfo and exprinfo.startswith(self._assert_start_repr): + self._striptext = "AssertionError: " + self._excinfo = tup + #: the exception class + self.type = tup[0] + #: the exception instance + self.value = tup[1] + #: the exception raw traceback + self.tb = tup[2] + #: the exception type name + self.typename = self.type.__name__ + #: the exception traceback (_pytest._code.Traceback instance) + self.traceback = _pytest._code.Traceback(self.tb, excinfo=ref(self)) + + def __repr__(self): + return "" % (self.typename, len(self.traceback)) + + def exconly(self, tryshort=False): + """ return the exception as a string + + when 'tryshort' resolves to True, and the exception is a + _pytest._code._AssertionError, only the actual exception part of + the exception representation is returned (so 'AssertionError: ' is + removed from the beginning) + """ + lines = format_exception_only(self.type, self.value) + text = "".join(lines) + text = text.rstrip() + if tryshort: + if text.startswith(self._striptext): + text = text[len(self._striptext) :] + return text + + def errisinstance(self, exc): + """ return True if the exception is an instance of exc """ + return isinstance(self.value, exc) + + def _getreprcrash(self): + exconly = self.exconly(tryshort=True) + entry = self.traceback.getcrashentry() + path, lineno = entry.frame.code.raw.co_filename, entry.lineno + return ReprFileLocation(path, lineno + 1, exconly) + + def getrepr( + self, + showlocals=False, + style="long", + abspath=False, + tbfilter=True, + funcargs=False, + truncate_locals=True, + chain=True, + ): + """ + Return str()able representation of this exception info. + + :param bool showlocals: + Show locals per traceback entry. + Ignored if ``style=="native"``. + + :param str style: long|short|no|native traceback style + + :param bool abspath: + If paths should be changed to absolute or left unchanged. + + :param bool tbfilter: + Hide entries that contain a local variable ``__tracebackhide__==True``. + Ignored if ``style=="native"``. + + :param bool funcargs: + Show fixtures ("funcargs" for legacy purposes) per traceback entry. + + :param bool truncate_locals: + With ``showlocals==True``, make sure locals can be safely represented as strings. + + :param bool chain: if chained exceptions in Python 3 should be shown. + + .. versionchanged:: 3.9 + + Added the ``chain`` parameter. + """ + if style == "native": + return ReprExceptionInfo( + ReprTracebackNative( + traceback.format_exception( + self.type, self.value, self.traceback[0]._rawentry + ) + ), + self._getreprcrash(), + ) + + fmt = FormattedExcinfo( + showlocals=showlocals, + style=style, + abspath=abspath, + tbfilter=tbfilter, + funcargs=funcargs, + truncate_locals=truncate_locals, + chain=chain, + ) + return fmt.repr_excinfo(self) + + def __str__(self): + entry = self.traceback[-1] + loc = ReprFileLocation(entry.path, entry.lineno + 1, self.exconly()) + return str(loc) + + def __unicode__(self): + entry = self.traceback[-1] + loc = ReprFileLocation(entry.path, entry.lineno + 1, self.exconly()) + return text_type(loc) + + def match(self, regexp): + """ + Match the regular expression 'regexp' on the string representation of + the exception. If it matches then True is returned (so that it is + possible to write 'assert excinfo.match()'). If it doesn't match an + AssertionError is raised. + """ + __tracebackhide__ = True + if not re.search(regexp, str(self.value)): + assert 0, "Pattern '{!s}' not found in '{!s}'".format(regexp, self.value) + return True + + +@attr.s +class FormattedExcinfo(object): + """ presenting information about failing Functions and Generators. """ + + # for traceback entries + flow_marker = ">" + fail_marker = "E" + + showlocals = attr.ib(default=False) + style = attr.ib(default="long") + abspath = attr.ib(default=True) + tbfilter = attr.ib(default=True) + funcargs = attr.ib(default=False) + truncate_locals = attr.ib(default=True) + chain = attr.ib(default=True) + astcache = attr.ib(default=attr.Factory(dict), init=False, repr=False) + + def _getindent(self, source): + # figure out indent for given source + try: + s = str(source.getstatement(len(source) - 1)) + except KeyboardInterrupt: + raise + except: # noqa + try: + s = str(source[-1]) + except KeyboardInterrupt: + raise + except: # noqa + return 0 + return 4 + (len(s) - len(s.lstrip())) + + def _getentrysource(self, entry): + source = entry.getsource(self.astcache) + if source is not None: + source = source.deindent() + return source + + def _saferepr(self, obj): + return py.io.saferepr(obj) + + def repr_args(self, entry): + if self.funcargs: + args = [] + for argname, argvalue in entry.frame.getargs(var=True): + args.append((argname, self._saferepr(argvalue))) + return ReprFuncArgs(args) + + def get_source(self, source, line_index=-1, excinfo=None, short=False): + """ return formatted and marked up source lines. """ + import _pytest._code + + lines = [] + if source is None or line_index >= len(source.lines): + source = _pytest._code.Source("???") + line_index = 0 + if line_index < 0: + line_index += len(source) + space_prefix = " " + if short: + lines.append(space_prefix + source.lines[line_index].strip()) + else: + for line in source.lines[:line_index]: + lines.append(space_prefix + line) + lines.append(self.flow_marker + " " + source.lines[line_index]) + for line in source.lines[line_index + 1 :]: + lines.append(space_prefix + line) + if excinfo is not None: + indent = 4 if short else self._getindent(source) + lines.extend(self.get_exconly(excinfo, indent=indent, markall=True)) + return lines + + def get_exconly(self, excinfo, indent=4, markall=False): + lines = [] + indent = " " * indent + # get the real exception information out + exlines = excinfo.exconly(tryshort=True).split("\n") + failindent = self.fail_marker + indent[1:] + for line in exlines: + lines.append(failindent + line) + if not markall: + failindent = indent + return lines + + def repr_locals(self, locals): + if self.showlocals: + lines = [] + keys = [loc for loc in locals if loc[0] != "@"] + keys.sort() + for name in keys: + value = locals[name] + if name == "__builtins__": + lines.append("__builtins__ = ") + else: + # This formatting could all be handled by the + # _repr() function, which is only reprlib.Repr in + # disguise, so is very configurable. + if self.truncate_locals: + str_repr = self._saferepr(value) + else: + str_repr = pprint.pformat(value) + # if len(str_repr) < 70 or not isinstance(value, + # (list, tuple, dict)): + lines.append("%-10s = %s" % (name, str_repr)) + # else: + # self._line("%-10s =\\" % (name,)) + # # XXX + # pprint.pprint(value, stream=self.excinfowriter) + return ReprLocals(lines) + + def repr_traceback_entry(self, entry, excinfo=None): + import _pytest._code + + source = self._getentrysource(entry) + if source is None: + source = _pytest._code.Source("???") + line_index = 0 + else: + # entry.getfirstlinesource() can be -1, should be 0 on jython + line_index = entry.lineno - max(entry.getfirstlinesource(), 0) + + lines = [] + style = entry._repr_style + if style is None: + style = self.style + if style in ("short", "long"): + short = style == "short" + reprargs = self.repr_args(entry) if not short else None + s = self.get_source(source, line_index, excinfo, short=short) + lines.extend(s) + if short: + message = "in %s" % (entry.name) + else: + message = excinfo and excinfo.typename or "" + path = self._makepath(entry.path) + filelocrepr = ReprFileLocation(path, entry.lineno + 1, message) + localsrepr = None + if not short: + localsrepr = self.repr_locals(entry.locals) + return ReprEntry(lines, reprargs, localsrepr, filelocrepr, style) + if excinfo: + lines.extend(self.get_exconly(excinfo, indent=4)) + return ReprEntry(lines, None, None, None, style) + + def _makepath(self, path): + if not self.abspath: + try: + np = py.path.local().bestrelpath(path) + except OSError: + return path + if len(np) < len(str(path)): + path = np + return path + + def repr_traceback(self, excinfo): + traceback = excinfo.traceback + if self.tbfilter: + traceback = traceback.filter() + + if is_recursion_error(excinfo): + traceback, extraline = self._truncate_recursive_traceback(traceback) + else: + extraline = None + + last = traceback[-1] + entries = [] + for index, entry in enumerate(traceback): + einfo = (last == entry) and excinfo or None + reprentry = self.repr_traceback_entry(entry, einfo) + entries.append(reprentry) + return ReprTraceback(entries, extraline, style=self.style) + + def _truncate_recursive_traceback(self, traceback): + """ + Truncate the given recursive traceback trying to find the starting point + of the recursion. + + The detection is done by going through each traceback entry and finding the + point in which the locals of the frame are equal to the locals of a previous frame (see ``recursionindex()``. + + Handle the situation where the recursion process might raise an exception (for example + comparing numpy arrays using equality raises a TypeError), in which case we do our best to + warn the user of the error and show a limited traceback. + """ + try: + recursionindex = traceback.recursionindex() + except Exception as e: + max_frames = 10 + extraline = ( + "!!! Recursion error detected, but an error occurred locating the origin of recursion.\n" + " The following exception happened when comparing locals in the stack frame:\n" + " {exc_type}: {exc_msg}\n" + " Displaying first and last {max_frames} stack frames out of {total}." + ).format( + exc_type=type(e).__name__, + exc_msg=safe_str(e), + max_frames=max_frames, + total=len(traceback), + ) + traceback = traceback[:max_frames] + traceback[-max_frames:] + else: + if recursionindex is not None: + extraline = "!!! Recursion detected (same locals & position)" + traceback = traceback[: recursionindex + 1] + else: + extraline = None + + return traceback, extraline + + def repr_excinfo(self, excinfo): + if _PY2: + reprtraceback = self.repr_traceback(excinfo) + reprcrash = excinfo._getreprcrash() + + return ReprExceptionInfo(reprtraceback, reprcrash) + else: + repr_chain = [] + e = excinfo.value + descr = None + seen = set() + while e is not None and id(e) not in seen: + seen.add(id(e)) + if excinfo: + reprtraceback = self.repr_traceback(excinfo) + reprcrash = excinfo._getreprcrash() + else: + # fallback to native repr if the exception doesn't have a traceback: + # ExceptionInfo objects require a full traceback to work + reprtraceback = ReprTracebackNative( + traceback.format_exception(type(e), e, None) + ) + reprcrash = None + + repr_chain += [(reprtraceback, reprcrash, descr)] + if e.__cause__ is not None and self.chain: + e = e.__cause__ + excinfo = ( + ExceptionInfo((type(e), e, e.__traceback__)) + if e.__traceback__ + else None + ) + descr = "The above exception was the direct cause of the following exception:" + elif ( + e.__context__ is not None + and not e.__suppress_context__ + and self.chain + ): + e = e.__context__ + excinfo = ( + ExceptionInfo((type(e), e, e.__traceback__)) + if e.__traceback__ + else None + ) + descr = "During handling of the above exception, another exception occurred:" + else: + e = None + repr_chain.reverse() + return ExceptionChainRepr(repr_chain) + + +class TerminalRepr(object): + def __str__(self): + s = self.__unicode__() + if _PY2: + s = s.encode("utf-8") + return s + + def __unicode__(self): + # FYI this is called from pytest-xdist's serialization of exception + # information. + io = py.io.TextIO() + tw = py.io.TerminalWriter(file=io) + self.toterminal(tw) + return io.getvalue().strip() + + def __repr__(self): + return "<%s instance at %0x>" % (self.__class__, id(self)) + + +class ExceptionRepr(TerminalRepr): + def __init__(self): + self.sections = [] + + def addsection(self, name, content, sep="-"): + self.sections.append((name, content, sep)) + + def toterminal(self, tw): + for name, content, sep in self.sections: + tw.sep(sep, name) + tw.line(content) + + +class ExceptionChainRepr(ExceptionRepr): + def __init__(self, chain): + super(ExceptionChainRepr, self).__init__() + self.chain = chain + # reprcrash and reprtraceback of the outermost (the newest) exception + # in the chain + self.reprtraceback = chain[-1][0] + self.reprcrash = chain[-1][1] + + def toterminal(self, tw): + for element in self.chain: + element[0].toterminal(tw) + if element[2] is not None: + tw.line("") + tw.line(element[2], yellow=True) + super(ExceptionChainRepr, self).toterminal(tw) + + +class ReprExceptionInfo(ExceptionRepr): + def __init__(self, reprtraceback, reprcrash): + super(ReprExceptionInfo, self).__init__() + self.reprtraceback = reprtraceback + self.reprcrash = reprcrash + + def toterminal(self, tw): + self.reprtraceback.toterminal(tw) + super(ReprExceptionInfo, self).toterminal(tw) + + +class ReprTraceback(TerminalRepr): + entrysep = "_ " + + def __init__(self, reprentries, extraline, style): + self.reprentries = reprentries + self.extraline = extraline + self.style = style + + def toterminal(self, tw): + # the entries might have different styles + for i, entry in enumerate(self.reprentries): + if entry.style == "long": + tw.line("") + entry.toterminal(tw) + if i < len(self.reprentries) - 1: + next_entry = self.reprentries[i + 1] + if ( + entry.style == "long" + or entry.style == "short" + and next_entry.style == "long" + ): + tw.sep(self.entrysep) + + if self.extraline: + tw.line(self.extraline) + + +class ReprTracebackNative(ReprTraceback): + def __init__(self, tblines): + self.style = "native" + self.reprentries = [ReprEntryNative(tblines)] + self.extraline = None + + +class ReprEntryNative(TerminalRepr): + style = "native" + + def __init__(self, tblines): + self.lines = tblines + + def toterminal(self, tw): + tw.write("".join(self.lines)) + + +class ReprEntry(TerminalRepr): + localssep = "_ " + + def __init__(self, lines, reprfuncargs, reprlocals, filelocrepr, style): + self.lines = lines + self.reprfuncargs = reprfuncargs + self.reprlocals = reprlocals + self.reprfileloc = filelocrepr + self.style = style + + def toterminal(self, tw): + if self.style == "short": + self.reprfileloc.toterminal(tw) + for line in self.lines: + red = line.startswith("E ") + tw.line(line, bold=True, red=red) + # tw.line("") + return + if self.reprfuncargs: + self.reprfuncargs.toterminal(tw) + for line in self.lines: + red = line.startswith("E ") + tw.line(line, bold=True, red=red) + if self.reprlocals: + # tw.sep(self.localssep, "Locals") + tw.line("") + self.reprlocals.toterminal(tw) + if self.reprfileloc: + if self.lines: + tw.line("") + self.reprfileloc.toterminal(tw) + + def __str__(self): + return "%s\n%s\n%s" % ("\n".join(self.lines), self.reprlocals, self.reprfileloc) + + +class ReprFileLocation(TerminalRepr): + def __init__(self, path, lineno, message): + self.path = str(path) + self.lineno = lineno + self.message = message + + def toterminal(self, tw): + # filename and lineno output for each entry, + # using an output format that most editors unterstand + msg = self.message + i = msg.find("\n") + if i != -1: + msg = msg[:i] + tw.write(self.path, bold=True, red=True) + tw.line(":%s: %s" % (self.lineno, msg)) + + +class ReprLocals(TerminalRepr): + def __init__(self, lines): + self.lines = lines + + def toterminal(self, tw): + for line in self.lines: + tw.line(line) + + +class ReprFuncArgs(TerminalRepr): + def __init__(self, args): + self.args = args + + def toterminal(self, tw): + if self.args: + linesofar = "" + for name, value in self.args: + ns = "%s = %s" % (safe_str(name), safe_str(value)) + if len(ns) + len(linesofar) + 2 > tw.fullwidth: + if linesofar: + tw.line(linesofar) + linesofar = ns + else: + if linesofar: + linesofar += ", " + ns + else: + linesofar = ns + if linesofar: + tw.line(linesofar) + tw.line("") + + +def getrawcode(obj, trycall=True): + """ return code object for given function. """ + try: + return obj.__code__ + except AttributeError: + obj = getattr(obj, "im_func", obj) + obj = getattr(obj, "func_code", obj) + obj = getattr(obj, "f_code", obj) + obj = getattr(obj, "__code__", obj) + if trycall and not hasattr(obj, "co_firstlineno"): + if hasattr(obj, "__call__") and not inspect.isclass(obj): + x = getrawcode(obj.__call__, trycall=False) + if hasattr(x, "co_firstlineno"): + return x + return obj + + +if PY35: # RecursionError introduced in 3.5 + + def is_recursion_error(excinfo): + return excinfo.errisinstance(RecursionError) # noqa + + +else: + + def is_recursion_error(excinfo): + if not excinfo.errisinstance(RuntimeError): + return False + try: + return "maximum recursion depth exceeded" in str(excinfo.value) + except UnicodeError: + return False + + +# relative paths that we use to filter traceback entries from appearing to the user; +# see filter_traceback +# note: if we need to add more paths than what we have now we should probably use a list +# for better maintenance + +_PLUGGY_DIR = py.path.local(pluggy.__file__.rstrip("oc")) +# pluggy is either a package or a single module depending on the version +if _PLUGGY_DIR.basename == "__init__.py": + _PLUGGY_DIR = _PLUGGY_DIR.dirpath() +_PYTEST_DIR = py.path.local(_pytest.__file__).dirpath() +_PY_DIR = py.path.local(py.__file__).dirpath() + + +def filter_traceback(entry): + """Return True if a TracebackEntry instance should be removed from tracebacks: + * dynamically generated code (no code to show up for it); + * internal traceback from pytest or its internal libraries, py and pluggy. + """ + # entry.path might sometimes return a str object when the entry + # points to dynamically generated code + # see https://bitbucket.org/pytest-dev/py/issues/71 + raw_filename = entry.frame.code.raw.co_filename + is_generated = "<" in raw_filename and ">" in raw_filename + if is_generated: + return False + # entry.path might point to a non-existing file, in which case it will + # also return a str object. see #1133 + p = py.path.local(entry.path) + return ( + not p.relto(_PLUGGY_DIR) and not p.relto(_PYTEST_DIR) and not p.relto(_PY_DIR) + ) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/code.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/code.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0285c334a79189045d431ac515c5250dc0e248c3 GIT binary patch literal 38350 zcmc(o4Uk>uS>MmyyISo^t8Z&%*^Yf}OV-Mf<(*~3*Fs&_C4=8=lyuz=lglybE|*2Wz*sB`Q7(7ll*6r|Bt^^NwU9D zO_COWm1HSNmMh7rN>b7JgwH3EQxkDs^?5ZpRgLq>WN9)vHR)$5Z%9sUD9TgGsi~s8 zF*&udC{HJ+rd{5kXP0M^Q!~-ll+QOMr#8j;#$;)8vOJrdnl1aoY0oA7scP#@ zx_s(^q&t(e-kg`)+mf?yO3uDHX>U!=z9l*PVA6U^0?Y)qhm!U~$=M@G>%rvZiKPF| zs!rdkwdGPbNrunv)U!O2UwwGw677#(dL(H*aCv zEv*jP_0IB2uRn+j(_CnE&Udm-uNyU6saffFx`X<{YPUI{{&-y2#D%BcU4QQr=@aSG zCx$mi-8+xHaPr;h(Yzjpko4ONanlSZgZ9NieXzFDj;cwj>d(D!-@3E=hiA{daQ~a) zOasgs3+;L~=ts?NY8HC^<;I}izSwN9Xo&S*cWJHTsjBIxdaZVo|Nfca_@vm>X$ozC z3^8$>5WmvGRmG@OfDyr7U^`WxZcN&+nn{(lYBN6FP@HZ`T2sDlbJCtoS{scLTaxs| zyr!G&<50WMZ>+4e`?W^Dx7uyho?9E7>2+&O23PByKHF{%vRYH4(`N&pr!>lMr!Yv8 zR~RMeGLd9ACxePk8N{WE@MGiV%M5)YxnAcRd_LuC8S(Emo5E(ViY=QVGa2$qI4*J<(snc!Kt{PeB z4A0dbx2XStM&*K@dx9Q1r@`i9{XWPnm_HA8#hJ0MabaF?^suctH+V)O=Q z+Wm11dWy#C_4c`X{T@o0#+1Cq5VZ^p5v*Wvv&HCi^KfA4jXHIm4%ZII7*n@hufIv{ zaf&6Ey$=S)AE<_O<#6z<;Cj)5M^djs|Ac8kQ1XCu0_lgJv zeLpIC3hY1OiDem`)cWngYQGDLuQUc{a!ReO^k9jd?qY4wt7W~_ezP4EFb~$YYlAb5 zL9H{`RLg&sJBw!qH4%!R(?bnfYz|gIueDnHVkdKBqJ@KpYbL9ewZrbPd8XZbxwg>Y zQtR-%C}1E!fO4V$-C~?r>NOinMwTEg0m_dW(cgW-q%d4AcnA-VVZG8@Xy`#cndmT? ztX8g{n62!pY^iRaXsQ#9QUf-!AELlomp&&S9i5KfimL{CefjtIzc^TeA zlbMzxnVg+4&((>L$!I7b2G0f6z%u|OgsUX|N0L{Jd5F_NHF^9ksxB)gqXHhHXArH` zq!!#T`$bwD0&}ps0?u9Nz%PW2jsD{5a=Qx$KyYOxl8%6LQwc$FjLt&s!1+f1K&=Cm z+k@Kk{Z$$P0g4{fXtb5%HFtL!r|GlNZLMqS<@VZzUcXfiA*)?D)9%(*`t6JXmAB4o zb-XTxoM+5U)Rch*o5b=`V=+qw!Bn6uZlhxlB$nI~O7~D5txa=MG&P3BH8Vqtpvmk7 zn$Bi9BpYWcGnJ{zj>>hFU9%Py}sOQtuE=*=vHs_n)P~m12?BP=?P8h zc(2>eA4O|9!}T{5jji;1sBVKbv%B=59^0pDVzX~!Y1-+1l!h~O>6(RLs%hQE$6CZx zWolw(^Guavb=&rBGc(iCZJ+5ixye7Gf2+0crOy-Zu!v7VS0o*{?kDSF6@QYOpM7k5e8W=3(ZmATtOFgjt9NP9%s z3QG)|A%a{xZU|>_tR$H<>IA)VmfxAzkOW7$yiO7nx)S2|<>{n<*kG9yCj%KI7{n7T zD*%?t8(nMK&TgW$8v5{{ZB{lo19OV?rXY1kqdAT~1{nxZ%>UEJRWiA}S*1I5cq4~_ zFdRZI8%!UjVhFPIkWTr0t9rRsuk1wnT&BS#)!B)ifUXn`TC{h*guQh)1x?+MxSUun zpd4CE0HO*~ArK2y6aJ60B$oi6|#VC&iXXG0^++%(j)x-=;Co1AuNW60WteCeYc%;TCpG)H0g>Pm~Xbe*0` zAE9o@#l3L8sB!x7F|0;v`lX}LU^Z^UCc1hFgeiZ@5(xMv=8(dyLIq6Ewe}D4JdCB? zyp~mX>+7vTq0b)=c`2Z#$8>lb2QY()buOAYtNZ$E!8Col?$?v!fag1C=VR(tE1GO5 z;VEgLkF}lc6oz(^EukD|pXExSQ#5J^|14^sU4k2(A0T5Z45P^k(&^-a9?BOEs%!hSY5YjEBbn1*54t_ym21!B{OthfEMd zK@<+od=u;SU0fZ+(9Sz2XbWj0}n4zWGab~7 z>TyPGUCKBjhgr83+-sUE?`*GyAuC{p)pZXg-wRh{I;KK;8pC3G7=MT6!?c~6s_ey= zb2B_^x-u{MmENzz13Ji85!$3|;q<5uVs@!0G(E1vyLEU-hq0=Pa_yeslZniyCQuSL zq9SgdnVH!zQ?*m=`F^9>KHX@(e5^a@uaz33z-^83_bIeTHAbQy=!zUs42VJC7scU; zq8NVBaD-ZW1QT;dXz3S4V+=JCM`)o*>b6;*qD+SVN#teP{?e_g$1ARm_?t;C69Xdt zvdLGYalg!ne`336d$2YVlTu>R3N^=ZM%yGx4FUHQeSrnN-~dYjamjH z!(74!>aR&kH)?n$14^}Km3#CN)tXxGpa5YZl}%3&Na@^f7EOE`GoD|o#HBa8{@!hX^=n8C!_|tBif_Jt&c|F zISWwmBQ(R8r(}m9LGYi2)MfIXtY&!J@-91r+trMCsn=Z$PJfE4sr+<4H7Y)lWmr+D zC*hfuW3evIjXQsBX;foY%UEpfF-+GTV@8j3^i#AR?t#kA*HD~q<1)+26qjJpvCvkF zrIi#;#$u_tH<>r<+D|DoT+w7IL(I$18i(>P_y*HDL}?6DOP`>fpXC#inZVZ})~}EH z@;Y8eA+#wSL%Xjg*B5e7fHv;At@Lr7%60AFiU&J}afY+Ky(Bf_3p5^LaX45F!h@CS z0OVu5qi!pB&mKhIT==ezXLH>6@Os8p+n*iT-+DAGI!{Z`i5Ur*gTe%xu}y25#_EAr z^)FE_#C@><wX z&bGRqqP;6kt9{gsVNosQzM@$R*hzI;P?F}ZkJnRv)X~MvXStW^aHr!5m+lb0&D@1< zCODjjU^iB5v=8U&v|8wj#gNNkZyFtTK`C0yAQEfux_NAfBr6qbIQ%8Q&Pk3*nW8GW z7X?=zVZ(NRsj+77irqiO&`Y*0!hlte(mDinS-x~l;CP2a*m>5JmKzuULJ422go%|w zyjbXeL2bbUG%8JBEYvvjUnz+DM!E=|S<*!`9bB#vrLiK6mLVSo(fSR^2|kmTCX-8c z^ytb=(!XdJ#6wdFS6@M=DKEhXH|90Kh6m4GRBTB7Oe<`3X)0OUpUeESGt#^fgs%`$ zny7rBs{1c(OfF3mOS%~~e3RAiuNSc-VyctL9ROxy?Reo=q*izX+qzVUw zXh>LCV&KO)S-Wn?xWLA}aO{)aBP=$)Got6VxrX$QO|PL@~= zM|Yvnp6Rskd#^La@EY}&&I`j}z-n&2!S~F<)z2#!(ZEN$w4^}8A;OzA!P_$deU({@tzDuN3{@^CgUa~S68lK=bGa+!-t7)j7Ryp{?>qoZSBROEr1}g#B zHo=Fb+G;k8=?$dhUp4pR;gNiTYqlj*#fR*ju|a0kEoPQ}o34ojLW?b98iUhk#(}8Q zwA{&>No>l?hoxqqP4`!AK+wd*O0w~Oh!w^vkUGhmN z+gThcnaPasCjrZfhfV$^d8Agn=6D89_Zt1yGs24g>dGLr9t|qklPG+lo2r4ZQ_w}n zv7WNc>Pknd*Jq$nPds5Eck#Q)*&lmZ(kW^-y@rA$qg_jod|}8i!ok$LFPBTH_S|K zo7y%>q-|;&4wT&!Gn2D7%udYA&1}V;B57Az9U8WOgsAqUXs!&tOet%VN{Rf(4^sM2 zD3^cuQ*d?=j*3tm^>(A6rMzm#N*;%cARNs)2&W-r>IlAFcr1$av39rFSRo#OW8X}+ zw}9srrn)Hhy3{`3UMkshquC_x7VN)hMsA5tJ3H)~>;(}H>QjA*(8x&&-^E`=UXVya zV_v9F{io!F{#Yf!LW4tmr`btxByN_XW4|VMDyMaL!4FrMeK3zq2m+rV2GUsSe26TL zes8(9h!dKCbtKD`VxcgHBudsx8EZh8++9)(n;>?gkLGZ{=I{W8i+73STBKT`Cf=?2 zKzpjGXnL0`mG|cQ=A|S#S4~cGXRbV_FYvf?QY;|s`8XyQQuDOR zaLu^tWRiu0w4b|dwmH9EdyR%_e8otDfljr z;O6oTa4bbAKy-xBhuM&aq$rj2EC;)-tUM@-GG#?Ow5i@* zr`yDIl*opzHl!j3)@ma#ml1}o^&@kD7j3V10Ud935Xo*RoY6@!x7UO~`|x7$5DiK{ za$4{qN7v2t+l@>C|M`AybCG+O%Y|d7`P5G0~yv?->dM{>U9i+4*3Fk4h~u6xdmWWrS$K3Y^l?1hi|;zTxw)ly&gQ)fW`$I zOqJly7{HhQHQIYtuoH7ium^7}e85^WeGIKU=M@HZIT_}>>az6_^ZFF2H=>VRGY>V2 zJiOFcKHX|Onrdvcn>59t^(i^1+-CU-7K;d9VjWq{+_QF`r(d5tDJiXq6TX2$uEoi? z9V)z%{1>u53nQ zM)9E;O5BkZ$vea~lYMwnY}^9O5<(?D&=VghBwFRaRvbqZe%uAxP=7Lcw{8V3@8 zuUZtMsOe;r^&Amf5^s&+b3=jA`4fJ^ zMAVdmb<4kH&d2V9AV6IU%T7eu@onyV4DfaSFC8}fqyf6o4+_}Ua3=TJmoy#5oV0O$ z%rm~BfuQ_Wl8ax=ZETq4(HDPWB&it}W?|?_jVVuYEke_rP9+OC7@gk|F3Lq%kX@AM zCH#Af3)^htCiTvqvoP^^@T?B4Q z`g)A1(m~Si*TE8PijuQ0GVA1l+r6e+^!^UK{^P)8DK#auNL_DVJR?-DQJqYZ(Xio8 z65*yC1D2N}erKzj*{gE=HIp2k=fU(lba=B4iY2Gtt%EQnHDmhQDt(H>Z~`t}vw*Zt z@dk}s{*oy&VX@S=?!IAWYTNA0CboFI4o=h_c?4%>34(P9bDs^X$DFBQnqOy1ir@K1 zt8DvTYuFyK@1ZXCi;-B{XS*f3k)s64njoKnKdgCnyFz|NVr`qy0J*h1HDc4_4|tU} zNs!!*hjJUXF|zD^9K6enwDGmRpB6z0Jc*g(r`tRXWC0ER?xeR^PNR34>^Sqj)TIx5S%%EQawl`TOY%pUp;`v zhCWft_FR3jxK=t7N^Nu-s|om85o5RdNm(JC&*mP2%jTrA<;r?13NvHpG?fZjF7OJKWArbJtzT*$61GY*Wc#w=U5g&IUa{r=g$l z=AH=9S^SwNEN6>G`t?vhQtL?ahd)Aak8E2Jf}djf%}ELrNWVw-d_b3_ts~mBC(oIB z={t4lSzVHRv(cEz!Wzf`BBrFp#lML$>qvK`(}&{~7fbjb{<jj%apeJ!;6#zEyZzrP9I*!K=5_f1_VpGkC2xT`k~Tp(ogE} zc@AMkh^U5~^4gi?Y1;Xmrl|2G!^B#_)A|XlD_2Xx;T4tx)WF=7Ug#;sju&mDvl|bp z={JnRcvzUfv*@D+R4Qw3;jwcK6N^*_jUan~v5cw?AY)kQHAkt0Lfysn8oTxQ11ONr zCpy5>ic_I2pgqb|2opl=Y1o*|ly!>w`Z#BOJ>@8$l>m~Oi2ZjXE#*#)b&aj>OSwwk zITIclx-Ok6^K8#Ku)eP&HErQp*IaIEg=(5i*k0Dj;dvlp84v(;LDa1IC$`un>ai=Y@DuHj?Sx z4zx}|Q+r<{uS^mgvqYE!A;AJm+w}pi6!dS(ka5Mo?wpDJbI90Hz8mZ4x zXbeip5-9=ReB3`O+yS5wL=ZqNt>ykTaHSlGM^z}SGxjV2oY9^5%iT(*mHKePKefB6IkA#tgN0lwe->eXX3bOxuxp|ZY{w<}#h z_PLxl_7%g6?AdBuv4aM1T$L5@$Ri>dfkmJze*U~5^zh^*)1Jij!}HQDup?v@p;4Q^ zt+?wp>)T81#YPkN|7w4wm$kEluf4kE*hV2f=&L{8-SJuob5b5YR=>ojVxEU;%Z-=G zwPQ2|LN#N{opxv-6if7Fkr2@#pa}=Q<``J7P8U6NLF=mU!4SIS~<#wdYYq_Pl_e-D^jiiv)k|x%nO`$AVzwu&})?CGEj(KwWU|&xXI6) z*}OLbA;XuI4CQ+S8h$~e7n6QlL`>Q(I*=XbJ#$(kJ!`{Gj4~XHUrh=FO=$5R{Aj3>5$$ zWrx*`r3DYQ><-qV`(?)@+BvegEIG0pB*<^DJ;J5~{FF43d!gkxC>heb8Uq~m(xdzB zMe-i{Fri{YaqR$goE|{q_btKChFmUm_})U<+B#kTa19Ygk{dxwT#OPggcu|+6c<^i z_2+N<7*+M*=vhbm@sV{G`h+!Vg(oB@-NSBn{@?*#_YwWHdhM)xAn%VzNja+ZHidg{ zbTYO_mv@-qWw!zA=P>I@imM&?@U7XU1AgPkf?qZSLykH-8Pb2ObV z$m{%woJwM+o^Sefm7GWP4V8X_!*KL2T{{=}G>v^+tZ*NNa8T~7Zrd|c zo!ve&IWw({)8cpbes*SUNWaF7O+Nn7Wb9#lgf=kK%M2oDBi=|w9#Pw=3@EW}DX0}T z>X$X>w5q{%Sl&bK0yXTyx}pX@V_6gJ;B72x;wd&|T~Wh(=gJxi+w+ZBXweJ?E!sn> zYG0POc%5QjR=73Umo;O@B|EZWPZ!QE;u37r;z3-Qq)74FImW;#JGgL|?oD{j-KzlM z2HnQ4uvY=Xje5(SDsM_!e#@QSd$-Fq_+I^nyHmF$ctYm@W%f7+5-V(~%b_W0sq_P- zRS>sZ9r%Shy7IRCt!6k8@Qps*?kX(M>t}~+aI7SG)W>618j2Xe`>D6ZrBo&F?Q4pZ z#PDSV+G_a(g|*vl=)(AHugHqS`e3`59e-kqC%ey*a!Kk5Nt+K9DVHvgS`5pRwSqyz z{kr*Fzr1-NznLnfdSV(IETDd*XnT&*3Wl!dN)C6Tg z+fcrjf^>$^Bn;oMt6P!WMWWY;y^R>*bX|I7j|S40br2J=21wq#hchy3i_m@CFpf#f zu$3X~uwtaEAJNRGsh26NGzKPpPWSUnzCCX*W@e% zF06z8qWslH2P*B;9v1+uzpJOG1i(%7oq*a?XpOassnUsas+UZ7>Lqj|c3X;VzzLR6 zr8XF#Mc6}`Z1)Q;B6ommzsJi2ijOc@HMw}l@KWvQi+hS7bUZYj_`Y+WC7FPjG?gGRo|p~x zYK7BzuWz|{=dc|F%AQ-kXZ z={Uv)Iz%wMB4A8`O#*m!m_x4G73pfSgpmu&jsD9NS67N1IrgRITXKd;@8YGhS)B#X zf4k|-VXZa=V=;=ULDEp>?UvimW1+>E@&2?<@6_RqIy}e0Dw6cq6|3M2WaZU8rhfWc zx-3l%pDuf8d>!^88&Q5)6N0A~hN9S*8LwtQc#wc_WPzUIf}<^|`ZvMg)@iouh*5kP z>4$Xv-*FfRB?#OaWbnUth!pOiDq#ofROMDhW8j0k9F4wp;=0OiA~n}@oJA?zUok+N zg0*<2{+mqBQCNgP@aJJcOeEJy6o9l4kIfJG4ZIUsDclHuA-sl~$>f$jc z5bvOzzojA`Wcv*vlQG6}3ld4;Pmo zH7nnL*S+^-RPWDXHNU_U7A+aO<3k$#3RS5^k~$;-hG>pC!b)hUrcFsIx#pMhcBB=h zWTOWz*mdD%*;kjP*Qws&AuSF}!eQDmAcWD>@+#bnUE#(J^br#4AbC(*oC~#m!%Su8 z#J1{<8=6u^q~U0CrpnLe!mEt)TZsWjv|=nB)EeRaCxspe1jr7AiK`M=8UEQlM-B`}iO{vSJ{0K3_e%w5`?bcyhjps=AL1l*deOjnR; z)T>En3t&QNj-d zadI2U35aF(!m8Wvt>ojQHxC43Ot03cR5VtNLW zaY~ULEcdk{4dLGVdEN0xI*2lShv?>*@(<0+oD>sM&lLER_Plx}ggJrF|)F&Nx{ZbJ68#C1N?*`k zR>WlWCIqI0W&GZVfK(dS_KDqG-D?55n)b#mzPEE_GvwgOK@kY)`s+4bRS`;M^?XyB0+N)^Wrx@<} zJ9b1pCYf=N<5t>VPmcdc_)-W$ZFpi^IT?wYAhXCN+7Xx|A*kt@*gi*LjodIJPoT=l zZX3FSVxX%FWC&FK7CR}hp|wB0Myjw~SCZT_k^cNaG z!#ngBd3`A9zaw3H&26x$>$q{aMJnFCjR=c0e|h^uv00bS?DT&p^lA$0Z)(V=c)rtH zEna=;JpnJhRL;N{Ie&0nsQv92kctG*UDn}^-*!SqlCE*mHpQ#T^XLo+?W#3=oVD_`_y^g-Ux1?7 zpsNc&yjSD>3FIV^+&}1*U0mQLzaBq3?fV6=%nA%^g>`9psk2O=g9R^A`bGj2qJnG! zRq)nZZ>^<8@^&rSh;?qa4%K*rzh^8iQ|5kqk;=5x$RO7sO2Da~=YixxPrKDT?II#u zJL5OVF)C-44PlipJP`1@40t`hX*~rOyJUC>lj7z!P4l9_N_?_TQN)XGkz!OdcYMR ztIcOPstPo|1Ns8RaB?5CdX~TT;8OtKEcI9cmh_)d6>;bLRWc8@u$6idFSoSKA#UtU zZreodbTdnsY8}VGSkr`dz9v@c@bPSw-D}(Qs$*VbISVV@Hn9iB%4?lrtxayTwOIb zQNB2;kmWW6awXt8lp+dBv-F{?7T|+%eq}U z&`2H<)t^@NW>+hB39X0g*ZG|7lnP;GyjHrnpphYgNSbL|IV&mpDdpg#GC-_hn|P&9 zxkqU)C0F*aRO2i>GaYL;PHaiHimXIrt#;PzTlHewTX!7f{!eK2zlhu)ry%zdWKPDl z%olxbwZD(=OPS;yn~?k*9>1CD0Wk!OolWFt7iXI|J3e2dkt+kk|3P*CnS%$e6n9$+ zozoE%{(>&s*pol*n`g=h%5Nh(xYv&_*=Ti|gNPEz*%}t@@2F&RRV*`X)<00m7OAyf znHGUY;&iFzKZK)8*Bm-azeZy>2$+W{upLGTH*Dk?{XH--vu$Q-raH56=k;upxncIU znN2f0XZG8%^}P3dvuR0)KokC9lo5r#okF{aLcdA@Hg(mvBN1yA_BZtuBN@i3G&OM& z(stkjPVDLLGvjqLVtdZ%fPLm+9Qzhl2Mc#S7>3?AXu(v7ddo<<>tCmC!+Z$IYX_oo z0d8RqdF)NXCVw5ICZ^9*FA;xvf&!u@VsH7B;uJ>_3OD*U$~$s~O0#ih=x;SafKcTZ zI^`2JUXsb!j+m8g;CHHd&GUJP|Cx8kD_isBIjP){@G+nYDdKz^9ePE#6!%cW~as~VuWS-ome zVQo`Tk@$KeeqE80p})0 z+CKBr?1BsEy@i~I0t!nww<&*@j27g0(5xqVNVEMAl_OE<1F93zq;FJ7w+s>V+HrF~ z?L1iEW`et7`&Cq-^-S+lr@DFA>9#Y9Wu5B9S?Tp0h6xwe^M*jX_LUM89uvH#DI_RIGu7O!q&W*EjgIFjTzsKK z$Kx_76?TQl=9Tu=4TjNc?y$d1Y3@0H{_ymRJk(*J%b3}Lv=}qG8C4bAvIN+$hpB5Zv z=~`cxvV+eS+`GYAhSI=zKUS0%dOxbJ#XLayX`2#FjYB_N{j(#y7QOg*;SW;rx(IKD zq>h(x$Xm5ysR92Ll|17i4y*a_#18AI3KsCKA@X}@J5P`Xk;6MGoKcsa&7BlRrGpR? z-5nnPny4qxR&%4 z_S85j+2!kL>ehnlwNf-|0StVFRB}d1A@ByiY1r3c9YX|SIAN{IWXxUh_6LP8U%&|r zx`*M7T%dj&X!JpWLt2#rH8~myr`4}#BCCvdj6oMdCOgKDzWAB-uir3p)XTo!s!59v zI^5z^Acvo+&6%eB?L|9q%j;jp`i|}0)?cXFqu33QQhI`SsAYezIOWSZ=;UXl4U|`P zN}pz^iepPF_?hI~cKzucV|bYQzm*RwPIXH+SLe)dy-jW;1bd1p`%7liAEcBT@V0S3 zq*D{dCsmRL5xz$SNYR_Zk7t%(cY!sI@6)Z{&%r8@-k}$<$8ph6Q!A+Ml8Kve0EiRs z#lxqsN!>Pa18 z=yIuql!PQGfd;G`8n{#uW71;On2>ZSXUTf%c>0SRW6oMMZ#$BCa7>Go?;P@y+RHFO zw?pP;Ny+|lZR;J!`UuJw3Ydt(c2+_*ua}X-u3Wly!60~_SAT-UR3*Ki*i;6sVJn-Ubp(h(I3V|L9ae9v2dRTu{}JLSU9cbCMc) zISq-ubS(rlGD>FEeF}P_3WO}wE2g+ZuMOiZQ?@XMd0OZR+zXiCaKv1QC0ittVOu$O zFic)OOcdqAZiPTf*)XE*n%n+pDKdXA9|2);OKy5&>-K0T8UWFn-41b(IyjL#=<+8R zM%=OPArqn&>$o$Utot1!t=C?>(|pUNT@dWIjyEc4{9+jdcD9uq6;6=!G7m* zy+@oI7QVja2+xjV`PKd3((>=4V|@|1zJh#P)aQ0nM)=N)hS@O$wA@YF5o{+S4WVRWuUex3 z$|?-~8(IT>G$pUaehN}+O^*Oy-#_J5Ktaznbu`(bc+aDHz&cQ6;^IX!sVA(xTTAuZNgC?DbnjVxjBj z)V0@37U%z<=GqWgh+BNT?0+6TOk8s~t80g)DD8`ykVcY(9>(d=?I5bU$onoq9KDu$ zmr)W_GjV~ESNd$#PUMUV8LseLjV%#hDDb6X9sY8h4O-|g6kWiot~lm6_RF;EUa_(?#V&FloLbWGuF)Q2y&$ zuA695%IXwZ%QvwNlw4-C6lDP^z49-^?Oxk8x&S6X`F0QA8>)N>RhUH*#F`G(HY}?auM=Up)y9 zq)x#3EZ5Sly1{*PvlSwjQO^8^@Kk$D(x>#mLzIFM|4Y>!Ro%x_$LCvRBI@OLg$m*( z3EPr4BZ-R~i#c-Y^{TUxuXPbU3^|^K3LJxlSr^>=Iqq_lzf6QYri8~(ieKR3IEMZw zwDaFIbd3rA2Ux7!m;CQ3D!>}#UJNngi-kaowLM~n;dh5)F?P1hfa1d)0FUM<4&F%J zRQt!X8b@*$JIkxf!^BK7cvpBA5y_72HZSoB#oV)(Zj-Kd2c6}%=N|bv=(jmz(e-bO zw~YJ+!RC(y8>?6>;UroAdstdCv|cmYO!sv*M|McYI=r%G;7KPc*Y^S^0X$R%tRc8P zIV}JVk_BG91EzJCp+2$j2SlhRa44gpDr4WOD$ot3SDA&{pOeh?&f9;?x%U>0ocsNx zv-w+4{tW}jUq2S_B+<*X%glOv4~MB1B%4+%{p$ydMBV(gRd?1}YwUaOh$Kn0 zj#nX&Ix7;^w}MB3q-ZDnvKLnA$eqE#w~`oJtKCU|diMxl$W`W=#cK}v?iM8!`(`D8 ze9RyNeTPSC&>67uOm?c<2A%jXvUB0utx`}lYuo(qOq1< zQ{6{7L_*zj&wks}Prpz<`b?UizwrFA6VLlxY^DC3uZ3D|m$%S?@7%4+S>p}hs$l;^ z35xV~D#k#a@g69@A%3`NVlx;P7&*O@+_$O9B;P(XZ&tcV!-di6MPlR(a^|_9Zk!b0&99ihv#*;ti!i+ z@G#XA@K67)YCo;RZ|d+h9cr4X_+$j)zoI&M^3$)XBsZe{hPJzHyI6}2uZtyyxZ=pB zqiIfoE8PLrpVT#dGlb>TX;R{i140$jP`xSXUFzYu4)5VGLvrZr|LFxtX~=vpaZy_SDSQn;m#z(^&QY0iIlu`2YX_ literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/source.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/source.py new file mode 100644 index 0000000..072ddb1 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/source.py @@ -0,0 +1,325 @@ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import ast +import inspect +import linecache +import sys +import textwrap +import tokenize +from ast import PyCF_ONLY_AST as _AST_FLAG +from bisect import bisect_right + +import py +import six + +cpy_compile = compile + + +class Source(object): + """ an immutable object holding a source code fragment, + possibly deindenting it. + """ + + _compilecounter = 0 + + def __init__(self, *parts, **kwargs): + self.lines = lines = [] + de = kwargs.get("deindent", True) + for part in parts: + if not part: + partlines = [] + elif isinstance(part, Source): + partlines = part.lines + elif isinstance(part, (tuple, list)): + partlines = [x.rstrip("\n") for x in part] + elif isinstance(part, six.string_types): + partlines = part.split("\n") + else: + partlines = getsource(part, deindent=de).lines + if de: + partlines = deindent(partlines) + lines.extend(partlines) + + def __eq__(self, other): + try: + return self.lines == other.lines + except AttributeError: + if isinstance(other, str): + return str(self) == other + return False + + __hash__ = None + + def __getitem__(self, key): + if isinstance(key, int): + return self.lines[key] + else: + if key.step not in (None, 1): + raise IndexError("cannot slice a Source with a step") + newsource = Source() + newsource.lines = self.lines[key.start : key.stop] + return newsource + + def __len__(self): + return len(self.lines) + + def strip(self): + """ return new source object with trailing + and leading blank lines removed. + """ + start, end = 0, len(self) + while start < end and not self.lines[start].strip(): + start += 1 + while end > start and not self.lines[end - 1].strip(): + end -= 1 + source = Source() + source.lines[:] = self.lines[start:end] + return source + + def putaround(self, before="", after="", indent=" " * 4): + """ return a copy of the source object with + 'before' and 'after' wrapped around it. + """ + before = Source(before) + after = Source(after) + newsource = Source() + lines = [(indent + line) for line in self.lines] + newsource.lines = before.lines + lines + after.lines + return newsource + + def indent(self, indent=" " * 4): + """ return a copy of the source object with + all lines indented by the given indent-string. + """ + newsource = Source() + newsource.lines = [(indent + line) for line in self.lines] + return newsource + + def getstatement(self, lineno): + """ return Source statement which contains the + given linenumber (counted from 0). + """ + start, end = self.getstatementrange(lineno) + return self[start:end] + + def getstatementrange(self, lineno): + """ return (start, end) tuple which spans the minimal + statement region which containing the given lineno. + """ + if not (0 <= lineno < len(self)): + raise IndexError("lineno out of range") + ast, start, end = getstatementrange_ast(lineno, self) + return start, end + + def deindent(self): + """return a new source object deindented.""" + newsource = Source() + newsource.lines[:] = deindent(self.lines) + return newsource + + def isparseable(self, deindent=True): + """ return True if source is parseable, heuristically + deindenting it by default. + """ + from parser import suite as syntax_checker + + if deindent: + source = str(self.deindent()) + else: + source = str(self) + try: + # compile(source+'\n', "x", "exec") + syntax_checker(source + "\n") + except KeyboardInterrupt: + raise + except Exception: + return False + else: + return True + + def __str__(self): + return "\n".join(self.lines) + + def compile( + self, filename=None, mode="exec", flag=0, dont_inherit=0, _genframe=None + ): + """ return compiled code object. if filename is None + invent an artificial filename which displays + the source/line position of the caller frame. + """ + if not filename or py.path.local(filename).check(file=0): + if _genframe is None: + _genframe = sys._getframe(1) # the caller + fn, lineno = _genframe.f_code.co_filename, _genframe.f_lineno + base = "<%d-codegen " % self._compilecounter + self.__class__._compilecounter += 1 + if not filename: + filename = base + "%s:%d>" % (fn, lineno) + else: + filename = base + "%r %s:%d>" % (filename, fn, lineno) + source = "\n".join(self.lines) + "\n" + try: + co = cpy_compile(source, filename, mode, flag) + except SyntaxError: + ex = sys.exc_info()[1] + # re-represent syntax errors from parsing python strings + msglines = self.lines[: ex.lineno] + if ex.offset: + msglines.append(" " * ex.offset + "^") + msglines.append("(code was compiled probably from here: %s)" % filename) + newex = SyntaxError("\n".join(msglines)) + newex.offset = ex.offset + newex.lineno = ex.lineno + newex.text = ex.text + raise newex + else: + if flag & _AST_FLAG: + return co + lines = [(x + "\n") for x in self.lines] + linecache.cache[filename] = (1, None, lines, filename) + return co + + +# +# public API shortcut functions +# + + +def compile_(source, filename=None, mode="exec", flags=0, dont_inherit=0): + """ compile the given source to a raw code object, + and maintain an internal cache which allows later + retrieval of the source code for the code object + and any recursively created code objects. + """ + if isinstance(source, ast.AST): + # XXX should Source support having AST? + return cpy_compile(source, filename, mode, flags, dont_inherit) + _genframe = sys._getframe(1) # the caller + s = Source(source) + co = s.compile(filename, mode, flags, _genframe=_genframe) + return co + + +def getfslineno(obj): + """ Return source location (path, lineno) for the given object. + If the source cannot be determined return ("", -1) + """ + from .code import Code + + try: + code = Code(obj) + except TypeError: + try: + fn = inspect.getsourcefile(obj) or inspect.getfile(obj) + except TypeError: + return "", -1 + + fspath = fn and py.path.local(fn) or None + lineno = -1 + if fspath: + try: + _, lineno = findsource(obj) + except IOError: + pass + else: + fspath = code.path + lineno = code.firstlineno + assert isinstance(lineno, int) + return fspath, lineno + + +# +# helper functions +# + + +def findsource(obj): + try: + sourcelines, lineno = inspect.findsource(obj) + except py.builtin._sysex: + raise + except: # noqa + return None, -1 + source = Source() + source.lines = [line.rstrip() for line in sourcelines] + return source, lineno + + +def getsource(obj, **kwargs): + from .code import getrawcode + + obj = getrawcode(obj) + try: + strsrc = inspect.getsource(obj) + except IndentationError: + strsrc = '"Buggy python version consider upgrading, cannot get source"' + assert isinstance(strsrc, str) + return Source(strsrc, **kwargs) + + +def deindent(lines): + return textwrap.dedent("\n".join(lines)).splitlines() + + +def get_statement_startend2(lineno, node): + import ast + + # flatten all statements and except handlers into one lineno-list + # AST's line numbers start indexing at 1 + values = [] + for x in ast.walk(node): + if isinstance(x, (ast.stmt, ast.ExceptHandler)): + values.append(x.lineno - 1) + for name in ("finalbody", "orelse"): + val = getattr(x, name, None) + if val: + # treat the finally/orelse part as its own statement + values.append(val[0].lineno - 1 - 1) + values.sort() + insert_index = bisect_right(values, lineno) + start = values[insert_index - 1] + if insert_index >= len(values): + end = None + else: + end = values[insert_index] + return start, end + + +def getstatementrange_ast(lineno, source, assertion=False, astnode=None): + if astnode is None: + content = str(source) + astnode = compile(content, "source", "exec", 1024) # 1024 for AST + + start, end = get_statement_startend2(lineno, astnode) + # we need to correct the end: + # - ast-parsing strips comments + # - there might be empty lines + # - we might have lesser indented code blocks at the end + if end is None: + end = len(source.lines) + + if end > start + 1: + # make sure we don't span differently indented code blocks + # by using the BlockFinder helper used which inspect.getsource() uses itself + block_finder = inspect.BlockFinder() + # if we start with an indented line, put blockfinder to "started" mode + block_finder.started = source.lines[start][0].isspace() + it = ((x + "\n") for x in source.lines[start:end]) + try: + for tok in tokenize.generate_tokens(lambda: next(it)): + block_finder.tokeneater(*tok) + except (inspect.EndOfBlock, IndentationError): + end = block_finder.last + start + except Exception: + pass + + # the end might still point to a comment or empty line, correct it + while end: + line = source.lines[end - 1].lstrip() + if line.startswith("#") or not line: + end -= 1 + else: + break + return astnode, start, end diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/source.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/_code/source.pyc new file mode 100644 index 0000000000000000000000000000000000000000..697aa88e987a16e12f9fcc509d7c9fdd8e7f14d9 GIT binary patch literal 11205 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 gH7}x=19j*T9sTCdZn?1Z*Nd~2^OY)oi_DO{ zwWv5VKTiY5WIzzbMnJB9Np69DL1uw&W?pegVor{(SFS;>m#=<7Wl3sriGDnch8m#< Xje{K+FIDknSTX literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/__init__.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/__init__.py new file mode 100644 index 0000000..b5c846c --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/__init__.py @@ -0,0 +1,155 @@ +""" +support for presenting detailed information in failing assertions. +""" +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import sys + +import six + +from _pytest.assertion import rewrite +from _pytest.assertion import truncate +from _pytest.assertion import util + + +def pytest_addoption(parser): + group = parser.getgroup("debugconfig") + group.addoption( + "--assert", + action="store", + dest="assertmode", + choices=("rewrite", "plain"), + default="rewrite", + metavar="MODE", + help="""Control assertion debugging tools. 'plain' + performs no assertion debugging. 'rewrite' + (the default) rewrites assert statements in + test modules on import to provide assert + expression information.""", + ) + + +def register_assert_rewrite(*names): + """Register one or more module names to be rewritten on import. + + This function will make sure that this module or all modules inside + the package will get their assert statements rewritten. + Thus you should make sure to call this before the module is + actually imported, usually in your __init__.py if you are a plugin + using a package. + + :raise TypeError: if the given module names are not strings. + """ + for name in names: + if not isinstance(name, str): + msg = "expected module names as *args, got {0} instead" + raise TypeError(msg.format(repr(names))) + for hook in sys.meta_path: + if isinstance(hook, rewrite.AssertionRewritingHook): + importhook = hook + break + else: + importhook = DummyRewriteHook() + importhook.mark_rewrite(*names) + + +class DummyRewriteHook(object): + """A no-op import hook for when rewriting is disabled.""" + + def mark_rewrite(self, *names): + pass + + +class AssertionState(object): + """State for the assertion plugin.""" + + def __init__(self, config, mode): + self.mode = mode + self.trace = config.trace.root.get("assertion") + self.hook = None + + +def install_importhook(config): + """Try to install the rewrite hook, raise SystemError if it fails.""" + # Jython has an AST bug that make the assertion rewriting hook malfunction. + if sys.platform.startswith("java"): + raise SystemError("rewrite not supported") + + config._assertstate = AssertionState(config, "rewrite") + config._assertstate.hook = hook = rewrite.AssertionRewritingHook(config) + sys.meta_path.insert(0, hook) + config._assertstate.trace("installed rewrite import hook") + + def undo(): + hook = config._assertstate.hook + if hook is not None and hook in sys.meta_path: + sys.meta_path.remove(hook) + + config.add_cleanup(undo) + return hook + + +def pytest_collection(session): + # this hook is only called when test modules are collected + # so for example not in the master process of pytest-xdist + # (which does not collect test modules) + assertstate = getattr(session.config, "_assertstate", None) + if assertstate: + if assertstate.hook is not None: + assertstate.hook.set_session(session) + + +def pytest_runtest_setup(item): + """Setup the pytest_assertrepr_compare hook + + The newinterpret and rewrite modules will use util._reprcompare if + it exists to use custom reporting via the + pytest_assertrepr_compare hook. This sets up this custom + comparison for the test. + """ + + def callbinrepr(op, left, right): + """Call the pytest_assertrepr_compare hook and prepare the result + + This uses the first result from the hook and then ensures the + following: + * Overly verbose explanations are truncated unless configured otherwise + (eg. if running in verbose mode). + * Embedded newlines are escaped to help util.format_explanation() + later. + * If the rewrite mode is used embedded %-characters are replaced + to protect later % formatting. + + The result can be formatted by util.format_explanation() for + pretty printing. + """ + hook_result = item.ihook.pytest_assertrepr_compare( + config=item.config, op=op, left=left, right=right + ) + for new_expl in hook_result: + if new_expl: + new_expl = truncate.truncate_if_required(new_expl, item) + new_expl = [line.replace("\n", "\\n") for line in new_expl] + res = six.text_type("\n~").join(new_expl) + if item.config.getvalue("assertmode") == "rewrite": + res = res.replace("%", "%%") + return res + + util._reprcompare = callbinrepr + + +def pytest_runtest_teardown(item): + util._reprcompare = None + + +def pytest_sessionfinish(session): + assertstate = getattr(session.config, "_assertstate", None) + if assertstate: + if assertstate.hook is not None: + assertstate.hook.set_session(None) + + +# Expose this plugin's implementation for the pytest_assertrepr_compare hook +pytest_assertrepr_compare = util.assertrepr_compare diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/__init__.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0fb94cb1b969e40f93494a2f0fef22408850aa24 GIT binary patch literal 6707 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 R=dZR}ms{=D%~rFu@NcZMVt@bu literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/rewrite.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/rewrite.py new file mode 100644 index 0000000..ecb24ff --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/rewrite.py @@ -0,0 +1,1035 @@ +"""Rewrite assertion AST to produce nice error messages""" +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import ast +import errno +import imp +import itertools +import marshal +import os +import re +import string +import struct +import sys +import types + +import atomicwrites +import py +import six + +from _pytest.assertion import util +from _pytest.compat import spec_from_file_location +from _pytest.pathlib import fnmatch_ex +from _pytest.pathlib import PurePath + +# pytest caches rewritten pycs in __pycache__. +if hasattr(imp, "get_tag"): + PYTEST_TAG = imp.get_tag() + "-PYTEST" +else: + if hasattr(sys, "pypy_version_info"): + impl = "pypy" + elif sys.platform == "java": + impl = "jython" + else: + impl = "cpython" + ver = sys.version_info + PYTEST_TAG = "%s-%s%s-PYTEST" % (impl, ver[0], ver[1]) + del ver, impl + +PYC_EXT = ".py" + (__debug__ and "c" or "o") +PYC_TAIL = "." + PYTEST_TAG + PYC_EXT + +ASCII_IS_DEFAULT_ENCODING = sys.version_info[0] < 3 + +if sys.version_info >= (3, 5): + ast_Call = ast.Call +else: + + def ast_Call(a, b, c): + return ast.Call(a, b, c, None, None) + + +class AssertionRewritingHook(object): + """PEP302 Import hook which rewrites asserts.""" + + def __init__(self, config): + self.config = config + self.fnpats = config.getini("python_files") + self.session = None + self.modules = {} + self._rewritten_names = set() + self._register_with_pkg_resources() + self._must_rewrite = set() + # flag to guard against trying to rewrite a pyc file while we are already writing another pyc file, + # which might result in infinite recursion (#3506) + self._writing_pyc = False + self._basenames_to_check_rewrite = {"conftest"} + self._marked_for_rewrite_cache = {} + self._session_paths_checked = False + + def set_session(self, session): + self.session = session + self._session_paths_checked = False + + def _imp_find_module(self, name, path=None): + """Indirection so we can mock calls to find_module originated from the hook during testing""" + return imp.find_module(name, path) + + def find_module(self, name, path=None): + if self._writing_pyc: + return None + state = self.config._assertstate + if self._early_rewrite_bailout(name, state): + return None + state.trace("find_module called for: %s" % name) + names = name.rsplit(".", 1) + lastname = names[-1] + pth = None + if path is not None: + # Starting with Python 3.3, path is a _NamespacePath(), which + # causes problems if not converted to list. + path = list(path) + if len(path) == 1: + pth = path[0] + if pth is None: + try: + fd, fn, desc = self._imp_find_module(lastname, path) + except ImportError: + return None + if fd is not None: + fd.close() + tp = desc[2] + if tp == imp.PY_COMPILED: + if hasattr(imp, "source_from_cache"): + try: + fn = imp.source_from_cache(fn) + except ValueError: + # Python 3 doesn't like orphaned but still-importable + # .pyc files. + fn = fn[:-1] + else: + fn = fn[:-1] + elif tp != imp.PY_SOURCE: + # Don't know what this is. + return None + else: + fn = os.path.join(pth, name.rpartition(".")[2] + ".py") + + fn_pypath = py.path.local(fn) + if not self._should_rewrite(name, fn_pypath, state): + return None + + self._rewritten_names.add(name) + + # The requested module looks like a test file, so rewrite it. This is + # the most magical part of the process: load the source, rewrite the + # asserts, and load the rewritten source. We also cache the rewritten + # module code in a special pyc. We must be aware of the possibility of + # concurrent pytest processes rewriting and loading pycs. To avoid + # tricky race conditions, we maintain the following invariant: The + # cached pyc is always a complete, valid pyc. Operations on it must be + # atomic. POSIX's atomic rename comes in handy. + write = not sys.dont_write_bytecode + cache_dir = os.path.join(fn_pypath.dirname, "__pycache__") + if write: + try: + os.mkdir(cache_dir) + except OSError: + e = sys.exc_info()[1].errno + if e == errno.EEXIST: + # Either the __pycache__ directory already exists (the + # common case) or it's blocked by a non-dir node. In the + # latter case, we'll ignore it in _write_pyc. + pass + elif e in [errno.ENOENT, errno.ENOTDIR]: + # One of the path components was not a directory, likely + # because we're in a zip file. + write = False + elif e in [errno.EACCES, errno.EROFS, errno.EPERM]: + state.trace("read only directory: %r" % fn_pypath.dirname) + write = False + else: + raise + cache_name = fn_pypath.basename[:-3] + PYC_TAIL + pyc = os.path.join(cache_dir, cache_name) + # Notice that even if we're in a read-only directory, I'm going + # to check for a cached pyc. This may not be optimal... + co = _read_pyc(fn_pypath, pyc, state.trace) + if co is None: + state.trace("rewriting %r" % (fn,)) + source_stat, co = _rewrite_test(self.config, fn_pypath) + if co is None: + # Probably a SyntaxError in the test. + return None + if write: + self._writing_pyc = True + try: + _write_pyc(state, co, source_stat, pyc) + finally: + self._writing_pyc = False + else: + state.trace("found cached rewritten pyc for %r" % (fn,)) + self.modules[name] = co, pyc + return self + + def _early_rewrite_bailout(self, name, state): + """ + This is a fast way to get out of rewriting modules. Profiling has + shown that the call to imp.find_module (inside of the find_module + from this class) is a major slowdown, so, this method tries to + filter what we're sure won't be rewritten before getting to it. + """ + if self.session is not None and not self._session_paths_checked: + self._session_paths_checked = True + for path in self.session._initialpaths: + # Make something as c:/projects/my_project/path.py -> + # ['c:', 'projects', 'my_project', 'path.py'] + parts = str(path).split(os.path.sep) + # add 'path' to basenames to be checked. + self._basenames_to_check_rewrite.add(os.path.splitext(parts[-1])[0]) + + # Note: conftest already by default in _basenames_to_check_rewrite. + parts = name.split(".") + if parts[-1] in self._basenames_to_check_rewrite: + return False + + # For matching the name it must be as if it was a filename. + path = PurePath(os.path.sep.join(parts) + ".py") + + for pat in self.fnpats: + # if the pattern contains subdirectories ("tests/**.py" for example) we can't bail out based + # on the name alone because we need to match against the full path + if os.path.dirname(pat): + return False + if fnmatch_ex(pat, path): + return False + + if self._is_marked_for_rewrite(name, state): + return False + + state.trace("early skip of rewriting module: %s" % (name,)) + return True + + def _should_rewrite(self, name, fn_pypath, state): + # always rewrite conftest files + fn = str(fn_pypath) + if fn_pypath.basename == "conftest.py": + state.trace("rewriting conftest file: %r" % (fn,)) + return True + + if self.session is not None: + if self.session.isinitpath(fn): + state.trace("matched test file (was specified on cmdline): %r" % (fn,)) + return True + + # modules not passed explicitly on the command line are only + # rewritten if they match the naming convention for test files + for pat in self.fnpats: + if fn_pypath.fnmatch(pat): + state.trace("matched test file %r" % (fn,)) + return True + + return self._is_marked_for_rewrite(name, state) + + def _is_marked_for_rewrite(self, name, state): + try: + return self._marked_for_rewrite_cache[name] + except KeyError: + for marked in self._must_rewrite: + if name == marked or name.startswith(marked + "."): + state.trace("matched marked file %r (from %r)" % (name, marked)) + self._marked_for_rewrite_cache[name] = True + return True + + self._marked_for_rewrite_cache[name] = False + return False + + def mark_rewrite(self, *names): + """Mark import names as needing to be rewritten. + + The named module or package as well as any nested modules will + be rewritten on import. + """ + already_imported = ( + set(names).intersection(sys.modules).difference(self._rewritten_names) + ) + for name in already_imported: + if not AssertionRewriter.is_rewrite_disabled( + sys.modules[name].__doc__ or "" + ): + self._warn_already_imported(name) + self._must_rewrite.update(names) + self._marked_for_rewrite_cache.clear() + + def _warn_already_imported(self, name): + from _pytest.warning_types import PytestWarning + from _pytest.warnings import _issue_config_warning + + _issue_config_warning( + PytestWarning("Module already imported so cannot be rewritten: %s" % name), + self.config, + ) + + def load_module(self, name): + co, pyc = self.modules.pop(name) + if name in sys.modules: + # If there is an existing module object named 'fullname' in + # sys.modules, the loader must use that existing module. (Otherwise, + # the reload() builtin will not work correctly.) + mod = sys.modules[name] + else: + # I wish I could just call imp.load_compiled here, but __file__ has to + # be set properly. In Python 3.2+, this all would be handled correctly + # by load_compiled. + mod = sys.modules[name] = imp.new_module(name) + try: + mod.__file__ = co.co_filename + # Normally, this attribute is 3.2+. + mod.__cached__ = pyc + mod.__loader__ = self + # Normally, this attribute is 3.4+ + mod.__spec__ = spec_from_file_location(name, co.co_filename, loader=self) + six.exec_(co, mod.__dict__) + except: # noqa + if name in sys.modules: + del sys.modules[name] + raise + return sys.modules[name] + + def is_package(self, name): + try: + fd, fn, desc = self._imp_find_module(name) + except ImportError: + return False + if fd is not None: + fd.close() + tp = desc[2] + return tp == imp.PKG_DIRECTORY + + @classmethod + def _register_with_pkg_resources(cls): + """ + Ensure package resources can be loaded from this loader. May be called + multiple times, as the operation is idempotent. + """ + try: + import pkg_resources + + # access an attribute in case a deferred importer is present + pkg_resources.__name__ + except ImportError: + return + + # Since pytest tests are always located in the file system, the + # DefaultProvider is appropriate. + pkg_resources.register_loader_type(cls, pkg_resources.DefaultProvider) + + def get_data(self, pathname): + """Optional PEP302 get_data API. + """ + with open(pathname, "rb") as f: + return f.read() + + +def _write_pyc(state, co, source_stat, pyc): + # Technically, we don't have to have the same pyc format as + # (C)Python, since these "pycs" should never be seen by builtin + # import. However, there's little reason deviate, and I hope + # sometime to be able to use imp.load_compiled to load them. (See + # the comment in load_module above.) + try: + with atomicwrites.atomic_write(pyc, mode="wb", overwrite=True) as fp: + fp.write(imp.get_magic()) + mtime = int(source_stat.mtime) + size = source_stat.size & 0xFFFFFFFF + fp.write(struct.pack(">", + ast.Add: "+", + ast.Sub: "-", + ast.Mult: "*", + ast.Div: "/", + ast.FloorDiv: "//", + ast.Mod: "%%", # escaped for string formatting + ast.Eq: "==", + ast.NotEq: "!=", + ast.Lt: "<", + ast.LtE: "<=", + ast.Gt: ">", + ast.GtE: ">=", + ast.Pow: "**", + ast.Is: "is", + ast.IsNot: "is not", + ast.In: "in", + ast.NotIn: "not in", +} +# Python 3.5+ compatibility +try: + binop_map[ast.MatMult] = "@" +except AttributeError: + pass + +# Python 3.4+ compatibility +if hasattr(ast, "NameConstant"): + _NameConstant = ast.NameConstant +else: + + def _NameConstant(c): + return ast.Name(str(c), ast.Load()) + + +def set_location(node, lineno, col_offset): + """Set node location information recursively.""" + + def _fix(node, lineno, col_offset): + if "lineno" in node._attributes: + node.lineno = lineno + if "col_offset" in node._attributes: + node.col_offset = col_offset + for child in ast.iter_child_nodes(node): + _fix(child, lineno, col_offset) + + _fix(node, lineno, col_offset) + return node + + +class AssertionRewriter(ast.NodeVisitor): + """Assertion rewriting implementation. + + The main entrypoint is to call .run() with an ast.Module instance, + this will then find all the assert statements and rewrite them to + provide intermediate values and a detailed assertion error. See + http://pybites.blogspot.be/2011/07/behind-scenes-of-pytests-new-assertion.html + for an overview of how this works. + + The entry point here is .run() which will iterate over all the + statements in an ast.Module and for each ast.Assert statement it + finds call .visit() with it. Then .visit_Assert() takes over and + is responsible for creating new ast statements to replace the + original assert statement: it rewrites the test of an assertion + to provide intermediate values and replace it with an if statement + which raises an assertion error with a detailed explanation in + case the expression is false. + + For this .visit_Assert() uses the visitor pattern to visit all the + AST nodes of the ast.Assert.test field, each visit call returning + an AST node and the corresponding explanation string. During this + state is kept in several instance attributes: + + :statements: All the AST statements which will replace the assert + statement. + + :variables: This is populated by .variable() with each variable + used by the statements so that they can all be set to None at + the end of the statements. + + :variable_counter: Counter to create new unique variables needed + by statements. Variables are created using .variable() and + have the form of "@py_assert0". + + :on_failure: The AST statements which will be executed if the + assertion test fails. This is the code which will construct + the failure message and raises the AssertionError. + + :explanation_specifiers: A dict filled by .explanation_param() + with %-formatting placeholders and their corresponding + expressions to use in the building of an assertion message. + This is used by .pop_format_context() to build a message. + + :stack: A stack of the explanation_specifiers dicts maintained by + .push_format_context() and .pop_format_context() which allows + to build another %-formatted string while already building one. + + This state is reset on every new assert statement visited and used + by the other visitors. + + """ + + def __init__(self, module_path, config): + super(AssertionRewriter, self).__init__() + self.module_path = module_path + self.config = config + + def run(self, mod): + """Find all assert statements in *mod* and rewrite them.""" + if not mod.body: + # Nothing to do. + return + # Insert some special imports at the top of the module but after any + # docstrings and __future__ imports. + aliases = [ + ast.alias(py.builtin.builtins.__name__, "@py_builtins"), + ast.alias("_pytest.assertion.rewrite", "@pytest_ar"), + ] + doc = getattr(mod, "docstring", None) + expect_docstring = doc is None + if doc is not None and self.is_rewrite_disabled(doc): + return + pos = 0 + lineno = 1 + for item in mod.body: + if ( + expect_docstring + and isinstance(item, ast.Expr) + and isinstance(item.value, ast.Str) + ): + doc = item.value.s + if self.is_rewrite_disabled(doc): + return + expect_docstring = False + elif ( + not isinstance(item, ast.ImportFrom) + or item.level > 0 + or item.module != "__future__" + ): + lineno = item.lineno + break + pos += 1 + else: + lineno = item.lineno + imports = [ + ast.Import([alias], lineno=lineno, col_offset=0) for alias in aliases + ] + mod.body[pos:pos] = imports + # Collect asserts. + nodes = [mod] + while nodes: + node = nodes.pop() + for name, field in ast.iter_fields(node): + if isinstance(field, list): + new = [] + for i, child in enumerate(field): + if isinstance(child, ast.Assert): + # Transform assert. + new.extend(self.visit(child)) + else: + new.append(child) + if isinstance(child, ast.AST): + nodes.append(child) + setattr(node, name, new) + elif ( + isinstance(field, ast.AST) + # Don't recurse into expressions as they can't contain + # asserts. + and not isinstance(field, ast.expr) + ): + nodes.append(field) + + @staticmethod + def is_rewrite_disabled(docstring): + return "PYTEST_DONT_REWRITE" in docstring + + def variable(self): + """Get a new variable.""" + # Use a character invalid in python identifiers to avoid clashing. + name = "@py_assert" + str(next(self.variable_counter)) + self.variables.append(name) + return name + + def assign(self, expr): + """Give *expr* a name.""" + name = self.variable() + self.statements.append(ast.Assign([ast.Name(name, ast.Store())], expr)) + return ast.Name(name, ast.Load()) + + def display(self, expr): + """Call py.io.saferepr on the expression.""" + return self.helper("saferepr", expr) + + def helper(self, name, *args): + """Call a helper in this module.""" + py_name = ast.Name("@pytest_ar", ast.Load()) + attr = ast.Attribute(py_name, "_" + name, ast.Load()) + return ast_Call(attr, list(args), []) + + def builtin(self, name): + """Return the builtin called *name*.""" + builtin_name = ast.Name("@py_builtins", ast.Load()) + return ast.Attribute(builtin_name, name, ast.Load()) + + def explanation_param(self, expr): + """Return a new named %-formatting placeholder for expr. + + This creates a %-formatting placeholder for expr in the + current formatting context, e.g. ``%(py0)s``. The placeholder + and expr are placed in the current format context so that it + can be used on the next call to .pop_format_context(). + + """ + specifier = "py" + str(next(self.variable_counter)) + self.explanation_specifiers[specifier] = expr + return "%(" + specifier + ")s" + + def push_format_context(self): + """Create a new formatting context. + + The format context is used for when an explanation wants to + have a variable value formatted in the assertion message. In + this case the value required can be added using + .explanation_param(). Finally .pop_format_context() is used + to format a string of %-formatted values as added by + .explanation_param(). + + """ + self.explanation_specifiers = {} + self.stack.append(self.explanation_specifiers) + + def pop_format_context(self, expl_expr): + """Format the %-formatted string with current format context. + + The expl_expr should be an ast.Str instance constructed from + the %-placeholders created by .explanation_param(). This will + add the required code to format said string to .on_failure and + return the ast.Name instance of the formatted string. + + """ + current = self.stack.pop() + if self.stack: + self.explanation_specifiers = self.stack[-1] + keys = [ast.Str(key) for key in current.keys()] + format_dict = ast.Dict(keys, list(current.values())) + form = ast.BinOp(expl_expr, ast.Mod(), format_dict) + name = "@py_format" + str(next(self.variable_counter)) + self.on_failure.append(ast.Assign([ast.Name(name, ast.Store())], form)) + return ast.Name(name, ast.Load()) + + def generic_visit(self, node): + """Handle expressions we don't have custom code for.""" + assert isinstance(node, ast.expr) + res = self.assign(node) + return res, self.explanation_param(self.display(res)) + + def visit_Assert(self, assert_): + """Return the AST statements to replace the ast.Assert instance. + + This rewrites the test of an assertion to provide + intermediate values and replace it with an if statement which + raises an assertion error with a detailed explanation in case + the expression is false. + + """ + if isinstance(assert_.test, ast.Tuple) and len(assert_.test.elts) >= 1: + from _pytest.warning_types import PytestWarning + import warnings + + warnings.warn_explicit( + PytestWarning("assertion is always true, perhaps remove parentheses?"), + category=None, + filename=str(self.module_path), + lineno=assert_.lineno, + ) + + self.statements = [] + self.variables = [] + self.variable_counter = itertools.count() + self.stack = [] + self.on_failure = [] + self.push_format_context() + # Rewrite assert into a bunch of statements. + top_condition, explanation = self.visit(assert_.test) + # Create failure message. + body = self.on_failure + negation = ast.UnaryOp(ast.Not(), top_condition) + self.statements.append(ast.If(negation, body, [])) + if assert_.msg: + assertmsg = self.helper("format_assertmsg", assert_.msg) + explanation = "\n>assert " + explanation + else: + assertmsg = ast.Str("") + explanation = "assert " + explanation + template = ast.BinOp(assertmsg, ast.Add(), ast.Str(explanation)) + msg = self.pop_format_context(template) + fmt = self.helper("format_explanation", msg) + err_name = ast.Name("AssertionError", ast.Load()) + exc = ast_Call(err_name, [fmt], []) + if sys.version_info[0] >= 3: + raise_ = ast.Raise(exc, None) + else: + raise_ = ast.Raise(exc, None, None) + body.append(raise_) + # Clear temporary variables by setting them to None. + if self.variables: + variables = [ast.Name(name, ast.Store()) for name in self.variables] + clear = ast.Assign(variables, _NameConstant(None)) + self.statements.append(clear) + # Fix line numbers. + for stmt in self.statements: + set_location(stmt, assert_.lineno, assert_.col_offset) + return self.statements + + def visit_Name(self, name): + # Display the repr of the name if it's a local variable or + # _should_repr_global_name() thinks it's acceptable. + locs = ast_Call(self.builtin("locals"), [], []) + inlocs = ast.Compare(ast.Str(name.id), [ast.In()], [locs]) + dorepr = self.helper("should_repr_global_name", name) + test = ast.BoolOp(ast.Or(), [inlocs, dorepr]) + expr = ast.IfExp(test, self.display(name), ast.Str(name.id)) + return name, self.explanation_param(expr) + + def visit_BoolOp(self, boolop): + res_var = self.variable() + expl_list = self.assign(ast.List([], ast.Load())) + app = ast.Attribute(expl_list, "append", ast.Load()) + is_or = int(isinstance(boolop.op, ast.Or)) + body = save = self.statements + fail_save = self.on_failure + levels = len(boolop.values) - 1 + self.push_format_context() + # Process each operand, short-circuting if needed. + for i, v in enumerate(boolop.values): + if i: + fail_inner = [] + # cond is set in a prior loop iteration below + self.on_failure.append(ast.If(cond, fail_inner, [])) # noqa + self.on_failure = fail_inner + self.push_format_context() + res, expl = self.visit(v) + body.append(ast.Assign([ast.Name(res_var, ast.Store())], res)) + expl_format = self.pop_format_context(ast.Str(expl)) + call = ast_Call(app, [expl_format], []) + self.on_failure.append(ast.Expr(call)) + if i < levels: + cond = res + if is_or: + cond = ast.UnaryOp(ast.Not(), cond) + inner = [] + self.statements.append(ast.If(cond, inner, [])) + self.statements = body = inner + self.statements = save + self.on_failure = fail_save + expl_template = self.helper("format_boolop", expl_list, ast.Num(is_or)) + expl = self.pop_format_context(expl_template) + return ast.Name(res_var, ast.Load()), self.explanation_param(expl) + + def visit_UnaryOp(self, unary): + pattern = unary_map[unary.op.__class__] + operand_res, operand_expl = self.visit(unary.operand) + res = self.assign(ast.UnaryOp(unary.op, operand_res)) + return res, pattern % (operand_expl,) + + def visit_BinOp(self, binop): + symbol = binop_map[binop.op.__class__] + left_expr, left_expl = self.visit(binop.left) + right_expr, right_expl = self.visit(binop.right) + explanation = "(%s %s %s)" % (left_expl, symbol, right_expl) + res = self.assign(ast.BinOp(left_expr, binop.op, right_expr)) + return res, explanation + + def visit_Call_35(self, call): + """ + visit `ast.Call` nodes on Python3.5 and after + """ + new_func, func_expl = self.visit(call.func) + arg_expls = [] + new_args = [] + new_kwargs = [] + for arg in call.args: + res, expl = self.visit(arg) + arg_expls.append(expl) + new_args.append(res) + for keyword in call.keywords: + res, expl = self.visit(keyword.value) + new_kwargs.append(ast.keyword(keyword.arg, res)) + if keyword.arg: + arg_expls.append(keyword.arg + "=" + expl) + else: # **args have `arg` keywords with an .arg of None + arg_expls.append("**" + expl) + + expl = "%s(%s)" % (func_expl, ", ".join(arg_expls)) + new_call = ast.Call(new_func, new_args, new_kwargs) + res = self.assign(new_call) + res_expl = self.explanation_param(self.display(res)) + outer_expl = "%s\n{%s = %s\n}" % (res_expl, res_expl, expl) + return res, outer_expl + + def visit_Starred(self, starred): + # From Python 3.5, a Starred node can appear in a function call + res, expl = self.visit(starred.value) + return starred, "*" + expl + + def visit_Call_legacy(self, call): + """ + visit `ast.Call nodes on 3.4 and below` + """ + new_func, func_expl = self.visit(call.func) + arg_expls = [] + new_args = [] + new_kwargs = [] + new_star = new_kwarg = None + for arg in call.args: + res, expl = self.visit(arg) + new_args.append(res) + arg_expls.append(expl) + for keyword in call.keywords: + res, expl = self.visit(keyword.value) + new_kwargs.append(ast.keyword(keyword.arg, res)) + arg_expls.append(keyword.arg + "=" + expl) + if call.starargs: + new_star, expl = self.visit(call.starargs) + arg_expls.append("*" + expl) + if call.kwargs: + new_kwarg, expl = self.visit(call.kwargs) + arg_expls.append("**" + expl) + expl = "%s(%s)" % (func_expl, ", ".join(arg_expls)) + new_call = ast.Call(new_func, new_args, new_kwargs, new_star, new_kwarg) + res = self.assign(new_call) + res_expl = self.explanation_param(self.display(res)) + outer_expl = "%s\n{%s = %s\n}" % (res_expl, res_expl, expl) + return res, outer_expl + + # ast.Call signature changed on 3.5, + # conditionally change which methods is named + # visit_Call depending on Python version + if sys.version_info >= (3, 5): + visit_Call = visit_Call_35 + else: + visit_Call = visit_Call_legacy + + def visit_Attribute(self, attr): + if not isinstance(attr.ctx, ast.Load): + return self.generic_visit(attr) + value, value_expl = self.visit(attr.value) + res = self.assign(ast.Attribute(value, attr.attr, ast.Load())) + res_expl = self.explanation_param(self.display(res)) + pat = "%s\n{%s = %s.%s\n}" + expl = pat % (res_expl, res_expl, value_expl, attr.attr) + return res, expl + + def visit_Compare(self, comp): + self.push_format_context() + left_res, left_expl = self.visit(comp.left) + if isinstance(comp.left, (ast.Compare, ast.BoolOp)): + left_expl = "({})".format(left_expl) + res_variables = [self.variable() for i in range(len(comp.ops))] + load_names = [ast.Name(v, ast.Load()) for v in res_variables] + store_names = [ast.Name(v, ast.Store()) for v in res_variables] + it = zip(range(len(comp.ops)), comp.ops, comp.comparators) + expls = [] + syms = [] + results = [left_res] + for i, op, next_operand in it: + next_res, next_expl = self.visit(next_operand) + if isinstance(next_operand, (ast.Compare, ast.BoolOp)): + next_expl = "({})".format(next_expl) + results.append(next_res) + sym = binop_map[op.__class__] + syms.append(ast.Str(sym)) + expl = "%s %s %s" % (left_expl, sym, next_expl) + expls.append(ast.Str(expl)) + res_expr = ast.Compare(left_res, [op], [next_res]) + self.statements.append(ast.Assign([store_names[i]], res_expr)) + left_res, left_expl = next_res, next_expl + # Use pytest.assertion.util._reprcompare if that's available. + expl_call = self.helper( + "call_reprcompare", + ast.Tuple(syms, ast.Load()), + ast.Tuple(load_names, ast.Load()), + ast.Tuple(expls, ast.Load()), + ast.Tuple(results, ast.Load()), + ) + if len(comp.ops) > 1: + res = ast.BoolOp(ast.And(), load_names) + else: + res = load_names[0] + return res, self.explanation_param(self.pop_format_context(expl_call)) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/rewrite.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/rewrite.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df008034b4fbebccd42767bc6a823a5acaaee82f GIT binary patch literal 35108 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 max_chars: + break + iterated_char_count += len(input_line) + + # Create truncated explanation with modified final line + truncated_result = input_lines[:iterated_index] + final_line = input_lines[iterated_index] + if final_line: + final_line_truncate_point = max_chars - iterated_char_count + final_line = final_line[:final_line_truncate_point] + truncated_result.append(final_line) + return truncated_result diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/truncate.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/truncate.pyc new file mode 100644 index 0000000000000000000000000000000000000000..18ffdb797148e1fff56eaa24901e55e9fc2939c8 GIT binary patch literal 3421 zcmb_e-EJG#5uW8z6iL%o;vd;=(&W@eV!E&?qbTfL7(pG$NgUWhy0j95iLqUA56L4f zcj-N6WeE|B0`_H}pg>=t7kQRk=DrV*2S~n|B`F%oT_lRbIdgty&is6H{GZM?JOBRi zn?B9{eEk0HA0FBNfQgBEpdQ5)N<11@s8=D6$G(hx>iOlkD&s2ks^xfvk`?N$$X@U@ z>eVO)U8VRO_39MYsn?(w3mWv=quv>coAes$S`?oV=B&(OL5p5P?>UOkihPab-S!&H zv)_X>cbrL#Guo;_mMfPRX+Lr%9jeG$oja4IDl6QiaGhpzv&eIuIu+|dR3uLA>QQuH zvLaW;DwoZ7>!rQ=aFRqRPRvrPBG>%qN6P7ZY|}6jrMnP<(@LVn^A_J_nP(6?`{2sDA+Ch>ksauzKfr( zD6)UYnx?|v)6$h%xe>f`;>{(GC^NvURzq{3Q~1R?Wt<+fH+5o$W;f9tIjhYkxJw`* zEGv>YoCONk#)ficAzISVX8YY4kR_q3Vl4ZbV8+p5nCNuqMs18ph`kSP!;L2!6EnGO zQtP55x&6iX&iIQb8kM@bOYvg=-MbzqwN9-mRi-W!%X*e?HbV)N;y8Ji& z`9_v!Y3W|W+S}|E$ENkObYO@CFZGRF ztA1J0$42MVgDZ0`&aOC}=PEiQ?$2T#s ztgtqN5>^5SYfCnpVlJ&@pyb=oO9x zQ{`TD75Q_yWbZEyW2VZdUYTMK8cUV#fkQW$)@I}V3gti0v9zi^5n}m0Os5w_x=L?I zd10MJ$b#8IXxOWhYtUYkF9vDJV<~v#H>ih2-8Lha{XfW?SX&}#Vt}OCKv@UGAEGsl zBB#dDKAK!H5yV}9mRiC^bhu^UmX@ZC;L1nyW(9z```0_FKZ^3Gk4|RQZS`_w`Xdc| zkfTkCW~p)=L1yK^fyu4wsHZ^sT#q9oZBCk>dTEjbZ4`2}$-a)&?vaXAVWXi|V{}FQ zmJo$%0%re=Kg+4w>2wUEfW1-IF`1i+TTsZcr`L{tkawJJhm*Pb|K~z zyrsUIZnqi4q(^LLsdn5Ow;q1_VCV7E@X3Q`;p0c!54*pTZhrnC=psjm&`V_VUWRUa z8G@5uwR;q@(2p z{@-Uf=%TKH8HZa89wj_%J-i)u(i?4kbgevcNRlnw4_13+rchPT3{F~lce9XTP z{5I#a^v*Dhvwj$g-65W~uE=#527E}s_z-Za1pH18-e~-zX@5"]: + lines.append(values) + else: + lines[-1] += "\\n" + values + return lines + + +def _format_lines(lines): + """Format the individual lines + + This will replace the '{', '}' and '~' characters of our mini + formatting language with the proper 'where ...', 'and ...' and ' + + ...' text, taking care of indentation along the way. + + Return a list of formatted lines. + """ + result = lines[:1] + stack = [0] + stackcnt = [0] + for line in lines[1:]: + if line.startswith("{"): + if stackcnt[-1]: + s = u("and ") + else: + s = u("where ") + stack.append(len(result)) + stackcnt[-1] += 1 + stackcnt.append(0) + result.append(u(" +") + u(" ") * (len(stack) - 1) + s + line[1:]) + elif line.startswith("}"): + stack.pop() + stackcnt.pop() + result[stack[-1]] += line[1:] + else: + assert line[0] in ["~", ">"] + stack[-1] += 1 + indent = len(stack) if line.startswith("~") else len(stack) - 1 + result.append(u(" ") * indent + line[1:]) + assert len(stack) == 1 + return result + + +# Provide basestring in python3 +try: + basestring = basestring +except NameError: + basestring = str + + +def assertrepr_compare(config, op, left, right): + """Return specialised explanations for some operators/operands""" + width = 80 - 15 - len(op) - 2 # 15 chars indentation, 1 space around op + left_repr = py.io.saferepr(left, maxsize=int(width // 2)) + right_repr = py.io.saferepr(right, maxsize=width - len(left_repr)) + + summary = u("%s %s %s") % (ecu(left_repr), op, ecu(right_repr)) + + def issequence(x): + return isinstance(x, Sequence) and not isinstance(x, basestring) + + def istext(x): + return isinstance(x, basestring) + + def isdict(x): + return isinstance(x, dict) + + def isset(x): + return isinstance(x, (set, frozenset)) + + def isiterable(obj): + try: + iter(obj) + return not istext(obj) + except TypeError: + return False + + verbose = config.getoption("verbose") + explanation = None + try: + if op == "==": + if istext(left) and istext(right): + explanation = _diff_text(left, right, verbose) + else: + if issequence(left) and issequence(right): + explanation = _compare_eq_sequence(left, right, verbose) + elif isset(left) and isset(right): + explanation = _compare_eq_set(left, right, verbose) + elif isdict(left) and isdict(right): + explanation = _compare_eq_dict(left, right, verbose) + if isiterable(left) and isiterable(right): + expl = _compare_eq_iterable(left, right, verbose) + if explanation is not None: + explanation.extend(expl) + else: + explanation = expl + elif op == "not in": + if istext(left) and istext(right): + explanation = _notin_text(left, right, verbose) + except Exception: + explanation = [ + u( + "(pytest_assertion plugin: representation of details failed. " + "Probably an object has a faulty __repr__.)" + ), + u(_pytest._code.ExceptionInfo()), + ] + + if not explanation: + return None + + return [summary] + explanation + + +def _diff_text(left, right, verbose=False): + """Return the explanation for the diff between text or bytes + + Unless --verbose is used this will skip leading and trailing + characters which are identical to keep the diff minimal. + + If the input are bytes they will be safely converted to text. + """ + from difflib import ndiff + + explanation = [] + + def escape_for_readable_diff(binary_text): + """ + Ensures that the internal string is always valid unicode, converting any bytes safely to valid unicode. + This is done using repr() which then needs post-processing to fix the encompassing quotes and un-escape + newlines and carriage returns (#429). + """ + r = six.text_type(repr(binary_text)[1:-1]) + r = r.replace(r"\n", "\n") + r = r.replace(r"\r", "\r") + return r + + if isinstance(left, bytes): + left = escape_for_readable_diff(left) + if isinstance(right, bytes): + right = escape_for_readable_diff(right) + if not verbose: + i = 0 # just in case left or right has zero length + for i in range(min(len(left), len(right))): + if left[i] != right[i]: + break + if i > 42: + i -= 10 # Provide some context + explanation = [ + u("Skipping %s identical leading characters in diff, use -v to show") + % i + ] + left = left[i:] + right = right[i:] + if len(left) == len(right): + for i in range(len(left)): + if left[-i] != right[-i]: + break + if i > 42: + i -= 10 # Provide some context + explanation += [ + u( + "Skipping %s identical trailing " + "characters in diff, use -v to show" + ) + % i + ] + left = left[:-i] + right = right[:-i] + keepends = True + if left.isspace() or right.isspace(): + left = repr(str(left)) + right = repr(str(right)) + explanation += [u"Strings contain only whitespace, escaping them using repr()"] + explanation += [ + line.strip("\n") + for line in ndiff(left.splitlines(keepends), right.splitlines(keepends)) + ] + return explanation + + +def _compare_eq_iterable(left, right, verbose=False): + if not verbose: + return [u("Use -v to get the full diff")] + # dynamic import to speedup pytest + import difflib + + try: + left_formatting = pprint.pformat(left).splitlines() + right_formatting = pprint.pformat(right).splitlines() + explanation = [u("Full diff:")] + except Exception: + # hack: PrettyPrinter.pformat() in python 2 fails when formatting items that can't be sorted(), ie, calling + # sorted() on a list would raise. See issue #718. + # As a workaround, the full diff is generated by using the repr() string of each item of each container. + left_formatting = sorted(repr(x) for x in left) + right_formatting = sorted(repr(x) for x in right) + explanation = [u("Full diff (fallback to calling repr on each item):")] + explanation.extend( + line.strip() for line in difflib.ndiff(left_formatting, right_formatting) + ) + return explanation + + +def _compare_eq_sequence(left, right, verbose=False): + explanation = [] + for i in range(min(len(left), len(right))): + if left[i] != right[i]: + explanation += [u("At index %s diff: %r != %r") % (i, left[i], right[i])] + break + if len(left) > len(right): + explanation += [ + u("Left contains more items, first extra item: %s") + % py.io.saferepr(left[len(right)]) + ] + elif len(left) < len(right): + explanation += [ + u("Right contains more items, first extra item: %s") + % py.io.saferepr(right[len(left)]) + ] + return explanation + + +def _compare_eq_set(left, right, verbose=False): + explanation = [] + diff_left = left - right + diff_right = right - left + if diff_left: + explanation.append(u("Extra items in the left set:")) + for item in diff_left: + explanation.append(py.io.saferepr(item)) + if diff_right: + explanation.append(u("Extra items in the right set:")) + for item in diff_right: + explanation.append(py.io.saferepr(item)) + return explanation + + +def _compare_eq_dict(left, right, verbose=False): + explanation = [] + common = set(left).intersection(set(right)) + same = {k: left[k] for k in common if left[k] == right[k]} + if same and verbose < 2: + explanation += [u("Omitting %s identical items, use -vv to show") % len(same)] + elif same: + explanation += [u("Common items:")] + explanation += pprint.pformat(same).splitlines() + diff = {k for k in common if left[k] != right[k]} + if diff: + explanation += [u("Differing items:")] + for k in diff: + explanation += [ + py.io.saferepr({k: left[k]}) + " != " + py.io.saferepr({k: right[k]}) + ] + extra_left = set(left) - set(right) + if extra_left: + explanation.append(u("Left contains more items:")) + explanation.extend( + pprint.pformat({k: left[k] for k in extra_left}).splitlines() + ) + extra_right = set(right) - set(left) + if extra_right: + explanation.append(u("Right contains more items:")) + explanation.extend( + pprint.pformat({k: right[k] for k in extra_right}).splitlines() + ) + return explanation + + +def _notin_text(term, text, verbose=False): + index = text.find(term) + head = text[:index] + tail = text[index + len(term) :] + correct_text = head + tail + diff = _diff_text(correct_text, text, verbose) + newdiff = [u("%s is contained here:") % py.io.saferepr(term, maxsize=42)] + for line in diff: + if line.startswith(u("Skipping")): + continue + if line.startswith(u("- ")): + continue + if line.startswith(u("+ ")): + newdiff.append(u(" ") + line[2:]) + else: + newdiff.append(line) + return newdiff diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/util.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/assertion/util.pyc new file mode 100644 index 0000000000000000000000000000000000000000..787fe03bc0ce27e203ef5dd6575d9a7fb28d232a GIT binary patch literal 12416 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 1: + raise ValueError("name is not allowed to contain path separators") + res = self._cachedir.joinpath("d", name) + res.mkdir(exist_ok=True, parents=True) + return py.path.local(res) + + def _getvaluepath(self, key): + return self._cachedir.joinpath("v", Path(key)) + + def get(self, key, default): + """ return cached value for the given key. If no value + was yet cached or the value cannot be read, the specified + default is returned. + + :param key: must be a ``/`` separated value. Usually the first + name is the name of your plugin or your application. + :param default: must be provided in case of a cache-miss or + invalid cache values. + + """ + path = self._getvaluepath(key) + try: + with path.open("r") as f: + return json.load(f) + except (ValueError, IOError, OSError): + return default + + def set(self, key, value): + """ save value for the given key. + + :param key: must be a ``/`` separated value. Usually the first + name is the name of your plugin or your application. + :param value: must be of any combination of basic + python types, including nested types + like e. g. lists of dictionaries. + """ + path = self._getvaluepath(key) + try: + path.parent.mkdir(exist_ok=True, parents=True) + except (IOError, OSError): + self.warn("could not create cache path {path}", path=path) + return + try: + f = path.open("wb" if PY2 else "w") + except (IOError, OSError): + self.warn("cache could not write path {path}", path=path) + else: + with f: + json.dump(value, f, indent=2, sort_keys=True) + self._ensure_supporting_files() + + def _ensure_supporting_files(self): + """Create supporting files in the cache dir that are not really part of the cache.""" + if self._cachedir.is_dir(): + readme_path = self._cachedir / "README.md" + if not readme_path.is_file(): + readme_path.write_text(README_CONTENT) + + msg = u"# created by pytest automatically, do not change\n*" + self._cachedir.joinpath(".gitignore").write_text(msg, encoding="UTF-8") + + +class LFPlugin(object): + """ Plugin which implements the --lf (run last-failing) option """ + + def __init__(self, config): + self.config = config + active_keys = "lf", "failedfirst" + self.active = any(config.getoption(key) for key in active_keys) + self.lastfailed = config.cache.get("cache/lastfailed", {}) + self._previously_failed_count = None + self._no_failures_behavior = self.config.getoption("last_failed_no_failures") + + def pytest_report_collectionfinish(self): + if self.active and self.config.getoption("verbose") >= 0: + if not self._previously_failed_count: + return None + noun = "failure" if self._previously_failed_count == 1 else "failures" + suffix = " first" if self.config.getoption("failedfirst") else "" + mode = "rerun previous {count} {noun}{suffix}".format( + count=self._previously_failed_count, suffix=suffix, noun=noun + ) + return "run-last-failure: %s" % mode + + def pytest_runtest_logreport(self, report): + if (report.when == "call" and report.passed) or report.skipped: + self.lastfailed.pop(report.nodeid, None) + elif report.failed: + self.lastfailed[report.nodeid] = True + + def pytest_collectreport(self, report): + passed = report.outcome in ("passed", "skipped") + if passed: + if report.nodeid in self.lastfailed: + self.lastfailed.pop(report.nodeid) + self.lastfailed.update((item.nodeid, True) for item in report.result) + else: + self.lastfailed[report.nodeid] = True + + def pytest_collection_modifyitems(self, session, config, items): + if self.active: + if self.lastfailed: + previously_failed = [] + previously_passed = [] + for item in items: + if item.nodeid in self.lastfailed: + previously_failed.append(item) + else: + previously_passed.append(item) + self._previously_failed_count = len(previously_failed) + if not previously_failed: + # running a subset of all tests with recorded failures outside + # of the set of tests currently executing + return + if self.config.getoption("lf"): + items[:] = previously_failed + config.hook.pytest_deselected(items=previously_passed) + else: + items[:] = previously_failed + previously_passed + elif self._no_failures_behavior == "none": + config.hook.pytest_deselected(items=items) + items[:] = [] + + def pytest_sessionfinish(self, session): + config = self.config + if config.getoption("cacheshow") or hasattr(config, "slaveinput"): + return + + saved_lastfailed = config.cache.get("cache/lastfailed", {}) + if saved_lastfailed != self.lastfailed: + config.cache.set("cache/lastfailed", self.lastfailed) + + +class NFPlugin(object): + """ Plugin which implements the --nf (run new-first) option """ + + def __init__(self, config): + self.config = config + self.active = config.option.newfirst + self.cached_nodeids = config.cache.get("cache/nodeids", []) + + def pytest_collection_modifyitems(self, session, config, items): + if self.active: + new_items = OrderedDict() + other_items = OrderedDict() + for item in items: + if item.nodeid not in self.cached_nodeids: + new_items[item.nodeid] = item + else: + other_items[item.nodeid] = item + + items[:] = self._get_increasing_order( + six.itervalues(new_items) + ) + self._get_increasing_order(six.itervalues(other_items)) + self.cached_nodeids = [x.nodeid for x in items if isinstance(x, pytest.Item)] + + def _get_increasing_order(self, items): + return sorted(items, key=lambda item: item.fspath.mtime(), reverse=True) + + def pytest_sessionfinish(self, session): + config = self.config + if config.getoption("cacheshow") or hasattr(config, "slaveinput"): + return + + config.cache.set("cache/nodeids", self.cached_nodeids) + + +def pytest_addoption(parser): + group = parser.getgroup("general") + group.addoption( + "--lf", + "--last-failed", + action="store_true", + dest="lf", + help="rerun only the tests that failed " + "at the last run (or all if none failed)", + ) + group.addoption( + "--ff", + "--failed-first", + action="store_true", + dest="failedfirst", + help="run all tests but run the last failures first. " + "This may re-order tests and thus lead to " + "repeated fixture setup/teardown", + ) + group.addoption( + "--nf", + "--new-first", + action="store_true", + dest="newfirst", + help="run tests from new files first, then the rest of the tests " + "sorted by file mtime", + ) + group.addoption( + "--cache-show", + action="store_true", + dest="cacheshow", + help="show cache contents, don't perform collection or tests", + ) + group.addoption( + "--cache-clear", + action="store_true", + dest="cacheclear", + help="remove all cache contents at start of test run.", + ) + parser.addini("cache_dir", default=".pytest_cache", help="cache directory path.") + group.addoption( + "--lfnf", + "--last-failed-no-failures", + action="store", + dest="last_failed_no_failures", + choices=("all", "none"), + default="all", + help="change the behavior when no test failed in the last run or no " + "information about the last failures was found in the cache", + ) + + +def pytest_cmdline_main(config): + if config.option.cacheshow: + from _pytest.main import wrap_session + + return wrap_session(config, cacheshow) + + +@pytest.hookimpl(tryfirst=True) +def pytest_configure(config): + config.cache = Cache.for_config(config) + config.pluginmanager.register(LFPlugin(config), "lfplugin") + config.pluginmanager.register(NFPlugin(config), "nfplugin") + + +@pytest.fixture +def cache(request): + """ + Return a cache object that can persist state between testing sessions. + + cache.get(key, default) + cache.set(key, value) + + Keys must be a ``/`` separated value, where the first part is usually the + name of your plugin or application to avoid clashes with other cache users. + + Values can be any object handled by the json stdlib module. + """ + return request.config.cache + + +def pytest_report_header(config): + if config.option.verbose: + cachedir = config.cache._cachedir + # TODO: evaluate generating upward relative paths + # starting with .., ../.. if sensible + + try: + displaypath = cachedir.relative_to(config.rootdir) + except ValueError: + displaypath = cachedir + return "cachedir: {}".format(displaypath) + + +def cacheshow(config, session): + from pprint import pformat + + tw = py.io.TerminalWriter() + tw.line("cachedir: " + str(config.cache._cachedir)) + if not config.cache._cachedir.is_dir(): + tw.line("cache is empty") + return 0 + dummy = object() + basedir = config.cache._cachedir + vdir = basedir / "v" + tw.sep("-", "cache values") + for valpath in sorted(x for x in vdir.rglob("*") if x.is_file()): + key = valpath.relative_to(vdir) + val = config.cache.get(key, dummy) + if val is dummy: + tw.line("%s contains unreadable content, will be ignored" % key) + else: + tw.line("%s contains:" % key) + for line in pformat(val).splitlines(): + tw.line(" " + line) + + ddir = basedir / "d" + if ddir.is_dir(): + contents = sorted(ddir.rglob("*")) + tw.sep("-", "cache directories") + for p in contents: + # if p.check(dir=1): + # print("%s/" % p.relto(basedir)) + if p.is_file(): + key = p.relative_to(basedir) + tw.line("{} is a file of length {:d}".format(key, p.stat().st_size)) + return 0 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/cacheprovider.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/cacheprovider.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3be25dd5a55a892f6b5e6d131072874358d237dc GIT binary patch literal 15355 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" % (self.targetfd, self.targetfd_save) + + def start(self): + """ Start capturing on targetfd using memorized tmpfile. """ + try: + os.fstat(self.targetfd_save) + except (AttributeError, OSError): + raise ValueError("saved filedescriptor not valid anymore") + os.dup2(self.tmpfile_fd, self.targetfd) + self.syscapture.start() + + def snap(self): + self.tmpfile.seek(0) + res = self.tmpfile.read() + self.tmpfile.seek(0) + self.tmpfile.truncate() + return res + + def done(self): + """ stop capturing, restore streams, return original capture file, + seeked to position zero. """ + targetfd_save = self.__dict__.pop("targetfd_save") + os.dup2(targetfd_save, self.targetfd) + os.close(targetfd_save) + self.syscapture.done() + _attempt_to_close_capture_file(self.tmpfile) + + def suspend(self): + self.syscapture.suspend() + os.dup2(self.targetfd_save, self.targetfd) + + def resume(self): + self.syscapture.resume() + os.dup2(self.tmpfile_fd, self.targetfd) + + def writeorg(self, data): + """ write to original file descriptor. """ + if isinstance(data, six.text_type): + data = data.encode("utf8") # XXX use encoding of original stream + os.write(self.targetfd_save, data) + + +class FDCapture(FDCaptureBinary): + """Capture IO to/from a given os-level filedescriptor. + + snap() produces text + """ + + EMPTY_BUFFER = str() + + def snap(self): + res = FDCaptureBinary.snap(self) + enc = getattr(self.tmpfile, "encoding", None) + if enc and isinstance(res, bytes): + res = six.text_type(res, enc, "replace") + return res + + +class SysCapture(object): + + EMPTY_BUFFER = str() + + def __init__(self, fd, tmpfile=None): + name = patchsysdict[fd] + self._old = getattr(sys, name) + self.name = name + if tmpfile is None: + if name == "stdin": + tmpfile = DontReadFromInput() + else: + tmpfile = CaptureIO() + self.tmpfile = tmpfile + + def start(self): + setattr(sys, self.name, self.tmpfile) + + def snap(self): + res = self.tmpfile.getvalue() + self.tmpfile.seek(0) + self.tmpfile.truncate() + return res + + def done(self): + setattr(sys, self.name, self._old) + del self._old + _attempt_to_close_capture_file(self.tmpfile) + + def suspend(self): + setattr(sys, self.name, self._old) + + def resume(self): + setattr(sys, self.name, self.tmpfile) + + def writeorg(self, data): + self._old.write(data) + self._old.flush() + + +class SysCaptureBinary(SysCapture): + EMPTY_BUFFER = bytes() + + def snap(self): + res = self.tmpfile.buffer.getvalue() + self.tmpfile.seek(0) + self.tmpfile.truncate() + return res + + +class DontReadFromInput(six.Iterator): + """Temporary stub class. Ideally when stdin is accessed, the + capturing should be turned off, with possibly all data captured + so far sent to the screen. This should be configurable, though, + because in automated test runs it is better to crash than + hang indefinitely. + """ + + encoding = None + + def read(self, *args): + raise IOError("reading from stdin while output is captured") + + readline = read + readlines = read + __next__ = read + + def __iter__(self): + return self + + def fileno(self): + raise UnsupportedOperation("redirected stdin is pseudofile, has no fileno()") + + def isatty(self): + return False + + def close(self): + pass + + @property + def buffer(self): + if sys.version_info >= (3, 0): + return self + else: + raise AttributeError("redirected stdin has no attribute buffer") + + +def _colorama_workaround(): + """ + Ensure colorama is imported so that it attaches to the correct stdio + handles on Windows. + + colorama uses the terminal on import time. So if something does the + first import of colorama while I/O capture is active, colorama will + fail in various ways. + """ + + if not sys.platform.startswith("win32"): + return + try: + import colorama # noqa + except ImportError: + pass + + +def _readline_workaround(): + """ + Ensure readline is imported so that it attaches to the correct stdio + handles on Windows. + + Pdb uses readline support where available--when not running from the Python + prompt, the readline module is not imported until running the pdb REPL. If + running pytest with the --pdb option this means the readline module is not + imported until after I/O capture has been started. + + This is a problem for pyreadline, which is often used to implement readline + support on Windows, as it does not attach to the correct handles for stdout + and/or stdin if they have been redirected by the FDCapture mechanism. This + workaround ensures that readline is imported before I/O capture is setup so + that it can attach to the actual stdin/out for the console. + + See https://github.com/pytest-dev/pytest/pull/1281 + """ + + if not sys.platform.startswith("win32"): + return + try: + import readline # noqa + except ImportError: + pass + + +def _py36_windowsconsoleio_workaround(stream): + """ + Python 3.6 implemented unicode console handling for Windows. This works + by reading/writing to the raw console handle using + ``{Read,Write}ConsoleW``. + + The problem is that we are going to ``dup2`` over the stdio file + descriptors when doing ``FDCapture`` and this will ``CloseHandle`` the + handles used by Python to write to the console. Though there is still some + weirdness and the console handle seems to only be closed randomly and not + on the first call to ``CloseHandle``, or maybe it gets reopened with the + same handle value when we suspend capturing. + + The workaround in this case will reopen stdio with a different fd which + also means a different handle by replicating the logic in + "Py_lifecycle.c:initstdio/create_stdio". + + :param stream: in practice ``sys.stdout`` or ``sys.stderr``, but given + here as parameter for unittesting purposes. + + See https://github.com/pytest-dev/py/issues/103 + """ + if not sys.platform.startswith("win32") or sys.version_info[:2] < (3, 6): + return + + # bail out if ``stream`` doesn't seem like a proper ``io`` stream (#2666) + if not hasattr(stream, "buffer"): + return + + buffered = hasattr(stream.buffer, "raw") + raw_stdout = stream.buffer.raw if buffered else stream.buffer + + if not isinstance(raw_stdout, io._WindowsConsoleIO): + return + + def _reopen_stdio(f, mode): + if not buffered and mode[0] == "w": + buffering = 0 + else: + buffering = -1 + + return io.TextIOWrapper( + open(os.dup(f.fileno()), mode, buffering), + f.encoding, + f.errors, + f.newlines, + f.line_buffering, + ) + + sys.__stdin__ = sys.stdin = _reopen_stdio(sys.stdin, "rb") + sys.__stdout__ = sys.stdout = _reopen_stdio(sys.stdout, "wb") + sys.__stderr__ = sys.stderr = _reopen_stdio(sys.stderr, "wb") + + +def _attempt_to_close_capture_file(f): + """Suppress IOError when closing the temporary file used for capturing streams in py27 (#2370)""" + if six.PY2: + try: + f.close() + except IOError: + pass + else: + f.close() diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/capture.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/capture.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d5987f9210eee911d6d80734668e491ab499efb7 GIT binary patch literal 31826 zcmdU&e~=uDmU_U>@t;RgW%1PF>6Qlxk!fjbhENExCS5+oo&5)b5nBq&Jn-rmj} zZh^hs)6O2ilL$)|7)LBCrW89$6sh7;S+2+xMRELxT&X0sq9}5HxMC}nIB`XlA9fPO zso0L=q$){O%K3cXo0;7^fD(0gv@0ODucxP{r~AFv?^nO>8TrE<+owPEoewrc{;$U0 z$L1;_`&>1IB!qLMm5@|JyAqbF;aoLTbUk9%BjMbLU)Suq7S7fDdNj00!?{s=mi$;a zH&*1w!@2Pyzb%~GR^%tbxe3dUh4y$@+8)kr_qN7E`-ZSI8O}|XZSM%@b`;O;4Ci)Q zep_ho3QN1gx!s}C8VQND_E54tBsYYIlF5+l2oIgRF(f;~%ZzJJNOy({dqc7-q&J1D zG`(BpS1aM%zL4A)(*0q9f$p)w5I%73=8#bPrjT%Ze^_L!2SReQwRO1eocXGq=>64JZE`D(Zd`tAzJTZ`Ivm$ly-lBuHfp0f1rklb68-dC1Rh2(HZ zrwlkp%F=s6GF{Z2DNFAS$^9X{*Xlk{mfjbVqaoc9E*!QS50*EMgye0yI5!=Vw_9c= zBoA5U{*XLunFm5L8qQ3;12WB~NwzPiy(9fJ>ql8X>8|u=_>=Z}QM0k!U+J|v=cA>x zx!CBmvZd+m+gqaYsR~Jd7fEA2>$X?=X}z_y-0k)K#x`ywtxK(})$Mr6PD++(t6yJO z=`{P4&-#syvrG<4hV?%?jTsakIIR!_FtsTWUB{Dk!`J$1T2$`xIv z@iEUahL&|Ozh*EkrebKSP?<@7PiThzD4CZ+xL`9By1h~fFIB zseSZfwm(jKKJ766cBTOyIpPRNZCDKhT0YipFSY7Py3kl@_vsx2SXri{AuJ?znXP74 zWhw19E;V}A2KmKqV#UqHZmS8(^+c!JukmLwZ7*ks$&}(j4#v)jq~)=$r=>4Z1=YaMCXEvmi<#+xhsXrbGS%E7*iMyK>l zUqp01?Vs;;8QFF&>Ww7nE{iylDQ*NyvIoe` z^p}=rmRrk5TJ*EgZXbE?()~;CeQIWTRa0Q5p8w5ZKh5QCp7PQ`4-Qh6-AWQFyDDS$ z-yzanmGP=yDK)4pcDolZ_ZrJUwJAJlB>LMF{e72=)8Cbm@Y0A;UL{N2LUV&oUbr#5w9VSm z^&Y#PD7wzmXAG&cu^2&LNeZJ1H9PbUcJ#fpVd2!r8HY^G}HKi z?%qxUNj~^c{c@{A3z;TWx1F}S^~>Gf#Rik3lh{aO@egZ_DcFW#E;WX#_>ErLNZPGV zI($PccDcO**m6`DcAoHw`jlhG=3*~B-^%*TEX{SMV!hc;8y)7R*cWquxqiOgoo}@3 zCEMulw>xm3*SNKkEvKDi?M>%w>5I))XTcfMEL^8ASgHH#D+{NWd#!#NZzDIQ+0_?& zPaD1Vs+iG2>wNqsl?vbC?hIw{^`%s0D}TA?}teeAA`^PlBLc8^Tdc8qN2dOLUaa4#0CUNdcu zYuY@Aj7yRKh%nNsrqIh|5J6STAkmBiNU^M030mc-WyV8_6dN;@2+=lfg$TH9mbpRl zPE8@iwp#`vc7tVhhICiBfQXyaCHw>xF)!Isl%Ol_4Hr=TsJsvUQ9)_UEAPMNR;fnb ze9f&Ji>D4;bIbKi-i|K0?p=F}r*0{3-BfgAUvUe4)1NAD?JsWK8salkHv{kNEAX1_ z5&!ZD68Y3Q9QowQqW)r|Pm)G({9YH8r_oPyO)5o?k{FFzS(J7f^X)X5Nm`j@qQo^V zrfxemQ6DurNt8C4i}pHG&z2E+X*31@T3J3!qwV(Ls1Kowv)nTsJq{K1>=DUm-bCf) zE^1LmHG1UpGEE|gdKtM(H@frv2K*q=%j`W!R9;Czzw6JG{h8^lbgUP>RH_=9puq6# zV%lS@{Q8%>Q9HeqwrO>tc-JwjbZ_LG;aGHevDI808hMY-S~}1FjrQfn>b20cw?^LsrhpA~*WfvwcX6ThBHC`MKBk?h z;WY|nH9|$nb)Qy0i}Jd3UHpqXc^`o=dXf6sqsLq=BwXaRv+3xRDz>t`dre^z4%mbV zMCjLI&F3|$PMRi;f)veIumu7|D^b635xn-&CY2B~QTGy9R}BYp0eT--Q?jx6Js}41 zW(rVE(I4t2K9zw@m>z;mC3D7<>{-{sBvtB8xABAI`!}lK8cr`MQg5#GdMPSC+<3|L zu^Po$+FpqD)TSAzIDFmMX1)G`S{C;XaL9>DIZpN0#(9+tN}Skga! zgv7*5&Ouywn<^lI)9TbsuUzSvQjlZQjWE~2@9Iry+$QCoLi=y!4Vi#@wzrb@^~#e^ z7R3^YXI8V~b$9Anl|A2RucRk>y>8EN6+ced*5FABLLJq;=}N?(<}#DY7b=sLgT=4f zL{bI)M4pB+!AE+n(dET$A=@V$0Z0|1ACsCkOa|KZnipIv9wJ)-C;n4Pj9&HP$6+Ns z84fnw_`SOMD2eHTSOF*~-dE|4>XHFtv-BF@PfIO+Ii2pS?5kWm=pUkj4}~#E$9{V; zGLfe%`Zj!BP{jvdsJ`l~&(xtI@1bxReGER2-cs*(>)l@Kyy-c$+?3AvJ1u#cs z!VVZ~mTSa=QLC;`O+9M5C^t7vnzDp1^UFzd53}-GWQnN{BdZV$14N0BNGo?r+rp{y zHh=YNV?*>NY=8>>XR4IgsM;*LFUQ7Jh*5Z`!iojU?9Y&#l6r(f$!NJwNA#*&`GBXakILy zD8KVK*T(79X(OWi$<304b*C6&(VZXVZB8OJBN1U1XsL_4$2VI8RgxpO^QHoLSniXYu`yU_DpE^Ods_1+KKv zigNhp%BNl!@T8|`^a5Ki`kVK=0zvQ0pRvRnH4aKa`@?{+s{44MKKv$fOB`ju5 zPmHC0#g8cw(~s{|^0X3kD0k#nj(hbgq~b^}@paJhwA>W5sI7q2tC;XD;E&~kvru|?rSgJz+9%)6fxEudzn2h=Y1#f*<|up@5wzi-Clf*t0CJ?U4{lW zjaIFZHbPRcQQA>leA3$-f#vtosGUk;gEw#wxc~OM6%x+HkDt3H^gZxBCsi z<<%P1?lG#G_Az7_N_cL1NH^0+KBU~6RL4oy?=rM+aVr;|6D*#U{Vy5s9aInjn))pT zyBc2A>UO~qo_WCt#^j}W`pr$|Drr-l*B#fSw`43g(cHSR*c*S9a(D4p_ilC=HQJJ! z?~NOU{0{3zp%;F83kRX;RCp=hxPe@Uw2GJh#_(WlcK3U$3$0$(FR4r-{t1a6X#`GX zSDo(_6GJs(X}d#obX1r8JlWu?fL0Q73|vfC=exLbadF9TXKCeMbJGpd!HoVB?CTKC zTNgWxHvR1O{_UWfQ(EOPAlGdzt6ulD+qy5pacN3jJ?S><_4qiI-5n!eiNV*I^PRdZ zIdnV_x~9!YbFpSwI+4=UZq56eqF?3Iy81@ z)c&g(8^hXXNnb8C%gwhsghCYSR+y>g2jmu6zh^`}LVa-$BkE-`67PlTiBk;*x>yMZ z9&-;yuPx7lt67vFC_Rtlmh<#Ix02!)DP^!&TjaizF&3vzq1atCQsGhEWDlzr1&I0C^4kglMnflWEEk%E(X z*oqq*$idRr@jrR)gsn714l?;SSe>y2Q*7=oCO335?QuVIbB2<#2*Bk<(m%|nkpsS5 zLL#)J)z$)5bg9*#F{i`nA(zlSG?6cRNwE0Zhc5#W#In-UQp?=j6b_`r5ieAAp(0_4 ztDR0q+~Zc+Gw;&nR=cfbqPaOu{<%5pT6g{e+EM1q9`VN*dF~YWaRDzPfvsA^$9g1y z7+bQ4-$Ny5@1G>MC9VSN$RE&}>o(&%u$!CL;P*5Y*5g+eCCd`%lG8SGF>p}Eiz%il z$}>2>*AYN1Kmaw&7%BLf-u(X`0lYrk&r7MlF7iLlsEJ-={NlGxlg=CE<OnEY{f+&;}VTbmJe>txu5{LpoEguN*i2ywz0nabEO) z`DNQl!uXC6#Qo=514A!WTs)#qmu5hj@_PeR@EiF_6DI9c)N}I8&jrNa}G&ymwvJbEGD2}rDGkU+8*FO=ch0Q%r1}40*usOxd@$9yc zPJ{~t%vt2zRRYm&P~4aRnSFx9&~w`O1GFOD*W;UxEw3Jv5IHsnT#yoThokjH&NSBF zAiBs1bxrMsB(H3*E3BD38fb)W=%;a;Y4|QOrB_gv9BML7ax)f*2GaE6e^WN=zIahy z5;rJ246~cWPQ$Q&6ZnNo5JoWUmAE+OH?&Qf6vC%|vH&NKax)Rj> zq4l4?s8-eV6u(VT$#I^4x2VL_Dhni1xMfpg(ofWEU^+vlRI3>FRST3NM5T9HRv79P ziWORwQUZ(6upC$lP7#l*I}2lHinFc4NS2a58~-KJfdkprZsI2>GtwEX1;-~;&m0$b zDra!8XWy^N>hPAV=Pzw4npvVj31Oh}90rA0tUeGpu?S+tZ zqp6z0cPioGs?$_W6jjxwQI<%o4C4{BER71OehpCVff7E+7_4}--j8Ha_^N~p4vBo}Fr2W}L=Gix;vU0S6Y zTAH%uk%zVQ1X$I=!#oFls2!s6jc@?SnoCx?2+_9(5Td?Foc#h_h>688mXO=l5>EMy zENylI7Zw`5!>}OvSL6{enI@Mb{=8^@Wnm%h()WXl@uLV>(S*_ zfARVjdxj|EMWsk9LLj5a1p3bfJYd(MHKSG#iaFZY1NBq19r@2x`bNCjapnkN8ml1h#3; zuJ6XUxZKGBZWtP@1W(VpRbX(6X<-W|{)cFeO^T(Pf&xGq1dOMaVS zXXf23R^xFX<}Rs`1CZ{N=1Y88$%{(F&fGaKSrCg6#x@;AA+bOke?-YgmHafxpmUbn zn9J03v&YplO|7vSe)4gAF#4E~hDHaanRz2H5rBcKieW8%JVBR$nmjAlgym4*mOxZk1t_{Mt z32?`dus9Gigx#8id>VatLIX8^x!r0i22H#0^1yRb^u(!8K6%6<@FPN_mb+Qj!ZGWL zpW&Wp@h-b0&kOfq-oVMCj0HVfm@4!rg=e5}xYJy_nYyOfmz$;HL#lVH5~=fEkG*-g z-EZLfgkF>;T52~xn!Ru#{uxyjX7h-Doa5f1_=^bB}GJnuV@?(vs-X;W|3KXD5)4jw0yzCPoC&BrK! zFQXx%{&0p9o{lsea zvx0%}7I3y67=*j2=LUs{4C6$BW#r-uhBXAe<~SisgK@@RqN;V%Cf)`1<=86*__H~x z-Fa=c*;%Ee(Qj;a9A;SCdXJjUK0m6=%Gq{I!muwctT4&#-E}ivRYSu30BHD1N_8ORuU^(gxVTTt)1TPSkdd#$TXdphBA=+N8+- ziDes`)Wpr%$47VI;GC;I=|Cm+Jg6q50MiA0C_zQl=;;yGb!qPb0+hia># zGf=h~x{qaN;ZbSowfcz$4FB&ZqsX%ZlF>qb!AgQVtxvy>)D|4jg=b=_h_D3djq(=&u-v=1$4B_69xsnB;R48VOvas#iI`fyM?n{Nc`Gh zuoH-A|Jh(Qb4z^Ba^ZueyB{)1BlZiXiK8|K#&Df2YcN9flf@9Z;S5?gj9U|)m@~V_ zX&3crxeTw(I=JN)S<}HWHN&hd3}G|07uqY?q82W+#YUVkZ7i|V&mEr6(v*S8rmb<| zZtuK1Co~ohN0TYBH4Y0oMt-S;9_u<|#C+;ka?28W(&0BiDnR#K4#YB(6AU7Y2JsTE zr5y9!Xowbak;jwUaD9%P)Gf&!)>Vse_B0t{y`s9!vffyR@~;RoJIP3+ak?s^}^<`#*j^LyK)TPvcbBJq)kX2L% zx5m3CCh_Yu_qsrFiORW=+3yMjNCnXnqW*u&TsfYp2=N( z`3>x+p4}i+xO@UR;Oy77#51cj8_o4&UL-=_&3QFcmQTFMB&Py-(|)#>zF(G)s;zhw z*8FK^IZbkplfn0tpehQC|GpAKM2%cRtj>T&w~)Wh()e!*_}h03~ojkAE@ZKlfRzKbu=mJ0&8>`ZG_lg`ezj%LM3|D(XBSrV!vmD?+`Q(D>_ z@>!VAP#7E_&QW_@WfCmzIKERk@q<`1!Mw-j+Zgbe%}DDLwE5T6Q*&Wdc2@VvfkCt% z|0d0xneFCY%qCUspZI}kP^yNr6dlzSQI5m#12WK2{eX-e!ipA>vgb&097m^4qa4gE^tww?BVQ-( zX1SY2X4D{LCU?1O`b^!!27eB%VOclIBMZ#QV?F~7berBFeBa2>rNF>}Ls&gHuzt`1 za|L(=&(}S8zG~+AddfUsrhMxmR@!aM%8!N4*TW06#^@FH$sUbrn9PEECr1V3)8hMwQ)n}Bzi1iMTph0e<;y@l}#athmr8=%|tHlR1P2lzN?iA&!464 zGcQOS(E2Vr>gRXzMx~^=c%j`%Ige<|U&AeBICTim?Vh5X)8$0`0?%wo10sDpQb>@q z`zrBZFP|J-4w2)==0*G~H1bEHM78!O@p7rg_HwgXvNx$49&n2^j5zj6^yZ5+eq5Ts z&@;DOHbVCD{C!h5@z-WJo8mEs7m^__pE(Ee;(FG&lHGQrd)seqb`XxD}++U~SJ-`ttq%98)Q~*k`96b!j!|Pf)iBEcHUy%bP&y0KuUk_r-25iuA8sFbl6j78P_ zaJm8UiO$zq8n#BRLk%f6yIutrvo2$wK;L#wr#hXdogOY1Vgx&pXIING9P$MXeNV?{9j}kl5UrX$0Zs&+Gtmp<79=J&c3aZ#lYy+YaA6#w#DUqc zpka7n=1yG>uWzGmF}F2AKnjbRX4?;O;yY>8cZn3PEu(f*Aci#7$QZ;*f8iZ@STmRn z@y{#Kl5G47N(`swz!px2X!C2jC@J9b+Jj}dlkAXXsMT!a^%kV- zR*6}Q$5rp2DKYIuTqypglCLZIh7z?u=%nQ~*watb(tnpKA$7nOx2ux}CPuIe$N90q zZ6V)HZrVSQr5S}0nd@6F?m{0etieo1?UvacT6J@yqnIF?H70mu-<0|QvfeqcNXc9g z5W&^rG?v~og1m^)wixKr_JmU+D*-u0O?Smh8i|T$eQob=ko9E|0WLP&JfoaAoNJ9n zZU07>CCLqz)8gOchVfNa3+{QJMyUz;HU#gM+tk zhJM~nOYc$_MCndHrcjp@!#$^%Gi01%Qd0!vN${l?tXxyjUdFin0nOb!lC?BJHAEf0svO+1!} zBri0&*;r$Ds`xc>9;zTekTIe&QLq>z~ z3!|%7bc5ffc+zp6e}?{ggcw1`doU3u^&bX8sbSZsWdOW|3;+ajnnGsR%5gWcMo_A@ znL*fcTB7u0d<%!+NHLI>HbNHT3)G zncHXyE7N?A@o#Vu|0|Lq5urJ}X>@1`vaB~anygeU1+)?kN4U5?8W`*xlx^!9QehaN zk)$5a4_WzbvO_5O_qzO!5~H-OL(Vs8lSy4fCG5xHwF!cXuhZ=<)K$ROf21VyRy!I(|Y&RK#2&$7epyp_Y`^dyd{1X&5`Pn~F zgDE+pg!LlJoZon8kvytrbS{kOXIK%JFR`-T<~3Dh2u~Kyd5z6mN&^cGiT?vFzOjtx zMFB>9Pa#EOL>@gbP$5j8`JDP8zBOQemfN8ABABn}#Uhn4PF{+Ci%f|H?l>0a$v74g zbCRPq$U|P}nS2ietwAYAMUxH%ZzS$8$35jFs={XX?NS~MA7z9t%G6PyE_+zhv_n7al;J_sguQc^_)1Uv-PMWi z%K1gN`O8gN>}Fr-cR6H0*1wJz#$}@O>eT;vqV083Z#Qc88j2a<$X^=wKILsXqI?urtbyTw8kS6k>s%e|Wb6Yu7yuhR{I z)VlFKKsrO6UYfKxX<6tj>2NtqSCXzdd^ok4)0%zLYNtDOkIPO8fGw1wKTC5zd7Uw= z0VQNnfKui0om<)mTUF-(x_*E4v)`{LMwIHqtP_!S=W%t1pC=onDLKRRNu~8PC3qV$ z-$DjJ$Q#OH*J$YNH4?)ffjz-}KEVyaNlbs%w)vam)7+QWU^+*wbZy^-=|Q(PQ3lVt zy(tSM{&PzHIms5{{;M?i1r6D~8@npC>NV@$vN_!z{-Sc4c}D+Y2a5UZPf$`^Wck$S zC@8ufe^*b4z~cX`L=cYut`fa?fH2E#5Np3hOCQq^_LCVK8>^xbjMz6)`0M|fAQGJj zF^0)U$v7qv>(1|ZUd~#A`aveSw#C(-?c7){ZQ24vheZc->WabG@~H9HJbIOb#_Y=& z;>Z5MBF${EeWF@n(_mZ2-`mkBws)$_iRMlFFjA{qFzbYGi752`tbdUsU$-rrW_PZ3 zz#xj!-jcb^sOvAY^KGW1GhIdKXZps(q8N74^(X8Fb}&^@Unl7oU3Ol6YUXqyz+5PD zfGW~xP>Zusyd6$vL8`F$(Q9>AvPcKz=bHfpW zEYdI2&J`n^;x!iLf6Bi2msbD?Yt7}F<}C% z1^D+J$|n7&E%jcHmvqke8z70IH8r$MZ{ibAzh64ng0)xN^)2GAL8<1EBdY74Ux2u2 zdWny}IGtbrz1G~icQ@<{6~iPfE<2C5g?MGzFHOp=@tUC8@xlO6x0dW9QOm2vtI+L= zFG+N1vm=<=dJ8Y4wv@S|s`VrPzSz*L-sYf9DT1Y)YM9WCrtrIJgEFG)JWJ<&bZ7w1#@0Im(#vMM` zF1RwYcMTQc15)%#HM|nSC#l{rE7bP4bbO=tsQJWgk1l*uYmGGVacknw@`*O|kZs|| z%+HCFQ?JKxvPv~B2%=F+SdHJa5AM)_-P>XJCX0J~nQOZmw|l$n9!2`RpV(*i%LQk1 zmJvNT{gC*9PZ4HJ5%rfNfAAF&(R(4^+zt|n`nFw2T676Zno&rzSW|8}^%|E8I`XDc zU$Qsan49}(%wvbo>T69`o^WzIJ2zKOd41KyCp+Y96nq(m2&JEAvy8oCZcZ!kb9`T= z_~wb|*!6FF$6##=fv4}dB=+dsTsi-ESVt!t3$t^?I4ncwgujQ?{o`X?YYYK{B&bqFkbJg_Vx{(~#S7??Rt2BjXgPT=CM26$;(c!M3X+E^~u%t=bd zzHKOckFA>vli@mfe~i|A&!f=*gXXhpttOg{J$=X1tMztkA#JYmHL~gEF z3HU}PkG^PJZo>SG$LZEy@wo*uFs8{~q-7cO=Yy!k3h9eu z@}^l7HrA3a(OvbxZf9#n43Db8uEb`fW;?@Y{X%NxAMwuv9Mr8=*JAsh#oRb``mBEj zG5%F<__DA<%H00=qH=$S#Pm$IfZBF73&~Ng?$#GDb&KogRQ+dEeS&0gQ+==&yoiki z6oiebqP{D^N!jV>e@M*iQHzzE@uFeNRBpoqum3PIkp%Ph=kolJl_;c4$<5%)0|QxT z_M%0h%h-zlKndn)i2snp7O(0#2hMrrsnfRnWh1UzhdP*WHtr;gS3B*nd7NP(e`=qSJ?YQ!&sq5}B)ye~Yj76*-eK?wW%h3lPzW<(lBh=5U zuL9`PA2{kp^MB&PAt%aoK$6)g48Oyp`yS^yPC!TpMj3kU!fQLm7X*T;}da6ctlH?ymmHJ0qrZ1oV znyS572{_0%Q0OF~_-`pWtmLYaA6N2%l8-6*xDqzQhxkX7d{oJ&lzc|XSCo92#6~ta zR>U_Sp3vQIDfzULcPn|1lAj>48Gi}}+#p)ZeB1Fox+m4p=+V~V23WD&#>m@V^@v+o zkD8BRmY0m-%I80pcZ>h*itF9gLn9M=550N+=k| (3, 0) +_PY2 = not _PY3 + + +if _PY3: + from inspect import signature, Parameter as Parameter +else: + from funcsigs import signature, Parameter as Parameter + +NoneType = type(None) +NOTSET = object() + +PY35 = sys.version_info[:2] >= (3, 5) +PY36 = sys.version_info[:2] >= (3, 6) +MODULE_NOT_FOUND_ERROR = "ModuleNotFoundError" if PY36 else "ImportError" + + +if _PY3: + from collections.abc import MutableMapping as MappingMixin + from collections.abc import Mapping, Sequence +else: + # those raise DeprecationWarnings in Python >=3.7 + from collections import MutableMapping as MappingMixin # noqa + from collections import Mapping, Sequence # noqa + + +if sys.version_info >= (3, 4): + from importlib.util import spec_from_file_location +else: + + def spec_from_file_location(*_, **__): + return None + + +def _format_args(func): + return str(signature(func)) + + +isfunction = inspect.isfunction +isclass = inspect.isclass +# used to work around a python2 exception info leak +exc_clear = getattr(sys, "exc_clear", lambda: None) +# The type of re.compile objects is not exposed in Python. +REGEX_TYPE = type(re.compile("")) + + +def is_generator(func): + genfunc = inspect.isgeneratorfunction(func) + return genfunc and not iscoroutinefunction(func) + + +def iscoroutinefunction(func): + """Return True if func is a decorated coroutine function. + + Note: copied and modified from Python 3.5's builtin couroutines.py to avoid import asyncio directly, + which in turns also initializes the "logging" module as side-effect (see issue #8). + """ + return getattr(func, "_is_coroutine", False) or ( + hasattr(inspect, "iscoroutinefunction") and inspect.iscoroutinefunction(func) + ) + + +def getlocation(function, curdir): + function = get_real_func(function) + fn = py.path.local(inspect.getfile(function)) + lineno = function.__code__.co_firstlineno + if fn.relto(curdir): + fn = fn.relto(curdir) + return "%s:%d" % (fn, lineno + 1) + + +def num_mock_patch_args(function): + """ return number of arguments used up by mock arguments (if any) """ + patchings = getattr(function, "patchings", None) + if not patchings: + return 0 + mock_modules = [sys.modules.get("mock"), sys.modules.get("unittest.mock")] + if any(mock_modules): + sentinels = [m.DEFAULT for m in mock_modules if m is not None] + return len( + [p for p in patchings if not p.attribute_name and p.new in sentinels] + ) + return len(patchings) + + +def getfuncargnames(function, is_method=False, cls=None): + """Returns the names of a function's mandatory arguments. + + This should return the names of all function arguments that: + * Aren't bound to an instance or type as in instance or class methods. + * Don't have default values. + * Aren't bound with functools.partial. + * Aren't replaced with mocks. + + The is_method and cls arguments indicate that the function should + be treated as a bound method even though it's not unless, only in + the case of cls, the function is a static method. + + @RonnyPfannschmidt: This function should be refactored when we + revisit fixtures. The fixture mechanism should ask the node for + the fixture names, and not try to obtain directly from the + function object well after collection has occurred. + + """ + # The parameters attribute of a Signature object contains an + # ordered mapping of parameter names to Parameter instances. This + # creates a tuple of the names of the parameters that don't have + # defaults. + try: + parameters = signature(function).parameters + except (ValueError, TypeError) as e: + fail( + "Could not determine arguments of {!r}: {}".format(function, e), + pytrace=False, + ) + + arg_names = tuple( + p.name + for p in parameters.values() + if ( + p.kind is Parameter.POSITIONAL_OR_KEYWORD + or p.kind is Parameter.KEYWORD_ONLY + ) + and p.default is Parameter.empty + ) + # If this function should be treated as a bound method even though + # it's passed as an unbound method or function, remove the first + # parameter name. + if is_method or ( + cls and not isinstance(cls.__dict__.get(function.__name__, None), staticmethod) + ): + arg_names = arg_names[1:] + # Remove any names that will be replaced with mocks. + if hasattr(function, "__wrapped__"): + arg_names = arg_names[num_mock_patch_args(function) :] + return arg_names + + +@contextmanager +def dummy_context_manager(): + """Context manager that does nothing, useful in situations where you might need an actual context manager or not + depending on some condition. Using this allow to keep the same code""" + yield + + +def get_default_arg_names(function): + # Note: this code intentionally mirrors the code at the beginning of getfuncargnames, + # to get the arguments which were excluded from its result because they had default values + return tuple( + p.name + for p in signature(function).parameters.values() + if p.kind in (Parameter.POSITIONAL_OR_KEYWORD, Parameter.KEYWORD_ONLY) + and p.default is not Parameter.empty + ) + + +if _PY3: + STRING_TYPES = bytes, str + UNICODE_TYPES = six.text_type + + if PY35: + + def _bytes_to_ascii(val): + return val.decode("ascii", "backslashreplace") + + else: + + def _bytes_to_ascii(val): + if val: + # source: http://goo.gl/bGsnwC + encoded_bytes, _ = codecs.escape_encode(val) + return encoded_bytes.decode("ascii") + else: + # empty bytes crashes codecs.escape_encode (#1087) + return "" + + def ascii_escaped(val): + """If val is pure ascii, returns it as a str(). Otherwise, escapes + bytes objects into a sequence of escaped bytes: + + b'\xc3\xb4\xc5\xd6' -> u'\\xc3\\xb4\\xc5\\xd6' + + and escapes unicode objects into a sequence of escaped unicode + ids, e.g.: + + '4\\nV\\U00043efa\\x0eMXWB\\x1e\\u3028\\u15fd\\xcd\\U0007d944' + + note: + the obvious "v.decode('unicode-escape')" will return + valid utf-8 unicode if it finds them in bytes, but we + want to return escaped bytes for any byte, even if they match + a utf-8 string. + + """ + if isinstance(val, bytes): + return _bytes_to_ascii(val) + else: + return val.encode("unicode_escape").decode("ascii") + + +else: + STRING_TYPES = six.string_types + UNICODE_TYPES = six.text_type + + def ascii_escaped(val): + """In py2 bytes and str are the same type, so return if it's a bytes + object, return it unchanged if it is a full ascii string, + otherwise escape it into its binary form. + + If it's a unicode string, change the unicode characters into + unicode escapes. + + """ + if isinstance(val, bytes): + try: + return val.encode("ascii") + except UnicodeDecodeError: + return val.encode("string-escape") + else: + return val.encode("unicode-escape") + + +class _PytestWrapper(object): + """Dummy wrapper around a function object for internal use only. + + Used to correctly unwrap the underlying function object + when we are creating fixtures, because we wrap the function object ourselves with a decorator + to issue warnings when the fixture function is called directly. + """ + + def __init__(self, obj): + self.obj = obj + + +def get_real_func(obj): + """ gets the real function object of the (possibly) wrapped object by + functools.wraps or functools.partial. + """ + start_obj = obj + for i in range(100): + # __pytest_wrapped__ is set by @pytest.fixture when wrapping the fixture function + # to trigger a warning if it gets called directly instead of by pytest: we don't + # want to unwrap further than this otherwise we lose useful wrappings like @mock.patch (#3774) + new_obj = getattr(obj, "__pytest_wrapped__", None) + if isinstance(new_obj, _PytestWrapper): + obj = new_obj.obj + break + new_obj = getattr(obj, "__wrapped__", None) + if new_obj is None: + break + obj = new_obj + else: + raise ValueError( + ("could not find real function of {start}\nstopped at {current}").format( + start=py.io.saferepr(start_obj), current=py.io.saferepr(obj) + ) + ) + if isinstance(obj, functools.partial): + obj = obj.func + return obj + + +def get_real_method(obj, holder): + """ + Attempts to obtain the real function object that might be wrapping ``obj``, while at the same time + returning a bound method to ``holder`` if the original object was a bound method. + """ + try: + is_method = hasattr(obj, "__func__") + obj = get_real_func(obj) + except Exception: + return obj + if is_method and hasattr(obj, "__get__") and callable(obj.__get__): + obj = obj.__get__(holder) + return obj + + +def getfslineno(obj): + # xxx let decorators etc specify a sane ordering + obj = get_real_func(obj) + if hasattr(obj, "place_as"): + obj = obj.place_as + fslineno = _pytest._code.getfslineno(obj) + assert isinstance(fslineno[1], int), obj + return fslineno + + +def getimfunc(func): + try: + return func.__func__ + except AttributeError: + return func + + +def safe_getattr(object, name, default): + """ Like getattr but return default upon any Exception or any OutcomeException. + + Attribute access can potentially fail for 'evil' Python objects. + See issue #214. + It catches OutcomeException because of #2490 (issue #580), new outcomes are derived from BaseException + instead of Exception (for more details check #2707) + """ + try: + return getattr(object, name, default) + except TEST_OUTCOME: + return default + + +def _is_unittest_unexpected_success_a_failure(): + """Return if the test suite should fail if an @expectedFailure unittest test PASSES. + + From https://docs.python.org/3/library/unittest.html?highlight=unittest#unittest.TestResult.wasSuccessful: + Changed in version 3.4: Returns False if there were any + unexpectedSuccesses from tests marked with the expectedFailure() decorator. + """ + return sys.version_info >= (3, 4) + + +if _PY3: + + def safe_str(v): + """returns v as string""" + return str(v) + + +else: + + def safe_str(v): + """returns v as string, converting to ascii if necessary""" + try: + return str(v) + except UnicodeError: + if not isinstance(v, text_type): + v = text_type(v) + errors = "replace" + return v.encode("utf-8", errors) + + +COLLECT_FAKEMODULE_ATTRIBUTES = ( + "Collector", + "Module", + "Generator", + "Function", + "Instance", + "Session", + "Item", + "Class", + "File", + "_fillfuncargs", +) + + +def _setup_collect_fakemodule(): + from types import ModuleType + import pytest + + pytest.collect = ModuleType("pytest.collect") + pytest.collect.__all__ = [] # used for setns + for attr in COLLECT_FAKEMODULE_ATTRIBUTES: + setattr(pytest.collect, attr, getattr(pytest, attr)) + + +if _PY2: + # Without this the test_dupfile_on_textio will fail, otherwise CaptureIO could directly inherit from StringIO. + from py.io import TextIO + + class CaptureIO(TextIO): + @property + def encoding(self): + return getattr(self, "_encoding", "UTF-8") + + +else: + import io + + class CaptureIO(io.TextIOWrapper): + def __init__(self): + super(CaptureIO, self).__init__( + io.BytesIO(), encoding="UTF-8", newline="", write_through=True + ) + + def getvalue(self): + return self.buffer.getvalue().decode("UTF-8") + + +class FuncargnamesCompatAttr(object): + """ helper class so that Metafunc, Function and FixtureRequest + don't need to each define the "funcargnames" compatibility attribute. + """ + + @property + def funcargnames(self): + """ alias attribute for ``fixturenames`` for pre-2.3 compatibility""" + return self.fixturenames diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/compat.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/compat.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b031e8342b180dd79637ba958591b22e9b962d01 GIT binary patch literal 15213 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 F{a;E@1}^{r literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/__init__.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/__init__.py new file mode 100644 index 0000000..8460562 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/__init__.py @@ -0,0 +1,1042 @@ +""" command line options, ini-file and conftest.py processing. """ +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import argparse +import copy +import inspect +import os +import shlex +import sys +import types +import warnings + +import py +import six +from pluggy import HookimplMarker +from pluggy import HookspecMarker +from pluggy import PluginManager + +import _pytest._code +import _pytest.assertion +import _pytest.hookspec # the extension point definitions +from .exceptions import PrintHelp +from .exceptions import UsageError +from .findpaths import determine_setup +from .findpaths import exists +from _pytest._code import ExceptionInfo +from _pytest._code import filter_traceback +from _pytest.compat import safe_str +from _pytest.outcomes import Skipped + +hookimpl = HookimplMarker("pytest") +hookspec = HookspecMarker("pytest") + + +class ConftestImportFailure(Exception): + def __init__(self, path, excinfo): + Exception.__init__(self, path, excinfo) + self.path = path + self.excinfo = excinfo + + +def main(args=None, plugins=None): + """ return exit code, after performing an in-process test run. + + :arg args: list of command line arguments. + + :arg plugins: list of plugin objects to be auto-registered during + initialization. + """ + from _pytest.main import EXIT_USAGEERROR + + try: + try: + config = _prepareconfig(args, plugins) + except ConftestImportFailure as e: + exc_info = ExceptionInfo(e.excinfo) + tw = py.io.TerminalWriter(sys.stderr) + tw.line( + "ImportError while loading conftest '{e.path}'.".format(e=e), red=True + ) + exc_info.traceback = exc_info.traceback.filter(filter_traceback) + exc_repr = ( + exc_info.getrepr(style="short", chain=False) + if exc_info.traceback + else exc_info.exconly() + ) + formatted_tb = safe_str(exc_repr) + for line in formatted_tb.splitlines(): + tw.line(line.rstrip(), red=True) + return 4 + else: + try: + return config.hook.pytest_cmdline_main(config=config) + finally: + config._ensure_unconfigure() + except UsageError as e: + tw = py.io.TerminalWriter(sys.stderr) + for msg in e.args: + tw.line("ERROR: {}\n".format(msg), red=True) + return EXIT_USAGEERROR + + +class cmdline(object): # compatibility namespace + main = staticmethod(main) + + +def filename_arg(path, optname): + """ Argparse type validator for filename arguments. + + :path: path of filename + :optname: name of the option + """ + if os.path.isdir(path): + raise UsageError("{} must be a filename, given: {}".format(optname, path)) + return path + + +def directory_arg(path, optname): + """Argparse type validator for directory arguments. + + :path: path of directory + :optname: name of the option + """ + if not os.path.isdir(path): + raise UsageError("{} must be a directory, given: {}".format(optname, path)) + return path + + +default_plugins = ( + "mark", + "main", + "terminal", + "runner", + "python", + "fixtures", + "debugging", + "unittest", + "capture", + "skipping", + "tmpdir", + "monkeypatch", + "recwarn", + "pastebin", + "helpconfig", + "nose", + "assertion", + "junitxml", + "resultlog", + "doctest", + "cacheprovider", + "freeze_support", + "setuponly", + "setupplan", + "warnings", + "logging", +) + + +builtin_plugins = set(default_plugins) +builtin_plugins.add("pytester") + + +def get_config(): + # subsequent calls to main will create a fresh instance + pluginmanager = PytestPluginManager() + config = Config(pluginmanager) + for spec in default_plugins: + pluginmanager.import_plugin(spec) + return config + + +def get_plugin_manager(): + """ + Obtain a new instance of the + :py:class:`_pytest.config.PytestPluginManager`, with default plugins + already loaded. + + This function can be used by integration with other tools, like hooking + into pytest to run tests into an IDE. + """ + return get_config().pluginmanager + + +def _prepareconfig(args=None, plugins=None): + warning = None + if args is None: + args = sys.argv[1:] + elif isinstance(args, py.path.local): + args = [str(args)] + elif not isinstance(args, (tuple, list)): + if not isinstance(args, str): + raise ValueError("not a string or argument list: %r" % (args,)) + args = shlex.split(args, posix=sys.platform != "win32") + from _pytest import deprecated + + warning = deprecated.MAIN_STR_ARGS + config = get_config() + pluginmanager = config.pluginmanager + try: + if plugins: + for plugin in plugins: + if isinstance(plugin, six.string_types): + pluginmanager.consider_pluginarg(plugin) + else: + pluginmanager.register(plugin) + if warning: + from _pytest.warnings import _issue_config_warning + + _issue_config_warning(warning, config=config) + return pluginmanager.hook.pytest_cmdline_parse( + pluginmanager=pluginmanager, args=args + ) + except BaseException: + config._ensure_unconfigure() + raise + + +class PytestPluginManager(PluginManager): + """ + Overwrites :py:class:`pluggy.PluginManager ` to add pytest-specific + functionality: + + * loading plugins from the command line, ``PYTEST_PLUGINS`` env variable and + ``pytest_plugins`` global variables found in plugins being loaded; + * ``conftest.py`` loading during start-up; + """ + + def __init__(self): + super(PytestPluginManager, self).__init__("pytest") + self._conftest_plugins = set() + + # state related to local conftest plugins + self._path2confmods = {} + self._conftestpath2mod = {} + self._confcutdir = None + self._noconftest = False + self._duplicatepaths = set() + + self.add_hookspecs(_pytest.hookspec) + self.register(self) + if os.environ.get("PYTEST_DEBUG"): + err = sys.stderr + encoding = getattr(err, "encoding", "utf8") + try: + err = py.io.dupfile(err, encoding=encoding) + except Exception: + pass + self.trace.root.setwriter(err.write) + self.enable_tracing() + + # Config._consider_importhook will set a real object if required. + self.rewrite_hook = _pytest.assertion.DummyRewriteHook() + # Used to know when we are importing conftests after the pytest_configure stage + self._configured = False + + def addhooks(self, module_or_class): + """ + .. deprecated:: 2.8 + + Use :py:meth:`pluggy.PluginManager.add_hookspecs ` + instead. + """ + warning = dict( + code="I2", + fslocation=_pytest._code.getfslineno(sys._getframe(1)), + nodeid=None, + message="use pluginmanager.add_hookspecs instead of " + "deprecated addhooks() method.", + ) + self._warn(warning) + return self.add_hookspecs(module_or_class) + + def parse_hookimpl_opts(self, plugin, name): + # pytest hooks are always prefixed with pytest_ + # so we avoid accessing possibly non-readable attributes + # (see issue #1073) + if not name.startswith("pytest_"): + return + # ignore some historic special names which can not be hooks anyway + if name == "pytest_plugins" or name.startswith("pytest_funcarg__"): + return + + method = getattr(plugin, name) + opts = super(PytestPluginManager, self).parse_hookimpl_opts(plugin, name) + + # consider only actual functions for hooks (#3775) + if not inspect.isroutine(method): + return + + # collect unmarked hooks as long as they have the `pytest_' prefix + if opts is None and name.startswith("pytest_"): + opts = {} + + if opts is not None: + for name in ("tryfirst", "trylast", "optionalhook", "hookwrapper"): + opts.setdefault(name, hasattr(method, name)) + return opts + + def parse_hookspec_opts(self, module_or_class, name): + opts = super(PytestPluginManager, self).parse_hookspec_opts( + module_or_class, name + ) + if opts is None: + method = getattr(module_or_class, name) + if name.startswith("pytest_"): + opts = { + "firstresult": hasattr(method, "firstresult"), + "historic": hasattr(method, "historic"), + } + return opts + + def register(self, plugin, name=None): + if name in ["pytest_catchlog", "pytest_capturelog"]: + self._warn( + "{} plugin has been merged into the core, " + "please remove it from your requirements.".format( + name.replace("_", "-") + ) + ) + return + ret = super(PytestPluginManager, self).register(plugin, name) + if ret: + self.hook.pytest_plugin_registered.call_historic( + kwargs=dict(plugin=plugin, manager=self) + ) + + if isinstance(plugin, types.ModuleType): + self.consider_module(plugin) + return ret + + def getplugin(self, name): + # support deprecated naming because plugins (xdist e.g.) use it + return self.get_plugin(name) + + def hasplugin(self, name): + """Return True if the plugin with the given name is registered.""" + return bool(self.get_plugin(name)) + + def pytest_configure(self, config): + # XXX now that the pluginmanager exposes hookimpl(tryfirst...) + # we should remove tryfirst/trylast as markers + config.addinivalue_line( + "markers", + "tryfirst: mark a hook implementation function such that the " + "plugin machinery will try to call it first/as early as possible.", + ) + config.addinivalue_line( + "markers", + "trylast: mark a hook implementation function such that the " + "plugin machinery will try to call it last/as late as possible.", + ) + self._configured = True + + def _warn(self, message): + kwargs = ( + message + if isinstance(message, dict) + else {"code": "I1", "message": message, "fslocation": None, "nodeid": None} + ) + self.hook.pytest_logwarning.call_historic(kwargs=kwargs) + + # + # internal API for local conftest plugin handling + # + def _set_initial_conftests(self, namespace): + """ load initial conftest files given a preparsed "namespace". + As conftest files may add their own command line options + which have arguments ('--my-opt somepath') we might get some + false positives. All builtin and 3rd party plugins will have + been loaded, however, so common options will not confuse our logic + here. + """ + current = py.path.local() + self._confcutdir = ( + current.join(namespace.confcutdir, abs=True) + if namespace.confcutdir + else None + ) + self._noconftest = namespace.noconftest + self._using_pyargs = namespace.pyargs + testpaths = namespace.file_or_dir + foundanchor = False + for path in testpaths: + path = str(path) + # remove node-id syntax + i = path.find("::") + if i != -1: + path = path[:i] + anchor = current.join(path, abs=1) + if exists(anchor): # we found some file object + self._try_load_conftest(anchor) + foundanchor = True + if not foundanchor: + self._try_load_conftest(current) + + def _try_load_conftest(self, anchor): + self._getconftestmodules(anchor) + # let's also consider test* subdirs + if anchor.check(dir=1): + for x in anchor.listdir("test*"): + if x.check(dir=1): + self._getconftestmodules(x) + + def _getconftestmodules(self, path): + if self._noconftest: + return [] + + try: + return self._path2confmods[path] + except KeyError: + if path.isfile(): + directory = path.dirpath() + else: + directory = path + # XXX these days we may rather want to use config.rootdir + # and allow users to opt into looking into the rootdir parent + # directories instead of requiring to specify confcutdir + clist = [] + for parent in directory.realpath().parts(): + if self._confcutdir and self._confcutdir.relto(parent): + continue + conftestpath = parent.join("conftest.py") + if conftestpath.isfile(): + mod = self._importconftest(conftestpath) + clist.append(mod) + + self._path2confmods[path] = clist + return clist + + def _rget_with_confmod(self, name, path): + modules = self._getconftestmodules(path) + for mod in reversed(modules): + try: + return mod, getattr(mod, name) + except AttributeError: + continue + raise KeyError(name) + + def _importconftest(self, conftestpath): + try: + return self._conftestpath2mod[conftestpath] + except KeyError: + pkgpath = conftestpath.pypkgpath() + if pkgpath is None: + _ensure_removed_sysmodule(conftestpath.purebasename) + try: + mod = conftestpath.pyimport() + if ( + hasattr(mod, "pytest_plugins") + and self._configured + and not self._using_pyargs + ): + from _pytest.deprecated import ( + PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST + ) + + warnings.warn_explicit( + PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST, + category=None, + filename=str(conftestpath), + lineno=0, + ) + except Exception: + raise ConftestImportFailure(conftestpath, sys.exc_info()) + + self._conftest_plugins.add(mod) + self._conftestpath2mod[conftestpath] = mod + dirpath = conftestpath.dirpath() + if dirpath in self._path2confmods: + for path, mods in self._path2confmods.items(): + if path and path.relto(dirpath) or path == dirpath: + assert mod not in mods + mods.append(mod) + self.trace("loaded conftestmodule %r" % (mod)) + self.consider_conftest(mod) + return mod + + # + # API for bootstrapping plugin loading + # + # + + def consider_preparse(self, args): + for opt1, opt2 in zip(args, args[1:]): + if opt1 == "-p": + self.consider_pluginarg(opt2) + + def consider_pluginarg(self, arg): + if arg.startswith("no:"): + name = arg[3:] + self.set_blocked(name) + if not name.startswith("pytest_"): + self.set_blocked("pytest_" + name) + else: + self.import_plugin(arg) + + def consider_conftest(self, conftestmodule): + self.register(conftestmodule, name=conftestmodule.__file__) + + def consider_env(self): + self._import_plugin_specs(os.environ.get("PYTEST_PLUGINS")) + + def consider_module(self, mod): + self._import_plugin_specs(getattr(mod, "pytest_plugins", [])) + + def _import_plugin_specs(self, spec): + plugins = _get_plugin_specs_as_list(spec) + for import_spec in plugins: + self.import_plugin(import_spec) + + def import_plugin(self, modname): + # most often modname refers to builtin modules, e.g. "pytester", + # "terminal" or "capture". Those plugins are registered under their + # basename for historic purposes but must be imported with the + # _pytest prefix. + assert isinstance(modname, (six.text_type, str)), ( + "module name as text required, got %r" % modname + ) + modname = str(modname) + if self.is_blocked(modname) or self.get_plugin(modname) is not None: + return + if modname in builtin_plugins: + importspec = "_pytest." + modname + else: + importspec = modname + self.rewrite_hook.mark_rewrite(importspec) + try: + __import__(importspec) + except ImportError as e: + new_exc_type = ImportError + new_exc_message = 'Error importing plugin "%s": %s' % ( + modname, + safe_str(e.args[0]), + ) + new_exc = new_exc_type(new_exc_message) + + six.reraise(new_exc_type, new_exc, sys.exc_info()[2]) + + except Skipped as e: + self._warn("skipped plugin %r: %s" % ((modname, e.msg))) + else: + mod = sys.modules[importspec] + self.register(mod, modname) + + +def _get_plugin_specs_as_list(specs): + """ + Parses a list of "plugin specs" and returns a list of plugin names. + + Plugin specs can be given as a list of strings separated by "," or already as a list/tuple in + which case it is returned as a list. Specs can also be `None` in which case an + empty list is returned. + """ + if specs is not None: + if isinstance(specs, str): + specs = specs.split(",") if specs else [] + if not isinstance(specs, (list, tuple)): + raise UsageError( + "Plugin specs must be a ','-separated string or a " + "list/tuple of strings for plugin names. Given: %r" % specs + ) + return list(specs) + return [] + + +def _ensure_removed_sysmodule(modname): + try: + del sys.modules[modname] + except KeyError: + pass + + +class Notset(object): + def __repr__(self): + return "" + + +notset = Notset() + + +def _iter_rewritable_modules(package_files): + for fn in package_files: + is_simple_module = "/" not in fn and fn.endswith(".py") + is_package = fn.count("/") == 1 and fn.endswith("__init__.py") + if is_simple_module: + module_name, _ = os.path.splitext(fn) + yield module_name + elif is_package: + package_name = os.path.dirname(fn) + yield package_name + + +class Config(object): + """ access to configuration values, pluginmanager and plugin hooks. """ + + def __init__(self, pluginmanager): + #: access to command line option as attributes. + #: (deprecated), use :py:func:`getoption() <_pytest.config.Config.getoption>` instead + self.option = argparse.Namespace() + from .argparsing import Parser, FILE_OR_DIR + + _a = FILE_OR_DIR + self._parser = Parser( + usage="%%(prog)s [options] [%s] [%s] [...]" % (_a, _a), + processopt=self._processopt, + ) + #: a pluginmanager instance + self.pluginmanager = pluginmanager + self.trace = self.pluginmanager.trace.root.get("config") + self.hook = self.pluginmanager.hook + self._inicache = {} + self._override_ini = () + self._opt2dest = {} + self._cleanup = [] + self._warn = self.pluginmanager._warn + self.pluginmanager.register(self, "pytestconfig") + self._configured = False + + def do_setns(dic): + import pytest + + setns(pytest, dic) + + self.hook.pytest_namespace.call_historic(do_setns, {}) + self.hook.pytest_addoption.call_historic(kwargs=dict(parser=self._parser)) + + def add_cleanup(self, func): + """ Add a function to be called when the config object gets out of + use (usually coninciding with pytest_unconfigure).""" + self._cleanup.append(func) + + def _do_configure(self): + assert not self._configured + self._configured = True + self.hook.pytest_configure.call_historic(kwargs=dict(config=self)) + + def _ensure_unconfigure(self): + if self._configured: + self._configured = False + self.hook.pytest_unconfigure(config=self) + self.hook.pytest_configure._call_history = [] + while self._cleanup: + fin = self._cleanup.pop() + fin() + + def warn(self, code, message, fslocation=None, nodeid=None): + """ + .. deprecated:: 3.8 + + Use :py:func:`warnings.warn` or :py:func:`warnings.warn_explicit` directly instead. + + Generate a warning for this test session. + """ + from _pytest.warning_types import RemovedInPytest4Warning + + if isinstance(fslocation, (tuple, list)) and len(fslocation) > 2: + filename, lineno = fslocation[:2] + else: + filename = "unknown file" + lineno = 0 + msg = "config.warn has been deprecated, use warnings.warn instead" + if nodeid: + msg = "{}: {}".format(nodeid, msg) + warnings.warn_explicit( + RemovedInPytest4Warning(msg), + category=None, + filename=filename, + lineno=lineno, + ) + self.hook.pytest_logwarning.call_historic( + kwargs=dict( + code=code, message=message, fslocation=fslocation, nodeid=nodeid + ) + ) + + def get_terminal_writer(self): + return self.pluginmanager.get_plugin("terminalreporter")._tw + + def pytest_cmdline_parse(self, pluginmanager, args): + # REF1 assert self == pluginmanager.config, (self, pluginmanager.config) + self.parse(args) + return self + + def notify_exception(self, excinfo, option=None): + if option and option.fulltrace: + style = "long" + else: + style = "native" + excrepr = excinfo.getrepr( + funcargs=True, showlocals=getattr(option, "showlocals", False), style=style + ) + res = self.hook.pytest_internalerror(excrepr=excrepr, excinfo=excinfo) + if not any(res): + for line in str(excrepr).split("\n"): + sys.stderr.write("INTERNALERROR> %s\n" % line) + sys.stderr.flush() + + def cwd_relative_nodeid(self, nodeid): + # nodeid's are relative to the rootpath, compute relative to cwd + if self.invocation_dir != self.rootdir: + fullpath = self.rootdir.join(nodeid) + nodeid = self.invocation_dir.bestrelpath(fullpath) + return nodeid + + @classmethod + def fromdictargs(cls, option_dict, args): + """ constructor useable for subprocesses. """ + config = get_config() + config.option.__dict__.update(option_dict) + config.parse(args, addopts=False) + for x in config.option.plugins: + config.pluginmanager.consider_pluginarg(x) + return config + + def _processopt(self, opt): + for name in opt._short_opts + opt._long_opts: + self._opt2dest[name] = opt.dest + + if hasattr(opt, "default") and opt.dest: + if not hasattr(self.option, opt.dest): + setattr(self.option, opt.dest, opt.default) + + @hookimpl(trylast=True) + def pytest_load_initial_conftests(self, early_config): + self.pluginmanager._set_initial_conftests(early_config.known_args_namespace) + + def _initini(self, args): + ns, unknown_args = self._parser.parse_known_and_unknown_args( + args, namespace=copy.copy(self.option) + ) + r = determine_setup( + ns.inifilename, + ns.file_or_dir + unknown_args, + rootdir_cmd_arg=ns.rootdir or None, + config=self, + ) + self.rootdir, self.inifile, self.inicfg = r + self._parser.extra_info["rootdir"] = self.rootdir + self._parser.extra_info["inifile"] = self.inifile + self.invocation_dir = py.path.local() + self._parser.addini("addopts", "extra command line options", "args") + self._parser.addini("minversion", "minimally required pytest version") + self._override_ini = ns.override_ini or () + + def _consider_importhook(self, args): + """Install the PEP 302 import hook if using assertion rewriting. + + Needs to parse the --assert= option from the commandline + and find all the installed plugins to mark them for rewriting + by the importhook. + """ + ns, unknown_args = self._parser.parse_known_and_unknown_args(args) + mode = ns.assertmode + if mode == "rewrite": + try: + hook = _pytest.assertion.install_importhook(self) + except SystemError: + mode = "plain" + else: + self._mark_plugins_for_rewrite(hook) + _warn_about_missing_assertion(mode) + + def _mark_plugins_for_rewrite(self, hook): + """ + Given an importhook, mark for rewrite any top-level + modules or packages in the distribution package for + all pytest plugins. + """ + import pkg_resources + + self.pluginmanager.rewrite_hook = hook + + if os.environ.get("PYTEST_DISABLE_PLUGIN_AUTOLOAD"): + # We don't autoload from setuptools entry points, no need to continue. + return + + # 'RECORD' available for plugins installed normally (pip install) + # 'SOURCES.txt' available for plugins installed in dev mode (pip install -e) + # for installed plugins 'SOURCES.txt' returns an empty list, and vice-versa + # so it shouldn't be an issue + metadata_files = "RECORD", "SOURCES.txt" + + package_files = ( + entry.split(",")[0] + for entrypoint in pkg_resources.iter_entry_points("pytest11") + for metadata in metadata_files + for entry in entrypoint.dist._get_metadata(metadata) + ) + + for name in _iter_rewritable_modules(package_files): + hook.mark_rewrite(name) + + def _preparse(self, args, addopts=True): + if addopts: + args[:] = shlex.split(os.environ.get("PYTEST_ADDOPTS", "")) + args + self._initini(args) + if addopts: + args[:] = self.getini("addopts") + args + self._checkversion() + self._consider_importhook(args) + self.pluginmanager.consider_preparse(args) + if not os.environ.get("PYTEST_DISABLE_PLUGIN_AUTOLOAD"): + # Don't autoload from setuptools entry point. Only explicitly specified + # plugins are going to be loaded. + self.pluginmanager.load_setuptools_entrypoints("pytest11") + self.pluginmanager.consider_env() + self.known_args_namespace = ns = self._parser.parse_known_args( + args, namespace=copy.copy(self.option) + ) + if self.known_args_namespace.confcutdir is None and self.inifile: + confcutdir = py.path.local(self.inifile).dirname + self.known_args_namespace.confcutdir = confcutdir + try: + self.hook.pytest_load_initial_conftests( + early_config=self, args=args, parser=self._parser + ) + except ConftestImportFailure: + e = sys.exc_info()[1] + if ns.help or ns.version: + # we don't want to prevent --help/--version to work + # so just let is pass and print a warning at the end + self._warn("could not load initial conftests (%s)\n" % e.path) + else: + raise + + def _checkversion(self): + import pytest + + minver = self.inicfg.get("minversion", None) + if minver: + ver = minver.split(".") + myver = pytest.__version__.split(".") + if myver < ver: + raise pytest.UsageError( + "%s:%d: requires pytest-%s, actual pytest-%s'" + % ( + self.inicfg.config.path, + self.inicfg.lineof("minversion"), + minver, + pytest.__version__, + ) + ) + + def parse(self, args, addopts=True): + # parse given cmdline arguments into this config object. + assert not hasattr( + self, "args" + ), "can only parse cmdline args at most once per Config object" + self._origargs = args + self.hook.pytest_addhooks.call_historic( + kwargs=dict(pluginmanager=self.pluginmanager) + ) + self._preparse(args, addopts=addopts) + # XXX deprecated hook: + self.hook.pytest_cmdline_preparse(config=self, args=args) + self._parser.after_preparse = True + try: + args = self._parser.parse_setoption( + args, self.option, namespace=self.option + ) + if not args: + cwd = os.getcwd() + if cwd == self.rootdir: + args = self.getini("testpaths") + if not args: + args = [cwd] + self.args = args + except PrintHelp: + pass + + def addinivalue_line(self, name, line): + """ add a line to an ini-file option. The option must have been + declared but might not yet be set in which case the line becomes the + the first line in its value. """ + x = self.getini(name) + assert isinstance(x, list) + x.append(line) # modifies the cached list inline + + def getini(self, name): + """ return configuration value from an :ref:`ini file `. If the + specified name hasn't been registered through a prior + :py:func:`parser.addini <_pytest.config.Parser.addini>` + call (usually from a plugin), a ValueError is raised. """ + try: + return self._inicache[name] + except KeyError: + self._inicache[name] = val = self._getini(name) + return val + + def _getini(self, name): + try: + description, type, default = self._parser._inidict[name] + except KeyError: + raise ValueError("unknown configuration value: %r" % (name,)) + value = self._get_override_ini_value(name) + if value is None: + try: + value = self.inicfg[name] + except KeyError: + if default is not None: + return default + if type is None: + return "" + return [] + if type == "pathlist": + dp = py.path.local(self.inicfg.config.path).dirpath() + values = [] + for relpath in shlex.split(value): + values.append(dp.join(relpath, abs=True)) + return values + elif type == "args": + return shlex.split(value) + elif type == "linelist": + return [t for t in map(lambda x: x.strip(), value.split("\n")) if t] + elif type == "bool": + return bool(_strtobool(value.strip())) + else: + assert type is None + return value + + def _getconftest_pathlist(self, name, path): + try: + mod, relroots = self.pluginmanager._rget_with_confmod(name, path) + except KeyError: + return None + modpath = py.path.local(mod.__file__).dirpath() + values = [] + for relroot in relroots: + if not isinstance(relroot, py.path.local): + relroot = relroot.replace("/", py.path.local.sep) + relroot = modpath.join(relroot, abs=True) + values.append(relroot) + return values + + def _get_override_ini_value(self, name): + value = None + # override_ini is a list of "ini=value" options + # always use the last item if multiple values are set for same ini-name, + # e.g. -o foo=bar1 -o foo=bar2 will set foo to bar2 + for ini_config in self._override_ini: + try: + key, user_ini_value = ini_config.split("=", 1) + except ValueError: + raise UsageError("-o/--override-ini expects option=value style.") + else: + if key == name: + value = user_ini_value + return value + + def getoption(self, name, default=notset, skip=False): + """ return command line option value. + + :arg name: name of the option. You may also specify + the literal ``--OPT`` option instead of the "dest" option name. + :arg default: default value if no option of that name exists. + :arg skip: if True raise pytest.skip if option does not exists + or has a None value. + """ + name = self._opt2dest.get(name, name) + try: + val = getattr(self.option, name) + if val is None and skip: + raise AttributeError(name) + return val + except AttributeError: + if default is not notset: + return default + if skip: + import pytest + + pytest.skip("no %r option found" % (name,)) + raise ValueError("no option named %r" % (name,)) + + def getvalue(self, name, path=None): + """ (deprecated, use getoption()) """ + return self.getoption(name) + + def getvalueorskip(self, name, path=None): + """ (deprecated, use getoption(skip=True)) """ + return self.getoption(name, skip=True) + + +def _assertion_supported(): + try: + assert False + except AssertionError: + return True + else: + return False + + +def _warn_about_missing_assertion(mode): + if not _assertion_supported(): + if mode == "plain": + sys.stderr.write( + "WARNING: ASSERTIONS ARE NOT EXECUTED" + " and FAILING TESTS WILL PASS. Are you" + " using python -O?" + ) + else: + sys.stderr.write( + "WARNING: assertions not in test modules or" + " plugins will be ignored" + " because assert statements are not executed " + "by the underlying Python interpreter " + "(are you using python -O?)\n" + ) + + +def setns(obj, dic): + import pytest + + for name, value in dic.items(): + if isinstance(value, dict): + mod = getattr(obj, name, None) + if mod is None: + modname = "pytest.%s" % name + mod = types.ModuleType(modname) + sys.modules[modname] = mod + mod.__all__ = [] + setattr(obj, name, mod) + obj.__all__.append(name) + setns(mod, value) + else: + setattr(obj, name, value) + obj.__all__.append(name) + # if obj != pytest: + # pytest.__all__.append(name) + setattr(pytest, name, value) + + +def create_terminal_writer(config, *args, **kwargs): + """Create a TerminalWriter instance configured according to the options + in the config object. Every code which requires a TerminalWriter object + and has access to a config object should use this function. + """ + tw = py.io.TerminalWriter(*args, **kwargs) + if config.option.color == "yes": + tw.hasmarkup = True + if config.option.color == "no": + tw.hasmarkup = False + return tw + + +def _strtobool(val): + """Convert a string representation of truth to true (1) or false (0). + + True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values + are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if + 'val' is anything else. + + .. note:: copied from distutils.util + """ + val = val.lower() + if val in ("y", "yes", "t", "true", "on", "1"): + return 1 + elif val in ("n", "no", "f", "false", "off", "0"): + return 0 + else: + raise ValueError("invalid truth value %r" % (val,)) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/__init__.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a7a33aea21e83f835b2807bda6396d254c58759 GIT binary patch literal 36532 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�j#!= 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 G^Zy0$h{6&8 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/argparsing.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/argparsing.py new file mode 100644 index 0000000..5012456 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/argparsing.py @@ -0,0 +1,409 @@ +import argparse +import sys as _sys +import warnings +from gettext import gettext as _ + +import py +import six + +from ..main import EXIT_USAGEERROR + +FILE_OR_DIR = "file_or_dir" + + +class Parser(object): + """ Parser for command line arguments and ini-file values. + + :ivar extra_info: dict of generic param -> value to display in case + there's an error processing the command line arguments. + """ + + def __init__(self, usage=None, processopt=None): + self._anonymous = OptionGroup("custom options", parser=self) + self._groups = [] + self._processopt = processopt + self._usage = usage + self._inidict = {} + self._ininames = [] + self.extra_info = {} + + def processoption(self, option): + if self._processopt: + if option.dest: + self._processopt(option) + + def getgroup(self, name, description="", after=None): + """ get (or create) a named option Group. + + :name: name of the option group. + :description: long description for --help output. + :after: name of other group, used for ordering --help output. + + The returned group object has an ``addoption`` method with the same + signature as :py:func:`parser.addoption + <_pytest.config.Parser.addoption>` but will be shown in the + respective group in the output of ``pytest. --help``. + """ + for group in self._groups: + if group.name == name: + return group + group = OptionGroup(name, description, parser=self) + i = 0 + for i, grp in enumerate(self._groups): + if grp.name == after: + break + self._groups.insert(i + 1, group) + return group + + def addoption(self, *opts, **attrs): + """ register a command line option. + + :opts: option names, can be short or long options. + :attrs: same attributes which the ``add_option()`` function of the + `argparse library + `_ + accepts. + + After command line parsing options are available on the pytest config + object via ``config.option.NAME`` where ``NAME`` is usually set + by passing a ``dest`` attribute, for example + ``addoption("--long", dest="NAME", ...)``. + """ + self._anonymous.addoption(*opts, **attrs) + + def parse(self, args, namespace=None): + from _pytest._argcomplete import try_argcomplete + + self.optparser = self._getparser() + try_argcomplete(self.optparser) + args = [str(x) if isinstance(x, py.path.local) else x for x in args] + return self.optparser.parse_args(args, namespace=namespace) + + def _getparser(self): + from _pytest._argcomplete import filescompleter + + optparser = MyOptionParser(self, self.extra_info) + groups = self._groups + [self._anonymous] + for group in groups: + if group.options: + desc = group.description or group.name + arggroup = optparser.add_argument_group(desc) + for option in group.options: + n = option.names() + a = option.attrs() + arggroup.add_argument(*n, **a) + # bash like autocompletion for dirs (appending '/') + optparser.add_argument(FILE_OR_DIR, nargs="*").completer = filescompleter + return optparser + + def parse_setoption(self, args, option, namespace=None): + parsedoption = self.parse(args, namespace=namespace) + for name, value in parsedoption.__dict__.items(): + setattr(option, name, value) + return getattr(parsedoption, FILE_OR_DIR) + + def parse_known_args(self, args, namespace=None): + """parses and returns a namespace object with known arguments at this + point. + """ + return self.parse_known_and_unknown_args(args, namespace=namespace)[0] + + def parse_known_and_unknown_args(self, args, namespace=None): + """parses and returns a namespace object with known arguments, and + the remaining arguments unknown at this point. + """ + optparser = self._getparser() + args = [str(x) if isinstance(x, py.path.local) else x for x in args] + return optparser.parse_known_args(args, namespace=namespace) + + def addini(self, name, help, type=None, default=None): + """ register an ini-file option. + + :name: name of the ini-variable + :type: type of the variable, can be ``pathlist``, ``args``, ``linelist`` + or ``bool``. + :default: default value if no ini-file option exists but is queried. + + The value of ini-variables can be retrieved via a call to + :py:func:`config.getini(name) <_pytest.config.Config.getini>`. + """ + assert type in (None, "pathlist", "args", "linelist", "bool") + self._inidict[name] = (help, type, default) + self._ininames.append(name) + + +class ArgumentError(Exception): + """ + Raised if an Argument instance is created with invalid or + inconsistent arguments. + """ + + def __init__(self, msg, option): + self.msg = msg + self.option_id = str(option) + + def __str__(self): + if self.option_id: + return "option %s: %s" % (self.option_id, self.msg) + else: + return self.msg + + +class Argument(object): + """class that mimics the necessary behaviour of optparse.Option + + its currently a least effort implementation + and ignoring choices and integer prefixes + https://docs.python.org/3/library/optparse.html#optparse-standard-option-types + """ + + _typ_map = {"int": int, "string": str, "float": float, "complex": complex} + + def __init__(self, *names, **attrs): + """store parms in private vars for use in add_argument""" + self._attrs = attrs + self._short_opts = [] + self._long_opts = [] + self.dest = attrs.get("dest") + if "%default" in (attrs.get("help") or ""): + warnings.warn( + 'pytest now uses argparse. "%default" should be' + ' changed to "%(default)s" ', + DeprecationWarning, + stacklevel=3, + ) + try: + typ = attrs["type"] + except KeyError: + pass + else: + # this might raise a keyerror as well, don't want to catch that + if isinstance(typ, six.string_types): + if typ == "choice": + warnings.warn( + "`type` argument to addoption() is the string %r." + " For choices this is optional and can be omitted, " + " but when supplied should be a type (for example `str` or `int`)." + " (options: %s)" % (typ, names), + DeprecationWarning, + stacklevel=4, + ) + # argparse expects a type here take it from + # the type of the first element + attrs["type"] = type(attrs["choices"][0]) + else: + warnings.warn( + "`type` argument to addoption() is the string %r, " + " but when supplied should be a type (for example `str` or `int`)." + " (options: %s)" % (typ, names), + DeprecationWarning, + stacklevel=4, + ) + attrs["type"] = Argument._typ_map[typ] + # used in test_parseopt -> test_parse_defaultgetter + self.type = attrs["type"] + else: + self.type = typ + try: + # attribute existence is tested in Config._processopt + self.default = attrs["default"] + except KeyError: + pass + self._set_opt_strings(names) + if not self.dest: + if self._long_opts: + self.dest = self._long_opts[0][2:].replace("-", "_") + else: + try: + self.dest = self._short_opts[0][1:] + except IndexError: + raise ArgumentError("need a long or short option", self) + + def names(self): + return self._short_opts + self._long_opts + + def attrs(self): + # update any attributes set by processopt + attrs = "default dest help".split() + if self.dest: + attrs.append(self.dest) + for attr in attrs: + try: + self._attrs[attr] = getattr(self, attr) + except AttributeError: + pass + if self._attrs.get("help"): + a = self._attrs["help"] + a = a.replace("%default", "%(default)s") + # a = a.replace('%prog', '%(prog)s') + self._attrs["help"] = a + return self._attrs + + def _set_opt_strings(self, opts): + """directly from optparse + + might not be necessary as this is passed to argparse later on""" + for opt in opts: + if len(opt) < 2: + raise ArgumentError( + "invalid option string %r: " + "must be at least two characters long" % opt, + self, + ) + elif len(opt) == 2: + if not (opt[0] == "-" and opt[1] != "-"): + raise ArgumentError( + "invalid short option string %r: " + "must be of the form -x, (x any non-dash char)" % opt, + self, + ) + self._short_opts.append(opt) + else: + if not (opt[0:2] == "--" and opt[2] != "-"): + raise ArgumentError( + "invalid long option string %r: " + "must start with --, followed by non-dash" % opt, + self, + ) + self._long_opts.append(opt) + + def __repr__(self): + args = [] + if self._short_opts: + args += ["_short_opts: " + repr(self._short_opts)] + if self._long_opts: + args += ["_long_opts: " + repr(self._long_opts)] + args += ["dest: " + repr(self.dest)] + if hasattr(self, "type"): + args += ["type: " + repr(self.type)] + if hasattr(self, "default"): + args += ["default: " + repr(self.default)] + return "Argument({})".format(", ".join(args)) + + +class OptionGroup(object): + def __init__(self, name, description="", parser=None): + self.name = name + self.description = description + self.options = [] + self.parser = parser + + def addoption(self, *optnames, **attrs): + """ add an option to this group. + + if a shortened version of a long option is specified it will + be suppressed in the help. addoption('--twowords', '--two-words') + results in help showing '--two-words' only, but --twowords gets + accepted **and** the automatic destination is in args.twowords + """ + conflict = set(optnames).intersection( + name for opt in self.options for name in opt.names() + ) + if conflict: + raise ValueError("option names %s already added" % conflict) + option = Argument(*optnames, **attrs) + self._addoption_instance(option, shortupper=False) + + def _addoption(self, *optnames, **attrs): + option = Argument(*optnames, **attrs) + self._addoption_instance(option, shortupper=True) + + def _addoption_instance(self, option, shortupper=False): + if not shortupper: + for opt in option._short_opts: + if opt[0] == "-" and opt[1].islower(): + raise ValueError("lowercase shortoptions reserved") + if self.parser: + self.parser.processoption(option) + self.options.append(option) + + +class MyOptionParser(argparse.ArgumentParser): + def __init__(self, parser, extra_info=None): + if not extra_info: + extra_info = {} + self._parser = parser + argparse.ArgumentParser.__init__( + self, + usage=parser._usage, + add_help=False, + formatter_class=DropShorterLongHelpFormatter, + ) + # extra_info is a dict of (param -> value) to display if there's + # an usage error to provide more contextual information to the user + self.extra_info = extra_info + + def error(self, message): + """error(message: string) + + Prints a usage message incorporating the message to stderr and + exits. + Overrides the method in parent class to change exit code""" + self.print_usage(_sys.stderr) + args = {"prog": self.prog, "message": message} + self.exit(EXIT_USAGEERROR, _("%(prog)s: error: %(message)s\n") % args) + + def parse_args(self, args=None, namespace=None): + """allow splitting of positional arguments""" + args, argv = self.parse_known_args(args, namespace) + if argv: + for arg in argv: + if arg and arg[0] == "-": + lines = ["unrecognized arguments: %s" % (" ".join(argv))] + for k, v in sorted(self.extra_info.items()): + lines.append(" %s: %s" % (k, v)) + self.error("\n".join(lines)) + getattr(args, FILE_OR_DIR).extend(argv) + return args + + +class DropShorterLongHelpFormatter(argparse.HelpFormatter): + """shorten help for long options that differ only in extra hyphens + + - collapse **long** options that are the same except for extra hyphens + - special action attribute map_long_option allows surpressing additional + long options + - shortcut if there are only two options and one of them is a short one + - cache result on action object as this is called at least 2 times + """ + + def _format_action_invocation(self, action): + orgstr = argparse.HelpFormatter._format_action_invocation(self, action) + if orgstr and orgstr[0] != "-": # only optional arguments + return orgstr + res = getattr(action, "_formatted_action_invocation", None) + if res: + return res + options = orgstr.split(", ") + if len(options) == 2 and (len(options[0]) == 2 or len(options[1]) == 2): + # a shortcut for '-h, --help' or '--abc', '-a' + action._formatted_action_invocation = orgstr + return orgstr + return_list = [] + option_map = getattr(action, "map_long_option", {}) + if option_map is None: + option_map = {} + short_long = {} + for option in options: + if len(option) == 2 or option[2] == " ": + continue + if not option.startswith("--"): + raise ArgumentError( + 'long optional argument without "--": [%s]' % (option), self + ) + xxoption = option[2:] + if xxoption.split()[0] not in option_map: + shortened = xxoption.replace("-", "") + if shortened not in short_long or len(short_long[shortened]) < len( + xxoption + ): + short_long[shortened] = xxoption + # now short_long has been filled out to the longest with dashes + # **and** we keep the right option ordering from add_argument + for option in options: + if len(option) == 2 or option[2] == " ": + return_list.append(option) + if option[2:] == short_long.get(option.replace("-", "")): + return_list.append(option.replace(" ", "=", 1)) + action._formatted_action_invocation = ", ".join(return_list) + return action._formatted_action_invocation diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/argparsing.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/argparsing.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e3d2affb8640b9a2164b317d8d1b98d976c0554a GIT binary patch literal 16550 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/findpaths.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/findpaths.py new file mode 100644 index 0000000..4f371ec --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/findpaths.py @@ -0,0 +1,148 @@ +import os + +import py + +from .exceptions import UsageError + + +def exists(path, ignore=EnvironmentError): + try: + return path.check() + except ignore: + return False + + +def getcfg(args, config=None): + """ + Search the list of arguments for a valid ini-file for pytest, + and return a tuple of (rootdir, inifile, cfg-dict). + + note: config is optional and used only to issue warnings explicitly (#2891). + """ + from _pytest.deprecated import CFG_PYTEST_SECTION + + inibasenames = ["pytest.ini", "tox.ini", "setup.cfg"] + args = [x for x in args if not str(x).startswith("-")] + if not args: + args = [py.path.local()] + for arg in args: + arg = py.path.local(arg) + for base in arg.parts(reverse=True): + for inibasename in inibasenames: + p = base.join(inibasename) + if exists(p): + iniconfig = py.iniconfig.IniConfig(p) + if "pytest" in iniconfig.sections: + if inibasename == "setup.cfg" and config is not None: + from _pytest.warnings import _issue_config_warning + from _pytest.warning_types import RemovedInPytest4Warning + + _issue_config_warning( + RemovedInPytest4Warning( + CFG_PYTEST_SECTION.format(filename=inibasename) + ), + config=config, + ) + return base, p, iniconfig["pytest"] + if ( + inibasename == "setup.cfg" + and "tool:pytest" in iniconfig.sections + ): + return base, p, iniconfig["tool:pytest"] + elif inibasename == "pytest.ini": + # allowed to be empty + return base, p, {} + return None, None, None + + +def get_common_ancestor(paths): + common_ancestor = None + for path in paths: + if not path.exists(): + continue + if common_ancestor is None: + common_ancestor = path + else: + if path.relto(common_ancestor) or path == common_ancestor: + continue + elif common_ancestor.relto(path): + common_ancestor = path + else: + shared = path.common(common_ancestor) + if shared is not None: + common_ancestor = shared + if common_ancestor is None: + common_ancestor = py.path.local() + elif common_ancestor.isfile(): + common_ancestor = common_ancestor.dirpath() + return common_ancestor + + +def get_dirs_from_args(args): + def is_option(x): + return str(x).startswith("-") + + def get_file_part_from_node_id(x): + return str(x).split("::")[0] + + def get_dir_from_path(path): + if path.isdir(): + return path + return py.path.local(path.dirname) + + # These look like paths but may not exist + possible_paths = ( + py.path.local(get_file_part_from_node_id(arg)) + for arg in args + if not is_option(arg) + ) + + return [get_dir_from_path(path) for path in possible_paths if path.exists()] + + +def determine_setup(inifile, args, rootdir_cmd_arg=None, config=None): + dirs = get_dirs_from_args(args) + if inifile: + iniconfig = py.iniconfig.IniConfig(inifile) + is_cfg_file = str(inifile).endswith(".cfg") + sections = ["tool:pytest", "pytest"] if is_cfg_file else ["pytest"] + for section in sections: + try: + inicfg = iniconfig[section] + if is_cfg_file and section == "pytest" and config is not None: + from _pytest.deprecated import CFG_PYTEST_SECTION + from _pytest.warnings import _issue_config_warning + + # TODO: [pytest] section in *.cfg files is deprecated. Need refactoring once + # the deprecation expires. + _issue_config_warning( + CFG_PYTEST_SECTION.format(filename=str(inifile)), config + ) + break + except KeyError: + inicfg = None + rootdir = get_common_ancestor(dirs) + else: + ancestor = get_common_ancestor(dirs) + rootdir, inifile, inicfg = getcfg([ancestor], config=config) + if rootdir is None: + for rootdir in ancestor.parts(reverse=True): + if rootdir.join("setup.py").exists(): + break + else: + rootdir, inifile, inicfg = getcfg(dirs, config=config) + if rootdir is None: + rootdir = get_common_ancestor([py.path.local(), ancestor]) + is_fs_root = os.path.splitdrive(str(rootdir))[1] == "/" + if is_fs_root: + rootdir = ancestor + if rootdir_cmd_arg: + rootdir_abs_path = py.path.local(os.path.expandvars(rootdir_cmd_arg)) + if not os.path.isdir(str(rootdir_abs_path)): + raise UsageError( + "Directory '{}' not found. Check your '--rootdir' option.".format( + rootdir_abs_path + ) + ) + rootdir = rootdir_abs_path + return rootdir, inifile, inicfg or {} diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/findpaths.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/config/findpaths.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ae0d8bbad2705e49742ef6f709dc078e55ee6d3 GIT binary patch literal 4894 zcmcIn&u?5;6+ZXPcsdurR`}6OY#_tXC$1~Mp;KOVMZQ%a<9VAX1$D^;(y_<5gRn?tnvz~4{W;| z-N>>u>v;HNnL=4dv6oRD&dW%oC-O+7xtT0Vab#qtBH7DgjL9MUE-YxOz($?RbFS}f zN1YvQZM6F~asx#S4BPp3UP2@8CTSMc(Gsof8d|IQV7NMrhs$wd^LD?#d~0xZaO*p( z!^1qX`D$zO+ewqHxVyR)Cn4q874%bPbP(Iz&Y-20n1Y!%b4D$zqL(9T+3#UL57Fbn z4~&dGF*t1;FwV7Gka0n}Lc^~=__BkXojvEVXl$v6BRitz3QZAi~yLCQCWI(vQv_5(_j^>+VLdYFmPTtFFR$n zc>rbU*JQ9D;|dM{-xcYflEI>kXR$jrnU#?zz0(q+fz8EW&k$P~Y;Fv!gJRGG+hNnC zt%5X9c6(&PxhE8PWKQPJoy;w$X1|>b#v&B5`-$NH=I(D$QrQe^h_D5^^^d43KK`0f zJL_!w`F7;@;dDRU^4nQ=ZxAK9^|#W@Z~Oc0ejNI75-)GX{YX1q{9I89?IiTGDBsHx z%+2?Pm;xd7EKTz;&aQAF*In^DTixX_?&PnpRCHmI=Fyt(V$hGRpAPdlP1=2*68CHr z`f1WX^z#&hb}#ZjY-dTFbgds94Eu2>&M{bj<&A4^eGL+6i(X83B^Mc?8{cl-{=uCa z%{#5;jrBV>zuU09sZRG5sAZ?|nWqQZ=FPS+W4Ho6aUVsNbB<@xew1N=_rfi8JDkOL zOBHK56Iv7f-0*n}2hkwikHVYDZM}Bi*mMRUI^i80NzxuTxlVwcMSq^A{WZ5wqh3Hq zqtU3J;Q&pVT-=o~8fHd>pd8SB&3!mlo!x;EL7#SW0990bIr=50RTSLyl zH50j$?M2$?rEwAvb8-c_Bz9Wq*UcneSFBLoZPcNs-13;!*`S@*2`s7z;?D+i_;R+fAI^H%wt8SzeRH5DW2Ua)SWbCQ%+qPZ z;2h;p6Wvb{Qmf|yliesstkfXfzKKev7rdHTF(q>rV7X|PP}fWqt(v)D7R-WI0Fa*b zD&8rtYHHpoQ}tdj9flemK`*VN*gvB}E*Kj*_?5%XpA%RKAb<-@_=@b#5fKSOB0DpZ zt#K3!(9da@OkfeKpJ)@b?sJqAfW9h?uxFoMSePsXZUZwZ90-RcKynq1<(ntF{^10M zp%!K&7gag|PO?8~n@Frfs_s#KV}u1utTf_vg$m!Nkk)o<#dKy-)bivdLjX znCnk8*I=48{V!oJh6LlZMUZW6W$B=mq+!&G!w)d}U+sAXgU1vxTVT5h5W`&s zS>k{ar=uHmd~afltMJ9kLT90y3C3B;$a;QG;?<;;*uvSzt9Tckme))W*hS|s`i_D9 zbrj1Ac072UVf-RFts**s8Il5QV?6wF`!#mkO z<;kFfBOKet5K%$jOzZ?*1u1@i^1SMLl9Y&1Wb4y%@N2T%>kob@;~6 zh;i*m^aT}NoAlc^y?jaV_`r#ejyivWG!M0E+=2~Qjk+wuh6kkOqodC7Z|F54m;NHH z4HV+}hISW-(db%A(-^gm{mn2$wNhF>Jk%#Q?7;ihUPFC71_?%nKlCsEczoH%djgM> zy(C=m*ZFMr57WKOzr4IWd5T<~yf9YkMCst0tQ1g`BPwBMYEz0EC81JiM^b2zlF>j{ zs-7<#O?^K))OUYyg|l8|#Y`HUVMY3@9OnrpLjXvv+2AS{ zqKLlNl=6VwGOZ}iDAAeN)#?nw7H++sn(|@bvQ_5mNU?3f4VsdI3y`S7CLG?;DscU+ zt}~Ffxp$9yzv*clQ7Kh22F}9rwE40xWVU$PNAWou|zRkdK z#NMKCSUrqDAFeqBXh6)gO$nF0B#V&=", "PDB set_trace (IO-capturing turned off)") + cls._pluginmanager.hook.pytest_enter_pdb(config=cls._config) + if set_break: + cls._pdb_cls().set_trace(frame) + + +class PdbInvoke(object): + def pytest_exception_interact(self, node, call, report): + capman = node.config.pluginmanager.getplugin("capturemanager") + if capman: + capman.suspend_global_capture(in_=True) + out, err = capman.read_global_capture() + sys.stdout.write(out) + sys.stdout.write(err) + _enter_pdb(node, call.excinfo, report) + + def pytest_internalerror(self, excrepr, excinfo): + tb = _postmortem_traceback(excinfo) + post_mortem(tb) + + +class PdbTrace(object): + @hookimpl(hookwrapper=True) + def pytest_pyfunc_call(self, pyfuncitem): + _test_pytest_function(pyfuncitem) + yield + + +def _test_pytest_function(pyfuncitem): + pytestPDB.set_trace(set_break=False) + testfunction = pyfuncitem.obj + pyfuncitem.obj = pdb.runcall + if pyfuncitem._isyieldedfunction(): + arg_list = list(pyfuncitem._args) + arg_list.insert(0, testfunction) + pyfuncitem._args = tuple(arg_list) + else: + if "func" in pyfuncitem._fixtureinfo.argnames: + raise ValueError("--trace can't be used with a fixture named func!") + pyfuncitem.funcargs["func"] = testfunction + new_list = list(pyfuncitem._fixtureinfo.argnames) + new_list.append("func") + pyfuncitem._fixtureinfo.argnames = tuple(new_list) + + +def _enter_pdb(node, excinfo, rep): + # XXX we re-use the TerminalReporter's terminalwriter + # because this seems to avoid some encoding related troubles + # for not completely clear reasons. + tw = node.config.pluginmanager.getplugin("terminalreporter")._tw + tw.line() + + showcapture = node.config.option.showcapture + + for sectionname, content in ( + ("stdout", rep.capstdout), + ("stderr", rep.capstderr), + ("log", rep.caplog), + ): + if showcapture in (sectionname, "all") and content: + tw.sep(">", "captured " + sectionname) + if content[-1:] == "\n": + content = content[:-1] + tw.line(content) + + tw.sep(">", "traceback") + rep.toterminal(tw) + tw.sep(">", "entering PDB") + tb = _postmortem_traceback(excinfo) + rep._pdbshown = True + if post_mortem(tb): + outcomes.exit("Quitting debugger") + return rep + + +def _postmortem_traceback(excinfo): + if isinstance(excinfo.value, UnexpectedException): + # A doctest.UnexpectedException is not useful for post_mortem. + # Use the underlying exception instead: + return excinfo.value.exc_info[2] + else: + return excinfo._excinfo[2] + + +def _find_last_non_hidden_frame(stack): + i = max(0, len(stack) - 1) + while i and stack[i][0].f_locals.get("__tracebackhide__", False): + i -= 1 + return i + + +def post_mortem(t): + class Pdb(pytestPDB._pdb_cls): + def get_stack(self, f, t): + stack, i = pdb.Pdb.get_stack(self, f, t) + if f is None: + i = _find_last_non_hidden_frame(stack) + return stack, i + + p = Pdb() + p.reset() + p.interaction(None, t) + return p.quitting diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/debugging.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/debugging.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c943a5bb1dc83183b6d186e34034b84efed3eaa GIT binary patch literal 7512 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 YQloRe^W3?WbBpI%ol~7lold9qKVZ>3>;M1& literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/deprecated.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/deprecated.py new file mode 100644 index 0000000..bc1b2a6 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/deprecated.py @@ -0,0 +1,118 @@ +""" +This module contains deprecation messages and bits of code used elsewhere in the codebase +that is planned to be removed in the next pytest release. + +Keeping it in a central location makes it easy to track what is deprecated and should +be removed when the time comes. + +All constants defined in this module should be either PytestWarning instances or UnformattedWarning +in case of warnings which need to format their messages. +""" +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +from _pytest.warning_types import RemovedInPytest4Warning +from _pytest.warning_types import UnformattedWarning + + +MAIN_STR_ARGS = RemovedInPytest4Warning( + "passing a string to pytest.main() is deprecated, " + "pass a list of arguments instead." +) + +YIELD_TESTS = RemovedInPytest4Warning( + "yield tests are deprecated, and scheduled to be removed in pytest 4.0" +) + +CACHED_SETUP = RemovedInPytest4Warning( + "cached_setup is deprecated and will be removed in a future release. " + "Use standard fixture functions instead." +) + +COMPAT_PROPERTY = UnformattedWarning( + RemovedInPytest4Warning, + "usage of {owner}.{name} is deprecated, please use pytest.{name} instead", +) + +CUSTOM_CLASS = UnformattedWarning( + RemovedInPytest4Warning, + 'use of special named "{name}" objects in collectors of type "{type_name}" to ' + "customize the created nodes is deprecated. " + "Use pytest_pycollect_makeitem(...) to create custom " + "collection nodes instead.", +) + +FUNCARG_PREFIX = UnformattedWarning( + RemovedInPytest4Warning, + '{name}: declaring fixtures using "pytest_funcarg__" prefix is deprecated ' + "and scheduled to be removed in pytest 4.0. " + "Please remove the prefix and use the @pytest.fixture decorator instead.", +) + +FIXTURE_FUNCTION_CALL = UnformattedWarning( + RemovedInPytest4Warning, + 'Fixture "{name}" called directly. Fixtures are not meant to be called directly, ' + "are created automatically when test functions request them as parameters. " + "See https://docs.pytest.org/en/latest/fixture.html for more information.", +) + +CFG_PYTEST_SECTION = UnformattedWarning( + RemovedInPytest4Warning, + "[pytest] section in {filename} files is deprecated, use [tool:pytest] instead.", +) + +GETFUNCARGVALUE = RemovedInPytest4Warning( + "getfuncargvalue is deprecated, use getfixturevalue" +) + +RESULT_LOG = RemovedInPytest4Warning( + "--result-log is deprecated and scheduled for removal in pytest 4.0.\n" + "See https://docs.pytest.org/en/latest/usage.html#creating-resultlog-format-files for more information." +) + +MARK_INFO_ATTRIBUTE = RemovedInPytest4Warning( + "MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly.\n" + "Please use node.get_closest_marker(name) or node.iter_markers(name).\n" + "Docs: https://docs.pytest.org/en/latest/mark.html#updating-code" +) + +MARK_PARAMETERSET_UNPACKING = RemovedInPytest4Warning( + "Applying marks directly to parameters is deprecated," + " please use pytest.param(..., marks=...) instead.\n" + "For more details, see: https://docs.pytest.org/en/latest/parametrize.html" +) + +NODE_WARN = RemovedInPytest4Warning( + "Node.warn(code, message) form has been deprecated, use Node.warn(warning_instance) instead." +) + +RECORD_XML_PROPERTY = RemovedInPytest4Warning( + 'Fixture renamed from "record_xml_property" to "record_property" as user ' + "properties are now available to all reporters.\n" + '"record_xml_property" is now deprecated.' +) + +COLLECTOR_MAKEITEM = RemovedInPytest4Warning( + "pycollector makeitem was removed as it is an accidentially leaked internal api" +) + +METAFUNC_ADD_CALL = RemovedInPytest4Warning( + "Metafunc.addcall is deprecated and scheduled to be removed in pytest 4.0.\n" + "Please use Metafunc.parametrize instead." +) + +PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST = RemovedInPytest4Warning( + "Defining pytest_plugins in a non-top-level conftest is deprecated, " + "because it affects the entire directory tree in a non-explicit way.\n" + "Please move it to the top level conftest file instead." +) + +PYTEST_NAMESPACE = RemovedInPytest4Warning( + "pytest_namespace is deprecated and will be removed soon" +) + +PYTEST_ENSURETEMP = RemovedInPytest4Warning( + "pytest/tmpdir_factory.ensuretemp is deprecated, \n" + "please use the tmp_path fixture or tmp_path_factory.mktemp" +) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/deprecated.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/_pytest/deprecated.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ae408012218f023495cad1ff7cb25a722992db3 GIT binary patch literal 4159 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 Rb~d(eA4YBGyB=p| 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 E28<9{=>Px# literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageSequence.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageSequence.py new file mode 100644 index 0000000..1fc6e5d --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageSequence.py @@ -0,0 +1,56 @@ +# +# The Python Imaging Library. +# $Id$ +# +# sequence support classes +# +# history: +# 1997-02-20 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## + + +class Iterator(object): + """ + This class implements an iterator object that can be used to loop + over an image sequence. + + You can use the ``[]`` operator to access elements by index. This operator + will raise an :py:exc:`IndexError` if you try to access a nonexistent + frame. + + :param im: An image object. + """ + + def __init__(self, im): + if not hasattr(im, "seek"): + raise AttributeError("im must have seek method") + self.im = im + self.position = 0 + + def __getitem__(self, ix): + try: + self.im.seek(ix) + return self.im + except EOFError: + raise IndexError # end of sequence + + def __iter__(self): + return self + + def __next__(self): + try: + self.im.seek(self.position) + self.position += 1 + return self.im + except EOFError: + raise StopIteration + + def next(self): + return self.__next__() diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageSequence.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageSequence.pyc new file mode 100644 index 0000000000000000000000000000000000000000..01496b190c409c7ed213bd8c7fc6ade33d75c48c GIT binary patch literal 1830 zcmb_cQI8un5FTf9xhCZ(QYEO01b#uv19y?2Qbj?XH)# z(_W-L_4t|m3;qD#%qDkNi6@jzJUjNOjUU2)2*;f)qZQ7Pp}9)7PUC}%&evleTjwcHQ%*QW>rD6>-XvDdq;bu@t3%An za{s5_QuEc5$y1crznMHed@?!YO3XHbHY>?sjH_KV=5xddyjw}#!f&W9tF(hLsnR!a zR-ZEcSNJO~7wV(B{_OYq6Y2x|*@)VEq?C$@)K1YKQYzl`N5Ws=r`#6=kA8XF@g8C1 zN_wH3@(%9`a=rz^HxbR4mp0-=RK|RPZs4q>67`X~srFRPur^ItbFD#fHtq=UY;gtJ z7BF$mAp(x5F<-(DEHzyLxh((B7+&pPD?dc&Z4~Ik#T9hFhb{V^Ac+X_SOn?6CkW>` za?EPXIj&SmrOUYD9?UHIrn|y;Bl7(1QpZ8Y{+l3f_yC5rxQ!k7-)gX09lwh!O#~Ak zq^+W3;ThX~yw{?Pr6`?ZH7*=uA_Fp}^2M^`E+1`U3ZEO3vY+ynOPN>70MlDAW3+4L v{~q6z!`w!bvJFOq-f%G79VWvYN8NS7XQ#XOWa^gE%9;JHBmBLjXB__m+sKE% literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageShow.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageShow.py new file mode 100644 index 0000000..b50d613 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageShow.py @@ -0,0 +1,194 @@ +# +# The Python Imaging Library. +# $Id$ +# +# im.show() drivers +# +# History: +# 2008-04-06 fl Created +# +# Copyright (c) Secret Labs AB 2008. +# +# See the README file for information on usage and redistribution. +# + +from __future__ import print_function + +from PIL import Image +import os +import sys + +if sys.version_info.major >= 3: + from shlex import quote +else: + from pipes import quote + +_viewers = [] + + +def register(viewer, order=1): + try: + if issubclass(viewer, Viewer): + viewer = viewer() + except TypeError: + pass # raised if viewer wasn't a class + if order > 0: + _viewers.append(viewer) + elif order < 0: + _viewers.insert(0, viewer) + + +def show(image, title=None, **options): + r""" + Display a given image. + + :param image: An image object. + :param title: Optional title. Not all viewers can display the title. + :param \**options: Additional viewer options. + :returns: True if a suitable viewer was found, false otherwise. + """ + for viewer in _viewers: + if viewer.show(image, title=title, **options): + return 1 + return 0 + + +class Viewer(object): + """Base class for viewers.""" + + # main api + + def show(self, image, **options): + + # save temporary image to disk + if image.mode[:4] == "I;16": + # @PIL88 @PIL101 + # "I;16" isn't an 'official' mode, but we still want to + # provide a simple way to show 16-bit images. + base = "L" + # FIXME: auto-contrast if max() > 255? + else: + base = Image.getmodebase(image.mode) + if base != image.mode and image.mode != "1" and image.mode != "RGBA": + image = image.convert(base) + + return self.show_image(image, **options) + + # hook methods + + format = None + options = {} + + def get_format(self, image): + """Return format name, or None to save as PGM/PPM""" + return self.format + + def get_command(self, file, **options): + raise NotImplementedError + + def save_image(self, image): + """Save to temporary file, and return filename""" + return image._dump(format=self.get_format(image), **self.options) + + def show_image(self, image, **options): + """Display given image""" + return self.show_file(self.save_image(image), **options) + + def show_file(self, file, **options): + """Display given file""" + os.system(self.get_command(file, **options)) + return 1 + +# -------------------------------------------------------------------- + + +if sys.platform == "win32": + + class WindowsViewer(Viewer): + format = "BMP" + + def get_command(self, file, **options): + return ('start "Pillow" /WAIT "%s" ' + '&& ping -n 2 127.0.0.1 >NUL ' + '&& del /f "%s"' % (file, file)) + + register(WindowsViewer) + +elif sys.platform == "darwin": + + class MacViewer(Viewer): + format = "PNG" + options = {'compress_level': 1} + + def get_command(self, file, **options): + # on darwin open returns immediately resulting in the temp + # file removal while app is opening + command = "open -a /Applications/Preview.app" + command = "(%s %s; sleep 20; rm -f %s)&" % (command, quote(file), + quote(file)) + return command + + register(MacViewer) + +else: + + # unixoids + + def which(executable): + path = os.environ.get("PATH") + if not path: + return None + for dirname in path.split(os.pathsep): + filename = os.path.join(dirname, executable) + if os.path.isfile(filename) and os.access(filename, os.X_OK): + return filename + return None + + class UnixViewer(Viewer): + format = "PNG" + options = {'compress_level': 1} + + def show_file(self, file, **options): + command, executable = self.get_command_ex(file, **options) + command = "(%s %s; rm -f %s)&" % (command, quote(file), + quote(file)) + os.system(command) + return 1 + + # implementations + + class DisplayViewer(UnixViewer): + def get_command_ex(self, file, **options): + command = executable = "display" + return command, executable + + if which("display"): + register(DisplayViewer) + + class EogViewer(UnixViewer): + def get_command_ex(self, file, **options): + command = executable = "eog" + return command, executable + + if which("eog"): + register(EogViewer) + + class XVViewer(UnixViewer): + def get_command_ex(self, file, title=None, **options): + # note: xv is pretty outdated. most modern systems have + # imagemagick's display command instead. + command = executable = "xv" + if title: + command += " -name %s" % quote(title) + return command, executable + + if which("xv"): + register(XVViewer) + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python ImageShow.py imagefile [title]") + sys.exit() + + print(show(Image.open(sys.argv[1]), *sys.argv[2:])) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageShow.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageShow.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e41340d3402fc9af1b89e26cc646d4464553e70 GIT binary patch literal 6605 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageStat.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageStat.py new file mode 100644 index 0000000..cd58fc8 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageStat.py @@ -0,0 +1,148 @@ +# +# The Python Imaging Library. +# $Id$ +# +# global image statistics +# +# History: +# 1996-04-05 fl Created +# 1997-05-21 fl Added mask; added rms, var, stddev attributes +# 1997-08-05 fl Added median +# 1998-07-05 hk Fixed integer overflow error +# +# Notes: +# This class shows how to implement delayed evaluation of attributes. +# To get a certain value, simply access the corresponding attribute. +# The __getattr__ dispatcher takes care of the rest. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996-97. +# +# See the README file for information on usage and redistribution. +# + +import math +import operator +import functools + + +class Stat(object): + + def __init__(self, image_or_list, mask=None): + try: + if mask: + self.h = image_or_list.histogram(mask) + else: + self.h = image_or_list.histogram() + except AttributeError: + self.h = image_or_list # assume it to be a histogram list + if not isinstance(self.h, list): + raise TypeError("first argument must be image or list") + self.bands = list(range(len(self.h) // 256)) + + def __getattr__(self, id): + "Calculate missing attribute" + if id[:4] == "_get": + raise AttributeError(id) + # calculate missing attribute + v = getattr(self, "_get" + id)() + setattr(self, id, v) + return v + + def _getextrema(self): + "Get min/max values for each band in the image" + + def minmax(histogram): + n = 255 + x = 0 + for i in range(256): + if histogram[i]: + n = min(n, i) + x = max(x, i) + return n, x # returns (255, 0) if there's no data in the histogram + + v = [] + for i in range(0, len(self.h), 256): + v.append(minmax(self.h[i:])) + return v + + def _getcount(self): + "Get total number of pixels in each layer" + + v = [] + for i in range(0, len(self.h), 256): + v.append(functools.reduce(operator.add, self.h[i:i+256])) + return v + + def _getsum(self): + "Get sum of all pixels in each layer" + + v = [] + for i in range(0, len(self.h), 256): + layerSum = 0.0 + for j in range(256): + layerSum += j * self.h[i + j] + v.append(layerSum) + return v + + def _getsum2(self): + "Get squared sum of all pixels in each layer" + + v = [] + for i in range(0, len(self.h), 256): + sum2 = 0.0 + for j in range(256): + sum2 += (j ** 2) * float(self.h[i + j]) + v.append(sum2) + return v + + def _getmean(self): + "Get average pixel level for each layer" + + v = [] + for i in self.bands: + v.append(self.sum[i] / self.count[i]) + return v + + def _getmedian(self): + "Get median pixel level for each layer" + + v = [] + for i in self.bands: + s = 0 + l = self.count[i]//2 + b = i * 256 + for j in range(256): + s = s + self.h[b+j] + if s > l: + break + v.append(j) + return v + + def _getrms(self): + "Get RMS for each layer" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.sum2[i] / self.count[i])) + return v + + def _getvar(self): + "Get variance for each layer" + + v = [] + for i in self.bands: + n = self.count[i] + v.append((self.sum2[i]-(self.sum[i]**2.0)/n)/n) + return v + + def _getstddev(self): + "Get standard deviation for each layer" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.var[i])) + return v + + +Global = Stat # compatibility diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageStat.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageStat.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c0e9a50e4c618b54bbe4b1da1dff7f0ec366bc9 GIT binary patch literal 4618 zcmcInYjfOG674%Po_HL46EJab77~#xFjR;g!d9gyp1TQ9rid#g?-DRYP01sTEnAPV zbjM5<`wQm7R`HGB$G_kQu;=vEJZvCag%f+!bMGCgyLHa#zEb^{g}J5v&tG??`m5vn zBOK*@m=GT$iOA-7Y-H1n)@!m^ldvXHU3yro%MT*QB42GbBx=a!3@_ejH{dA#6@TlN z!wnnQakLs1{)wZ^U?RkUoAY%41LD+qJzT;af^Yzj8f3F6VMABWNjRf}SqYmuXi0cZ z2Xhk6>HrQ~I+&MmP6rF(Z?xwTvdi1$F@xhCj`Am%$18GJlj5oz8rc<&kBuCPbc|#d zs>Nfh>&m0-iZpCZ_U5GcOpGzOs5;lkm$uHyt`Xe(aZSoZtil3^-@}`5-8RLZt4_l@ z?)3`3s*t!ZVAf`i>*e2IdvQ@(FDSMLX_Q$n9bmQg z@7(!(^jqFKQI^X7u- zQdvxrVejE6*I+;mB;^6&J@9)?tS(KsQ0DL}&bth@jzx}Y0&YPeS;b0S489y6B>>#^f)TPYV=E*bAf^EMObKL*V1*~@xO8K82AM!ez!xfA2WJHAJY02{ z0K;`UH!&?4Luwbzh1!z2Xu4Dda~&7K1}3idj*M(83d8q_7O+85RJ7Ivsu76X|HhLe z=)5Mou%n+3>vGM>*zDhwM~WJQl(%3$jiB5(TTO$ZcMv3lsPuZ!ZWMHPJj%(7Gtcf+ zsvhUZ%b8mFB@FUIa!3di4L{W6kc~k$Z)rB5tS-yNvL=kA@FUJeA%aeP+_Wb9%ltfY z^!7+CqpZij!p1mYSWD#1CvU2Jr0%|hp`Pv&L1imbJ5(E=k+~+EA`&pVi&4p{70A44 z7R?+azGSBIW73+R&jRtOAG8&bpx=+O&?QOM{bd@~jQ=9c88cLEL0Zw!7Ev1f9Uh&w z>aAAOTsK#pwg?{6y2szKm8hhQ3?C?Kpk$;O&<8?QQn$$~Sb?NaLc24(on6-@9f7*@ zTz-XRYQ*ecR}QPf&{SuqW{y!^sloV)+7V$EXL zikpD1^?d`u34S?9iFuGD{|9$u>i(Qee}{lJ@6K2Kj-{*ED}x&Yx3TS#_A_iP3`~@f z_yY`G!70WpxtGmz6Ql{hB7KBGg>?T3NN-FbeRmq^Hzr7j4OxVSP67@(PGGLIoDe*r zDcRK(^Zh{pY5oc9W3~*3^GO19i|-|QV6_&0mkQ;5klyjH(+Q3nkSz#h}9E zyD=tx6(Y7yCo~`fB+zrOu;8^Byl^xl!*{q%a(Cx`dQ*;?+6^3ZGjiBOE4WM-_%vj% zA;o=pxPM>p;ZC{>UrpDRNARjbUPVTPH;uwL$ew_%>&f~Mq`R+{zk=O{3%AelSEoqT z>#63Tbm}ggsNH%R(qs%u)8)U1S-Aw`C}={MbLbP7%)FVM7U`IfPjG5Q$U9>~Rwg0^ z=}**2^wYrZxaafz!uq7bCz#Jbr{se$6>0e& z45wuJrjset8JF%Cm{h2&jZyhPQ2`Q8pp+V9g-vK&y%U)5Ah-x2UV4${1WJ^MKBN<+ zgP?%uy3r}95L*8}a*b^wGH(11rq?l=dV(77Kt2f|hG*z@Bdn0!_i$7_J+Y)0%&J3+ zt!0eXyO>mH;UyJlu+iQ4V+{e16Od?KkbFYIm%T73LNAOC;=smvb_$#+Ocah4TgdnBrTTCqFXPbu(5%hRw_2^|TC=V5_@8ZE zz|m@JjVhv7ai;$gj6PcCTf0%$stcWen&ewS@)WXC(B5+}eZZ%G1$G|&YQDbo?f(D_ Cbz}zs literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageTk.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageTk.py new file mode 100644 index 0000000..b5ad53d --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageTk.py @@ -0,0 +1,303 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Tk display interface +# +# History: +# 96-04-08 fl Created +# 96-09-06 fl Added getimage method +# 96-11-01 fl Rewritten, removed image attribute and crop method +# 97-05-09 fl Use PyImagingPaste method instead of image type +# 97-05-12 fl Minor tweaks to match the IFUNC95 interface +# 97-05-17 fl Support the "pilbitmap" booster patch +# 97-06-05 fl Added file= and data= argument to image constructors +# 98-03-09 fl Added width and height methods to Image classes +# 98-07-02 fl Use default mode for "P" images without palette attribute +# 98-07-02 fl Explicitly destroy Tkinter image objects +# 99-07-24 fl Support multiple Tk interpreters (from Greg Couch) +# 99-07-26 fl Automatically hook into Tkinter (if possible) +# 99-08-15 fl Hook uses _imagingtk instead of _imaging +# +# Copyright (c) 1997-1999 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import sys + +if sys.version_info.major > 2: + import tkinter +else: + import Tkinter as tkinter + +# required for pypy, which always has cffi installed +try: + from cffi import FFI + ffi = FFI() +except ImportError: + pass + +from . import Image +from io import BytesIO + + +# -------------------------------------------------------------------- +# Check for Tkinter interface hooks + +_pilbitmap_ok = None + + +def _pilbitmap_check(): + global _pilbitmap_ok + if _pilbitmap_ok is None: + try: + im = Image.new("1", (1, 1)) + tkinter.BitmapImage(data="PIL:%d" % im.im.id) + _pilbitmap_ok = 1 + except tkinter.TclError: + _pilbitmap_ok = 0 + return _pilbitmap_ok + + +def _get_image_from_kw(kw): + source = None + if "file" in kw: + source = kw.pop("file") + elif "data" in kw: + source = BytesIO(kw.pop("data")) + if source: + return Image.open(source) + + +# -------------------------------------------------------------------- +# PhotoImage + +class PhotoImage(object): + """ + A Tkinter-compatible photo image. This can be used + everywhere Tkinter expects an image object. If the image is an RGBA + image, pixels having alpha 0 are treated as transparent. + + The constructor takes either a PIL image, or a mode and a size. + Alternatively, you can use the **file** or **data** options to initialize + the photo image object. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. + :param size: If the first argument is a mode string, this defines the size + of the image. + :keyword file: A filename to load the image from (using + ``Image.open(file)``). + :keyword data: An 8-bit string containing image data (as loaded from an + image file). + """ + + def __init__(self, image=None, size=None, **kw): + + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if hasattr(image, "mode") and hasattr(image, "size"): + # got an image instead of a mode + mode = image.mode + if mode == "P": + # palette mapped data + image.load() + try: + mode = image.palette.mode + except AttributeError: + mode = "RGB" # default + size = image.size + kw["width"], kw["height"] = size + else: + mode = image + image = None + + if mode not in ["1", "L", "RGB", "RGBA"]: + mode = Image.getmodebase(mode) + + self.__mode = mode + self.__size = size + self.__photo = tkinter.PhotoImage(**kw) + self.tk = self.__photo.tk + if image: + self.paste(image) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except: + pass # ignore internal errors + + def __str__(self): + """ + Get the Tkinter photo image identifier. This method is automatically + called by Tkinter whenever a PhotoImage object is passed to a Tkinter + method. + + :return: A Tkinter photo image identifier (a string). + """ + return str(self.__photo) + + def width(self): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def paste(self, im, box=None): + """ + Paste a PIL image into the photo image. Note that this can + be very slow if the photo image is displayed. + + :param im: A PIL image. The size must match the target region. If the + mode does not match, the image is converted to the mode of + the bitmap image. + :param box: A 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. If None is given + instead of a tuple, all of the image is assumed. + """ + + # convert to blittable + im.load() + image = im.im + if image.isblock() and im.mode == self.__mode: + block = image + else: + block = image.new_block(self.__mode, im.size) + image.convert2(block, image) # convert directly between buffers + + tk = self.__photo.tk + + try: + tk.call("PyImagingPhoto", self.__photo, block.id) + except tkinter.TclError: + # activate Tkinter hook + try: + from . import _imagingtk + try: + if hasattr(tk, 'interp'): + # Pypy is using a ffi cdata element + # (Pdb) self.tk.interp + # + _imagingtk.tkinit(int(ffi.cast("uintptr_t", tk.interp)), 1) + else: + _imagingtk.tkinit(tk.interpaddr(), 1) + except AttributeError: + _imagingtk.tkinit(id(tk), 0) + tk.call("PyImagingPhoto", self.__photo, block.id) + except (ImportError, AttributeError, tkinter.TclError): + raise # configuration problem; cannot attach to Tkinter + +# -------------------------------------------------------------------- +# BitmapImage + + +class BitmapImage(object): + """ + A Tkinter-compatible bitmap image. This can be used everywhere Tkinter + expects an image object. + + The given image must have mode "1". Pixels having value 0 are treated as + transparent. Options, if any, are passed on to Tkinter. The most commonly + used option is **foreground**, which is used to specify the color for the + non-transparent parts. See the Tkinter documentation for information on + how to specify colours. + + :param image: A PIL image. + """ + + def __init__(self, image=None, **kw): + + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + self.__mode = image.mode + self.__size = image.size + + if _pilbitmap_check(): + # fast way (requires the pilbitmap booster patch) + image.load() + kw["data"] = "PIL:%d" % image.im.id + self.__im = image # must keep a reference + else: + # slow but safe way + kw["data"] = image.tobitmap() + self.__photo = tkinter.BitmapImage(**kw) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except: + pass # ignore internal errors + + def width(self): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def __str__(self): + """ + Get the Tkinter bitmap image identifier. This method is automatically + called by Tkinter whenever a BitmapImage object is passed to a Tkinter + method. + + :return: A Tkinter bitmap image identifier (a string). + """ + return str(self.__photo) + + +def getimage(photo): + """ This function is unimplemented """ + + """Copies the contents of a PhotoImage to a PIL image memory.""" + photo.tk.call("PyImagingPhotoGet", photo) + + +def _show(image, title): + """Helper for the Image.show method.""" + + class UI(tkinter.Label): + def __init__(self, master, im): + if im.mode == "1": + self.image = BitmapImage(im, foreground="white", master=master) + else: + self.image = PhotoImage(im, master=master) + tkinter.Label.__init__(self, master, image=self.image, + bg="black", bd=0) + + if not tkinter._default_root: + raise IOError("tkinter not initialized") + top = tkinter.Toplevel() + if title: + top.title(title) + UI(top, image).pack() diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageTk.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageTk.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f63dd69eb1869bf965159ae8be4d8637815cac9e GIT binary patch literal 9091 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 + """ + return self.image.frombytes(buffer) + + def tobytes(self): + """ + Copy display memory contents to bytes object. + + :return: A bytes object containing display data. + """ + return self.image.tobytes() + + +class Window(object): + """Create a Window with the given title size.""" + + def __init__(self, title="PIL", width=None, height=None): + self.hwnd = Image.core.createwindow( + title, self.__dispatcher, width or 0, height or 0 + ) + + def __dispatcher(self, action, *args): + return getattr(self, "ui_handle_" + action)(*args) + + def ui_handle_clear(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_damage(self, x0, y0, x1, y1): + pass + + def ui_handle_destroy(self): + pass + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_resize(self, width, height): + pass + + def mainloop(self): + Image.core.eventloop() + + +class ImageWindow(Window): + """Create an image window which displays the given image.""" + + def __init__(self, image, title="PIL"): + if not isinstance(image, Dib): + image = Dib(image) + self.image = image + width, height = image.size + Window.__init__(self, title, width=width, height=height) + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + self.image.draw(dc, (x0, y0, x1, y1)) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageWin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImageWin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..17b9fca5ed8db663b600061c14bfa1f351519428 GIT binary patch literal 9415 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 100: + break + if s[0] == ord(b"*"): + continue # comment + + m = field.match(s) + if not m: + break + k, v = m.group(1, 2) + if k == "width": + xsize = int(v) + self.size = xsize, ysize + elif k == "height": + ysize = int(v) + self.size = xsize, ysize + elif k == "pixel" and v == "n8": + self.mode = "L" + + +# +# -------------------------------------------------------------------- + +Image.register_open(ImtImageFile.format, ImtImageFile) + +# +# no extension registered (".im" is simply too common) diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImtImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/ImtImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2cacc164dfb1f7ea40095137f67b0f83250bba56 GIT binary patch literal 1609 zcmb_bU2hvz5S@E>y-r*^sRBw;5R!#JT`HwU6%Pni2=OHurIqCbA)LU<@?JaF-Y@pv zG)Wb|5X6r`;)UPC3lIDPegK>qyJ;VI18aA7JUjQynKQG&U!B%&_4~<$*1rJHPjI^# zOo~fUMl^z>DGex7lxrGk$^#k&q|%T^AsM21gVF}wC>lkSMq~n-2Q*cbHt8p#8=`MV zO){G18)TX^-(-8E0ift8-asw;H-1m8f*WfX-+<}o# z_~7|>58ms>C*OBZ>(c_hZ%ewDvwY&VH^%-Hw|ff)oJXJsi^f1Z;0{3*?F^4%F5=nr zpBy`;*MHJIF3ZeK7^I0i!u=U;_ZuPrxP}I}0I6AqMU(3LSx|}N?QvIuX2_tGQ1G)~#O=-Z#aWJBVrurAwHQg4#2JNj6MXWRXco*_GrWip; zGa;93(BOy98DpKj$=Q1-;9DF8ADjTV`{R{}rUhvId0RfDd;Sik8`2_(CNbx7_FC7eT=Z!vO;dYVo(EgQ6q=o*oh^m3{^8Uc3*0j9V#O*OMj8pMo|c}FsT zekBtL|C-sBOq{|RcGiBnC1_1X!}Se@eiYxu?4CNFX3HW#ZVRR;eRo`RG3+T8$09#~*?&X|Qb$Mv~cMeOsH<4u-HBrnr-1jIdWEW>5CFv2=Bg*?kT z6?Ri=vXz&Q{p3tyv${O5B+C{)<{e*G&!+PJ(s5P(EU(046`Zt|i(QC)79&hz+z0S_ zKCgO}tqyGA{5Z=FzWREYJUZ+RY?hT5y+Qx5*UwiU>mWOy+2Ub!B}J05GR1wa@t6@C z`)XU=)h)fLcT}W8-3~gct=`mO^qP7{g=$wtdYj*pXKnXY%$!A&Bq_$ZNfN9) z)+>Q%=NbRy*-gtDTKJt?H%X0~)VA`rEQW6*{IawE*4~h}f&m@ZjdTR&F*A~FsEvn9 zLouwe>_n10GqnQ~u;tNA%Dlp)hkKmLc)kNuo0)aq)S}(+T}1vb&LZFAm0%yUMve)$ N^{$Sh?daY|{{ZyOGy(ts literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IptcImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IptcImagePlugin.py new file mode 100644 index 0000000..f5a8de1 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IptcImagePlugin.py @@ -0,0 +1,257 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IPTC/NAA file handling +# +# history: +# 1995-10-01 fl Created +# 1998-03-09 fl Cleaned up and added to PIL +# 2002-06-18 fl Added getiptcinfo helper +# +# Copyright (c) Secret Labs AB 1997-2002. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# + +from __future__ import print_function + +from . import Image, ImageFile +from ._binary import i8, i16be as i16, i32be as i32, o8 +import os +import tempfile + +__version__ = "0.3" + +COMPRESSION = { + 1: "raw", + 5: "jpeg" +} + +PAD = o8(0) * 4 + + +# +# Helpers + +def i(c): + return i32((PAD + c)[-4:]) + + +def dump(c): + for i in c: + print("%02x" % i8(i), end=' ') + print() + + +## +# Image plugin for IPTC/NAA datastreams. To read IPTC/NAA fields +# from TIFF and JPEG files, use the getiptcinfo function. + +class IptcImageFile(ImageFile.ImageFile): + + format = "IPTC" + format_description = "IPTC/NAA" + + def getint(self, key): + return i(self.info[key]) + + def field(self): + # + # get a IPTC field header + s = self.fp.read(5) + if not len(s): + return None, 0 + + tag = i8(s[1]), i8(s[2]) + + # syntax + if i8(s[0]) != 0x1C or tag[0] < 1 or tag[0] > 9: + raise SyntaxError("invalid IPTC/NAA file") + + # field size + size = i8(s[3]) + if size > 132: + raise IOError("illegal field length in IPTC/NAA file") + elif size == 128: + size = 0 + elif size > 128: + size = i(self.fp.read(size-128)) + else: + size = i16(s[3:]) + + return tag, size + + def _open(self): + + # load descriptive fields + while True: + offset = self.fp.tell() + tag, size = self.field() + if not tag or tag == (8, 10): + break + if size: + tagdata = self.fp.read(size) + else: + tagdata = None + if tag in self.info: + if isinstance(self.info[tag], list): + self.info[tag].append(tagdata) + else: + self.info[tag] = [self.info[tag], tagdata] + else: + self.info[tag] = tagdata + + # print(tag, self.info[tag]) + + # mode + layers = i8(self.info[(3, 60)][0]) + component = i8(self.info[(3, 60)][1]) + if (3, 65) in self.info: + id = i8(self.info[(3, 65)][0])-1 + else: + id = 0 + if layers == 1 and not component: + self.mode = "L" + elif layers == 3 and component: + self.mode = "RGB"[id] + elif layers == 4 and component: + self.mode = "CMYK"[id] + + # size + self.size = self.getint((3, 20)), self.getint((3, 30)) + + # compression + try: + compression = COMPRESSION[self.getint((3, 120))] + except KeyError: + raise IOError("Unknown IPTC image compression") + + # tile + if tag == (8, 10): + self.tile = [("iptc", (compression, offset), + (0, 0, self.size[0], self.size[1]))] + + def load(self): + + if len(self.tile) != 1 or self.tile[0][0] != "iptc": + return ImageFile.ImageFile.load(self) + + type, tile, box = self.tile[0] + + encoding, offset = tile + + self.fp.seek(offset) + + # Copy image data to temporary file + o_fd, outfile = tempfile.mkstemp(text=False) + o = os.fdopen(o_fd) + if encoding == "raw": + # To simplify access to the extracted file, + # prepend a PPM header + o.write("P5\n%d %d\n255\n" % self.size) + while True: + type, size = self.field() + if type != (8, 10): + break + while size > 0: + s = self.fp.read(min(size, 8192)) + if not s: + break + o.write(s) + size -= len(s) + o.close() + + try: + _im = Image.open(outfile) + _im.load() + self.im = _im.im + finally: + try: + os.unlink(outfile) + except OSError: + pass + + +Image.register_open(IptcImageFile.format, IptcImageFile) + +Image.register_extension(IptcImageFile.format, ".iim") + + +def getiptcinfo(im): + """ + Get IPTC information from TIFF, JPEG, or IPTC file. + + :param im: An image containing IPTC data. + :returns: A dictionary containing IPTC information, or None if + no IPTC information block was found. + """ + from . import TiffImagePlugin, JpegImagePlugin + import io + + data = None + + if isinstance(im, IptcImageFile): + # return info dictionary right away + return im.info + + elif isinstance(im, JpegImagePlugin.JpegImageFile): + # extract the IPTC/NAA resource + try: + app = im.app["APP13"] + if app[:14] == b"Photoshop 3.0\x00": + app = app[14:] + # parse the image resource block + offset = 0 + while app[offset:offset+4] == b"8BIM": + offset += 4 + # resource code + code = i16(app, offset) + offset += 2 + # resource name (usually empty) + name_len = i8(app[offset]) + # name = app[offset+1:offset+1+name_len] + offset = 1 + offset + name_len + if offset & 1: + offset += 1 + # resource data block + size = i32(app, offset) + offset += 4 + if code == 0x0404: + # 0x0404 contains IPTC/NAA data + data = app[offset:offset+size] + break + offset = offset + size + if offset & 1: + offset += 1 + except (AttributeError, KeyError): + pass + + elif isinstance(im, TiffImagePlugin.TiffImageFile): + # get raw data from the IPTC/NAA tag (PhotoShop tags the data + # as 4-byte integers, so we cannot use the get method...) + try: + data = im.tag.tagdata[TiffImagePlugin.IPTC_NAA_CHUNK] + except (AttributeError, KeyError): + pass + + if data is None: + return None # no properties + + # create an IptcImagePlugin object without initializing it + class FakeImage(object): + pass + im = FakeImage() + im.__class__ = IptcImageFile + + # parse the IPTC information chunk + im.info = {} + im.fp = io.BytesIO(data) + + try: + im._open() + except (IndexError, KeyError): + pass # expected failure + + return im.info diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IptcImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/IptcImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15cca12d5f752525adbd2fa2b0d0e0e414c81649 GIT binary patch literal 6018 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 Fe*uk)TWA0P literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Jpeg2KImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Jpeg2KImagePlugin.py new file mode 100644 index 0000000..25fbefb --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Jpeg2KImagePlugin.py @@ -0,0 +1,276 @@ +# +# The Python Imaging Library +# $Id$ +# +# JPEG2000 file handling +# +# History: +# 2014-03-12 ajh Created +# +# Copyright (c) 2014 Coriolis Systems Limited +# Copyright (c) 2014 Alastair Houghton +# +# See the README file for information on usage and redistribution. +# +from . import Image, ImageFile +import struct +import os +import io + +__version__ = "0.1" + + +def _parse_codestream(fp): + """Parse the JPEG 2000 codestream to extract the size and component + count from the SIZ marker segment, returning a PIL (size, mode) tuple.""" + + hdr = fp.read(2) + lsiz = struct.unpack('>H', hdr)[0] + siz = hdr + fp.read(lsiz - 2) + lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, xtsiz, ytsiz, \ + xtosiz, ytosiz, csiz \ + = struct.unpack_from('>HHIIIIIIIIH', siz) + ssiz = [None]*csiz + xrsiz = [None]*csiz + yrsiz = [None]*csiz + for i in range(csiz): + ssiz[i], xrsiz[i], yrsiz[i] \ + = struct.unpack_from('>BBB', siz, 36 + 3 * i) + + size = (xsiz - xosiz, ysiz - yosiz) + if csiz == 1: + if (yrsiz[0] & 0x7f) > 8: + mode = 'I;16' + else: + mode = 'L' + elif csiz == 2: + mode = 'LA' + elif csiz == 3: + mode = 'RGB' + elif csiz == 4: + mode = 'RGBA' + else: + mode = None + + return (size, mode) + + +def _parse_jp2_header(fp): + """Parse the JP2 header box to extract size, component count and + color space information, returning a PIL (size, mode) tuple.""" + + # Find the JP2 header box + header = None + while True: + lbox, tbox = struct.unpack('>I4s', fp.read(8)) + if lbox == 1: + lbox = struct.unpack('>Q', fp.read(8))[0] + hlen = 16 + else: + hlen = 8 + + if lbox < hlen: + raise SyntaxError('Invalid JP2 header length') + + if tbox == b'jp2h': + header = fp.read(lbox - hlen) + break + else: + fp.seek(lbox - hlen, os.SEEK_CUR) + + if header is None: + raise SyntaxError('could not find JP2 header') + + size = None + mode = None + bpc = None + nc = None + + hio = io.BytesIO(header) + while True: + lbox, tbox = struct.unpack('>I4s', hio.read(8)) + if lbox == 1: + lbox = struct.unpack('>Q', hio.read(8))[0] + hlen = 16 + else: + hlen = 8 + + content = hio.read(lbox - hlen) + + if tbox == b'ihdr': + height, width, nc, bpc, c, unkc, ipr \ + = struct.unpack('>IIHBBBB', content) + size = (width, height) + if unkc: + if nc == 1 and (bpc & 0x7f) > 8: + mode = 'I;16' + elif nc == 1: + mode = 'L' + elif nc == 2: + mode = 'LA' + elif nc == 3: + mode = 'RGB' + elif nc == 4: + mode = 'RGBA' + break + elif tbox == b'colr': + meth, prec, approx = struct.unpack_from('>BBB', content) + if meth == 1: + cs = struct.unpack_from('>I', content, 3)[0] + if cs == 16: # sRGB + if nc == 1 and (bpc & 0x7f) > 8: + mode = 'I;16' + elif nc == 1: + mode = 'L' + elif nc == 3: + mode = 'RGB' + elif nc == 4: + mode = 'RGBA' + break + elif cs == 17: # grayscale + if nc == 1 and (bpc & 0x7f) > 8: + mode = 'I;16' + elif nc == 1: + mode = 'L' + elif nc == 2: + mode = 'LA' + break + elif cs == 18: # sYCC + if nc == 3: + mode = 'RGB' + elif nc == 4: + mode = 'RGBA' + break + + if size is None or mode is None: + raise SyntaxError("Malformed jp2 header") + + return (size, mode) + +## +# Image plugin for JPEG2000 images. + + +class Jpeg2KImageFile(ImageFile.ImageFile): + format = "JPEG2000" + format_description = "JPEG 2000 (ISO 15444)" + + def _open(self): + sig = self.fp.read(4) + if sig == b'\xff\x4f\xff\x51': + self.codec = "j2k" + self.size, self.mode = _parse_codestream(self.fp) + else: + sig = sig + self.fp.read(8) + + if sig == b'\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a': + self.codec = "jp2" + self.size, self.mode = _parse_jp2_header(self.fp) + else: + raise SyntaxError('not a JPEG 2000 file') + + if self.size is None or self.mode is None: + raise SyntaxError('unable to determine size/mode') + + self.reduce = 0 + self.layers = 0 + + fd = -1 + length = -1 + + try: + fd = self.fp.fileno() + length = os.fstat(fd).st_size + except: + fd = -1 + try: + pos = self.fp.tell() + self.fp.seek(0, 2) + length = self.fp.tell() + self.fp.seek(pos, 0) + except: + length = -1 + + self.tile = [('jpeg2k', (0, 0) + self.size, 0, + (self.codec, self.reduce, self.layers, fd, length))] + + def load(self): + if self.reduce: + power = 1 << self.reduce + adjust = power >> 1 + self.size = (int((self.size[0] + adjust) / power), + int((self.size[1] + adjust) / power)) + + if self.tile: + # Update the reduce and layers settings + t = self.tile[0] + t3 = (t[3][0], self.reduce, self.layers, t[3][3], t[3][4]) + self.tile = [(t[0], (0, 0) + self.size, t[2], t3)] + + return ImageFile.ImageFile.load(self) + + +def _accept(prefix): + return (prefix[:4] == b'\xff\x4f\xff\x51' or + prefix[:12] == b'\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a') + + +# ------------------------------------------------------------ +# Save support + +def _save(im, fp, filename): + if filename.endswith('.j2k'): + kind = 'j2k' + else: + kind = 'jp2' + + # Get the keyword arguments + info = im.encoderinfo + + offset = info.get('offset', None) + tile_offset = info.get('tile_offset', None) + tile_size = info.get('tile_size', None) + quality_mode = info.get('quality_mode', 'rates') + quality_layers = info.get('quality_layers', None) + num_resolutions = info.get('num_resolutions', 0) + cblk_size = info.get('codeblock_size', None) + precinct_size = info.get('precinct_size', None) + irreversible = info.get('irreversible', False) + progression = info.get('progression', 'LRCP') + cinema_mode = info.get('cinema_mode', 'no') + fd = -1 + + if hasattr(fp, "fileno"): + try: + fd = fp.fileno() + except: + fd = -1 + + im.encoderconfig = ( + offset, + tile_offset, + tile_size, + quality_mode, + quality_layers, + num_resolutions, + cblk_size, + precinct_size, + irreversible, + progression, + cinema_mode, + fd + ) + + ImageFile._save(im, fp, [('jpeg2k', (0, 0)+im.size, 0, kind)]) + +# ------------------------------------------------------------ +# Registry stuff + + +Image.register_open(Jpeg2KImageFile.format, Jpeg2KImageFile, _accept) +Image.register_save(Jpeg2KImageFile.format, _save) + +Image.register_extensions(Jpeg2KImageFile.format, [".jp2", ".j2k", ".jpc", ".jpf", ".jpx", ".j2c"]) + +Image.register_mime(Jpeg2KImageFile.format, 'image/jp2') +Image.register_mime(Jpeg2KImageFile.format, 'image/jpx') diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Jpeg2KImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/Jpeg2KImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..655a48ed03e2fc7b9121acada6aa145d65ff6586 GIT binary patch literal 6644 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegImagePlugin.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegImagePlugin.py new file mode 100644 index 0000000..97ef834 --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegImagePlugin.py @@ -0,0 +1,804 @@ +# +# The Python Imaging Library. +# $Id$ +# +# JPEG (JFIF) file handling +# +# See "Digital Compression and Coding of Continuous-Tone Still Images, +# Part 1, Requirements and Guidelines" (CCITT T.81 / ISO 10918-1) +# +# History: +# 1995-09-09 fl Created +# 1995-09-13 fl Added full parser +# 1996-03-25 fl Added hack to use the IJG command line utilities +# 1996-05-05 fl Workaround Photoshop 2.5 CMYK polarity bug +# 1996-05-28 fl Added draft support, JFIF version (0.1) +# 1996-12-30 fl Added encoder options, added progression property (0.2) +# 1997-08-27 fl Save mode 1 images as BW (0.3) +# 1998-07-12 fl Added YCbCr to draft and save methods (0.4) +# 1998-10-19 fl Don't hang on files using 16-bit DQT's (0.4.1) +# 2001-04-16 fl Extract DPI settings from JFIF files (0.4.2) +# 2002-07-01 fl Skip pad bytes before markers; identify Exif files (0.4.3) +# 2003-04-25 fl Added experimental EXIF decoder (0.5) +# 2003-06-06 fl Added experimental EXIF GPSinfo decoder +# 2003-09-13 fl Extract COM markers +# 2009-09-06 fl Added icc_profile support (from Florian Hoech) +# 2009-03-06 fl Changed CMYK handling; always use Adobe polarity (0.6) +# 2009-03-08 fl Added subsampling support (from Justin Huff). +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from __future__ import print_function + +import array +import struct +import io +import warnings +from . import Image, ImageFile, TiffImagePlugin +from ._binary import i8, o8, i16be as i16 +from .JpegPresets import presets +from ._util import isStringType + +__version__ = "0.6" + + +# +# Parser + +def Skip(self, marker): + n = i16(self.fp.read(2))-2 + ImageFile._safe_read(self.fp, n) + + +def APP(self, marker): + # + # Application marker. Store these in the APP dictionary. + # Also look for well-known application markers. + + n = i16(self.fp.read(2))-2 + s = ImageFile._safe_read(self.fp, n) + + app = "APP%d" % (marker & 15) + + self.app[app] = s # compatibility + self.applist.append((app, s)) + + if marker == 0xFFE0 and s[:4] == b"JFIF": + # extract JFIF information + self.info["jfif"] = version = i16(s, 5) # version + self.info["jfif_version"] = divmod(version, 256) + # extract JFIF properties + try: + jfif_unit = i8(s[7]) + jfif_density = i16(s, 8), i16(s, 10) + except: + pass + else: + if jfif_unit == 1: + self.info["dpi"] = jfif_density + self.info["jfif_unit"] = jfif_unit + self.info["jfif_density"] = jfif_density + elif marker == 0xFFE1 and s[:5] == b"Exif\0": + if "exif" not in self.info: + # extract Exif information (incomplete) + self.info["exif"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:5] == b"FPXR\0": + # extract FlashPix information (incomplete) + self.info["flashpix"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:12] == b"ICC_PROFILE\0": + # Since an ICC profile can be larger than the maximum size of + # a JPEG marker (64K), we need provisions to split it into + # multiple markers. The format defined by the ICC specifies + # one or more APP2 markers containing the following data: + # Identifying string ASCII "ICC_PROFILE\0" (12 bytes) + # Marker sequence number 1, 2, etc (1 byte) + # Number of markers Total of APP2's used (1 byte) + # Profile data (remainder of APP2 data) + # Decoders should use the marker sequence numbers to + # reassemble the profile, rather than assuming that the APP2 + # markers appear in the correct sequence. + self.icclist.append(s) + elif marker == 0xFFEE and s[:5] == b"Adobe": + self.info["adobe"] = i16(s, 5) + # extract Adobe custom properties + try: + adobe_transform = i8(s[1]) + except: + pass + else: + self.info["adobe_transform"] = adobe_transform + elif marker == 0xFFE2 and s[:4] == b"MPF\0": + # extract MPO information + self.info["mp"] = s[4:] + # offset is current location minus buffer size + # plus constant header size + self.info["mpoffset"] = self.fp.tell() - n + 4 + + # If DPI isn't in JPEG header, fetch from EXIF + if "dpi" not in self.info and "exif" in self.info: + try: + exif = self._getexif() + resolution_unit = exif[0x0128] + x_resolution = exif[0x011A] + try: + dpi = x_resolution[0] / x_resolution[1] + except TypeError: + dpi = x_resolution + if resolution_unit == 3: # cm + # 1 dpcm = 2.54 dpi + dpi *= 2.54 + self.info["dpi"] = dpi, dpi + except (KeyError, SyntaxError, ZeroDivisionError): + # SyntaxError for invalid/unreadable exif + # KeyError for dpi not included + # ZeroDivisionError for invalid dpi rational value + self.info["dpi"] = 72, 72 + + +def COM(self, marker): + # + # Comment marker. Store these in the APP dictionary. + n = i16(self.fp.read(2))-2 + s = ImageFile._safe_read(self.fp, n) + + self.app["COM"] = s # compatibility + self.applist.append(("COM", s)) + + +def SOF(self, marker): + # + # Start of frame marker. Defines the size and mode of the + # image. JPEG is colour blind, so we use some simple + # heuristics to map the number of layers to an appropriate + # mode. Note that this could be made a bit brighter, by + # looking for JFIF and Adobe APP markers. + + n = i16(self.fp.read(2))-2 + s = ImageFile._safe_read(self.fp, n) + self.size = i16(s[3:]), i16(s[1:]) + + self.bits = i8(s[0]) + if self.bits != 8: + raise SyntaxError("cannot handle %d-bit layers" % self.bits) + + self.layers = i8(s[5]) + if self.layers == 1: + self.mode = "L" + elif self.layers == 3: + self.mode = "RGB" + elif self.layers == 4: + self.mode = "CMYK" + else: + raise SyntaxError("cannot handle %d-layer images" % self.layers) + + if marker in [0xFFC2, 0xFFC6, 0xFFCA, 0xFFCE]: + self.info["progressive"] = self.info["progression"] = 1 + + if self.icclist: + # fixup icc profile + self.icclist.sort() # sort by sequence number + if i8(self.icclist[0][13]) == len(self.icclist): + profile = [] + for p in self.icclist: + profile.append(p[14:]) + icc_profile = b"".join(profile) + else: + icc_profile = None # wrong number of fragments + self.info["icc_profile"] = icc_profile + self.icclist = None + + for i in range(6, len(s), 3): + t = s[i:i+3] + # 4-tuples: id, vsamp, hsamp, qtable + self.layer.append((t[0], i8(t[1])//16, i8(t[1]) & 15, i8(t[2]))) + + +def DQT(self, marker): + # + # Define quantization table. Support baseline 8-bit tables + # only. Note that there might be more than one table in + # each marker. + + # FIXME: The quantization tables can be used to estimate the + # compression quality. + + n = i16(self.fp.read(2))-2 + s = ImageFile._safe_read(self.fp, n) + while len(s): + if len(s) < 65: + raise SyntaxError("bad quantization table marker") + v = i8(s[0]) + if v//16 == 0: + self.quantization[v & 15] = array.array("B", s[1:65]) + s = s[65:] + else: + return # FIXME: add code to read 16-bit tables! + # raise SyntaxError, "bad quantization table element size" + + +# +# JPEG marker table + +MARKER = { + 0xFFC0: ("SOF0", "Baseline DCT", SOF), + 0xFFC1: ("SOF1", "Extended Sequential DCT", SOF), + 0xFFC2: ("SOF2", "Progressive DCT", SOF), + 0xFFC3: ("SOF3", "Spatial lossless", SOF), + 0xFFC4: ("DHT", "Define Huffman table", Skip), + 0xFFC5: ("SOF5", "Differential sequential DCT", SOF), + 0xFFC6: ("SOF6", "Differential progressive DCT", SOF), + 0xFFC7: ("SOF7", "Differential spatial", SOF), + 0xFFC8: ("JPG", "Extension", None), + 0xFFC9: ("SOF9", "Extended sequential DCT (AC)", SOF), + 0xFFCA: ("SOF10", "Progressive DCT (AC)", SOF), + 0xFFCB: ("SOF11", "Spatial lossless DCT (AC)", SOF), + 0xFFCC: ("DAC", "Define arithmetic coding conditioning", Skip), + 0xFFCD: ("SOF13", "Differential sequential DCT (AC)", SOF), + 0xFFCE: ("SOF14", "Differential progressive DCT (AC)", SOF), + 0xFFCF: ("SOF15", "Differential spatial (AC)", SOF), + 0xFFD0: ("RST0", "Restart 0", None), + 0xFFD1: ("RST1", "Restart 1", None), + 0xFFD2: ("RST2", "Restart 2", None), + 0xFFD3: ("RST3", "Restart 3", None), + 0xFFD4: ("RST4", "Restart 4", None), + 0xFFD5: ("RST5", "Restart 5", None), + 0xFFD6: ("RST6", "Restart 6", None), + 0xFFD7: ("RST7", "Restart 7", None), + 0xFFD8: ("SOI", "Start of image", None), + 0xFFD9: ("EOI", "End of image", None), + 0xFFDA: ("SOS", "Start of scan", Skip), + 0xFFDB: ("DQT", "Define quantization table", DQT), + 0xFFDC: ("DNL", "Define number of lines", Skip), + 0xFFDD: ("DRI", "Define restart interval", Skip), + 0xFFDE: ("DHP", "Define hierarchical progression", SOF), + 0xFFDF: ("EXP", "Expand reference component", Skip), + 0xFFE0: ("APP0", "Application segment 0", APP), + 0xFFE1: ("APP1", "Application segment 1", APP), + 0xFFE2: ("APP2", "Application segment 2", APP), + 0xFFE3: ("APP3", "Application segment 3", APP), + 0xFFE4: ("APP4", "Application segment 4", APP), + 0xFFE5: ("APP5", "Application segment 5", APP), + 0xFFE6: ("APP6", "Application segment 6", APP), + 0xFFE7: ("APP7", "Application segment 7", APP), + 0xFFE8: ("APP8", "Application segment 8", APP), + 0xFFE9: ("APP9", "Application segment 9", APP), + 0xFFEA: ("APP10", "Application segment 10", APP), + 0xFFEB: ("APP11", "Application segment 11", APP), + 0xFFEC: ("APP12", "Application segment 12", APP), + 0xFFED: ("APP13", "Application segment 13", APP), + 0xFFEE: ("APP14", "Application segment 14", APP), + 0xFFEF: ("APP15", "Application segment 15", APP), + 0xFFF0: ("JPG0", "Extension 0", None), + 0xFFF1: ("JPG1", "Extension 1", None), + 0xFFF2: ("JPG2", "Extension 2", None), + 0xFFF3: ("JPG3", "Extension 3", None), + 0xFFF4: ("JPG4", "Extension 4", None), + 0xFFF5: ("JPG5", "Extension 5", None), + 0xFFF6: ("JPG6", "Extension 6", None), + 0xFFF7: ("JPG7", "Extension 7", None), + 0xFFF8: ("JPG8", "Extension 8", None), + 0xFFF9: ("JPG9", "Extension 9", None), + 0xFFFA: ("JPG10", "Extension 10", None), + 0xFFFB: ("JPG11", "Extension 11", None), + 0xFFFC: ("JPG12", "Extension 12", None), + 0xFFFD: ("JPG13", "Extension 13", None), + 0xFFFE: ("COM", "Comment", COM) +} + + +def _accept(prefix): + return prefix[0:1] == b"\377" + + +## +# Image plugin for JPEG and JFIF images. + +class JpegImageFile(ImageFile.ImageFile): + + format = "JPEG" + format_description = "JPEG (ISO 10918)" + + def _open(self): + + s = self.fp.read(1) + + if i8(s) != 255: + raise SyntaxError("not a JPEG file") + + # Create attributes + self.bits = self.layers = 0 + + # JPEG specifics (internal) + self.layer = [] + self.huffman_dc = {} + self.huffman_ac = {} + self.quantization = {} + self.app = {} # compatibility + self.applist = [] + self.icclist = [] + + while True: + + i = i8(s) + if i == 0xFF: + s = s + self.fp.read(1) + i = i16(s) + else: + # Skip non-0xFF junk + s = self.fp.read(1) + continue + + if i in MARKER: + name, description, handler = MARKER[i] + # print(hex(i), name, description) + if handler is not None: + handler(self, i) + if i == 0xFFDA: # start of scan + rawmode = self.mode + if self.mode == "CMYK": + rawmode = "CMYK;I" # assume adobe conventions + self.tile = [("jpeg", (0, 0) + self.size, 0, + (rawmode, ""))] + # self.__offset = self.fp.tell() + break + s = self.fp.read(1) + elif i == 0 or i == 0xFFFF: + # padded marker or junk; move on + s = b"\xff" + elif i == 0xFF00: # Skip extraneous data (escaped 0xFF) + s = self.fp.read(1) + else: + raise SyntaxError("no marker found") + + def load_read(self, read_bytes): + """ + internal: read more image data + For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker + so libjpeg can finish decoding + """ + s = self.fp.read(read_bytes) + + if not s and ImageFile.LOAD_TRUNCATED_IMAGES: + # Premature EOF. + # Pretend file is finished adding EOI marker + return b"\xFF\xD9" + + return s + + def draft(self, mode, size): + + if len(self.tile) != 1: + return + + # Protect from second call + if self.decoderconfig: + return + + d, e, o, a = self.tile[0] + scale = 0 + + if a[0] == "RGB" and mode in ["L", "YCbCr"]: + self.mode = mode + a = mode, "" + + if size: + scale = min(self.size[0] // size[0], self.size[1] // size[1]) + for s in [8, 4, 2, 1]: + if scale >= s: + break + e = e[0], e[1], (e[2]-e[0]+s-1)//s+e[0], (e[3]-e[1]+s-1)//s+e[1] + self.size = ((self.size[0]+s-1)//s, (self.size[1]+s-1)//s) + scale = s + + self.tile = [(d, e, o, a)] + self.decoderconfig = (scale, 0) + + return self + + def load_djpeg(self): + + # ALTERNATIVE: handle JPEGs via the IJG command line utilities + + import subprocess + import tempfile + import os + f, path = tempfile.mkstemp() + os.close(f) + if os.path.exists(self.filename): + subprocess.check_call(["djpeg", "-outfile", path, self.filename]) + else: + raise ValueError("Invalid Filename") + + try: + _im = Image.open(path) + _im.load() + self.im = _im.im + finally: + try: + os.unlink(path) + except OSError: + pass + + self.mode = self.im.mode + self.size = self.im.size + + self.tile = [] + + def _getexif(self): + return _getexif(self) + + def _getmp(self): + return _getmp(self) + + +def _fixup_dict(src_dict): + # Helper function for _getexif() + # returns a dict with any single item tuples/lists as individual values + def _fixup(value): + try: + if len(value) == 1 and not isinstance(value, dict): + return value[0] + except: + pass + return value + + return {k: _fixup(v) for k, v in src_dict.items()} + + +def _getexif(self): + # Extract EXIF information. This method is highly experimental, + # and is likely to be replaced with something better in a future + # version. + + # The EXIF record consists of a TIFF file embedded in a JPEG + # application marker (!). + try: + data = self.info["exif"] + except KeyError: + return None + file = io.BytesIO(data[6:]) + head = file.read(8) + # process dictionary + info = TiffImagePlugin.ImageFileDirectory_v1(head) + info.load(file) + exif = dict(_fixup_dict(info)) + # get exif extension + try: + # exif field 0x8769 is an offset pointer to the location + # of the nested embedded exif ifd. + # It should be a long, but may be corrupted. + file.seek(exif[0x8769]) + except (KeyError, TypeError): + pass + else: + info = TiffImagePlugin.ImageFileDirectory_v1(head) + info.load(file) + exif.update(_fixup_dict(info)) + # get gpsinfo extension + try: + # exif field 0x8825 is an offset pointer to the location + # of the nested embedded gps exif ifd. + # It should be a long, but may be corrupted. + file.seek(exif[0x8825]) + except (KeyError, TypeError): + pass + else: + info = TiffImagePlugin.ImageFileDirectory_v1(head) + info.load(file) + exif[0x8825] = _fixup_dict(info) + + return exif + + +def _getmp(self): + # Extract MP information. This method was inspired by the "highly + # experimental" _getexif version that's been in use for years now, + # itself based on the ImageFileDirectory class in the TIFF plug-in. + + # The MP record essentially consists of a TIFF file embedded in a JPEG + # application marker. + try: + data = self.info["mp"] + except KeyError: + return None + file_contents = io.BytesIO(data) + head = file_contents.read(8) + endianness = '>' if head[:4] == b'\x4d\x4d\x00\x2a' else '<' + # process dictionary + try: + info = TiffImagePlugin.ImageFileDirectory_v2(head) + info.load(file_contents) + mp = dict(info) + except: + raise SyntaxError("malformed MP Index (unreadable directory)") + # it's an error not to have a number of images + try: + quant = mp[0xB001] + except KeyError: + raise SyntaxError("malformed MP Index (no number of images)") + # get MP entries + mpentries = [] + try: + rawmpentries = mp[0xB002] + for entrynum in range(0, quant): + unpackedentry = struct.unpack_from( + '{}LLLHH'.format(endianness), rawmpentries, entrynum * 16) + labels = ('Attribute', 'Size', 'DataOffset', 'EntryNo1', + 'EntryNo2') + mpentry = dict(zip(labels, unpackedentry)) + mpentryattr = { + 'DependentParentImageFlag': bool(mpentry['Attribute'] & + (1 << 31)), + 'DependentChildImageFlag': bool(mpentry['Attribute'] & + (1 << 30)), + 'RepresentativeImageFlag': bool(mpentry['Attribute'] & + (1 << 29)), + 'Reserved': (mpentry['Attribute'] & (3 << 27)) >> 27, + 'ImageDataFormat': (mpentry['Attribute'] & (7 << 24)) >> 24, + 'MPType': mpentry['Attribute'] & 0x00FFFFFF + } + if mpentryattr['ImageDataFormat'] == 0: + mpentryattr['ImageDataFormat'] = 'JPEG' + else: + raise SyntaxError("unsupported picture format in MPO") + mptypemap = { + 0x000000: 'Undefined', + 0x010001: 'Large Thumbnail (VGA Equivalent)', + 0x010002: 'Large Thumbnail (Full HD Equivalent)', + 0x020001: 'Multi-Frame Image (Panorama)', + 0x020002: 'Multi-Frame Image: (Disparity)', + 0x020003: 'Multi-Frame Image: (Multi-Angle)', + 0x030000: 'Baseline MP Primary Image' + } + mpentryattr['MPType'] = mptypemap.get(mpentryattr['MPType'], + 'Unknown') + mpentry['Attribute'] = mpentryattr + mpentries.append(mpentry) + mp[0xB002] = mpentries + except KeyError: + raise SyntaxError("malformed MP Index (bad MP Entry)") + # Next we should try and parse the individual image unique ID list; + # we don't because I've never seen this actually used in a real MPO + # file and so can't test it. + return mp + + +# -------------------------------------------------------------------- +# stuff to save JPEG files + +RAWMODE = { + "1": "L", + "L": "L", + "RGB": "RGB", + "RGBX": "RGB", + "CMYK": "CMYK;I", # assume adobe conventions + "YCbCr": "YCbCr", +} + +zigzag_index = (0, 1, 5, 6, 14, 15, 27, 28, + 2, 4, 7, 13, 16, 26, 29, 42, + 3, 8, 12, 17, 25, 30, 41, 43, + 9, 11, 18, 24, 31, 40, 44, 53, + 10, 19, 23, 32, 39, 45, 52, 54, + 20, 22, 33, 38, 46, 51, 55, 60, + 21, 34, 37, 47, 50, 56, 59, 61, + 35, 36, 48, 49, 57, 58, 62, 63) + +samplings = {(1, 1, 1, 1, 1, 1): 0, + (2, 1, 1, 1, 1, 1): 1, + (2, 2, 1, 1, 1, 1): 2, + } + + +def convert_dict_qtables(qtables): + qtables = [qtables[key] for key in range(len(qtables)) if key in qtables] + for idx, table in enumerate(qtables): + qtables[idx] = [table[i] for i in zigzag_index] + return qtables + + +def get_sampling(im): + # There's no subsampling when image have only 1 layer + # (grayscale images) or when they are CMYK (4 layers), + # so set subsampling to default value. + # + # NOTE: currently Pillow can't encode JPEG to YCCK format. + # If YCCK support is added in the future, subsampling code will have + # to be updated (here and in JpegEncode.c) to deal with 4 layers. + if not hasattr(im, 'layers') or im.layers in (1, 4): + return -1 + sampling = im.layer[0][1:3] + im.layer[1][1:3] + im.layer[2][1:3] + return samplings.get(sampling, -1) + + +def _save(im, fp, filename): + + try: + rawmode = RAWMODE[im.mode] + except KeyError: + raise IOError("cannot write mode %s as JPEG" % im.mode) + + info = im.encoderinfo + + dpi = [int(round(x)) for x in info.get("dpi", (0, 0))] + + quality = info.get("quality", 0) + subsampling = info.get("subsampling", -1) + qtables = info.get("qtables") + + if quality == "keep": + quality = 0 + subsampling = "keep" + qtables = "keep" + elif quality in presets: + preset = presets[quality] + quality = 0 + subsampling = preset.get('subsampling', -1) + qtables = preset.get('quantization') + elif not isinstance(quality, int): + raise ValueError("Invalid quality setting") + else: + if subsampling in presets: + subsampling = presets[subsampling].get('subsampling', -1) + if isStringType(qtables) and qtables in presets: + qtables = presets[qtables].get('quantization') + + if subsampling == "4:4:4": + subsampling = 0 + elif subsampling == "4:2:2": + subsampling = 1 + elif subsampling == "4:2:0": + subsampling = 2 + elif subsampling == "4:1:1": + # For compatibility. Before Pillow 4.3, 4:1:1 actually meant 4:2:0. + # Set 4:2:0 if someone is still using that value. + subsampling = 2 + elif subsampling == "keep": + if im.format != "JPEG": + raise ValueError( + "Cannot use 'keep' when original image is not a JPEG") + subsampling = get_sampling(im) + + def validate_qtables(qtables): + if qtables is None: + return qtables + if isStringType(qtables): + try: + lines = [int(num) for line in qtables.splitlines() + for num in line.split('#', 1)[0].split()] + except ValueError: + raise ValueError("Invalid quantization table") + else: + qtables = [lines[s:s+64] for s in range(0, len(lines), 64)] + if isinstance(qtables, (tuple, list, dict)): + if isinstance(qtables, dict): + qtables = convert_dict_qtables(qtables) + elif isinstance(qtables, tuple): + qtables = list(qtables) + if not (0 < len(qtables) < 5): + raise ValueError("None or too many quantization tables") + for idx, table in enumerate(qtables): + try: + if len(table) != 64: + raise TypeError + table = array.array('B', table) + except TypeError: + raise ValueError("Invalid quantization table") + else: + qtables[idx] = list(table) + return qtables + + if qtables == "keep": + if im.format != "JPEG": + raise ValueError( + "Cannot use 'keep' when original image is not a JPEG") + qtables = getattr(im, "quantization", None) + qtables = validate_qtables(qtables) + + extra = b"" + + icc_profile = info.get("icc_profile") + if icc_profile: + ICC_OVERHEAD_LEN = 14 + MAX_BYTES_IN_MARKER = 65533 + MAX_DATA_BYTES_IN_MARKER = MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN + markers = [] + while icc_profile: + markers.append(icc_profile[:MAX_DATA_BYTES_IN_MARKER]) + icc_profile = icc_profile[MAX_DATA_BYTES_IN_MARKER:] + i = 1 + for marker in markers: + size = struct.pack(">H", 2 + ICC_OVERHEAD_LEN + len(marker)) + extra += (b"\xFF\xE2" + size + b"ICC_PROFILE\0" + o8(i) + + o8(len(markers)) + marker) + i += 1 + + # "progressive" is the official name, but older documentation + # says "progression" + # FIXME: issue a warning if the wrong form is used (post-1.1.7) + progressive = (info.get("progressive", False) or + info.get("progression", False)) + + optimize = info.get("optimize", False) + + # get keyword arguments + im.encoderconfig = ( + quality, + progressive, + info.get("smooth", 0), + optimize, + info.get("streamtype", 0), + dpi[0], dpi[1], + subsampling, + qtables, + extra, + info.get("exif", b"") + ) + + # if we optimize, libjpeg needs a buffer big enough to hold the whole image + # in a shot. Guessing on the size, at im.size bytes. (raw pixel size is + # channels*size, this is a value that's been used in a django patch. + # https://github.com/matthewwithanm/django-imagekit/issues/50 + bufsize = 0 + if optimize or progressive: + # CMYK can be bigger + if im.mode == 'CMYK': + bufsize = 4 * im.size[0] * im.size[1] + # keep sets quality to 0, but the actual value may be high. + elif quality >= 95 or quality == 0: + bufsize = 2 * im.size[0] * im.size[1] + else: + bufsize = im.size[0] * im.size[1] + + # The exif info needs to be written as one block, + APP1, + one spare byte. + # Ensure that our buffer is big enough. Same with the icc_profile block. + bufsize = max(ImageFile.MAXBLOCK, bufsize, len(info.get("exif", b"")) + 5, + len(extra) + 1) + + ImageFile._save(im, fp, [("jpeg", (0, 0)+im.size, 0, rawmode)], bufsize) + + +def _save_cjpeg(im, fp, filename): + # ALTERNATIVE: handle JPEGs via the IJG command line utilities. + import os + import subprocess + tempfile = im._dump() + subprocess.check_call(["cjpeg", "-outfile", filename, tempfile]) + try: + os.unlink(tempfile) + except OSError: + pass + + +## +# Factory for making JPEG and MPO instances +def jpeg_factory(fp=None, filename=None): + im = JpegImageFile(fp, filename) + try: + mpheader = im._getmp() + if mpheader[45057] > 1: + # It's actually an MPO + from .MpoImagePlugin import MpoImageFile + im = MpoImageFile(fp, filename) + except (TypeError, IndexError): + # It is really a JPEG + pass + except SyntaxError: + warnings.warn("Image appears to be a malformed MPO file, it will be " + "interpreted as a base JPEG file") + return im + + +# -------------------------------------------------------------------q- +# Registry stuff + +Image.register_open(JpegImageFile.format, jpeg_factory, _accept) +Image.register_save(JpegImageFile.format, _save) + +Image.register_extensions(JpegImageFile.format, [".jfif", ".jpe", ".jpg", ".jpeg"]) + +Image.register_mime(JpegImageFile.format, "image/jpeg") diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegImagePlugin.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegImagePlugin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8425f20be151a6a434e9eaa31cbf8bd3abcfc37d GIT binary patch literal 21544 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 literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegPresets.py b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegPresets.py new file mode 100644 index 0000000..5f01f0d --- /dev/null +++ b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegPresets.py @@ -0,0 +1,241 @@ +""" +JPEG quality settings equivalent to the Photoshop settings. + +More presets can be added to the presets dict if needed. + +Can be use when saving JPEG file. + +To apply the preset, specify:: + + quality="preset_name" + +To apply only the quantization table:: + + qtables="preset_name" + +To apply only the subsampling setting:: + + subsampling="preset_name" + +Example:: + + im.save("image_name.jpg", quality="web_high") + + +Subsampling +----------- + +Subsampling is the practice of encoding images by implementing less resolution +for chroma information than for luma information. +(ref.: https://en.wikipedia.org/wiki/Chroma_subsampling) + +Possible subsampling values are 0, 1 and 2 that correspond to 4:4:4, 4:2:2 and +4:2:0. + +You can get the subsampling of a JPEG with the +`JpegImagePlugin.get_subsampling(im)` function. + + +Quantization tables +------------------- + +They are values use by the DCT (Discrete cosine transform) to remove +*unnecessary* information from the image (the lossy part of the compression). +(ref.: https://en.wikipedia.org/wiki/Quantization_matrix#Quantization_matrices, +https://en.wikipedia.org/wiki/JPEG#Quantization) + +You can get the quantization tables of a JPEG with:: + + im.quantization + +This will return a dict with a number of arrays. You can pass this dict +directly as the qtables argument when saving a JPEG. + +The tables format between im.quantization and quantization in presets differ in +3 ways: + +1. The base container of the preset is a list with sublists instead of dict. + dict[0] -> list[0], dict[1] -> list[1], ... +2. Each table in a preset is a list instead of an array. +3. The zigzag order is remove in the preset (needed by libjpeg >= 6a). + +You can convert the dict format to the preset format with the +`JpegImagePlugin.convert_dict_qtables(dict_qtables)` function. + +Libjpeg ref.: https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html + +""" + +presets = { + 'web_low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [20, 16, 25, 39, 50, 46, 62, 68, + 16, 18, 23, 38, 38, 53, 65, 68, + 25, 23, 31, 38, 53, 65, 68, 68, + 39, 38, 38, 53, 65, 68, 68, 68, + 50, 38, 53, 65, 68, 68, 68, 68, + 46, 53, 65, 68, 68, 68, 68, 68, + 62, 65, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68], + [21, 25, 32, 38, 54, 68, 68, 68, + 25, 28, 24, 38, 54, 68, 68, 68, + 32, 24, 32, 43, 66, 68, 68, 68, + 38, 38, 43, 53, 68, 68, 68, 68, + 54, 54, 66, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68] + ]}, + 'web_medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [16, 11, 11, 16, 23, 27, 31, 30, + 11, 12, 12, 15, 20, 23, 23, 30, + 11, 12, 13, 16, 23, 26, 35, 47, + 16, 15, 16, 23, 26, 37, 47, 64, + 23, 20, 23, 26, 39, 51, 64, 64, + 27, 23, 26, 37, 51, 64, 64, 64, + 31, 23, 35, 47, 64, 64, 64, 64, + 30, 30, 47, 64, 64, 64, 64, 64], + [17, 15, 17, 21, 20, 26, 38, 48, + 15, 19, 18, 17, 20, 26, 35, 43, + 17, 18, 20, 22, 26, 30, 46, 53, + 21, 17, 22, 28, 30, 39, 53, 64, + 20, 20, 26, 30, 39, 48, 64, 64, + 26, 26, 30, 39, 48, 63, 64, 64, + 38, 35, 46, 53, 64, 64, 64, 64, + 48, 43, 53, 64, 64, 64, 64, 64] + ]}, + 'web_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 14, 19, + 6, 6, 6, 11, 12, 15, 19, 28, + 9, 8, 10, 12, 16, 20, 27, 31, + 11, 10, 12, 15, 20, 27, 31, 31, + 12, 12, 14, 19, 27, 31, 31, 31, + 16, 12, 19, 28, 31, 31, 31, 31], + [7, 7, 13, 24, 26, 31, 31, 31, + 7, 12, 16, 21, 31, 31, 31, 31, + 13, 16, 17, 31, 31, 31, 31, 31, + 24, 21, 31, 31, 31, 31, 31, 31, + 26, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31] + ]}, + 'web_very_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 11, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 11, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'web_maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 1, 1, 2, 2, 3, 3, + 1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 2, 2, 3, 3, 3, 3], + [1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 1, 2, 3, 3, 3, 3, + 1, 1, 1, 3, 3, 3, 3, 3, + 2, 2, 3, 3, 3, 3, 3, 3, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3] + ]}, + 'low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [18, 14, 14, 21, 30, 35, 34, 17, + 14, 16, 16, 19, 26, 23, 12, 12, + 14, 16, 17, 21, 23, 12, 12, 12, + 21, 19, 21, 23, 12, 12, 12, 12, + 30, 26, 23, 12, 12, 12, 12, 12, + 35, 23, 12, 12, 12, 12, 12, 12, + 34, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [20, 19, 22, 27, 20, 20, 17, 17, + 19, 25, 23, 14, 14, 12, 12, 12, + 22, 23, 14, 14, 12, 12, 12, 12, + 27, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [12, 8, 8, 12, 17, 21, 24, 17, + 8, 9, 9, 11, 15, 19, 12, 12, + 8, 9, 10, 12, 19, 12, 12, 12, + 12, 11, 12, 21, 12, 12, 12, 12, + 17, 15, 19, 12, 12, 12, 12, 12, + 21, 19, 12, 12, 12, 12, 12, 12, + 24, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [13, 11, 13, 16, 20, 20, 17, 17, + 11, 14, 14, 14, 14, 12, 12, 12, + 13, 14, 14, 14, 12, 12, 12, 12, + 16, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 12, 12, + 6, 6, 6, 11, 12, 12, 12, 12, + 9, 8, 10, 12, 12, 12, 12, 12, + 11, 10, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 16, 12, 12, 12, 12, 12, 12, 12], + [7, 7, 13, 24, 20, 20, 17, 17, + 7, 12, 16, 14, 14, 12, 12, 12, + 13, 16, 14, 14, 12, 12, 12, 12, + 24, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 10, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 10, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, +} diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegPresets.pyc b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/JpegPresets.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d608137cebbf7a165d90a6a255cf96e537364ef3 GIT binary patch literal 6483 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 TL*3cKM|wRKSq1@}T;;z3^R-`V literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libtiff-8a6d997d.so.5.3.0 b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libtiff-8a6d997d.so.5.3.0 new file mode 100755 index 0000000000000000000000000000000000000000..c2ac40fa11b9d42bb39259a7e5fc53c012d0d94a GIT binary patch literal 636464 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 STdP-mZ$@wn3_AKv_J0Am^sd|h literal 0 HcmV?d00001 diff --git a/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libwebp-8ccd29fd.so.7.0.2 b/googleAppEngine/scipy/env/lib/python2.7/site-packages/PIL/.libs/libwebp-8ccd29fd.so.7.0.2 new file mode 100755 index 0000000000000000000000000000000000000000..b2f0763847a525fa3ba460237cb01d27660da669 GIT binary patch literal 776912 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 wG9~WZSxWO#1@$qZlv0Bl(8B_*&a^zLE0z1`h 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