[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