Library used to deskew a scanned document

Overview

Deskew

//Note: Skew is measured in degrees. Deskewing is a process whereby skew is removed by rotating an image by the same amount as its skew but in the opposite direction. This results in a horizontally and vertically aligned image where the text runs across the page rather than at an angle.

Skew detection and correction in images containing text

Image with skew

Image after deskew

Cli usage

Get the skew angle:

deskew input.png

Deskew an image:

deskew --output output.png input.png

Lib usage

scikit-image:

import numpy as np
from skimage import io
from skimage.color import rgb2gray
from skimage.transform import rotate

from deskew import determine_skew

image = io.imread('input.png')
grayscale = rgb2gray(image)
angle = determine_skew(grayscale)
rotated = rotate(image, angle, resize=True) * 255
io.imsave('output.png', rotated.astype(np.uint8))

OpenCV:

import math
from typing import Tuple, Union

import cv2
import numpy as np

from deskew import determine_skew


def rotate(
        image: np.ndarray, angle: float, background: Union[int, Tuple[int, int, int]]
) -> np.ndarray:
    old_width, old_height = image.shape[:2]
    angle_radian = math.radians(angle)
    width = abs(np.sin(angle_radian) * old_height) + abs(np.cos(angle_radian) * old_width)
    height = abs(np.sin(angle_radian) * old_width) + abs(np.cos(angle_radian) * old_height)

    image_center = tuple(np.array(image.shape[1::-1]) / 2)
    rot_mat = cv2.getRotationMatrix2D(image_center, angle, 1.0)
    rot_mat[1, 2] += (width - old_width) / 2
    rot_mat[0, 2] += (height - old_height) / 2
    return cv2.warpAffine(image, rot_mat, (int(round(height)), int(round(width))), borderValue=background)

image = cv2.imread('input.png')
grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
angle = determine_skew(grayscale)
rotated = rotate(image, angle, (0, 0, 0))
cv2.imwrite('output.png', rotated)

Inspired by Alyn: https://github.com/kakul/Alyn

Comments
  • Detect Text direction

    Detect Text direction

    I have an image which is rotated 90 degrees. The program rotates it back 90 degrees but in wrong direction - text is on reverse direction.

    Do you have any idea how to fix this?

    opened by tuan-nng 10
  • Request for changelog and tagged versions

    Request for changelog and tagged versions

    I just discovered your library and considered using it, but quickly got aware that at least Python 3.8 is required which I am not able to upgrade to yet. Going through the list of releases on PyPI, 0.10.29 seems to be the last version supporting Python < 3.8.

    Such things would be much easier if there was a changelog for the different releases as well as tagged versions on GitHub. For now there seem to be tons of new package releases on PyPI to skim through - given that there are 25 releases in 2022 already, this corresponds to more than one release per week, which is hard to keep up with.

    With a changelog, it would be easier to check how important an update might be, as well as some easy way to detect deprecations like for Python < 3.8. With GitHub releases or tags comparing the actual differences between the different versions would be possible as well.

    opened by stefan6419846 5
  • Bump c2cciutils from 1.1.dev20210416145645 to 1.1.dev20210419145517

    Bump c2cciutils from 1.1.dev20210416145645 to 1.1.dev20210419145517

    Bumps c2cciutils from 1.1.dev20210416145645 to 1.1.dev20210419145517.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    dependencies 
    opened by dependabot[bot] 5
  • Does not work with images rotated around 90 degrees

    Does not work with images rotated around 90 degrees

    Deskew works great for me for small angles. However, it totally fails for me if images are orientated around 90 degrees.

    This is strange, as I have clear horizontal lines through all the documents which should be very easy to detect

    I can send example files with private message as this is medical data and I am not at ease to shere it publicly, even after anonymization.

    opened by tytuseczek 3
  • How to run?

    How to run?

    Hi there! Just want to ask how to run this properly as I can't seem to make it run just using the cli. Do I need to install other stuffs aside from

    scikit image numpy

    opened by hacksider 3
  • Update dependency numpy to v1.22.4 - autoclosed

    Update dependency numpy to v1.22.4 - autoclosed

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | numpy (source) | 1.21.0 -> 1.22.4 | age | adoption | passing | confidence |


    Release Notes

    numpy/numpy

    v1.22.4

    Compare Source

    NumPy 1.22.4 Release Notes

    NumPy 1.22.4 is a maintenance release that fixes bugs discovered after the 1.22.3 release. In addition, the wheels for this release are built using the recently released Cython 0.29.30, which should fix the reported problems with debugging.

    The Python versions supported for this release are 3.8-3.10. Note that the Mac wheels are now based on OS X 10.15 rather than 10.6 that was used in previous NumPy release cycles.

    Contributors

    A total of 12 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Alexander Shadchin
    • Bas van Beek
    • Charles Harris
    • Hood Chatham
    • Jarrod Millman
    • John-Mark Gurney +
    • Junyan Ou +
    • Mariusz Felisiak +
    • Ross Barnowski
    • Sebastian Berg
    • Serge Guelton
    • Stefan van der Walt

    Pull requests merged

    A total of 22 pull requests were merged for this release.

    • #​21191: TYP, BUG: Fix np.lib.stride_tricks re-exported under the...
    • #​21192: TST: Bump mypy from 0.931 to 0.940
    • #​21243: MAINT: Explicitly re-export the types in numpy._typing
    • #​21245: MAINT: Specify sphinx, numpydoc versions for CI doc builds
    • #​21275: BUG: Fix typos
    • #​21277: ENH, BLD: Fix math feature detection for wasm
    • #​21350: MAINT: Fix failing simd and cygwin tests.
    • #​21438: MAINT: Fix failing Python 3.8 32-bit Windows test.
    • #​21444: BUG: add linux guard per #​21386
    • #​21445: BUG: Allow legacy dtypes to cast to datetime again
    • #​21446: BUG: Make mmap handling safer in frombuffer
    • #​21447: BUG: Stop using PyBytesObject.ob_shash deprecated in Python 3.11.
    • #​21448: ENH: Introduce numpy.core.setup_common.NPY_CXX_FLAGS
    • #​21472: BUG: Ensure compile errors are raised correclty
    • #​21473: BUG: Fix segmentation fault
    • #​21474: MAINT: Update doc requirements
    • #​21475: MAINT: Mark npy_memchr with no_sanitize("alignment") on clang
    • #​21512: DOC: Proposal - make the doc landing page cards more similar...
    • #​21525: MAINT: Update Cython version to 0.29.30.
    • #​21536: BUG: Fix GCC error during build configuration
    • #​21541: REL: Prepare for the NumPy 1.22.4 release.
    • #​21547: MAINT: Skip tests that fail on PyPy.

    Checksums

    MD5
    a19351fd3dc0b3bbc733495ed18b8f24  numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl
    0730f9e196f70ad89f246bf95ccf05d5  numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl
    63c74e5395a2b31d8adc5b1aa0c62471  numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl
    f99778023770c12f896768c90f7712e5  numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    757d68b0cdb4e28ffce8574b6a2f3c5e  numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    50becf2e048e54dc5227dfe8378aae1e  numpy-1.22.4-cp310-cp310-win32.whl
    79dfdc29a4730e44d6df33dbea5b35b0  numpy-1.22.4-cp310-cp310-win_amd64.whl
    8fd8f04d71ead55c2773d1b46668ca67  numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl
    41a7c6240081010824cc0d5c02900fe6  numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl
    6bc066d3f61da3304c82d92f3f900a4f  numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    86d959605c66ccba11c6504f25fff0d7  numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ae0405894c065349a511e4575b919e2a  numpy-1.22.4-cp38-cp38-win32.whl
    c9a731d08081396b7a1b66977734d2ac  numpy-1.22.4-cp38-cp38-win_amd64.whl
    4d9b97d74799e5fc48860f0b4a3b255a  numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl
    c99fa7e04cb7cc23f1713f2023b4e489  numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl
    dda3815df12b8a99c6c3069f69997521  numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl
    9b7c5b39d5611d92b66eb545d44b25db  numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    90fc45eaf8b8c4fac3f3ebd105a5a856  numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    9562153d4a83d773c20eb626cbd65cde  numpy-1.22.4-cp39-cp39-win32.whl
    711b23acce54a18ce74fc80f48f48062  numpy-1.22.4-cp39-cp39-win_amd64.whl
    ab803b24ea557452e828adba1b986af3  numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    09b3a41ea0b9bc20bd1691cf88f0b0d3  numpy-1.22.4.tar.gz
    b44849506fbb54cdef9dbb435b2b1987  numpy-1.22.4.zip
    
    SHA256
    ba9ead61dfb5d971d77b6c131a9dbee62294a932bf6a356e48c75ae684e635b3  numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl
    1ce7ab2053e36c0a71e7a13a7475bd3b1f54750b4b433adc96313e127b870887  numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl
    7228ad13744f63575b3a972d7ee4fd61815b2879998e70930d4ccf9ec721dce0  numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl
    43a8ca7391b626b4c4fe20aefe79fec683279e31e7c79716863b4b25021e0e74  numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a911e317e8c826ea632205e63ed8507e0dc877dcdc49744584dfc363df9ca08c  numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    9ce7df0abeabe7fbd8ccbf343dc0db72f68549856b863ae3dd580255d009648e  numpy-1.22.4-cp310-cp310-win32.whl
    3e1ffa4748168e1cc8d3cde93f006fe92b5421396221a02f2274aab6ac83b077  numpy-1.22.4-cp310-cp310-win_amd64.whl
    59d55e634968b8f77d3fd674a3cf0b96e85147cd6556ec64ade018f27e9479e1  numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl
    c1d937820db6e43bec43e8d016b9b3165dcb42892ea9f106c70fb13d430ffe72  numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl
    d4c5d5eb2ec8da0b4f50c9a843393971f31f1d60be87e0fb0917a49133d257d6  numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    64f56fc53a2d18b1924abd15745e30d82a5782b2cab3429aceecc6875bd5add0  numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    fb7a980c81dd932381f8228a426df8aeb70d59bbcda2af075b627bbc50207cba  numpy-1.22.4-cp38-cp38-win32.whl
    e96d7f3096a36c8754207ab89d4b3282ba7b49ea140e4973591852c77d09eb76  numpy-1.22.4-cp38-cp38-win_amd64.whl
    4c6036521f11a731ce0648f10c18ae66d7143865f19f7299943c985cdc95afb5  numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl
    b89bf9b94b3d624e7bb480344e91f68c1c6c75f026ed6755955117de00917a7c  numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl
    2d487e06ecbf1dc2f18e7efce82ded4f705f4bd0cd02677ffccfb39e5c284c7e  numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl
    f3eb268dbd5cfaffd9448113539e44e2dd1c5ca9ce25576f7c04a5453edc26fa  numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    37431a77ceb9307c28382c9773da9f306435135fae6b80b62a11c53cfedd8802  numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    cc7f00008eb7d3f2489fca6f334ec19ca63e31371be28fd5dad955b16ec285bd  numpy-1.22.4-cp39-cp39-win32.whl
    f0725df166cf4785c0bc4cbfb320203182b1ecd30fee6e541c8752a92df6aa32  numpy-1.22.4-cp39-cp39-win_amd64.whl
    0791fbd1e43bf74b3502133207e378901272f3c156c4df4954cad833b1380207  numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b4308198d0e41efaa108e57d69973398439c7299a9d551680cdd603cf6d20709  numpy-1.22.4.tar.gz
    425b390e4619f58d8526b3dcf656dde069133ae5c240229821f01b5f44ea07af  numpy-1.22.4.zip
    

    v1.22.3

    Compare Source

    NumPy 1.22.3 Release Notes

    NumPy 1.22.3 is a maintenance release that fixes bugs discovered after the 1.22.2 release. The most noticeable fixes may be those for DLPack. One that may cause some problems is disallowing strings as inputs to logical ufuncs. It is still undecided how strings should be treated in those functions and it was thought best to simply disallow them until a decision was reached. That should not cause problems with older code.

    The Python versions supported for this release are 3.8-3.10. Note that the Mac wheels are now based on OS X 10.14 rather than 10.9 that was used in previous NumPy release cycles. 10.14 is the oldest release supported by Apple.

    Contributors

    A total of 9 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • @​GalaxySnail +
    • Alexandre de Siqueira
    • Bas van Beek
    • Charles Harris
    • Melissa Weber Mendonça
    • Ross Barnowski
    • Sebastian Berg
    • Tirth Patel
    • Matthieu Darbois
    Pull requests merged

    A total of 10 pull requests were merged for this release.

    • #​21048: MAINT: Use "3.10" instead of "3.10-dev" on travis.
    • #​21106: TYP,MAINT: Explicitly allow sequences of array-likes in np.concatenate
    • #​21137: BLD,DOC: skip broken ipython 8.1.0
    • #​21138: BUG, ENH: np._from_dlpack: export correct device information
    • #​21139: BUG: Fix numba DUFuncs added loops getting picked up
    • #​21140: BUG: Fix unpickling an empty ndarray with a non-zero dimension...
    • #​21141: BUG: use ThreadPoolExecutor instead of ThreadPool
    • #​21142: API: Disallow strings in logical ufuncs
    • #​21143: MAINT, DOC: Fix SciPy intersphinx link
    • #​21148: BUG,ENH: np._from_dlpack: export arrays with any strided size-1...
    Checksums
    MD5
    14f1872bbab050b0579e5fcd8b341b81  numpy-1.22.3-cp310-cp310-macosx_10_14_x86_64.whl
    c673faa3ac8745ad10ed0428a21a77aa  numpy-1.22.3-cp310-cp310-macosx_11_0_arm64.whl
    d925fff720561673fd7ee8ead0e94935  numpy-1.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    319f97f5ee26b9c3c06f7a2a3df412a3  numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    866eae5dba934cad50eb38c8505c8449  numpy-1.22.3-cp310-cp310-win32.whl
    e4c512437a6d4eb4a384225861067ad8  numpy-1.22.3-cp310-cp310-win_amd64.whl
    a28052af37037f0d5c3b47f4a7040135  numpy-1.22.3-cp38-cp38-macosx_10_14_x86_64.whl
    d22dc074bde64f6e91a2d1990345f821  numpy-1.22.3-cp38-cp38-macosx_11_0_arm64.whl
    e8a01c2ca1474aff142366a0a2fe0812  numpy-1.22.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    4fe6e71e7871cb31ffc4122aa5707be7  numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    1273fb3c77383ab28f2fb05192751340  numpy-1.22.3-cp38-cp38-win32.whl
    001244a6bafa640d7509c85661a4e98e  numpy-1.22.3-cp38-cp38-win_amd64.whl
    b8694b880a1a68d1716f60a9c9e82b38  numpy-1.22.3-cp39-cp39-macosx_10_14_x86_64.whl
    ba122eaa0988801e250f8674e3dd612e  numpy-1.22.3-cp39-cp39-macosx_11_0_arm64.whl
    3641825aca07cb26732425e52d034daf  numpy-1.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    f92412e4273c2580abcc1b75c56e9651  numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b38604778ffd0a17931c06738c3ce9ed  numpy-1.22.3-cp39-cp39-win32.whl
    644e0b141fa36a1baf0338032254cc9a  numpy-1.22.3-cp39-cp39-win_amd64.whl
    99d2dfb943327b108b2c3b923bd42000  numpy-1.22.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    3305c27e5bdf7f19247a7eee00ac053e  numpy-1.22.3.tar.gz
    b56530be068796a50bf5a09105c8011e  numpy-1.22.3.zip
    
    SHA256
    92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75  numpy-1.22.3-cp310-cp310-macosx_10_14_x86_64.whl
    8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab  numpy-1.22.3-cp310-cp310-macosx_11_0_arm64.whl
    48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e  numpy-1.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4  numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f950f8845b480cffe522913d35567e29dd381b0dc7e4ce6a4a9f9156417d2430  numpy-1.22.3-cp310-cp310-win32.whl
    08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4  numpy-1.22.3-cp310-cp310-win_amd64.whl
    201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce  numpy-1.22.3-cp38-cp38-macosx_10_14_x86_64.whl
    f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe  numpy-1.22.3-cp38-cp38-macosx_11_0_arm64.whl
    568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5  numpy-1.22.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1  numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62  numpy-1.22.3-cp38-cp38-win32.whl
    07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676  numpy-1.22.3-cp38-cp38-win_amd64.whl
    2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123  numpy-1.22.3-cp39-cp39-macosx_10_14_x86_64.whl
    fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802  numpy-1.22.3-cp39-cp39-macosx_11_0_arm64.whl
    5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d  numpy-1.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168  numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa  numpy-1.22.3-cp39-cp39-win32.whl
    639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a  numpy-1.22.3-cp39-cp39-win_amd64.whl
    c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f  numpy-1.22.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    a906c0b4301a3d62ccf66d058fe779a65c1c34f6719ef2058f96e1856f48bca5  numpy-1.22.3.tar.gz
    dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18  numpy-1.22.3.zip
    

    v1.22.2

    Compare Source

    NumPy 1.22.2 Release Notes

    The NumPy 1.22.2 is maintenance release that fixes bugs discovered after the 1.22.1 release. Notable fixes are:

    • Several build related fixes for downstream projects and other platforms.
    • Various Annotation fixes/additions.
    • Numpy wheels for Windows will use the 1.41 tool chain, fixing downstream link problems for projects using NumPy provided libraries on Windows.
    • Deal with CVE-2021-41495 complaint.

    The Python versions supported for this release are 3.8-3.10.

    Contributors

    A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Andrew J. Hesford +
    • Bas van Beek
    • Brénainn Woodsend +
    • Charles Harris
    • Hood Chatham
    • Janus Heide +
    • Leo Singer
    • Matti Picus
    • Mukulika Pahari
    • Niyas Sait
    • Pearu Peterson
    • Ralf Gommers
    • Sebastian Berg
    • Serge Guelton
    Pull requests merged

    A total of 21 pull requests were merged for this release.

    • #​20842: BLD: Add NPY_DISABLE_SVML env var to opt out of SVML
    • #​20843: BUG: Fix build of third party extensions with Py_LIMITED_API
    • #​20844: TYP: Fix pyright being unable to infer the real and imag...
    • #​20845: BUG: Fix comparator function signatures
    • #​20906: BUG: Avoid importing numpy.distutils on import numpy.testing
    • #​20907: MAINT: remove outdated mingw32 fseek support
    • #​20908: TYP: Relax the return type of np.vectorize
    • #​20909: BUG: fix f2py's define for threading when building with Mingw
    • #​20910: BUG: distutils: fix building mixed C/Fortran extensions
    • #​20912: DOC,TST: Fix Pandas code example as per new release
    • #​20935: TYP, MAINT: Add annotations for flatiter.__setitem__
    • #​20936: MAINT, TYP: Added missing where typehints in fromnumeric.pyi
    • #​20937: BUG: Fix build_ext interaction with non numpy extensions
    • #​20938: BUG: Fix missing intrinsics for windows/arm64 target
    • #​20945: REL: Prepare for the NumPy 1.22.2 release.
    • #​20982: MAINT: f2py: don't generate code that triggers -Wsometimes-uninitialized.
    • #​20983: BUG: Fix incorrect return type in reduce without initial value
    • #​20984: ENH: review return values for PyArray_DescrNew
    • #​20985: MAINT: be more tolerant of setuptools >= 60
    • #​20986: BUG: Fix misplaced return.
    • #​20992: MAINT: Further small return value validation fixes
    Checksums
    MD5
    2319f8d7c629d0ba3d3d3b1d5605d494  numpy-1.22.2-cp310-cp310-macosx_10_14_x86_64.whl
    023c01a6d3aa528f8e88b0837dcab7ed  numpy-1.22.2-cp310-cp310-macosx_11_0_arm64.whl
    84b36e8893b811d17a19404c68db7ce6  numpy-1.22.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    744da9614e8272a384b542d129cd17a9  numpy-1.22.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ee012ed5e7c98c6f48026dfa818b2274  numpy-1.22.2-cp310-cp310-win_amd64.whl
    73e4fdcf398327bc4241dc38b6d10211  numpy-1.22.2-cp38-cp38-macosx_10_14_x86_64.whl
    9fcbca2a614af3b9a37456643ab1c99d  numpy-1.22.2-cp38-cp38-macosx_11_0_arm64.whl
    b7e0d4a19867d33765c7187d1390eef4  numpy-1.22.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    dc8d79d75588737ea77fe85a4f05365a  numpy-1.22.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    05906141c095148c53c043c381e6fabe  numpy-1.22.2-cp38-cp38-win32.whl
    05d3b6d34c0fa031e69ec0476e8d4c9c  numpy-1.22.2-cp38-cp38-win_amd64.whl
    1449889d856de0e88437fa76d3284e00  numpy-1.22.2-cp39-cp39-macosx_10_14_x86_64.whl
    e25666ab6ec0692368f328b7b98c27a3  numpy-1.22.2-cp39-cp39-macosx_11_0_arm64.whl
    59e3013894bcc6267054c746d9339cf8  numpy-1.22.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7606b9898c20d2b2aa7fc7018bc9c5cd  numpy-1.22.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    2686a1495c620e85842967bf8a5f1b2f  numpy-1.22.2-cp39-cp39-win32.whl
    54432a84807ab69ac3432e6090d5a169  numpy-1.22.2-cp39-cp39-win_amd64.whl
    4dbecace42595742485b854b213341b6  numpy-1.22.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    5b506b01ef454f39272ca75de1c7f61c  numpy-1.22.2.tar.gz
    a903008d992b77cb68129173c0f61f60  numpy-1.22.2.zip
    
    SHA256
    515a8b6edbb904594685da6e176ac9fbea8f73a5ebae947281de6613e27f1956  numpy-1.22.2-cp310-cp310-macosx_10_14_x86_64.whl
    76a4f9bce0278becc2da7da3b8ef854bed41a991f4226911a24a9711baad672c  numpy-1.22.2-cp310-cp310-macosx_11_0_arm64.whl
    168259b1b184aa83a514f307352c25c56af111c269ffc109d9704e81f72e764b  numpy-1.22.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    3556c5550de40027d3121ebbb170f61bbe19eb639c7ad0c7b482cd9b560cd23b  numpy-1.22.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    aafa46b5a39a27aca566198d3312fb3bde95ce9677085efd02c86f7ef6be4ec7  numpy-1.22.2-cp310-cp310-win_amd64.whl
    55535c7c2f61e2b2fc817c5cbe1af7cb907c7f011e46ae0a52caa4be1f19afe2  numpy-1.22.2-cp38-cp38-macosx_10_14_x86_64.whl
    60cb8e5933193a3cc2912ee29ca331e9c15b2da034f76159b7abc520b3d1233a  numpy-1.22.2-cp38-cp38-macosx_11_0_arm64.whl
    0b536b6840e84c1c6a410f3a5aa727821e6108f3454d81a5cd5900999ef04f89  numpy-1.22.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    2638389562bda1635b564490d76713695ff497242a83d9b684d27bb4a6cc9d7a  numpy-1.22.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    6767ad399e9327bfdbaa40871be4254d1995f4a3ca3806127f10cec778bd9896  numpy-1.22.2-cp38-cp38-win32.whl
    03ae5850619abb34a879d5f2d4bb4dcd025d6d8fb72f5e461dae84edccfe129f  numpy-1.22.2-cp38-cp38-win_amd64.whl
    d76a26c5118c4d96e264acc9e3242d72e1a2b92e739807b3b69d8d47684b6677  numpy-1.22.2-cp39-cp39-macosx_10_14_x86_64.whl
    15efb7b93806d438e3bc590ca8ef2f953b0ce4f86f337ef4559d31ec6cf9d7dd  numpy-1.22.2-cp39-cp39-macosx_11_0_arm64.whl
    badca914580eb46385e7f7e4e426fea6de0a37b9e06bec252e481ae7ec287082  numpy-1.22.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    94dd11d9f13ea1be17bac39c1942f527cbf7065f94953cf62dfe805653da2f8f  numpy-1.22.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    8cf33634b60c9cef346663a222d9841d3bbbc0a2f00221d6bcfd0d993d5543f6  numpy-1.22.2-cp39-cp39-win32.whl
    59153979d60f5bfe9e4c00e401e24dfe0469ef8da6d68247439d3278f30a180f  numpy-1.22.2-cp39-cp39-win_amd64.whl
    4a176959b6e7e00b5a0d6f549a479f869829bfd8150282c590deee6d099bbb6e  numpy-1.22.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    093d513a460fd94f94c16193c3ef29b2d69a33e482071e3d6d6e561a700587a6  numpy-1.22.2.tar.gz
    076aee5a3763d41da6bef9565fdf3cb987606f567cd8b104aded2b38b7b47abf  numpy-1.22.2.zip
    

    v1.22.1

    Compare Source

    NumPy 1.22.1 Release Notes

    The NumPy 1.22.1 is maintenance release that fixes bugs discovered after the 1.22.0 release. Notable fixes are:

    • Fix f2PY docstring problems (SciPy)
    • Fix reduction type problems (AstroPy)
    • Fix various typing bugs.

    The Python versions supported for this release are 3.8-3.10.

    Contributors

    A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time.

    • Arryan Singh
    • Bas van Beek
    • Charles Harris
    • Denis Laxalde
    • Isuru Fernando
    • Kevin Sheppard
    • Matthew Barber
    • Matti Picus
    • Melissa Weber Mendonça
    • Mukulika Pahari
    • Omid Rajaei +
    • Pearu Peterson
    • Ralf Gommers
    • Sebastian Berg
    Pull requests merged

    A total of 20 pull requests were merged for this release.

    • #​20702: MAINT, DOC: Post 1.22.0 release fixes.
    • #​20703: DOC, BUG: Use pngs instead of svgs.
    • #​20704: DOC: Fixed the link on user-guide landing page
    • #​20714: BUG: Restore vc141 support
    • #​20724: BUG: Fix array dimensions solver for multidimensional arguments...
    • #​20725: TYP: change type annotation for __array_namespace__ to ModuleType
    • #​20726: TYP, MAINT: Allow ndindex to accept integer tuples
    • #​20757: BUG: Relax dtype identity check in reductions
    • #​20763: TYP: Allow time manipulation functions to accept date and timedelta...
    • #​20768: TYP: Relax the type of ndarray.__array_finalize__
    • #​20795: MAINT: Raise RuntimeError if setuptools version is too recent.
    • #​20796: BUG, DOC: Fixes SciPy docs build warnings
    • #​20797: DOC: fix OpenBLAS version in release note
    • #​20798: PERF: Optimize array check for bounded 0,1 values
    • #​20805: BUG: Fix that reduce-likes honor out always (and live in the...
    • #​20806: BUG: array_api.argsort(descending=True) respects relative...
    • #​20807: BUG: Allow integer inputs for pow-related functions in array_api
    • #​20814: DOC: Refer to NumPy, not pandas, in main page
    • #​20815: DOC: Update Copyright to 2022 [License]
    • #​20819: BUG: Return correctly shaped inverse indices in array_api set...
    Checksums
    MD5
    8edd68c8998cb694e244ce793b2d088c  numpy-1.22.1-cp310-cp310-macosx_10_9_universal2.whl
    e4858aafd41cdba76cd14161bfc512c3  numpy-1.22.1-cp310-cp310-macosx_10_9_x86_64.whl
    96f4fc3f321625278ca3807c7c8c789c  numpy-1.22.1-cp310-cp310-macosx_11_0_arm64.whl
    2ddc25b9c9d7b517610689055f9f553a  numpy-1.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    8d40c6fd64389c05646b5ef95cded6e5  numpy-1.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    1a8359c6436d1bcfe84a094337903a48  numpy-1.22.1-cp310-cp310-win_amd64.whl
    033f9aa72a732646f3fb4563226320ee  numpy-1.22.1-cp38-cp38-macosx_10_9_universal2.whl
    59e13abecdf4194f75b654f1d853b244  numpy-1.22.1-cp38-cp38-macosx_10_9_x86_64.whl
    3ce885a0c10e95f5756d7c1878eaa246  numpy-1.22.1-cp38-cp38-macosx_11_0_arm64.whl
    546b2a0866561673d5b7eadcc086af24  numpy-1.22.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    200c0a7bc3a24cfa6f4358d7274b5535  numpy-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    defe48b3b5f44c3991e830f7cde0a79c  numpy-1.22.1-cp38-cp38-win32.whl
    15557a847a78bcbf651ca6689ae37935  numpy-1.22.1-cp38-cp38-win_amd64.whl
    067e734594c67d8141190b7eabb979ee  numpy-1.22.1-cp39-cp39-macosx_10_9_universal2.whl
    1458d42b26da341baaee134d85e3fd70  numpy-1.22.1-cp39-cp39-macosx_10_9_x86_64.whl
    463b365c80efffd807194c78b4796235  numpy-1.22.1-cp39-cp39-macosx_11_0_arm64.whl
    58d8dc02dd884898c1b7ee1bee1dd216  numpy-1.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    48e2d2905822f78a96d400c78bd16cbb  numpy-1.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    c5059bd82d8f2c509c889fba09251307  numpy-1.22.1-cp39-cp39-win32.whl
    eb9a0655d16897f0adf6ea53b9f3bda4  numpy-1.22.1-cp39-cp39-win_amd64.whl
    74cb5dba2f37dc445ffd3068eb1d58fe  numpy-1.22.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    90fff1ee7c7f843fc7a234addc70c71c  numpy-1.22.1.tar.gz
    c25dad73053350dd0278605d8ed8a5c7  numpy-1.22.1.zip
    
    SHA256
    3d62d6b0870b53799204515145935608cdeb4cebb95a26800b6750e48884cc5b  numpy-1.22.1-cp310-cp310-macosx_10_9_universal2.whl
    831f2df87bd3afdfc77829bc94bd997a7c212663889d56518359c827d7113b1f  numpy-1.22.1-cp310-cp310-macosx_10_9_x86_64.whl
    8d1563060e77096367952fb44fca595f2b2f477156de389ce7c0ade3aef29e21  numpy-1.22.1-cp310-cp310-macosx_11_0_arm64.whl
    69958735d5e01f7b38226a6c6e7187d72b7e4d42b6b496aca5860b611ca0c193  numpy-1.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    45a7dfbf9ed8d68fd39763940591db7637cf8817c5bce1a44f7b56c97cbe211e  numpy-1.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    7e957ca8112c689b728037cea9c9567c27cf912741fabda9efc2c7d33d29dfa1  numpy-1.22.1-cp310-cp310-win_amd64.whl
    800dfeaffb2219d49377da1371d710d7952c9533b57f3d51b15e61c4269a1b5b  numpy-1.22.1-cp38-cp38-macosx_10_9_universal2.whl
    65f5e257987601fdfc63f1d02fca4d1c44a2b85b802f03bd6abc2b0b14648dd2  numpy-1.22.1-cp38-cp38-macosx_10_9_x86_64.whl
    632e062569b0fe05654b15ef0e91a53c0a95d08ffe698b66f6ba0f927ad267c2  numpy-1.22.1-cp38-cp38-macosx_11_0_arm64.whl
    0d245a2bf79188d3f361137608c3cd12ed79076badd743dc660750a9f3074f7c  numpy-1.22.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    26b4018a19d2ad9606ce9089f3d52206a41b23de5dfe8dc947d2ec49ce45d015  numpy-1.22.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f8ad59e6e341f38266f1549c7c2ec70ea0e3d1effb62a44e5c3dba41c55f0187  numpy-1.22.1-cp38-cp38-win32.whl
    60f19c61b589d44fbbab8ff126640ae712e163299c2dd422bfe4edc7ec51aa9b  numpy-1.22.1-cp38-cp38-win_amd64.whl
    2db01d9838a497ba2aa9a87515aeaf458f42351d72d4e7f3b8ddbd1eba9479f2  numpy-1.22.1-cp39-cp39-macosx_10_9_universal2.whl
    bcd19dab43b852b03868796f533b5f5561e6c0e3048415e675bec8d2e9d286c1  numpy-1.22.1-cp39-cp39-macosx_10_9_x86_64.whl
    78bfbdf809fc236490e7e65715bbd98377b122f329457fffde206299e163e7f3  numpy-1.22.1-cp39-cp39-macosx_11_0_arm64.whl
    c51124df17f012c3b757380782ae46eee85213a3215e51477e559739f57d9bf6  numpy-1.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    88d54b7b516f0ca38a69590557814de2dd638d7d4ed04864826acaac5ebb8f01  numpy-1.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    b5ec9a5eaf391761c61fd873363ef3560a3614e9b4ead17347e4deda4358bca4  numpy-1.22.1-cp39-cp39-win32.whl
    4ac4d7c9f8ea2a79d721ebfcce81705fc3cd61a10b731354f1049eb8c99521e8  numpy-1.22.1-cp39-cp39-win_amd64.whl
    e60ef82c358ded965fdd3132b5738eade055f48067ac8a5a8ac75acc00cad31f  numpy-1.22.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    dd1968402ae20dfd59b34acd799b494be340c774f6295e9bf1c2b9842a5e416d  numpy-1.22.1.tar.gz
    e348ccf5bc5235fc405ab19d53bec215bb373300e5523c7b476cc0da8a5e9973  numpy-1.22.1.zip
    

    v1.22.0

    Compare Source

    NumPy 1.22.0 Release Notes

    NumPy 1.22.0 is a big release featuring the work of 153 contributors spread over 609 pull requests. There have been many improvements, highlights are:

    • Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
    • A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
    • NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
    • New methods for quantile, percentile, and related functions. The new methods provide a complete set of the methods commonly found in the literature.
    • A new configurable allocator for use by downstream projects.

    These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.

    The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.

    Expired deprecations

    Deprecated numeric style dtype strings have been removed

    Using the strings "Bytes0", "Datetime64", "Str0", "Uint32", and "Uint64" as a dtype will now raise a TypeError.

    (gh-19539)

    Expired deprecations for loads, ndfromtxt, and mafromtxt in npyio

    numpy.loads was deprecated in v1.15, with the recommendation that users use pickle.loads instead. ndfromtxt and mafromtxt were both deprecated in v1.17 - users should use numpy.genfromtxt instead with the appropriate value for the usemask parameter.

    (gh-19615)

    Deprecations

    Use delimiter rather than delimitor as kwarg in mrecords

    The misspelled keyword argument delimitor of numpy.ma.mrecords.fromtextfile() has been changed to delimiter, using it will emit a deprecation warning.

    (gh-19921)

    Passing boolean kth values to (arg-)partition has been deprecated

    numpy.partition and numpy.argpartition would previously accept boolean values for the kth parameter, which would subsequently be converted into integers. This behavior has now been deprecated.

    (gh-20000)

    The np.MachAr class has been deprecated

    The numpy.MachAr class and finfo.machar <numpy.finfo> attribute have been deprecated. Users are encouraged to access the property if interest directly from the corresponding numpy.finfo attribute.

    (gh-20201)

    Compatibility notes

    Distutils forces strict floating point model on clang

    NumPy now sets the -ftrapping-math option on clang to enforce correct floating point error handling for universal functions. Clang defaults to non-IEEE and C99 conform behaviour otherwise. This change (using the equivalent but newer -ffp-exception-behavior=strict) was attempted in NumPy 1.21, but was effectively never used.

    (gh-19479)

    Removed floor division support for complex types

    Floor division of complex types will now result in a TypeError

    >>> a = np.arange(10) + 1j* np.arange(10)
    >>> a // 1
    TypeError: ufunc 'floor_divide' not supported for the input types...
    

    (gh-19135)

    numpy.vectorize functions now produce the same output class as the base function

    When a function that respects numpy.ndarray subclasses is vectorized using numpy.vectorize, the vectorized function will now be subclass-safe also for cases that a signature is given (i.e., when creating a gufunc): the output class will be the same as that returned by the first call to the underlying function.

    (gh-19356)

    Python 3.7 is no longer supported

    Python support has been dropped. This is rather strict, there are changes that require Python >= 3.8.

    (gh-19665)

    str/repr of complex dtypes now include space after punctuation

    The repr of np.dtype({"names": ["a"], "formats": [int], "offsets": [2]}) is now dtype({'names': ['a'], 'formats': ['<i8'], 'offsets': [2], 'itemsize': 10}), whereas spaces where previously omitted after colons and between fields.

    The old behavior can be restored via np.set_printoptions(legacy="1.21").

    (gh-19687)

    Corrected advance in PCG64DSXM and PCG64

    Fixed a bug in the advance method of PCG64DSXM and PCG64. The bug only affects results when the step was larger than $2^{64}$ on platforms that do not support 128-bit integers(e.g., Windows and 32-bit Linux).

    (gh-20049)

    Change in generation of random 32 bit floating point variates

    There was bug in the generation of 32 bit floating point values from the uniform distribution that would result in the least significant bit of the random variate always being 0. This has been fixed.

    This change affects the variates produced by the random.Generator methods random, standard_normal, standard_exponential, and standard_gamma, but only when the dtype is specified as numpy.float32.

    (gh-20314)

    C API changes

    Masked inner-loops cannot be customized anymore

    The masked inner-loop selector is now never used. A warning will be given in the unlikely event that it was customized.

    We do not expect that any code uses this. If you do use it, you must unset the selector on newer NumPy version. Please also contact the NumPy developers, we do anticipate providing a new, more specific, mechanism.

    The customization was part of a never-implemented feature to allow for faster masked operations.

    (gh-19259)

    New Features

    NEP 49 configurable allocators

    As detailed in NEP 49, the function used for allocation of the data segment of a ndarray can be changed. The policy can be set globally or in a context. For more information see the NEP and the data_memory{.interpreted-text role="ref"} reference docs. Also add a NUMPY_WARN_IF_NO_MEM_POLICY override to warn on dangerous use of transfering ownership by setting NPY_ARRAY_OWNDATA.

    (gh-17582)

    Implementation of the NEP 47 (adopting the array API standard)

    An initial implementation of NEP47, adoption of the array API standard, has been added as numpy.array_api. The implementation is experimental and will issue a UserWarning on import, as the array API standard is still in draft state. numpy.array_api is a conforming implementation of the array API standard, which is also minimal, meaning that only those functions and behaviors that are required by the standard are implemented (see the NEP for more info). Libraries wishing to make use of the array API standard are encouraged to use numpy.array_api to check that they are only using functionality that is guaranteed to be present in standard conforming implementations.

    (gh-18585)

    Generate C/C++ API reference documentation from comments blocks is now possible

    This feature depends on Doxygen in the generation process and on Breathe to integrate it with Sphinx.

    (gh-18884)

    Assign the platform-specific c_intp precision via a mypy plugin

    The mypy plugin, introduced in numpy/numpy#​17843, has again been expanded: the plugin now is now responsible for setting the platform-specific precision of numpy.ctypeslib.c_intp, the latter being used as data type for various numpy.ndarray.ctypes attributes.

    Without the plugin, aforementioned type will default to ctypes.c_int64.

    To enable the plugin, one must add it to their mypy configuration file:

    [mypy]
    plugins = numpy.typing.mypy_plugin
    

    (gh-19062)

    Add NEP 47-compatible dlpack support

    Add a ndarray.__dlpack__() method which returns a dlpack C structure wrapped in a PyCapsule. Also add a np._from_dlpack(obj) function, where obj supports __dlpack__(), and returns an ndarray.

    (gh-19083)

    keepdims optional argument added to numpy.argmin, numpy.argmax

    keepdims argument is added to numpy.argmin, numpy.argmax. If set to True, the axes which are reduced are left in the result as dimensions with size one. The resulting array has the same number of dimensions and will broadcast with the input array.

    (gh-19211)

    bit_count to compute the number of 1-bits in an integer

    Computes the number of 1-bits in the absolute value of the input. This works on all the numpy integer types. Analogous to the builtin int.bit_count or popcount in C++.

    >>> np.uint32(1023).bit_count()
    10
    >>> np.int32(-127).bit_count()
    7
    

    (gh-19355)

    The ndim and axis attributes have been added to numpy.AxisError

    The ndim and axis parameters are now also stored as attributes within each numpy.AxisError instance.

    (gh-19459)

    Preliminary support for windows/arm64 target

    numpy added support for windows/arm64 target. Please note OpenBLAS support is not yet available for windows/arm64 target.

    (gh-19513)

    Added support for LoongArch

    LoongArch is a new instruction set, numpy compilation failure on LoongArch architecture, so add the commit.

    (gh-19527)

    A .clang-format file has been added

    Clang-format is a C/C++ code formatter, together with the added .clang-format file, it produces code close enough to the NumPy C_STYLE_GUIDE for general use. Clang-format version 12+ is required due to the use of several new features, it is available in Fedora 34 and Ubuntu Focal among other distributions.

    (gh-19754)

    is_integer is now available to numpy.floating and numpy.integer

    Based on its counterpart in Python float and int, the numpy floating point and integer types now support float.is_integer. Returns True if the number is finite with integral value, and False otherwise.

    >>> np.float32(-2.0).is_integer()
    True
    >>> np.float64(3.2).is_integer()
    False
    >>> np.int32(-2).is_integer()
    True
    

    (gh-19803)

    Symbolic parser for Fortran dimension specifications

    A new symbolic parser has been added to f2py in order to correctly parse dimension specifications. The parser is the basis for future improvements and provides compatibility with Draft Fortran 202x.

    (gh-19805)

    ndarray, dtype and number are now runtime-subscriptable

    Mimicking PEP-585, the numpy.ndarray, numpy.dtype and numpy.number classes are now subscriptable for python 3.9 and later. Consequently, expressions that were previously only allowed in .pyi stub files or with the help of from __future__ import annotations are now also legal during runtime.

    >>> import numpy as np
    >>> from typing import Any
    
    >>> np.ndarray[Any, np.dtype[np.float64]]
    numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
    

    (gh-19879)

    Improvements

    ctypeslib.load_library can now take any path-like object

    All parameters in the can now take any python:path-like object{.interpreted-text role="term"}. This includes the likes of strings, bytes and objects implementing the __fspath__<os.PathLike.__fspath__>{.interpreted-text role="meth"} protocol.

    (gh-17530)

    Add smallest_normal and smallest_subnormal attributes to finfo

    The attributes smallest_normal and smallest_subnormal are available as an extension of finfo class for any floating-point data type. To use these new attributes, write np.finfo(np.float64).smallest_normal or np.finfo(np.float64).smallest_subnormal.

    (gh-18536)

    numpy.linalg.qr accepts stacked matrices as inputs

    numpy.linalg.qr is able to produce results for stacked matrices as inputs. Moreover, the implementation of QR decomposition has been shifted to C from Python.

    (gh-19151)

    numpy.fromregex now accepts os.PathLike implementations

    numpy.fromregex now accepts objects implementing the __fspath__<os.PathLike> protocol, e.g. pathlib.Path.

    (gh-19680)

    Add new methods for quantile and percentile

    quantile and percentile now have have a method= keyword argument supporting 13 different methods. This replaces the interpolation= keyword argument.

    The methods are now aligned with nine methods which can be found in scientific literature and the R language. The remaining methods are the previous discontinuous variations of the default "linear" one.

    Please see the documentation of numpy.percentile for more information.

    (gh-19857)

    Missing parameters have been added to the nan<x> functions

    A number of the nan<x> functions previously lacked parameters that were present in their <x>-based counterpart, e.g. the where parameter was present in numpy.mean but absent from numpy.nanmean.

    The following parameters have now been added to the nan<x> functions:

    • nanmin: initial & where
    • nanmax: initial & where
    • nanargmin: keepdims & out
    • nanargmax: keepdims & out
    • nansum: initial & where
    • nanprod: initial & where
    • nanmean: where
    • nanvar: where
    • nanstd: where

    (gh-20027)

    Annotating the main Numpy namespace

    Starting from the 1.20 release, PEP 484 type annotations have been included for parts of the NumPy library; annotating the remaining functions being a work in progress. With the release of 1.22 this process has been completed for the main NumPy namespace, which is now fully annotated.

    Besides the main namespace, a limited number of sub-packages contain annotations as well. This includes, among others, numpy.testing, numpy.linalg and numpy.random (available since 1.21).

    (gh-20217)

    Vectorize umath module using AVX-512

    By leveraging Intel Short Vector Math Library (SVML), 18 umath functions (exp2, log2, log10, expm1, log1p, cbrt, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, arctanh) are vectorized using AVX-512 instruction set for both single and double precision implementations. This change is currently enabled only for Linux users and on processors with AVX-512 instruction set. It provides an average speed up of 32x and 14x for single and double precision functions respectively.

    (gh-19478)

    OpenBLAS v0.3.18

    Update the OpenBLAS used in testing and in wheels to v0.3.18

    (gh-20058)

    Checksums

    MD5
    66757b963ad5835038b9a2a9df852c84  numpy-1.22.0-cp310-cp310-macosx_10_9_universal2.whl
    86b7f3a94c09dbd6869614c4d7f9ba5e  numpy-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl
    5184db17d8e5e6ecdc53e2f0a6964c35  numpy-1.22.0-cp310-cp310-macosx_11_0_arm64.whl
    6643e9a076cce736cfbe15face4db9db  numpy-1.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    6efef45bf63594703c094b2ad729e648  numpy-1.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    7a1a21bb0958a3eb920deeef9e745935  numpy-1.22.0-cp310-cp310-win_amd64.whl
    45241fb5f31ea46e2b6f1321a63c8e1c  numpy-1.22.0-cp38-cp38-macosx_10_9_universal2.whl
    472f24a5d35116634fcc57e9bda899bc  numpy-1.22.0-cp38-cp38-macosx_10_9_x86_64.whl
    6c15cf7847b20101ae281ade6121b79e  numpy-1.22.0-cp38-cp38-macosx_11_0_arm64.whl
    313f0fd99a899a7465511c1418e1031f  numpy-1.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    9ae6ecde0cbeadd2a9d7b8ae54285863  numpy-1.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    0f31a7b9e128b0cdafecf98cf1301fc0  numpy-1.22.0-cp38-cp38-win32.whl
    f4b45579cf532ea632b890b1df387081  numpy-1.22.0-cp38-cp38-win_amd64.whl
    2cb27112b11c16f700e6019f5fd36408  numpy-1.22.0-cp39-cp39-macosx_10_9_universal2.whl
    4554a5797a4cb787b5169a8f5482fb95  numpy-1.22.0-cp39-cp39-macosx_10_9_x86_64.whl
    3780decd94837da6f0816f2feaace9c2  numpy-1.22.0-cp39-cp39-macosx_11_0_arm64.whl
    6e519dd5205510dfebcadc6f7fdf9738  numpy-1.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    89d455bf290f459a70c57620f02d5b69  numpy-1.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    6425f8d7dc779a54b8074e198cea43c9  numpy-1.22.0-cp39-cp39-win32.whl
    1b5c670328146975b21b54fa5ef8ec4c  numpy-1.22.0-cp39-cp39-win_amd64.whl
    05d842127ca85cca12fed3a26b0f5177  numpy-1.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    ab751b8d4195f91ae61a402184d16d18  numpy-1.22.0.tar.gz
    252de134862a27bd66705d29622edbfe  numpy-1.22.0.zip
    
    SHA256
    3d22662b4b10112c545c91a0741f2436f8ca979ab3d69d03d19322aa970f9695  numpy-1.22.0-cp310-cp310-macosx_10_9_universal2.whl
    11a1f3816ea82eed4178102c56281782690ab5993251fdfd75039aad4d20385f  numpy-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl
    5dc65644f75a4c2970f21394ad8bea1a844104f0fe01f278631be1c7eae27226  numpy-1.22.0-cp310-cp310-macosx_11_0_arm64.whl
    42c16cec1c8cf2728f1d539bd55aaa9d6bb48a7de2f41eb944697293ef65a559  numpy-1.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a97e82c39d9856fe7d4f9b86d8a1e66eff99cf3a8b7ba48202f659703d27c46f  numpy-1.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    e41e8951749c4b5c9a2dc5fdbc1a4eec6ab2a140fdae9b460b0f557eed870f4d  numpy-1.22.0-cp310-cp310-win_amd64.whl
    bece0a4a49e60e472a6d1f70ac6cdea00f9ab80ff01132f96bd970cdd8a9e5a9  numpy-1.22.0-cp38-cp38-macosx_10_9_universal2.whl
    818b9be7900e8dc23e013a92779135623476f44a0de58b40c32a15368c01d471  numpy-1.22.0-cp38-cp38-macosx_10_9_x86_64.whl
    47ee7a839f5885bc0c63a74aabb91f6f40d7d7b639253768c4199b37aede7982  numpy-1.22.0-cp38-cp38-macosx_11_0_arm64.whl
    a024181d7aef0004d76fb3bce2a4c9f2e67a609a9e2a6ff2571d30e9976aa383  numpy-1.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    f71d57cc8645f14816ae249407d309be250ad8de93ef61d9709b45a0ddf4050c  numpy-1.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    283d9de87c0133ef98f93dfc09fad3fb382f2a15580de75c02b5bb36a5a159a5  numpy-1.22.0-cp38-cp38-win32.whl
    2762331de395739c91f1abb88041f94a080cb1143aeec791b3b223976228af3f  numpy-1.22.0-cp38-cp38-win_amd64.whl
    76ba7c40e80f9dc815c5e896330700fd6e20814e69da9c1267d65a4d051080f1  numpy-1.22.0-cp39-cp39-macosx_10_9_universal2.whl
    0cfe07133fd00b27edee5e6385e333e9eeb010607e8a46e1cd673f05f8596595  numpy-1.22.0-cp39-cp39-macosx_10_9_x86_64.whl
    6ed0d073a9c54ac40c41a9c2d53fcc3d4d4ed607670b9e7b0de1ba13b4cbfe6f  numpy-1.22.0-cp39-cp39-macosx_11_0_arm64.whl
    41388e32e40b41dd56eb37fcaa7488b2b47b0adf77c66154d6b89622c110dfe9  numpy-1.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    b55b953a1bdb465f4dc181758570d321db4ac23005f90ffd2b434cc6609a63dd  numpy-1.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    5a311ee4d983c487a0ab546708edbdd759393a3dc9cd30305170149fedd23c88  numpy-1.22.0-cp39-cp39-win32.whl
    a97a954a8c2f046d3817c2bce16e3c7e9a9c2afffaf0400f5c16df5172a67c9c  numpy-1.22.0-cp39-cp39-win_amd64.whl
    bb02929b0d6bfab4c48a79bd805bd7419114606947ec8284476167415171f55b  numpy-1.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    f2be14ba396780a6f662b8ba1a24466c9cf18a6a386174f614668e58387a13d7  numpy-1.22.0.tar.gz
    a955e4128ac36797aaffd49ab44ec74a71c11d6938df83b1285492d277db5397  numpy-1.22.0.zip
    

    v1.21.6

    Compare Source

    NumPy 1.21.6 Release Notes

    NumPy 1.21.6 is a very small release that achieves two things:

    • Backs out the mistaken backport of C++ code into 1.21.5.
    • Provides a 32 bit Windows wheel for Python 3.10.

    The provision of the 32 bit wheel is intended to make life easier for oldest-supported-numpy.

    Checksums

    MD5
    5a3e5d7298056bcfbc3246597af474d4  numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl
    d981d2859842e7b62dc93e24808c7bac  numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl
    171313893c26529404d09fadb3537ed3  numpy-1.21.6-cp310-cp310-macosx_11_0_arm64.whl
    5a7a6dfdd43069f9b29d3fe6b7f3a2ce  numpy-1.21.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a9e25375a72725c5d74442eda53af405  numpy-1.21.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    6f9a782477380b2cdb7606f6f7634c00  numpy-1.21.6-cp310-cp310-win32.whl
    32a73a348864700a3fa510d2fc4350b7  numpy-1.21.6-cp310-cp310-win_amd64.whl
    0db8941ebeb0a02cd839d9cd3c5c20bb  numpy-1.21.6-cp37-cp37m-macosx_10_9_x86_64.whl
    67882155be9592850861f4ad8ba36623  numpy-1.21.6-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    c70e30e1ff9ab49f898c19e7a6492ae6  numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    e32dbd291032c7554a742f1bb9b2f7a3  numpy-1.21.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    689bf804c2cd16cb241fd943e3833ffd  numpy-1.21.6-cp37-cp37m-win32.whl
    0062a7b0231a07cb5b9f3d7c495e6fe4  numpy-1.21.6-cp37-cp37m-win_amd64.whl
    0d08809980ab497659e7aa0df9ce120e  numpy-1.21.6-cp38-cp38-macosx_10_9_universal2.whl
    3c67d14ea2009069844b27bfbf74304d  numpy-1.21.6-cp38-cp38-macosx_10_9_x86_64.whl
    5f0e773745cb817313232ac1bf4c7eee  numpy-1.21.6-cp38-cp38-macosx_11_0_arm64.whl
    fa8011e065f1964d3eb870bb3926fc99  numpy-1.21.6-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    486cf9d4daab59aad253aa5b84a5aa83  numpy-1.21.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    88509abab303c076dfb26f00e455180d  numpy-1.21.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    f7234e2ef837f5f6ddbde8db246fd05b  numpy-1.21.6-cp38-cp38-win32.whl
    e1063e01fb44ea7a49adea0c33548217  numpy-1.21.6-cp38-cp38-win_amd64.whl
    61c4caad729e3e0e688accbc1424ed45  numpy-1.21.6-cp39-cp39-macosx_10_9_universal2.whl
    67488d8ccaeff798f2e314aae7c4c3d6  numpy-1.21.6-cp39-cp39-macosx_10_9_x86_64.whl
    128c3713b5d1de45a0f522562bac5263  numpy-1.21.6-cp39-cp39-macosx_11_0_arm64.whl
    50e79cd0610b4ed726b3bf08c3716dab  numpy-1.21.6-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    bd0c9e3c0e488faac61daf3227fb95af  numpy-1.21.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    aa5e9baf1dec16b15e481c23f8a23214  numpy-1.21.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    a2405b0e5d3f775ad30177296a997092  numpy-1.21.6-cp39-cp39-win32.whl
    f0d20eda8c78f957ea70c5527954303e  numpy-1.21.6-cp39-cp39-win_amd64.whl
    9682abbcc38cccb7f56e48aacca7de23  numpy-1.21.6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    6aa3c2e8ea2886bf593bd8e0a1425c64  numpy-1.21.6.tar.gz
    04aea95dcb1d256d13a45df42173aa1e  numpy-1.21.6.zip
    
    SHA256
    8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25  numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl
    fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e  numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl
    3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6  numpy-1.21.6-cp310-cp310-macosx_11_0_arm64.whl
    f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb  numpy-1.21.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1  numpy-1.21.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c  numpy-1.21.6-cp310-cp310-win32.whl
    d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f  numpy-1.21.6-cp310-cp310-win_amd64.whl
    6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7  numpy-1.21.6-cp37-cp37m-macosx_10_9_x86_64.whl
    67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46  numpy-1.21.6-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
    a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2  numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
    7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db  numpy-1.21.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e  numpy-1.21.6-cp37-cp37m-win32.whl
    bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a  numpy-1.21.6-cp37-cp37m-win_amd64.whl
    82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552  numpy-1.21.6-cp38-cp38-macosx_10_9_universal2.whl
    643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab  numpy-1.21.6-cp38-cp38-macosx_10_9_x86_64.whl
    357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3  numpy-1.21.6-cp38-cp38-macosx_11_0_arm64.whl
    9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6  numpy-1.21.6-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    4aa48afdce4660b0076a00d80afa54e8a97cd49f457d6
    

    Configuration

    📅 Schedule: Branch creation - "before 1am on Monday" in timezone Europe/Zurich, Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled due to failing status checks.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 2
  • Bump pillow from 8.1.2 to 8.2.0

    Bump pillow from 8.1.2 to 8.2.0

    Bumps pillow from 8.1.2 to 8.2.0.

    Release notes

    Sourced from pillow's releases.

    8.2.0

    https://pillow.readthedocs.io/en/stable/releasenotes/8.2.0.html

    Changes

    Dependencies

    Deprecations

    ... (truncated)

    Changelog

    Sourced from pillow's changelog.

    8.2.0 (2021-04-01)

    • Added getxmp() method #5144 [UrielMaD, radarhere]
    • Add ImageShow support for GraphicsMagick #5349 [latosha-maltba, radarhere]
    • Do not load transparent pixels from subsequent GIF frames #5333 [zewt, radarhere]
    • Use LZW encoding when saving GIF images #5291 [raygard]
    • Set all transparent colors to be equal in quantize() #5282 [radarhere]
    • Allow PixelAccess to use Python __int__ when parsing x and y #5206 [radarhere]
    • Removed Image._MODEINFO #5316 [radarhere]
    • Add preserve_tone option to autocontrast #5350 [elejke, radarhere]
    • Fixed linear_gradient and radial_gradient I and F modes #5274 [radarhere]
    • Add support for reading TIFFs with PlanarConfiguration=2 #5364 [kkopachev, wiredfool, nulano]
    • Deprecated categories #5351 [radarhere]
    • Do not premultiply alpha when resizing with Image.NEAREST resampling #5304 [nulano]
    • Dynamically link FriBiDi instead of Raqm #5062 [nulano]
    • Allow fewer PNG palette entries than the bit depth maximum when saving #5330 [radarhere]
    • Use duration from info dictionary when saving WebP #5338 [radarhere]
    • Stop flattening EXIF IFD into getexif() #4947 [radarhere, kkopachev]
    • Replaced tiff_deflate with tiff_adobe_deflate compression when saving TIFF images #5343 [radarhere]
    • Save ICC profile from TIFF encoderinfo #5321 [radarhere]
    • Moved RGB fix inside ImageQt class #5268 [radarhere]
    • Allow alpha_composite destination to be negative #5313 [radarhere]
    • Ensure file is closed if it is opened by ImageQt.ImageQt #5260 [radarhere]
    • Added ImageDraw rounded_rectangle method #5208 [radarhere]
    • Added IPythonViewer #5289 [radarhere, Kipkurui-mutai]
    • Only draw each rectangle outline pixel once #5183 [radarhere]
    • Use mmap instead of built-in Win32 mapper #5224 [radarhere, cgohlke]
    • Handle PCX images with an odd stride #5214 [radarhere]
    • Only read different sizes for "Large Thumbnail" MPO frames #5168 [radarhere]
    • Added PyQt6 support #5258 [radarhere]
    • Changed Image.open formats parameter to be case-insensitive #5250 [Piolie, radarhere]
    • Deprecate Tk/Tcl 8.4, to be removed in Pillow 10 (2023-01-02) #5216 [radarhere]
    • Added tk version to pilinfo #5226 [radarhere, nulano]
    • Support for ignoring tests when running valgrind #5150 [wiredfool, radarhere, hugovk]
    • OSS-Fuzz support #5189 [wiredfool, radarhere]
    Commits
    • e0e353c 8.2.0 version bump
    • ee635be Merge pull request #5377 from hugovk/security-and-release-notes
    • 694c84f Fix typo [ci skip]
    • 8febdad Review, typos and lint
    • fea4196 Reorder, roughly alphabetic
    • 496245a Fix BLP DOS -- CVE-2021-28678
    • 22e9bee Fix DOS in PSDImagePlugin -- CVE-2021-28675
    • ba65f0b Fix Memory DOS in ImageFont
    • bb6c11f Fix FLI DOS -- CVE-2021-28676
    • 5a5e6db Fix EPS DOS on _open -- CVE-2021-28677
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yaml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Bump c2cciutils from 1.0.dev20210208135331 to 1.0.dev20210212123011

    Bump c2cciutils from 1.0.dev20210208135331 to 1.0.dev20210212123011

    Bumps c2cciutils from 1.0.dev20210208135331 to 1.0.dev20210212123011.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yaml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Bump c2cciutils from 1.0.dev20210208135331 to 1.0.dev20210212084346

    Bump c2cciutils from 1.0.dev20210208135331 to 1.0.dev20210212084346

    Bumps c2cciutils from 1.0.dev20210208135331 to 1.0.dev20210212084346.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yaml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Bump c2cciutils from 1.0.dev20210204125831 to 1.0.dev20210208104705

    Bump c2cciutils from 1.0.dev20210204125831 to 1.0.dev20210208104705

    Bumps c2cciutils from 1.0.dev20210204125831 to 1.0.dev20210208104705.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in the .dependabot/config.yaml file in this repo:

    • Update frequency
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Update all minor versions (minor)

    Update all minor versions (minor)

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | c2cciutils | ==1.3.12 -> ==1.4.0 | age | adoption | passing | confidence | | prospector (source) | 1.7.7 -> 1.8.2 | age | adoption | passing | confidence |


    Release Notes

    camptocamp/c2cciutils

    v1.4.0

    Compare Source

    A Helm chart for Kubernetes

    PyCQA/prospector

    v1.8.2

    Compare Source

    • #&#8203;547 <https://github.com/PyCQA/prospector/issues/547>_

    v1.8.1

    Compare Source

    Let's test faster.

    Add support for Python 3.11:

    Python 3.11 is between 10-60% faster than Python 3.10.


    Configuration

    📅 Schedule: Branch creation - "after 1am on Saturday" in timezone Europe/Zurich, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Lock file maintenance

    Lock file maintenance

    Mend Renovate

    This PR contains the following updates:

    | Update | Change | |---|---| | lockFileMaintenance | All locks refreshed |

    🔧 This Pull Request updates lock files to use the latest dependency versions.


    Configuration

    📅 Schedule: Branch creation - "on the first day of the month" in timezone Europe/Zurich, Automerge - At any time (no schedule defined).

    🚦 Automerge: Enabled.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 0
  • Bump certifi from 2022.9.24 to 2022.12.7

    Bump certifi from 2022.9.24 to 2022.12.7

    Bumps certifi from 2022.9.24 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • certifi-2022.9.24-py3-none-any.whl: 1 vulnerabilities (highest severity is: 6.8)

    certifi-2022.9.24-py3-none-any.whl: 1 vulnerabilities (highest severity is: 6.8)

    Vulnerable Library - certifi-2022.9.24-py3-none-any.whl

    Python package for providing Mozilla's CA Bundle.

    Library home page: https://files.pythonhosted.org/packages/1d/38/fa96a426e0c0e68aabc68e896584b83ad1eec779265a028e156ce509630e/certifi-2022.9.24-py3-none-any.whl

    Path to dependency file: /ci/requirements.txt

    Path to vulnerable library: /ci/requirements.txt,/ci/requirements.txt

    Vulnerabilities

    | CVE | Severity | CVSS | Dependency | Type | Fixed in (certifi version) | Remediation Available | | ------------- | ------------- | ----- | ----- | ----- | ------------- | --- | | CVE-2022-23491 | Medium | 6.8 | certifi-2022.9.24-py3-none-any.whl | Direct | certifi - 2022.12.07 | ❌ |

    Details

    CVE-2022-23491

    Vulnerable Library - certifi-2022.9.24-py3-none-any.whl

    Python package for providing Mozilla's CA Bundle.

    Library home page: https://files.pythonhosted.org/packages/1d/38/fa96a426e0c0e68aabc68e896584b83ad1eec779265a028e156ce509630e/certifi-2022.9.24-py3-none-any.whl

    Path to dependency file: /ci/requirements.txt

    Path to vulnerable library: /ci/requirements.txt,/ci/requirements.txt

    Dependency Hierarchy:

    • :x: certifi-2022.9.24-py3-none-any.whl (Vulnerable Library)

    Found in base branch: master

    Vulnerability Details

    Certifi is a curated collection of Root Certificates for validating the trustworthiness of SSL certificates while verifying the identity of TLS hosts. Certifi 2022.12.07 removes root certificates from "TrustCor" from the root store. These are in the process of being removed from Mozilla's trust store. TrustCor's root certificates are being removed pursuant to an investigation prompted by media reporting that TrustCor's ownership also operated a business that produced spyware. Conclusions of Mozilla's investigation can be found in the linked google group discussion.

    Publish Date: 2022-12-07

    URL: CVE-2022-23491

    CVSS 3 Score Details (6.8)

    Base Score Metrics:

    • Exploitability Metrics:
      • Attack Vector: Network
      • Attack Complexity: Low
      • Privileges Required: High
      • User Interaction: None
      • Scope: Changed
    • Impact Metrics:
      • Confidentiality Impact: None
      • Integrity Impact: High
      • Availability Impact: None

    For more information on CVSS3 Scores, click here.

    Suggested Fix

    Type: Upgrade version

    Origin: https://www.cve.org/CVERecord?id=CVE-2022-23491

    Release Date: 2022-12-07

    Fix Resolution: certifi - 2022.12.07

    Step up your Open Source Security Game with Mend here

    security vulnerability 
    opened by mend-bolt-for-github[bot] 0
  • different angles than expected

    different angles than expected

    Version: deskew-1.3.3

    def deskew(image):
        grayscale = rgb2gray(image)
        angle = determine_skew(grayscale)
        print(angle)
        rotated = rotate(image, angle, resize=True) * 255
        return rotated.astype(np.uint8)
    
    def display_avant_apres(_original):
        dpi = matplotlib.rcParams['figure.dpi']
    
        image = io.imread(_original)
        height, width, _ = image.shape
        figsize = width / float(dpi), height / float(dpi)
        plt.figure(figsize=figsize)
    
        plt.subplot(1, 2, 1)
        plt.imshow(image)
        plt.subplot(1, 2, 2)
        plt.imshow(deskew(image))
    
    display_avant_apres("input.jpeg")
    

    -7.999999999999998 image

    Doesn't seem to match what is demonstrated in the README, and generally doesn't work properly with +-90deg rotated images.

    with angle_pm_90=True made it upside down. Any fixes? using

    image

    opened by HeChengHui 2
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Edited/Blocked

    These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.

    • [ ] Update all minor versions (minor) (numpy, opencv-python-headless, prospector)
    • [ ] Lock file maintenance

    Detected dependencies

    github-actions
    .github/workflows/changelog.yaml
    • actions/cache v3
    .github/workflows/codeql.yaml
    • actions/checkout v3
    • github/codeql-action v2
    • github/codeql-action v2
    .github/workflows/delete-old-workflows-run.yaml
    • MajorScruffy/delete-old-workflow-runs v0.3.0
    .github/workflows/dependabot-auto-merge.yaml
    .github/workflows/main.yaml
    • actions/setup-python v4
    • actions/checkout v3
    • actions/upload-artifact v3
    • actions/checkout v3
    • actions/checkout v3
    .github/workflows/pr-check.yaml
    • actions/checkout v3
    pip_requirements
    ci/requirements.txt
    • c2cciutils ==1.4.4
    • poetry ==1.3.1
    • poetry-plugin-tweak-dependencies-version ==1.2.1
    • poetry-dynamic-versioning ==0.21.3
    • pip ==22.3.1
    poetry
    pyproject.toml
    • numpy 1.23.5
    • scikit-image 0.19.3
    • opencv-python-headless 4.6.0.66
    • matplotlib 3.6.2
    • prospector 1.7.7
    • pytest 7.2.0
    • pytest-profiling 1.7.0
    • coverage 7.0.1
    opened by sbrunner 0
Releases(1.3.3)
  • 1.3.3(Dec 20, 2022)

    What's Changed

    • Better image check by @sbrunner in https://github.com/sbrunner/deskew/pull/254
    • Update the changelog by @github-actions in https://github.com/sbrunner/deskew/pull/250
    • Fix angles by @sbrunner in https://github.com/sbrunner/deskew/pull/256

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.3.2...1.3.3

    Source code(tar.gz)
    Source code(zip)
  • 1.3.2(Dec 20, 2022)

    What's Changed

    • Update all patch versions (patch) by @renovate in https://github.com/sbrunner/deskew/pull/251
    • Better line dev image size by @sbrunner in https://github.com/sbrunner/deskew/pull/253

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.3.1...1.3.2

    Source code(tar.gz)
    Source code(zip)
  • 1.3.1(Dec 20, 2022)

    What's Changed

    • Update the changelog by @github-actions in https://github.com/sbrunner/deskew/pull/243
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/249

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.3.0...1.3.1

    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Dec 20, 2022)

    What's Changed

    • Update the changelog by @github-actions in https://github.com/sbrunner/deskew/pull/233
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/244
    • Disable the Renovate concurrent limit by @sbrunner in https://github.com/sbrunner/deskew/pull/245
    • Remove duplicated by @sbrunner in https://github.com/sbrunner/deskew/pull/246
    • Remove not needed code that increase the code complexity by @sbrunner in https://github.com/sbrunner/deskew/pull/248
    • Add image to understand the deskewing by @sbrunner in https://github.com/sbrunner/deskew/pull/247

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.2.0...1.3.0

    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Dec 20, 2022)

    What's Changed

    • Update the changelog by @github-actions in https://github.com/sbrunner/deskew/pull/227
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/234
    • Update actions/setup-python action to v4 by @renovate in https://github.com/sbrunner/deskew/pull/221
    • Update dependency coverage to v6.4.2 by @renovate in https://github.com/sbrunner/deskew/pull/235
    • Remove hourly limit by @sbrunner in https://github.com/sbrunner/deskew/pull/236
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/237
    • Fix mypy types by @sbrunner in https://github.com/sbrunner/deskew/pull/238
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/239
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/240
    • Add spell on the pull request title by @sbrunner in https://github.com/sbrunner/deskew/pull/241
    • Be able to provide min and max angle by @sbrunner in https://github.com/sbrunner/deskew/pull/242

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.1.0...1.2.0

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Dec 20, 2022)

    What's Changed

    • Update the changelog by @github-actions in https://github.com/sbrunner/deskew/pull/216
    • Update all patch versions (patch) by @renovate in https://github.com/sbrunner/deskew/pull/215
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/222
    • Better usage of chore by @sbrunner in https://github.com/sbrunner/deskew/pull/225
    • Update the changelog by @github-actions in https://github.com/sbrunner/deskew/pull/219
    • Drop Python 3.7 support by @sbrunner in https://github.com/sbrunner/deskew/pull/228
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/226
    • Update dependency numpy to v1.22.0 [SECURITY] by @renovate in https://github.com/sbrunner/deskew/pull/223
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/232
    • Update dependency numpy to v1.23.1 by @renovate in https://github.com/sbrunner/deskew/pull/231
    • Update dependency poetry to v1.1.14 by @renovate in https://github.com/sbrunner/deskew/pull/230

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.26...1.1.0

    Source code(tar.gz)
    Source code(zip)
  • 1.0.26(Dec 20, 2022)

    What's Changed

    • Update the changelog by @github-actions in https://github.com/sbrunner/deskew/pull/210
    • Fix the script name by @sbrunner in https://github.com/sbrunner/deskew/pull/218

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.25...1.0.26

    Source code(tar.gz)
    Source code(zip)
  • 1.0.25(Dec 20, 2022)

    What's Changed

    • Add changelog by @sbrunner in https://github.com/sbrunner/deskew/pull/205
    • Update the changelog by @github-actions in https://github.com/sbrunner/deskew/pull/206
    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/204
    • Update release creation by @sbrunner in https://github.com/sbrunner/deskew/pull/209
    • Update the changelog by @github-actions in https://github.com/sbrunner/deskew/pull/207
    • Test with different Python versions (3.7, 3.8, 3.9) by @sbrunner in https://github.com/sbrunner/deskew/pull/211
    • Update dependency numpy to v1.21.0 [SECURITY] by @renovate in https://github.com/sbrunner/deskew/pull/213
    • Update actions/checkout action to v3 by @renovate in https://github.com/sbrunner/deskew/pull/214

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.24...1.0.25

    Source code(tar.gz)
    Source code(zip)
  • 1.0.24(Dec 20, 2022)

    What's Changed

    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/201

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.23...1.0.24

    Source code(tar.gz)
    Source code(zip)
  • 1.0.23(Dec 20, 2022)

    What's Changed

    • Update all patch versions by @renovate in https://github.com/sbrunner/deskew/pull/200

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.22...1.0.23

    Source code(tar.gz)
    Source code(zip)
  • 1.0.22(Dec 20, 2022)

    What's Changed

    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/198

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.21...1.0.22

    Source code(tar.gz)
    Source code(zip)
  • 1.0.21(Dec 20, 2022)

    What's Changed

    • Remove poetry-dynamic-versioning by @sbrunner in https://github.com/sbrunner/deskew/pull/197

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.20...1.0.21

    Source code(tar.gz)
    Source code(zip)
  • 1.0.20(Dec 20, 2022)

    What's Changed

    • Add pyroma check by @sbrunner in https://github.com/sbrunner/deskew/pull/196

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.19...1.0.20

    Source code(tar.gz)
    Source code(zip)
  • 1.0.19(Dec 20, 2022)

  • 1.0.18(Dec 20, 2022)

    What's Changed

    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/195

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.17...1.0.18

    Source code(tar.gz)
    Source code(zip)
  • 1.0.17(Dec 20, 2022)

    What's Changed

    • Update dependency coverage to v6.4 by @renovate in https://github.com/sbrunner/deskew/pull/194

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.16...1.0.17

    Source code(tar.gz)
    Source code(zip)
  • 1.0.16(Dec 20, 2022)

    What's Changed

    • Update dependency numpy to v1.22.4 by @renovate in https://github.com/sbrunner/deskew/pull/193

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.15...1.0.16

    Source code(tar.gz)
    Source code(zip)
  • 1.0.15(Dec 20, 2022)

  • 1.0.14(Dec 20, 2022)

    What's Changed

    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/192

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.13...1.0.14

    Source code(tar.gz)
    Source code(zip)
  • 1.0.13(Dec 20, 2022)

    What's Changed

    • Update all patch versions by @renovate in https://github.com/sbrunner/deskew/pull/191

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.12...1.0.13

    Source code(tar.gz)
    Source code(zip)
  • 1.0.12(Dec 20, 2022)

    What's Changed

    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/190

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.11...1.0.12

    Source code(tar.gz)
    Source code(zip)
  • 1.0.11(Dec 20, 2022)

    What's Changed

    • Update dependency c2cciutils to v1.1.10 by @renovate in https://github.com/sbrunner/deskew/pull/189

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.10...1.0.11

    Source code(tar.gz)
    Source code(zip)
  • 1.0.10(Dec 20, 2022)

    What's Changed

    • Update github/codeql-action action to v2 by @renovate in https://github.com/sbrunner/deskew/pull/187

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.9...1.0.10

    Source code(tar.gz)
    Source code(zip)
  • 1.0.9(Dec 20, 2022)

    What's Changed

    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/188

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.8...1.0.9

    Source code(tar.gz)
    Source code(zip)
  • 1.0.8(Dec 20, 2022)

    What's Changed

    • Lock file maintenance by @renovate in https://github.com/sbrunner/deskew/pull/186

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.7...1.0.8

    Source code(tar.gz)
    Source code(zip)
  • 1.0.7(Dec 20, 2022)

    What's Changed

    • Update dependency pytest to v7.1.2 by @renovate in https://github.com/sbrunner/deskew/pull/185

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.6...1.0.7

    Source code(tar.gz)
    Source code(zip)
  • 1.0.6(Dec 20, 2022)

    What's Changed

    • Update actions/upload-artifact action to v3 by @renovate in https://github.com/sbrunner/deskew/pull/184

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.5...1.0.6

    Source code(tar.gz)
    Source code(zip)
  • 1.0.5(Dec 20, 2022)

    What's Changed

    • Update dependency numpy to v1.22.3 by @renovate in https://github.com/sbrunner/deskew/pull/182

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.4...1.0.5

    Source code(tar.gz)
    Source code(zip)
  • 1.0.4(Dec 20, 2022)

    What's Changed

    • Bump pytest from 7.0.1 to 7.1.1 by @dependabot in https://github.com/sbrunner/deskew/pull/179
    • Bump flake8 from 3.9.2 to 4.0.1 by @dependabot in https://github.com/sbrunner/deskew/pull/180
    • Bump prospector from 1.7.4 to 1.7.7 by @dependabot in https://github.com/sbrunner/deskew/pull/181
    • Update actions/checkout action to v3 by @renovate in https://github.com/sbrunner/deskew/pull/183

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.3...1.0.4

    Source code(tar.gz)
    Source code(zip)
  • 1.0.3(Dec 20, 2022)

    What's Changed

    • Bump prospector from 1.7.4 to 1.7.5 by @dependabot in https://github.com/sbrunner/deskew/pull/164
    • Bump flake8 from 3.9.2 to 4.0.1 by @dependabot in https://github.com/sbrunner/deskew/pull/165
    • Bump c2cciutils from 1.1.3 to 1.1.4 by @dependabot in https://github.com/sbrunner/deskew/pull/166
    • Bump prospector from 1.7.5 to 1.7.6 by @dependabot in https://github.com/sbrunner/deskew/pull/167
    • Bump numpy from 1.22.2 to 1.22.3 by @dependabot in https://github.com/sbrunner/deskew/pull/168
    • Bump c2cciutils from 1.1.4 to 1.1.5 by @dependabot in https://github.com/sbrunner/deskew/pull/170
    • Bump prospector from 1.7.6 to 1.7.7 by @dependabot in https://github.com/sbrunner/deskew/pull/169
    • Bump pytest from 7.0.1 to 7.1.0 by @dependabot in https://github.com/sbrunner/deskew/pull/172
    • Bump pytest from 7.1.0 to 7.1.1 by @dependabot in https://github.com/sbrunner/deskew/pull/173
    • Bump c2cciutils from 1.1.5 to 1.1.6 by @dependabot in https://github.com/sbrunner/deskew/pull/174
    • Bump c2cciutils from 1.1.6 to 1.1.7 by @dependabot in https://github.com/sbrunner/deskew/pull/175
    • Bump c2cciutils from 1.1.7 to 1.1.9 by @dependabot in https://github.com/sbrunner/deskew/pull/176
    • Configure Renovate and Poetry by @sbrunner in https://github.com/sbrunner/deskew/pull/177

    Full Changelog: https://github.com/sbrunner/deskew/compare/1.0.2...1.0.3

    Source code(tar.gz)
    Source code(zip)
Owner
Stéphane Brunner
Stéphane Brunner
Unofficial implementation of "TableNet: Deep Learning model for end-to-end Table detection and Tabular data extraction from Scanned Document Images"

TableNet Unofficial implementation of ICDAR 2019 paper : TableNet: Deep Learning model for end-to-end Table detection and Tabular data extraction from

Jainam Shah 243 Dec 30, 2022
Python library to extract tabular data from images and scanned PDFs

Overview ExtractTable - API to extract tabular data from images and scanned PDFs The motivation is to make it easy for developers to extract tabular d

Org. Account 165 Dec 31, 2022
A post-processing tool for scanned sheets of paper.

unpaper Originally written by Jens Gulden — see AUTHORS for more information. Licensed under GNU GPL v2 — see COPYING for more information. Overview u

null 27 Dec 7, 2022
Extract tables from scanned image PDFs using Optical Character Recognition.

ocr-table This project aims to extract tables from scanned image PDFs using Optical Character Recognition. Install Requirements Tesseract OCR sudo apt

Abhijeet Singh 209 Dec 6, 2022
A tool for extracting text from scanned documents (via OCR), with user-defined post-processing.

The project is based on older versions of tesseract and other tools, and is now superseded by another project which allows for more granular control o

Maxim 32 Jul 24, 2022
Some bits of javascript to transcribe scanned pages using PageXML

nashi (nasḫī) Some bits of javascript to transcribe scanned pages using PageXML. Both ltr and rtl languages are supported. Try it! But wait, there's m

Andreas Büttner 15 Nov 9, 2022
scantailor - Scan Tailor is an interactive post-processing tool for scanned pages.

Scan Tailor - scantailor.org This project is no longer maintained, and has not been maintained for a while. About Scan Tailor is an interactive post-p

null 1.5k Dec 28, 2022
Detect text blocks and OCR poorly scanned PDFs in bulk. Python module available via pip.

doc2text doc2text extracts higher quality text by fixing common scan errors Developing text corpora can be a massive pain in the butt. Much of the tex

Joe Sutherland 1.3k Jan 4, 2023
OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched

OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched or copy-pasted. ocrmypdf # it's a scriptable c

jbarlow83 7.9k Jan 3, 2023
Recognizing the text contents from a scanned visiting card

Recognizing the text contents from a scanned visiting card. The application which is used to recognize the text from scanned images,printeddocuments,r

Faizan Habib 1 Jan 28, 2022
Document Image Dewarping

Document image dewarping using text-lines and line Segments Abstract Conventional text-line based document dewarping methods have problems when handli

Taeho Kil 268 Dec 23, 2022
Code for the paper "DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regression Networks" (ICCV '19)

DewarpNet This repository contains the codes for DewarpNet training. Recent Updates [May, 2020] Added evaluation images and an important note about Ma

CVLab@StonyBrook 354 Jan 1, 2023
Detect textlines in document images

Textline Detection Detect textlines in document images Introduction This tool performs border, region and textline detection from document image data

QURATOR-SPK 70 Jun 30, 2022
Generic framework for historical document processing

dhSegment dhSegment is a tool for Historical Document Processing. Its generic approach allows to segment regions and extract content from different ty

Digital Humanities Laboratory 343 Dec 24, 2022
Document Layout Analysis Projects

Layout_Analysis Introduction This is an implementation of RLSA and X-Y Cut with OpenCV Dependencies OpenCV 3.0+ How to use Compile with g++ : g++ -std

null 22 Dec 8, 2022
A simple document layout analysis using Python-OpenCV

Run the application: python main.py *Note: For first time running the application, create a folder named "output". The application is a simple documen

Roinand Aguila 109 Dec 12, 2022
Document Layout Analysis

Eynollah Document Layout Analysis Introduction This tool performs document layout analysis (segmentation) from image data and returns the results as P

QURATOR-SPK 198 Dec 29, 2022
Detect textlines in document images

Textline Detection Detect textlines in document images Introduction This tool performs border, region and textline detection from document image data

QURATOR-SPK 70 Jun 30, 2022