[Python-modules-commits] [thumbor] 01/07: New upstream version 6.3.2
Marcelo Jorge Vieira
metal at moszumanska.debian.org
Sat Sep 9 04:57:53 UTC 2017
This is an automated email from the git hooks/post-receive script.
metal pushed a commit to branch master
in repository thumbor.
commit 357d826ae4d4d89a31a826fe6584b217be3a6ba1
Author: Marcelo Jorge Vieira <metal at alucinados.com>
Date: Fri Sep 8 18:55:13 2017 -0300
New upstream version 6.3.2
---
.continuousrc | 46 +
.coveragerc | 18 +
.gitignore | 34 +
.travis.yml | 63 +
.venv | 1 +
CHANGELOG | 500 +
CONTRIBUTING.md | 68 +
LICENSE | 20 +
MANIFEST.in | 6 +
Makefile | 153 +
README.mkd | 40 +
docs/Makefile | 177 +
docs/administration.rst | 15 +
docs/available_detectors.rst | 38 +
docs/background_color.rst | 42 +
docs/blur.rst | 29 +
docs/brightness.rst | 27 +
docs/conf.py | 266 +
docs/configuration.rst | 989 +
docs/contrast.rst | 32 +
docs/convolution.rst | 54 +
docs/create_my_own_storage.rst | 30 +
docs/crop_and_resize_algorithms.rst | 64 +
docs/custom_detection.rst | 26 +
docs/custom_error_handling.rst | 57 +
docs/detection_algorithms.rst | 169 +
docs/detectors.rst | 9 +
docs/documentation_structure.txt | 68 +
docs/enabling_detectors.rst | 48 +
docs/equalize.rst | 25 +
docs/extending.rst | 8 +
docs/extract_focal_points.rst | 55 +
docs/filling.rst | 86 +
docs/filters.rst | 28 +
docs/focal.rst | 41 +
docs/format.rst | 20 +
docs/getting_started.rst | 61 +
docs/grayscale.rst | 25 +
docs/hacking_on_thumbor.rst | 84 +
docs/hosting.rst | 201 +
docs/how_to_upload_images.rst | 275 +
docs/image_loader.rst | 92 +
docs/image_storage.rst | 131 +
docs/images/after_convolution1.png | Bin 0 -> 16460 bytes
docs/images/after_convolution2.png | Bin 0 -> 20202 bytes
docs/images/before_convolution.png | Bin 0 -> 20853 bytes
docs/images/blur_after.jpg | Bin 0 -> 3342 bytes
docs/images/blur_before.jpg | Bin 0 -> 10059 bytes
docs/images/crop-width-height.png | Bin 0 -> 95629 bytes
docs/images/cropped_image.png | Bin 0 -> 116642 bytes
docs/images/dice_auto_background.png | Bin 0 -> 43419 bytes
docs/images/dice_blue_background.png | Bin 0 -> 44456 bytes
docs/images/dice_lightblue_background.png | Bin 0 -> 44903 bytes
docs/images/dice_red_background.png | Bin 0 -> 45144 bytes
docs/images/dice_transparent_background.png | Bin 0 -> 50048 bytes
docs/images/eagle_after_sharpen.jpg | Bin 0 -> 3693 bytes
docs/images/eagle_before_sharpen.jpg | Bin 0 -> 3205 bytes
docs/images/extract1.jpg | Bin 0 -> 5961 bytes
docs/images/extract2.jpg | Bin 0 -> 8451 bytes
docs/images/extract3.jpg | Bin 0 -> 7595 bytes
docs/images/face_detection_alt.jpg | Bin 0 -> 43060 bytes
docs/images/face_detection_alt2.jpg | Bin 0 -> 43029 bytes
docs/images/face_detection_default.jpg | Bin 0 -> 42883 bytes
docs/images/face_detection_original.jpg | Bin 0 -> 33513 bytes
docs/images/faces_found_example.png | Bin 0 -> 6318 bytes
docs/images/feature_detection.jpg | Bin 0 -> 41644 bytes
docs/images/feature_detection_original.jpg | Bin 0 -> 37078 bytes
docs/images/focal-points.png | Bin 0 -> 379445 bytes
docs/images/gray.jpg | Bin 0 -> 28911 bytes
docs/images/horizontal-fit-in.png | Bin 0 -> 690 bytes
docs/images/logo-globocom.png | Bin 0 -> 10460 bytes
docs/images/logo-squareup.png | Bin 0 -> 3692 bytes
docs/images/logo-thumbor.png | Bin 0 -> 7339 bytes
docs/images/man_after_sharpen.png | Bin 0 -> 183777 bytes
docs/images/man_before_sharpen.png | Bin 0 -> 153168 bytes
docs/images/oony.png | Bin 0 -> 47471 bytes
docs/images/properati-logo.png | Bin 0 -> 4650 bytes
docs/images/thumbor-sentry-get-dsn.png | Bin 0 -> 15944 bytes
docs/images/tom_after_brightness.jpg | Bin 0 -> 9754 bytes
docs/images/tom_after_equalize.jpg | Bin 0 -> 15779 bytes
docs/images/tom_after_grayscale.jpg | Bin 0 -> 12063 bytes
docs/images/tom_after_max_bytes.jpg | Bin 0 -> 8828 bytes
docs/images/tom_after_negative_contrast.jpg | Bin 0 -> 8642 bytes
docs/images/tom_after_noise.jpg | Bin 0 -> 22171 bytes
docs/images/tom_after_positive_contrast.jpg | Bin 0 -> 15766 bytes
docs/images/tom_after_quality.jpg | Bin 0 -> 3118 bytes
docs/images/tom_after_rgb.jpg | Bin 0 -> 13519 bytes
docs/images/tom_after_rotate.jpg | Bin 0 -> 12546 bytes
docs/images/tom_after_round.jpg | Bin 0 -> 14692 bytes
docs/images/tom_after_watermark.jpg | Bin 0 -> 14686 bytes
docs/images/tom_before_brightness.jpg | Bin 0 -> 14419 bytes
docs/images/tom_before_rotate.jpg | Bin 0 -> 14419 bytes
docs/images/tom_fill_auto.jpg | Bin 0 -> 14473 bytes
docs/images/tom_fill_blue.jpg | Bin 0 -> 44480 bytes
docs/images/tom_fill_lightblue.jpg | Bin 0 -> 44286 bytes
docs/images/tom_fill_red.jpg | Bin 0 -> 44510 bytes
docs/images/vertical-fit-in.png | Bin 0 -> 689 bytes
docs/images/viadeo.png | Bin 0 -> 4929 bytes
docs/images/yipit.png | Bin 0 -> 51776 bytes
docs/imaging.rst | 17 +
docs/index.rst | 58 +
docs/installing.rst | 113 +
docs/lazy_detection.rst | 56 +
docs/libraries.rst | 234 +
docs/licensing.rst | 28 +
docs/logging.rst | 25 +
docs/max_bytes.rst | 26 +
docs/metadata.rst | 138 +
docs/more.rst | 11 +
docs/no_upscale.rst | 22 +
docs/noise.rst | 25 +
docs/plugins.rst | 214 +
docs/posting_putting_deleting.rst | 69 +
docs/quality.rst | 27 +
docs/red_eye.rst | 4 +
docs/release_notes.rst | 872 +
docs/requirements.txt | 1 +
docs/result_storage.rst | 45 +
docs/rgb.rst | 30 +
docs/rotate.rst | 27 +
docs/round_corners.rst | 29 +
docs/running.rst | 62 +
docs/scaling_thumbor.rst | 19 +
docs/security.rst | 125 +
docs/sharpen.rst | 43 +
docs/strip_icc.rst | 21 +
docs/the_team.rst | 20 +
docs/usage.rst | 269 +
docs/watermark.rst | 40 +
docs/whos_using_it.rst | 145 +
flake8 | 4 +
integration_tests/__init__.py | 62 +
integration_tests/imgs/16bit.png | Bin 0 -> 807 bytes
integration_tests/imgs/README.mkd | 5 +
integration_tests/imgs/animated.gif | Bin 0 -> 4359 bytes
integration_tests/imgs/cmyk.jpg | Bin 0 -> 1110 bytes
integration_tests/imgs/gradient.gif | Bin 0 -> 2177 bytes
integration_tests/imgs/gradient.jpg | Bin 0 -> 1042 bytes
integration_tests/imgs/gradient.webp | Bin 0 -> 338 bytes
integration_tests/imgs/grayscale.jpg | Bin 0 -> 521 bytes
integration_tests/imgs/rgba-interlaced.png | Bin 0 -> 2594 bytes
integration_tests/imgs/rgba.png | Bin 0 -> 2017 bytes
integration_tests/pil_test.py | 8 +
integration_tests/urls_helpers.py | 174 +
issue_template.md | 14 +
logo-thumbor.png | Bin 0 -> 7339 bytes
mongo_check_start.js | 23 +
redis.conf | 4 +
requirements | 19 +
setup.py | 133 +
tests/__init__.py | 0
tests/base.py | 296 +
tests/detectors/__init__.py | 0
tests/detectors/test_face_detector.py | 103 +
tests/detectors/test_feature_detector.py | 36 +
tests/detectors/test_glasses_detector.py | 47 +
tests/detectors/test_profile_detector.py | 30 +
tests/detectors/test_queued_detector.py | 120 +
tests/engines/__init__.py | 0
tests/engines/test_base_engine.py | 329 +
tests/engines/test_gif.py | 90 +
tests/engines/test_pil.py | 175 +
tests/error_handlers/__init__.py | 0
tests/error_handlers/test_file.py | 147 +
tests/error_handlers/test_sentry.py | 113 +
tests/filters/__init__.py | 0
tests/filters/test_background_color.py | 34 +
tests/filters/test_base_filter.py | 373 +
tests/filters/test_blur.py | 36 +
tests/filters/test_brightness.py | 22 +
tests/filters/test_colorize.py | 22 +
tests/filters/test_contrast.py | 22 +
tests/filters/test_distributed_collage.py | 104 +
tests/filters/test_fill.py | 52 +
tests/filters/test_focal.py | 77 +
tests/filters/test_format.py | 23 +
tests/filters/test_max_age.py | 69 +
tests/filters/test_noise.py | 26 +
tests/filters/test_quality.py | 23 +
tests/filters/test_rgb.py | 22 +
tests/filters/test_rotate.py | 77 +
tests/filters/test_watermark.py | 57 +
tests/fixtures/__init__.py | 0
tests/fixtures/crypto_fixtures.py | 93 +
tests/fixtures/custom_error_handler.py | 6 +
tests/fixtures/detection_error_detector.py | 18 +
.../filters/513px-Coffee_beans_-_ziarna_kawy.jpg | Bin 0 -> 65352 bytes
.../filters/800px-A_small_cup_of_coffee.JPG | Bin 0 -> 69000 bytes
.../800px-Christophe_Henner_-_June_2016.jpg | Bin 0 -> 54307 bytes
tests/fixtures/filters/800px-Coffee_berries_1.jpg | Bin 0 -> 81487 bytes
.../fixtures/filters/800px-Guido-portrait-2014.jpg | Bin 0 -> 86276 bytes
tests/fixtures/filters/800px-Katherine_Maher.jpg | Bin 0 -> 57433 bytes
.../Giunchedi%2C_Filippo_January_2015_01.jpg | Bin 0 -> 221131 bytes
.../filters/PNG_transparency_demonstration_1.png | Bin 0 -> 50048 bytes
.../PNG_transparency_demonstration_1_blue.png | Bin 0 -> 44456 bytes
tests/fixtures/filters/README.mkd | 21 +
tests/fixtures/filters/blur.jpg | Bin 0 -> 42708 bytes
tests/fixtures/filters/blur2.jpg | Bin 0 -> 30899 bytes
tests/fixtures/filters/blur3.jpg | Bin 0 -> 12188 bytes
tests/fixtures/filters/brightness.jpg | Bin 0 -> 70957 bytes
tests/fixtures/filters/colorize.jpg | Bin 0 -> 30910 bytes
tests/fixtures/filters/contrast.jpg | Bin 0 -> 76392 bytes
tests/fixtures/filters/distributed_collage_1i.png | Bin 0 -> 120734 bytes
tests/fixtures/filters/distributed_collage_2i.png | Bin 0 -> 134087 bytes
.../filters/distributed_collage_2i_centered.png | Bin 0 -> 114745 bytes
.../distributed_collage_2i_diff_heights.png | Bin 0 -> 77833 bytes
tests/fixtures/filters/distributed_collage_3i.png | Bin 0 -> 123071 bytes
tests/fixtures/filters/distributed_collage_4i.png | Bin 0 -> 125754 bytes
.../filters/distributed_collage_fallback.png | Bin 0 -> 20945 bytes
tests/fixtures/filters/fill.jpg | Bin 0 -> 56488 bytes
tests/fixtures/filters/fill2.jpg | Bin 0 -> 55585 bytes
tests/fixtures/filters/focal.jpg | Bin 0 -> 10778 bytes
tests/fixtures/filters/noise.jpg | Bin 0 -> 218984 bytes
tests/fixtures/filters/quality-10%.jpg | Bin 0 -> 12006 bytes
tests/fixtures/filters/rgb.jpg | Bin 0 -> 72834 bytes
tests/fixtures/filters/rotate.jpg | Bin 0 -> 72444 bytes
tests/fixtures/filters/source.jpg | Bin 0 -> 72774 bytes
tests/fixtures/filters/watermark.png | Bin 0 -> 4730 bytes
tests/fixtures/filters/watermark.svg | 17 +
tests/fixtures/filters/watermarkCenter.jpg | Bin 0 -> 54575 bytes
tests/fixtures/filters/watermarkCenterX.jpg | Bin 0 -> 54672 bytes
tests/fixtures/filters/watermarkCenterY.jpg | Bin 0 -> 54564 bytes
tests/fixtures/filters/watermarkRepeat.jpg | Bin 0 -> 56385 bytes
tests/fixtures/filters/watermarkRepeatX.jpg | Bin 0 -> 55709 bytes
tests/fixtures/filters/watermarkRepeatY.jpg | Bin 0 -> 55958 bytes
tests/fixtures/filters/watermarkSimple.jpg | Bin 0 -> 54502 bytes
tests/fixtures/haarcascade_eye_tree_eyeglasses.xml | 33158 +++++++
tests/fixtures/haarcascade_profileface.xml | 31930 ++++++
.../10_years_of_Wikipedia_by_Guillaume_Paumier.jpg | Bin 0 -> 8356523 bytes
...7%D0%BE%D0%BE%D0%BF%D0%B0%D1%80%D0%BA%D0%B5.jpg | Bin 0 -> 5319 bytes
...76\320\277\320\260\321\200\320\272\320\265.jpg" | Bin 0 -> 5319 bytes
tests/fixtures/images/16383x16383.png | Bin 0 -> 32853 bytes
tests/fixtures/images/16384x16384.png | Bin 0 -> 32855 bytes
tests/fixtures/images/1bit.png | Bin 0 -> 5379 bytes
tests/fixtures/images/1x1.png | Bin 0 -> 245 bytes
tests/fixtures/images/20x20.jpg | Bin 0 -> 375 bytes
tests/fixtures/images/256_color_palette.png | Bin 0 -> 4037 bytes
tests/fixtures/images/940x2.png | Bin 0 -> 270 bytes
tests/fixtures/images/9643x10328.jpg | Bin 0 -> 1167997 bytes
tests/fixtures/images/BlueSquare_truncated.jpg | Bin 0 -> 23000 bytes
.../images/Christophe_Henner_-_June_2016.jpg | Bin 0 -> 7177085 bytes
tests/fixtures/images/Commons-logo-inches.svg | 22 +
tests/fixtures/images/Commons-logo.svg | 22 +
.../Giunchedi%2C_Filippo_January_2015_01-cmyk.jpg | Bin 0 -> 838432 bytes
...nchedi%2C_Filippo_January_2015_01-grayscale.jpg | Bin 0 -> 157675 bytes
.../Giunchedi%2C_Filippo_January_2015_01.jpg | Bin 0 -> 221131 bytes
.../Giunchedi%2C_Filippo_January_2015_01.png | Bin 0 -> 447308 bytes
tests/fixtures/images/README.mkd | 15 +
tests/fixtures/images/SmallFullColourGIF.gif | Bin 0 -> 200396 bytes
tests/fixtures/images/__init__.py | 88 +
tests/fixtures/images/alabama1_ap620%C3%A9.jpg | Bin 0 -> 5319 bytes
.../fixtures/images/alabama1_ap620e\314\201.jpg" | Bin 0 -> 5319 bytes
"tests/fixtures/images/alabama1_ap620\303\251.jpg" | Bin 0 -> 5319 bytes
tests/fixtures/images/animated-one-frame.gif | Bin 0 -> 2177 bytes
tests/fixtures/images/animated.gif | Bin 0 -> 4359 bytes
tests/fixtures/images/cmyk.jpg | Bin 0 -> 1110 bytes
tests/fixtures/images/gradient_8bit.tif | Bin 0 -> 30296 bytes
.../fixtures/images/gradient_lsb_16bperchannel.tif | Bin 0 -> 60328 bytes
.../fixtures/images/gradient_msb_16bperchannel.tif | Bin 0 -> 60328 bytes
tests/fixtures/images/grayscale.jpg | Bin 0 -> 521 bytes
tests/fixtures/images/image | Bin 0 -> 5319 bytes
tests/fixtures/images/image%20space.jpg | Bin 0 -> 5319 bytes
tests/fixtures/images/image.jpg | Bin 0 -> 5319 bytes
tests/fixtures/images/image.jpg%23something | Bin 0 -> 5319 bytes
tests/fixtures/images/image.jpg%3Fts%3D1 | Bin 0 -> 5319 bytes
tests/fixtures/images/image.webp | Bin 0 -> 1108 bytes
tests/fixtures/images/image_invalid.jpg | 1 +
tests/fixtures/images/invalid_quantization.jpg | Bin 0 -> 5927 bytes
"tests/fixtures/images/maracuj\303\241.jpg" | Bin 0 -> 5319 bytes
tests/fixtures/images/no_face.jpg | Bin 0 -> 60146 bytes
tests/fixtures/images/qtables.xml | 29 +
tests/fixtures/max_age_conf.py | 17 +
tests/fixtures/prevent_result_storage_detector.py | 18 +
tests/fixtures/result_storages/v2/im/ag/image.jpg | Bin 0 -> 5319 bytes
tests/fixtures/thumbor.key | 1 +
tests/fixtures/thumbor_config_server_test.conf | 11 +
tests/fixtures/transformer_test_data.py | 1003 +
tests/handlers/__init__.py | 0
tests/handlers/test_base_handler.py | 1151 +
tests/handlers/test_blacklist.py | 59 +
tests/handlers/test_healthcheck.py | 24 +
tests/handlers/test_upload_api.py | 370 +
tests/loaders/__init__.py | 0
tests/loaders/test_file_loader.py | 50 +
tests/loaders/test_file_loader_http_fallback.py | 68 +
tests/loaders/test_http_loader.py | 248 +
tests/loaders/test_https_loader.py | 229 +
tests/loaders/test_strict_https_loader.py | 157 +
tests/metrics/__init__.py | 0
tests/metrics/test_default_metrics.py | 34 +
tests/metrics/test_logger_metrics.py | 35 +
tests/metrics/test_statsd_metrics.py | 35 +
tests/optimizers/__init__.py | 0
tests/optimizers/test_jpegtran.py | 65 +
tests/result_storages/__init__.py | 0
tests/result_storages/test_file_storage.py | 94 +
tests/result_storages/test_no_storage.py | 35 +
tests/storages/__init__.py | 0
tests/storages/test_file_storage.py | 206 +
tests/storages/test_mixed_storage.py | 121 +
tests/storages/test_no_storage.py | 66 +
tests/test_app.py | 65 +
tests/test_config.py | 125 +
tests/test_console.py | 45 +
tests/test_context.py | 391 +
tests/test_crypto.py | 240 +
tests/test_importer.py | 87 +
tests/test_point.py | 70 +
tests/test_server.py | 258 +
tests/test_transformer.py | 243 +
tests/test_url.py | 146 +
tests/test_url_composer.py | 236 +
tests/test_utils.py | 136 +
tests/url_signers/__init__.py | 0
tests/url_signers/test_base64_hmac_sha1_signer.py | 38 +
tests/url_signers/test_base_url_signer.py | 43 +
thumbor.key | 1 +
thumbor/__init__.py | 14 +
thumbor/app.py | 54 +
thumbor/config.py | 392 +
thumbor/console.py | 76 +
thumbor/context.py | 294 +
thumbor/crypto.py | 132 +
thumbor/default.key | 1 +
thumbor/detectors/__init__.py | 28 +
thumbor/detectors/face_detector/__init__.py | 44 +
.../face_detector/haarcascade_frontalface_alt.xml | 24350 +++++
.../face_detector/haarcascade_frontalface_alt2.xml | 20719 ++++
.../haarcascade_frontalface_alt_tree.xml | 96484 +++++++++++++++++++
.../haarcascade_frontalface_default.xml | 33314 +++++++
thumbor/detectors/feature_detector/__init__.py | 47 +
thumbor/detectors/glasses_detector/__init__.py | 18 +
.../haarcascade_eye_tree_eyeglasses.xml | 22619 +++++
thumbor/detectors/local_detector.py | 72 +
thumbor/detectors/profile_detector/__init__.py | 18 +
.../profile_detector/haarcascade_profileface.xml | 29690 ++++++
thumbor/detectors/queued_detector/__init__.py | 43 +
.../queued_detector/queued_complete_detector.py | 16 +
.../queued_detector/queued_face_detector.py | 16 +
.../queued_detector/queued_feature_detector.py | 16 +
thumbor/detectors/queued_sqs_detector/__init__.py | 38 +
thumbor/engines/__init__.py | 358 +
thumbor/engines/extensions/__init__.py | 0
thumbor/engines/extensions/pil.py | 607 +
thumbor/engines/gif.py | 141 +
thumbor/engines/json_engine.py | 147 +
thumbor/engines/pil.py | 382 +
thumbor/error_handlers/__init__.py | 0
thumbor/error_handlers/file.py | 86 +
thumbor/error_handlers/sentry.py | 82 +
thumbor/ext/__init__.py | 0
thumbor/ext/filters/__init__.py | 0
thumbor/ext/filters/_alpha.c | 37 +
thumbor/ext/filters/_bounding_box.c | 103 +
thumbor/ext/filters/_brightness.c | 48 +
thumbor/ext/filters/_colorize.c | 55 +
thumbor/ext/filters/_composite.c | 120 +
thumbor/ext/filters/_contrast.c | 48 +
thumbor/ext/filters/_convolution.c | 110 +
thumbor/ext/filters/_curve.c | 150 +
thumbor/ext/filters/_equalize.c | 100 +
thumbor/ext/filters/_fill.c | 49 +
thumbor/ext/filters/_nine_patch.c | 304 +
thumbor/ext/filters/_noise.c | 55 +
thumbor/ext/filters/_rgb.c | 51 +
thumbor/ext/filters/_round_corner.c | 225 +
thumbor/ext/filters/_saturation.c | 51 +
thumbor/ext/filters/_sharpen.c | 47 +
thumbor/ext/filters/lib/colors.c | 24 +
thumbor/ext/filters/lib/colors.h | 7 +
thumbor/ext/filters/lib/filter.h | 16 +
thumbor/ext/filters/lib/image_utils.h | 34 +
thumbor/ext/filters/lib/sharpen.h | 23 +
thumbor/ext/filters/lib/wavelet_sharpen.c | 160 +
thumbor/filters/__init__.py | 203 +
thumbor/filters/background_color.py | 25 +
thumbor/filters/blur.py | 47 +
thumbor/filters/brightness.py | 21 +
thumbor/filters/colorize.py | 22 +
thumbor/filters/contrast.py | 21 +
thumbor/filters/convolution.py | 25 +
thumbor/filters/curve.py | 32 +
thumbor/filters/distributed_collage.py | 283 +
thumbor/filters/equalize.py | 21 +
thumbor/filters/extract_focal.py | 62 +
thumbor/filters/fill.py | 45 +
thumbor/filters/focal.py | 34 +
thumbor/filters/format.py | 27 +
thumbor/filters/frame.py | 104 +
thumbor/filters/grayscale.py | 19 +
thumbor/filters/haarcascade_eye.xml | 15452 +++
thumbor/filters/max_age.py | 18 +
thumbor/filters/max_bytes.py | 18 +
thumbor/filters/no_upscale.py | 28 +
thumbor/filters/noise.py | 21 +
thumbor/filters/quality.py | 18 +
thumbor/filters/redeye.py | 139 +
thumbor/filters/rgb.py | 21 +
thumbor/filters/rotate.py | 20 +
thumbor/filters/round_corner.py | 29 +
thumbor/filters/saturation.py | 21 +
thumbor/filters/sharpen.py | 25 +
thumbor/filters/strip_icc.py | 18 +
thumbor/filters/watermark.py | 138 +
thumbor/handlers/__init__.py | 728 +
thumbor/handlers/blacklist.py | 34 +
thumbor/handlers/healthcheck.py | 19 +
thumbor/handlers/image_resource.py | 82 +
thumbor/handlers/imaging.py | 96 +
thumbor/handlers/upload.py | 69 +
thumbor/importer.py | 98 +
thumbor/lib/__init__.py | 9 +
thumbor/loaders/__init__.py | 35 +
thumbor/loaders/file_loader.py | 42 +
thumbor/loaders/file_loader_http_fallback.py | 26 +
thumbor/loaders/http_loader.py | 141 +
thumbor/loaders/https_loader.py | 34 +
thumbor/loaders/strict_https_loader.py | 40 +
thumbor/metrics/__init__.py | 24 +
thumbor/metrics/logger_metrics.py | 21 +
thumbor/metrics/statsd_metrics.py | 31 +
thumbor/optimizers/__init__.py | 41 +
thumbor/optimizers/gifv.py | 78 +
thumbor/optimizers/jpegtran.py | 46 +
thumbor/point.py | 67 +
thumbor/result_storages/__init__.py | 61 +
thumbor/result_storages/file_storage.py | 116 +
thumbor/result_storages/no_storage.py | 20 +
thumbor/server.py | 141 +
thumbor/storages/__init__.py | 67 +
thumbor/storages/file_storage.py | 139 +
thumbor/storages/mixed_storage.py | 90 +
thumbor/storages/no_storage.py | 43 +
thumbor/thumbor.conf | 198 +
thumbor/transformer.py | 365 +
thumbor/url.py | 169 +
thumbor/url_composer.py | 186 +
thumbor/url_signers/__init__.py | 23 +
thumbor/url_signers/base64_hmac_sha1.py | 18 +
thumbor/utils.py | 107 +
unwanted_packages | 15 +
441 files changed, 334239 insertions(+)
diff --git a/.continuousrc b/.continuousrc
new file mode 100644
index 0000000..d450e46
--- /dev/null
+++ b/.continuousrc
@@ -0,0 +1,46 @@
+# Example .continuousrc file for use with http://continuous.io
+# This example file has been created for use with either a
+# Python or a Django project.
+
+# Put this in your project root. It will be used to configure the build
+# script for your project.
+
+#######################
+### Common settings ###
+#######################
+
+# The pip reqirements file relative to your project root directory.
+# (Optional, but most likely needed for all but the simplest projects)
+# Example: "requirements.txt"
+PIP_REQUIREMENTS="test_requeriments.txt"
+
+# A space separated list of extra packages to be installed.
+# This will be passed to the system package manager, normally apt-get.
+# Example: "subversion libjpeg-dev"
+EXTRA_PACKAGES="curl libcurl3 libcurl3-dev"
+
+################################
+### Python-specific settings ###
+################################
+
+# The command used to run this project's tests. If specified, this setting
+# will override MANAGE_COMMAND.
+# Example: "./runmytests.py"
+# (Will attempt to auto-detect if blank)
+TEST_COMMAND="make test"
+
+################################
+### Django-specific settings ###
+################################
+
+# The path to the django manage.py command
+# (Will attempt to auto-detect if blank)
+# Example: "./manage.py"
+MANAGE_COMMAND=""
+
+# Tells Django where to find the setting file to be used for this build
+# See: https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings
+# (Will attempt to auto-detect if blank)
+# Example: "myapp.settings_test"
+DJANGO_SETTINGS_MODULE=""
+
diff --git a/.coveragerc b/.coveragerc
new file mode 100644
index 0000000..7046f75
--- /dev/null
+++ b/.coveragerc
@@ -0,0 +1,18 @@
+[run]
+omit =
+ test_*.py
+ integration_tests/*
+branch = True
+source =
+ thumbor
+
+[report]
+exclude_lines =
+ pragma: no cover
+ def __repr__
+ raise NotImplementedError
+ if __name__ == .__main__.:
+ from urllib.parse import parse_qs
+ except ImportError:
+ from nose_focus import focus
+ @focus
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8b47a5b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,34 @@
+*.pyc
+.DS_Store
+*.swp
+dist/
+*.egg-info
+.project
+.pydevprojectthumbor/tests/visual_test/img
+.coverage
+tests/visual_test/img/
+*.swo
+*.swm
+*.swn
+tests/visual_test/build
+build
+*.so
+nohup.out
+*.idea
+*.iml
+opencv
+
+# Debian packaging
+/debsetup.py
+/debian/files
+/debian/thumbor/
+/debian/thumbor.debhelper.log
+/debian/thumbor.postinst.debhelper
+/debian/thumbor.preinst.debhelper
+/debian/thumbor.postrm.debhelper
+/debian/thumbor.prerm.debhelper
+/debian/thumbor.substvars
+/debian/tmp/
+.ropeproject/
+.venv
+docs/_build
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..a1f16b6
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,63 @@
+language: python
+python:
+ - 2.7_with_system_site_packages
+ - '3.5.1'
+ - pypy
+cache:
+ directories:
+ - $HOME/.cache/pip
+sudo: false
+matrix:
+ fast_finish: true
+ allow_failures:
+ - python: '3.5.1'
+ - python: pypy
+env:
+ - INTEGRATION_TEST=1
+ - UNIT_TEST=1
+addons:
+ apt:
+ packages:
+ - libcurl4-openssl-dev
+ - python-numpy
+ - python-opencv
+ - libimage-exiftool-perl
+ - libopencv-dev
+ - libjpeg-progs
+ - libjpeg-dev
+ - libpng-dev
+ - libx264-dev
+ - libass-dev
+ - libvpx1
+ - libvpx-dev
+ - libwebp-dev
+ - webp
+ - gifsicle
+ - python-numpy
+ - python-scipy
+ - libcairo2-dev
+ - gfortran
+ - libopenblas-dev
+ - liblapack-dev
+ - python-pyexiv2
+install:
+ - pip install -U pip
+ - wget http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz
+ -O /tmp/ffmpeg-release.tar.xz
+ - mkdir /tmp/ffmpeg-release
+ - tar -C /tmp/ffmpeg-release --strip 1 -xvf /tmp/ffmpeg-release.tar.xz
+ - export PATH=/tmp/ffmpeg-release:$PATH
+ - ffmpeg -version
+ - pip install --upgrade pip
+ - make setup
+ - pip install coveralls
+ - pip install cairosvg
+before_script:
+ - make redis
+script:
+ make compile_ext ci_test
+notifications:
+ slack:
+ secure: Sf6TJa/H3mq+RGqpLwKNRpNw0YQKX3+5bt5e37CSs8rOC+SoFHVNr29QhbXFPwmqQuy9qKb0t5rzChDIIvXErywU2lEw3/JlQtCt1xLsoUfpBF8g8ldoy6ESO2j9Jj6Y/M/4RN2zN3AAd5gfXPrdLHa++eiRaiAXXU+9ZvtUxuc=
+after_success:
+ coveralls
diff --git a/.venv b/.venv
new file mode 100644
index 0000000..ef29d7d
--- /dev/null
+++ b/.venv
@@ -0,0 +1 @@
+thumbor
diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..cd1142e
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,500 @@
+* Add pluggable metrics
+
+configuration setting `METRICS` defaults to `thumbor.metrics.logger_metrics`
+
+possible values are:
+
+* `thumbor.metrics.logger_metrics`
+* `thumbor.metrics.statsd_metrics`
+
+see the respective sections in the `config.py`
+
+please note that `context.statsd_client` is deprecated and will be removed, use `context.metrics` instead!
+
+Release 5.0.4 (5.0.4)
+* Fix image extension with query string #499 Thanks @dhardy92 and @kuhess
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/5.0.3...5.0.4)
+[pypi release](https://pypi.python.org/pypi/thumbor/5.0.4)
+
+Release 5.0.3 (5.0.3)
+* Fixing filters on thumbor-url #482
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/5.0.2...5.0.3)
+[pypi release](https://pypi.python.org/pypi/thumbor/5.0.3)
+
+Release 5.0.2 (5.0.2)
+* Fixing filters on thumbor-url
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/5.0.1...5.0.2)
+[pypi release](https://pypi.python.org/pypi/thumbor/5.0.2)
+
+Release 5.0.1 (5.0.1)
+* Fixing adaptive and full fit-in on thumbor-url
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/5.0.0...5.0.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/5.0.1)
+
+Release 5.0.0 (5.0.0)
+# WHY the major release?
+
+Thumbor's storage and result storage all used synchronous interfaces. That's not an issue per-se, but it's not the proper way to use tornado.
+
+Several users were having issues in production due to timeouts and broken requests.
+
+We were at a cross-roads. Fix the issue in a "broken" way but without any breaking changes, or go with what the community feels is the right way for thumbor to go, while being incompatible with currently developed extensions.
+
+We felt we needed to fix this in a way that felt "right". Hopefully we'll be more aligned with future evolutions of tornado.
+
+With the help of the community we were able to fix this issue and make thumbor more robust, more scalable and more predictable.
+
+Feedback on this is highly encouraged. Feel free to create issues if something is amiss.
+
+# WARNING
+
+> This version contains breaking changes. If you use your own version of a Storage or ResultStorage, all of those are async now and should return a Future. For more info, check the built-in one from thumbor's codebase.
+
+# BREAKING Changes
+
+* Async contract for all of thumbor's imported modules #459. thanks @masom
+
+# Changes
+
+* Tornado updated to 4.1
+* Better GifEngine error handling #448. thanks @masom
+* Fixing error log on cache miss #453. thanks @dhardy92
+* Meta now has frame count #451
+* Https loader and strict https loader added #471. thanks @lukaselmer
+
+# Benchmark
+
+## 4.0.0
+
+```
+Running 10s test @ http://127.0.0.1:8888/unsafe/300x300/s.glbimg.com/et/nv/f/original/2015/05/01/casamento-raphaeldias.jpg
+ 40 threads and 40 connections
+ Thread Stats Avg Stdev Max +/- Stdev
+ Latency 2.42s 748.35ms 2.83s 84.03%
+ Req/Sec 0.22 0.95 9.00 95.83%
+ Latency Distribution
+ 50% 2.79s
+ 75% 2.80s
+ 90% 2.81s
+ 99% 2.82s
+ 144 requests in 10.10s, 3.77MB read
+Requests/sec: 14.26
+Transfer/sec: 382.70KB
+```
+
+## 4.12.2
+
+```
+Running 10s test @ http://127.0.0.1:8888/unsafe/300x300/s.glbimg.com/et/nv/f/original/2015/05/01/casamento-raphaeldias.jpg
+ 40 threads and 40 connections
+ Thread Stats Avg Stdev Max +/- Stdev
+ Latency 2.41s 449.85ms 3.46s 80.42%
+ Req/Sec 0.01 0.12 1.00 98.60%
+ Latency Distribution
+ 50% 2.48s
+ 75% 2.65s
+ 90% 2.83s
+ 99% 3.24s
+ 143 requests in 10.07s, 3.75MB read
+Requests/sec: 14.21
+Transfer/sec: 381.29KB
+```
+
+## 5.0.0
+
+```
+Running 10s test @ http://127.0.0.1:8888/unsafe/300x300/s.glbimg.com/et/nv/f/original/2015/05/01/casamento-raphaeldias.jpg
+ 40 threads and 40 connections
+ Thread Stats Avg Stdev Max +/- Stdev
+ Latency 2.16s 476.70ms 2.72s 83.54%
+ Req/Sec 0.04 0.20 1.00 95.73%
+ Latency Distribution
+ 50% 2.30s
+ 75% 2.43s
+ 90% 2.56s
+ 99% 2.70s
+ 164 requests in 10.08s, 4.30MB read
+Requests/sec: 16.27
+Transfer/sec: 436.80KB
+```
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.12.2...5.0.0)
+[pypi release](https://pypi.python.org/pypi/thumbor/5.0.0)
+
+Release 5.0.0rc2 (5.0.0rc2)
+* Tornado updated to 4.1
+* Async storage #459. thanks @masom
+* Better GifEngine error treatment #448. thanks @masom
+* Fixing error log on cache miss #453. thanks @dhardy92
+* Meta now has frame count #451
+
+
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.12.2...5.0.0rc2)
+[pypi release](https://pypi.python.org/pypi/thumbor/5.0.0rc2)
+
+Release 4.12.2 (4.12.2)
+* Fixing Redis Storage behavior #437. thanks @masom
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.12.1...4.12.2)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.12.2)
+
+Release 4.12.1 (4.12.1)
+* Better WebM encoding.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.12.0...4.12.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.12.1)
+
+Release 4.12.0 (4.12.0)
+* Thumbor now using threadpool for image operations #429. Thank you @kevin1024
+* Async optimizers and StatsD #436 #435. Thank you @kevin1024
+* Config for max clients limit #430. Thank you @kevin1024
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.11.1...4.12.0)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.12.0)
+
+Release 4.11.1 (4.11.1)
+* Fixing engine size reference.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.11.0...4.11.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.11.1)
+
+
+Release 4.11.0 (4.11.0)
+* Allows GIF first frame extraction filter:cover() #426. Thanks @kplaube
+
+* Fix MimeType Charset upload #422. Thanks @dhardy92
+
+* Allows configurable GIF engine #432. Thanks @masom
+
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.10.3...4.11.0)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.11.0)
+
+
+Release 4.10.3 (4.10.3)
+* Allow optimizers to change the format. Thank you, @masom
+
+* Support filling with transparency. Thanks to @evanmo
+
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.10.2...4.10.3)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.10.3)
+
+
+Release 4.10.2 (4.10.2)
+* Changin the way image format is being checked so that it doesn't conflict #421. Thank you @krynble
+
+* upgrade to release pexif #417. Thank you @dhardy92
+
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.10.1...4.10.2)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.10.2)
+
+Release 4.10.1 (4.10.1)
+* Add some more images to integration tests
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.10.0...4.10.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.10.1)
+
+Release 4.10.0 (4.10.0)
+* RGB curver filter. #353 Thanks to @gockxml
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.9.1...4.10.0)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.10.0)
+
+Release 4.9.1 (4.9.1)
+* Fixing setup.py classifiers.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.9.0...4.9.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.9.1)
+
+Release 4.9.0 (4.9.0)
+* Python 2.6 support dropped.
+* Fixing custom_optimizers bug #393. Thanks @chentschel, @hltbra and @zkourouma
+* id max length option added #414. Thanks @dhardy92
+* logging configuration capabilities added #415. Thanks @dhardy92
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.8.6...4.9.0)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.9.0)
+
+Release 4.8.6 (4.8.6)
+* Avoiding IOError on PIL when debugging truncated/broken images
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.8.5...4.8.6)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.8.6)
+
+Release 4.8.5 (4.8.5)
+* WEBM and MP4 file type detection
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.8.3...4.8.5)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.8.5)
+
+Release 4.8.3 (4.8.3)
+* Thumbor is now python 2.6 compatible. Thanks @guilhermef
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.8.2...4.8.3)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.8.3)
+
+Release 4.8.2 (4.8.2)
+* Fixing gif loaded from result storage.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.8.1...4.8.2)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.8.2)
+
+Release 4.8.1 (4.8.1)
+* Added WebM support.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.8.0...4.8.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.8.1)
+
+Release 4.8.0 (4.8.0)
+* Added support for If-Modified-Since & Last-Updated headers by @Bladrak (Thanks!);
+* Max age per image by @wandenberg (Thanks!);
+* Better mp4 support;
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.7.1...4.8.0)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.8.0)
+
+Release 4.7.1 (4.7.1)
+* Fixed issue with bad merge by @heynemann (sorry guys).
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.7.0...4.7.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.7.1)
+
+Release 4.7.0 (4.7.0)
+* New [colorize filter](https://github.com/thumbor/thumbor/wiki/Colorize) by @clifff (thanks!);
+* New [saturation filter](https://github.com/thumbor/thumbor/wiki/Saturation) filter by @clifff (thanks!);
+* New option to disable etags by @kevin1024 (thanks!).
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.6.0...4.7.0)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.7.0)
+
+Release 4.6.0 (4.6.0)
+* Thumbor Upstart job for usage with DEB was updated by @CameronNemo (thanks!);
+* Thumbor now supports HTTPs contributed by Chris Heisterkamp (bcebe435c45637dcbdc0db822874e43fc841d8ea);
+* Thumbor has a new filter/optimizer combo for supporting [GifV](http://imgur.com/blog/2014/10/09/introducing-gifv/). Thanks @guilhermef for the contribution!
+* @renaudguerin fixed issues with LA and L pallete images.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.5.4...4.6.0)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.6.0)
+
+Release 4.5.4 (4.5.4)
+* Fix optimizer when requesting meta.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.5.3...4.5.4)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.5.4)
+
+Release 4.5.3 (4.5.3)
+* Fix optimizer infrastructure to close files before reading again.
+
+## WARNING
+
+If you are using optimizers you should upgrade to this release.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.5.2...4.5.3)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.5.3)
+
+Release 4.5.2 (4.5.2)
+This release introduces the possibility to use [optimizers](https://github.com/thumbor/thumbor/wiki/Optimizers). A JPEGTRAN optimizer has been created as a sample optimizer. Other optimizers (pngquant, gifsicle and the like) can be created as contributed libraries by the community.
+
+It also adds the following contributions:
+
+* Now thumbor supports HEAD requests. This was a contribution by @justinribeiro;
+* We also feature blacklisting of images. This was a contribution by @clifff.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.4.1...4.5.2)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.5.2)
+
+Release 4.4.1 (4.4.1)
+* Fixed #334 - Now images with unicode names should be working properly.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.4.0...4.4.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.4.1)
+
+Release 4.4.0 (4.4.0)
+* Added a no_upscale filter ([docs](https://github.com/thumbor/thumbor/wiki/No-Upscale))
+
+When upgrading, make sure to include this filter in your `FILTERS` configuration if you override it in your thumbor.conf file.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.4.0...4.4.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.4.0)
+
+Release 4.3.0 (4.3.0)
+* Fixes #141 - Add rotation support (thanks @guilhermebruzzi and @nopiece).
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.2.1...4.3.0)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.3.0)
+
+Release 4.2.1 (4.2.1)
+* Fixes #327 - Issue with auto_webp and result storages.
+* Added support to the full-fit-in way of cropping images.
+
+## WARNING
+
+If you've upgraded to the 4.2.0 release it's VERY, VERY recommended that you upgrade to 4.2.1 as soon as possible.
+
+[Diff to previous release](https://github.com/thumbor/thumbor/compare/4.2.0...4.2.1)
+[pypi release](https://pypi.python.org/pypi/thumbor/4.2.1)
+
+Release 4.2.0 (4.2.0)
+This release adds official support for GIFs and Animated GIFs.
+
+* Fixes #297 - With the new engine, gifs that were once distorted are perfectly valid now.
+
+## Supporting GIFs the new way
+
+If you want to use the new gif engine there are two things you must do:
+
+a) You need to install [gifsicle](http://www.lcdf.org/gifsicle/). Most operating systems have packages for it and in Mac OS it's just `brew install gifsicle`.
... 336004 lines suppressed ...
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/thumbor.git
More information about the Python-modules-commits
mailing list