From 1b8d8042b73179fd76782f04793bd44a01fa1570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bonhomme?= Date: Wed, 5 Jan 2022 00:29:13 +0100 Subject: [PATCH] fix: [core] various minor bug fixes. --- .builds/debian.yml | 2 +- README.md | 2 +- bin/lsb.py | 10 +-- bin/lsbset.py | 12 +-- bin/parity.py | 2 +- bin/red.py | 2 +- bin/statistics.py | 2 +- docs/conf.py | 4 +- mypy.ini | 13 --- poetry.lock | 134 ++++++++++++----------------- pyproject.toml | 17 ++++ stegano/exifHeader/exifHeader.py | 2 +- stegano/lsb/lsb.py | 2 +- stegano/lsbset/generators.py | 30 +++---- stegano/lsbset/lsbset.py | 2 +- stegano/red/red.py | 2 +- stegano/steganalysis/parity.py | 2 +- stegano/steganalysis/statistics.py | 2 +- stegano/tools.py | 2 +- tests/test_exifHeader.py | 2 +- tests/test_generators.py | 10 ++- tests/test_lsb.py | 2 +- tests/test_lsbset.py | 8 +- tests/test_red.py | 2 +- tests/test_tools.py | 2 +- 25 files changed, 122 insertions(+), 148 deletions(-) delete mode 100644 mypy.ini diff --git a/.builds/debian.yml b/.builds/debian.yml index 8923b92..d59afb2 100644 --- a/.builds/debian.yml +++ b/.builds/debian.yml @@ -39,4 +39,4 @@ tasks: - typecheck: | export PATH="$PATH:/home/build/.local/bin" cd ${project} - poetry run mypy stegano + poetry run mypy . diff --git a/README.md b/README.md index 3ea7c9d..6d0e44c 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,6 @@ recommend you to install it in a Python virtual environment with poetry. This software is licensed under [GNU General Public License version 3](https://www.gnu.org/licenses/gpl-3.0.html) -Copyright (C) 2010-2021 [Cédric Bonhomme](https://www.cedricbonhomme.org) +Copyright (C) 2010-2022 [Cédric Bonhomme](https://www.cedricbonhomme.org) For more information, [the list of authors and contributors](CONTRIBUTORS.md) is available. diff --git a/bin/lsb.py b/bin/lsb.py index 6134996..1e8d9e7 100755 --- a/bin/lsb.py +++ b/bin/lsb.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://github.com/cedricbonhomme/Stegano # @@ -29,7 +29,7 @@ import argparse try: from stegano import lsb -except: +except Exception: print("Install Stegano: pipx install Stegano") from stegano import tools @@ -114,9 +114,9 @@ def main(): arguments = parser.parse_args() if arguments.command == "hide": - if arguments.secret_message != None: + if arguments.secret_message is not None: secret = arguments.secret_message - elif arguments.secret_file != None: + elif arguments.secret_file is not None: secret = tools.binary2base64(arguments.secret_file) img_encoded = lsb.hide( @@ -132,7 +132,7 @@ def main(): secret = lsb.reveal( arguments.input_image_file, arguments.encoding, int(arguments.shift) ) - if arguments.secret_binary != None: + if arguments.secret_binary is not None: data = tools.base642binary(secret) with open(arguments.secret_binary, "wb") as f: f.write(data) diff --git a/bin/lsbset.py b/bin/lsbset.py index ab971d4..ffba1a0 100755 --- a/bin/lsbset.py +++ b/bin/lsbset.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://github.com/cedricbonhomme/Stegano # @@ -31,7 +31,7 @@ import crayons try: from stegano import lsbset from stegano.lsbset import generators -except: +except Exception: print("Install stegano: pipx install Stegano") from stegano import tools @@ -175,12 +175,12 @@ def main(): else: generator = getattr(generators, arguments.generator_function[0])() - except AttributeError as e: + except AttributeError: print("Unknown generator: {}".format(arguments.generator_function)) exit(1) if arguments.command == "hide": - if arguments.secret_message != None: + if arguments.secret_message is not None: secret = arguments.secret_message elif arguments.secret_file != "": secret = tools.binary2base64(arguments.secret_file) @@ -202,9 +202,9 @@ def main(): except IndexError: print("Impossible to detect message.") exit(0) - if arguments.secret_binary != None: + if arguments.secret_binary is not None: data = tools.base642binary(secret) - with open(arguments.secret_binary, "w") as f: + with open(arguments.secret_binary, "wb") as f: f.write(data) else: print(secret) diff --git a/bin/parity.py b/bin/parity.py index 394f56c..6c43015 100644 --- a/bin/parity.py +++ b/bin/parity.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://github.com/cedricbonhomme/Stegano # diff --git a/bin/red.py b/bin/red.py index 2e9d956..faad8b1 100644 --- a/bin/red.py +++ b/bin/red.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://github.com/cedricbonhomme/Stegano # diff --git a/bin/statistics.py b/bin/statistics.py index af396fc..aa49654 100644 --- a/bin/statistics.py +++ b/bin/statistics.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://github.com/cedricbonhomme/Stegano # diff --git a/docs/conf.py b/docs/conf.py index 84bf89f..43e0948 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -11,8 +11,6 @@ # All configuration values have a default; values that are commented out # serve to show the default. -import sys, os - # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. @@ -41,7 +39,7 @@ master_doc = "index" # General information about the project. project = u"Stegano" -copyright = u"2010-2021, Cédric Bonhomme" +copyright = u"2010-2022, Cédric Bonhomme" author = "Cédric Bonhomme " # The version info for the project you're documenting, acts as replacement for diff --git a/mypy.ini b/mypy.ini deleted file mode 100644 index a6bbb75..0000000 --- a/mypy.ini +++ /dev/null @@ -1,13 +0,0 @@ -[mypy] -check_untyped_defs = True -ignore_errors = False -ignore_missing_imports = True -strict_optional = True -no_implicit_optional = True -warn_unused_ignores = True -warn_redundant_casts = True -warn_unused_configs = True -warn_unreachable = True - -show_error_context = True -pretty = True diff --git a/poetry.lock b/poetry.lock index 665a1c8..67ddb71 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,7 +27,7 @@ python-versions = "*" [[package]] name = "charset-normalizer" -version = "2.0.8" +version = "2.0.10" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "dev" optional = false @@ -176,22 +176,27 @@ dev = ["Sphinx (>=1.6.5)", "sphinx-rtd-theme", "mock", "coverage"] [[package]] name = "numpy" -version = "1.21.4" +version = "1.22.0" description = "NumPy is the fundamental package for array computing with Python." category = "main" optional = false -python-versions = ">=3.7,<3.11" +python-versions = ">=3.8" [[package]] name = "opencv-python" -version = "4.5.4.60" +version = "4.5.5.62" description = "Wrapper package for OpenCV python bindings." category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -numpy = ">=1.21.2" +numpy = [ + {version = ">=1.21.2", markers = "python_version >= \"3.10\" or python_version >= \"3.6\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, + {version = ">=1.19.3", markers = "python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\" or python_version >= \"3.9\""}, + {version = ">=1.14.5", markers = "python_version >= \"3.7\""}, + {version = ">=1.17.3", markers = "python_version >= \"3.8\""}, +] [[package]] name = "packaging" @@ -238,7 +243,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pygments" -version = "2.10.0" +version = "2.11.1" description = "Pygments is a syntax highlighting package written in Python." category = "dev" optional = false @@ -265,7 +270,7 @@ python-versions = "*" [[package]] name = "requests" -version = "2.26.0" +version = "2.27.0" description = "Python HTTP for Humans." category = "dev" optional = false @@ -299,7 +304,7 @@ python-versions = "*" [[package]] name = "sphinx" -version = "4.3.1" +version = "4.3.2" description = "Python documentation generator" category = "dev" optional = false @@ -325,7 +330,7 @@ sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.900)", "docutils-stubs", "types-typed-ast", "types-pkg-resources", "types-requests"] +lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.920)", "docutils-stubs", "types-typed-ast", "types-pkg-resources", "types-requests"] test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"] [[package]] @@ -409,7 +414,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "typing-extensions" -version = "4.0.0" +version = "4.0.1" description = "Backported and Experimental Type Hints for Python 3.6+" category = "dev" optional = false @@ -447,8 +452,8 @@ certifi = [ {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.8.tar.gz", hash = "sha256:735e240d9a8506778cd7a453d97e817e536bb1fc29f4f6961ce297b9c7a917b0"}, - {file = "charset_normalizer-2.0.8-py3-none-any.whl", hash = "sha256:83fcdeb225499d6344c8f7f34684c2981270beacc32ede2e669e94f7fa544405"}, + {file = "charset-normalizer-2.0.10.tar.gz", hash = "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd"}, + {file = "charset_normalizer-2.0.10-py3-none-any.whl", hash = "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455"}, ] colorama = [ {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, @@ -621,68 +626,37 @@ nose2 = [ {file = "nose2-0.10.0.tar.gz", hash = "sha256:886ba617a96de0130c54b24479bd5c2d74d5c940d40f3809c3a275511a0c4a60"}, ] numpy = [ - {file = "numpy-1.21.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8890b3360f345e8360133bc078d2dacc2843b6ee6059b568781b15b97acbe39f"}, - {file = "numpy-1.21.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:69077388c5a4b997442b843dbdc3a85b420fb693ec8e33020bb24d647c164fa5"}, - {file = "numpy-1.21.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e89717274b41ebd568cd7943fc9418eeb49b1785b66031bc8a7f6300463c5898"}, - {file = "numpy-1.21.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b78ecfa070460104934e2caf51694ccd00f37d5e5dbe76f021b1b0b0d221823"}, - {file = "numpy-1.21.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:615d4e328af7204c13ae3d4df7615a13ff60a49cb0d9106fde07f541207883ca"}, - {file = "numpy-1.21.4-cp310-cp310-win_amd64.whl", hash = "sha256:1403b4e2181fc72664737d848b60e65150f272fe5a1c1cbc16145ed43884065a"}, - {file = "numpy-1.21.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:74b85a17528ca60cf98381a5e779fc0264b4a88b46025e6bcbe9621f46bb3e63"}, - {file = "numpy-1.21.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:92aafa03da8658609f59f18722b88f0a73a249101169e28415b4fa148caf7e41"}, - {file = "numpy-1.21.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5d95668e727c75b3f5088ec7700e260f90ec83f488e4c0aaccb941148b2cd377"}, - {file = "numpy-1.21.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5162ec777ba7138906c9c274353ece5603646c6965570d82905546579573f73"}, - {file = "numpy-1.21.4-cp37-cp37m-win32.whl", hash = "sha256:81225e58ef5fce7f1d80399575576fc5febec79a8a2742e8ef86d7b03beef49f"}, - {file = "numpy-1.21.4-cp37-cp37m-win_amd64.whl", hash = "sha256:32fe5b12061f6446adcbb32cf4060a14741f9c21e15aaee59a207b6ce6423469"}, - {file = "numpy-1.21.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c449eb870616a7b62e097982c622d2577b3dbc800aaf8689254ec6e0197cbf1e"}, - {file = "numpy-1.21.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2e4ed57f45f0aa38beca2a03b6532e70e548faf2debbeb3291cfc9b315d9be8f"}, - {file = "numpy-1.21.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1247ef28387b7bb7f21caf2dbe4767f4f4175df44d30604d42ad9bd701ebb31f"}, - {file = "numpy-1.21.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34f3456f530ae8b44231c63082c8899fe9c983fd9b108c997c4b1c8c2d435333"}, - {file = "numpy-1.21.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c9c23158b87ed0e70d9a50c67e5c0b3f75bcf2581a8e34668d4e9d7474d76c6"}, - {file = "numpy-1.21.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4799be6a2d7d3c33699a6f77201836ac975b2e1b98c2a07f66a38f499cb50ce"}, - {file = "numpy-1.21.4-cp38-cp38-win32.whl", hash = "sha256:bc988afcea53e6156546e5b2885b7efab089570783d9d82caf1cfd323b0bb3dd"}, - {file = "numpy-1.21.4-cp38-cp38-win_amd64.whl", hash = "sha256:170b2a0805c6891ca78c1d96ee72e4c3ed1ae0a992c75444b6ab20ff038ba2cd"}, - {file = "numpy-1.21.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fde96af889262e85aa033f8ee1d3241e32bf36228318a61f1ace579df4e8170d"}, - {file = "numpy-1.21.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c885bfc07f77e8fee3dc879152ba993732601f1f11de248d4f357f0ffea6a6d4"}, - {file = "numpy-1.21.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9e6f5f50d1eff2f2f752b3089a118aee1ea0da63d56c44f3865681009b0af162"}, - {file = "numpy-1.21.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ad010846cdffe7ec27e3f933397f8a8d6c801a48634f419e3d075db27acf5880"}, - {file = "numpy-1.21.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c74c699b122918a6c4611285cc2cad4a3aafdb135c22a16ec483340ef97d573c"}, - {file = "numpy-1.21.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9864424631775b0c052f3bd98bc2712d131b3e2cd95d1c0c68b91709170890b0"}, - {file = "numpy-1.21.4-cp39-cp39-win32.whl", hash = "sha256:b1e2312f5b8843a3e4e8224b2b48fe16119617b8fc0a54df8f50098721b5bed2"}, - {file = "numpy-1.21.4-cp39-cp39-win_amd64.whl", hash = "sha256:e3c3e990274444031482a31280bf48674441e0a5b55ddb168f3a6db3e0c38ec8"}, - {file = "numpy-1.21.4-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a3deb31bc84f2b42584b8c4001c85d1934dbfb4030827110bc36bfd11509b7bf"}, - {file = "numpy-1.21.4.zip", hash = "sha256:e6c76a87633aa3fa16614b61ccedfae45b91df2767cf097aa9c933932a7ed1e0"}, + {file = "numpy-1.22.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d22662b4b10112c545c91a0741f2436f8ca979ab3d69d03d19322aa970f9695"}, + {file = "numpy-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:11a1f3816ea82eed4178102c56281782690ab5993251fdfd75039aad4d20385f"}, + {file = "numpy-1.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5dc65644f75a4c2970f21394ad8bea1a844104f0fe01f278631be1c7eae27226"}, + {file = "numpy-1.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c16cec1c8cf2728f1d539bd55aaa9d6bb48a7de2f41eb944697293ef65a559"}, + {file = "numpy-1.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97e82c39d9856fe7d4f9b86d8a1e66eff99cf3a8b7ba48202f659703d27c46f"}, + {file = "numpy-1.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:e41e8951749c4b5c9a2dc5fdbc1a4eec6ab2a140fdae9b460b0f557eed870f4d"}, + {file = "numpy-1.22.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bece0a4a49e60e472a6d1f70ac6cdea00f9ab80ff01132f96bd970cdd8a9e5a9"}, + {file = "numpy-1.22.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:818b9be7900e8dc23e013a92779135623476f44a0de58b40c32a15368c01d471"}, + {file = "numpy-1.22.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:47ee7a839f5885bc0c63a74aabb91f6f40d7d7b639253768c4199b37aede7982"}, + {file = "numpy-1.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a024181d7aef0004d76fb3bce2a4c9f2e67a609a9e2a6ff2571d30e9976aa383"}, + {file = "numpy-1.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f71d57cc8645f14816ae249407d309be250ad8de93ef61d9709b45a0ddf4050c"}, + {file = "numpy-1.22.0-cp38-cp38-win32.whl", hash = "sha256:283d9de87c0133ef98f93dfc09fad3fb382f2a15580de75c02b5bb36a5a159a5"}, + {file = "numpy-1.22.0-cp38-cp38-win_amd64.whl", hash = "sha256:2762331de395739c91f1abb88041f94a080cb1143aeec791b3b223976228af3f"}, + {file = "numpy-1.22.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:76ba7c40e80f9dc815c5e896330700fd6e20814e69da9c1267d65a4d051080f1"}, + {file = "numpy-1.22.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0cfe07133fd00b27edee5e6385e333e9eeb010607e8a46e1cd673f05f8596595"}, + {file = "numpy-1.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6ed0d073a9c54ac40c41a9c2d53fcc3d4d4ed607670b9e7b0de1ba13b4cbfe6f"}, + {file = "numpy-1.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41388e32e40b41dd56eb37fcaa7488b2b47b0adf77c66154d6b89622c110dfe9"}, + {file = "numpy-1.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b55b953a1bdb465f4dc181758570d321db4ac23005f90ffd2b434cc6609a63dd"}, + {file = "numpy-1.22.0-cp39-cp39-win32.whl", hash = "sha256:5a311ee4d983c487a0ab546708edbdd759393a3dc9cd30305170149fedd23c88"}, + {file = "numpy-1.22.0-cp39-cp39-win_amd64.whl", hash = "sha256:a97a954a8c2f046d3817c2bce16e3c7e9a9c2afffaf0400f5c16df5172a67c9c"}, + {file = "numpy-1.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb02929b0d6bfab4c48a79bd805bd7419114606947ec8284476167415171f55b"}, + {file = "numpy-1.22.0.zip", hash = "sha256:a955e4128ac36797aaffd49ab44ec74a71c11d6938df83b1285492d277db5397"}, ] opencv-python = [ - {file = "opencv-python-4.5.4.60.tar.gz", hash = "sha256:f609558a8fe1bf66f6c81816ca14d8e51500c8b53ee44bc644c73f98f1c5655e"}, - {file = "opencv_python-4.5.4.60-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9aa3d2fcaad79681720128ffe402a2ad9fbb524826a431ae9773d29ae3075967"}, - {file = "opencv_python-4.5.4.60-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:84fdfbb88836039e812f36cdc4a9c8bd330827084b0849ffec7a0b143ad980d9"}, - {file = "opencv_python-4.5.4.60-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:febc6e52db03cc0ca1cd2fc56c8f94ac15349ca19d10732261c766c463e681a6"}, - {file = "opencv_python-4.5.4.60-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b336f17bf90be734ec6d1bbbfc9fa8130fb1c110ff0746ab4374ba0422ea15a5"}, - {file = "opencv_python-4.5.4.60-cp310-cp310-win32.whl", hash = "sha256:62161bf98661baa7dbc13971bd873303a28d5ef1c5f00e6a030b6e6da2025abd"}, - {file = "opencv_python-4.5.4.60-cp310-cp310-win_amd64.whl", hash = "sha256:5eab0f45a33fdbb62a6984538a97e9f8b33d370afd35face04036a3195dbb787"}, - {file = "opencv_python-4.5.4.60-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:f5902060f14a83d363163dd1bbf54876977c379fb56666e5557394eecca1f364"}, - {file = "opencv_python-4.5.4.60-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b861c96a31d5d9c60fd0e4e8b05eb258a2da0ec77e7eae5711a71159627c1548"}, - {file = "opencv_python-4.5.4.60-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:340999b852ca03f1f4ec058f3bb71dfb45b9b1b538fad13985e6fea8abbd6eb0"}, - {file = "opencv_python-4.5.4.60-cp36-cp36m-win32.whl", hash = "sha256:5fe9ba0be2f0f15e64ccd19c9d050d163cc70d9b718b6a03564056c0ae4be8e8"}, - {file = "opencv_python-4.5.4.60-cp36-cp36m-win_amd64.whl", hash = "sha256:22765c4a9249bca0764a9ae82fe849a43708db21a9984ac1406503db97816bee"}, - {file = "opencv_python-4.5.4.60-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e688176481d9ace9f166eac9dbb0313cbb9b4d1aef82e57632c4db404bd33942"}, - {file = "opencv_python-4.5.4.60-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:9e9c2835c853d45b8f73628e14ca358e0d15132a703e7728a35269fa233792fc"}, - {file = "opencv_python-4.5.4.60-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa6b688804e8590851d5f7c96886c9bd8cdd105c7ae6776f03c5ecd35465c062"}, - {file = "opencv_python-4.5.4.60-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93704f7f873acb4fdb0fe62f9b62c000ec0e5a4c6af55578fd596b089dc4eb4f"}, - {file = "opencv_python-4.5.4.60-cp37-cp37m-win32.whl", hash = "sha256:9e9d4e11b6e50ebe726daa2f0f7724fd877769476e352a7274f2107a3094de40"}, - {file = "opencv_python-4.5.4.60-cp37-cp37m-win_amd64.whl", hash = "sha256:3eed69cb9a95fc51ecc5463f2d5f50dcc8b9e01dc5ae8dbb423df2937f415304"}, - {file = "opencv_python-4.5.4.60-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:eebe92d48833fe244ef19b88bcd8f7c4f61713a4f6d46694dd538025ac38aa1c"}, - {file = "opencv_python-4.5.4.60-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26dccfb820e01ba822255d093139934a26ad4c5e8a74a7b79e71f8d5c2a0d186"}, - {file = "opencv_python-4.5.4.60-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba0fb91d916fce3f6b7ac5be2d365d3949ba8a176262cf6a6dd366967544fa4d"}, - {file = "opencv_python-4.5.4.60-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d0bce53e1edf6e5d4eafd274bcfa314b506a10f12bce74f15b0a52cbadb87db"}, - {file = "opencv_python-4.5.4.60-cp38-cp38-win32.whl", hash = "sha256:1617dc24fe670f128fc49e0b57f1fecdc7b41babd2ccc9b7a1d9491045e32c27"}, - {file = "opencv_python-4.5.4.60-cp38-cp38-win_amd64.whl", hash = "sha256:9141e88bfa67d9d4ac750fec18449065d105b8b3d00bbfb58b097bcc4fa6f018"}, - {file = "opencv_python-4.5.4.60-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:fb8b81e1756522def5518914d916205da5cf34796b60adb592373991d100c769"}, - {file = "opencv_python-4.5.4.60-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:811f0df2a3ecaf7dacd77394862f3e0a04feedae190a51fd50c243016f1da7ff"}, - {file = "opencv_python-4.5.4.60-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c95121d88c18affb3ac338d7faa137f7ccaa801c07db5a43d775f95d0f50ec1"}, - {file = "opencv_python-4.5.4.60-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34ff0af4a40a36aa19e02a3efd27b4f68afbf60d631d1fd1aeb5b73b525943d7"}, - {file = "opencv_python-4.5.4.60-cp39-cp39-win32.whl", hash = "sha256:5f62798d00efc1299cc87fcc788b11d0541114f0df35e0f2033c34751e4f708e"}, - {file = "opencv_python-4.5.4.60-cp39-cp39-win_amd64.whl", hash = "sha256:abfecb14c7fc23c5c1337a71b67cc852d79de67311a9a557c41a37bf5de35bf9"}, + {file = "opencv-python-4.5.5.62.tar.gz", hash = "sha256:3efe232b32d5e1327e7c82bc6d61230737821c5190ce5c783e64a1bc8d514e18"}, + {file = "opencv_python-4.5.5.62-cp36-abi3-macosx_10_15_x86_64.whl", hash = "sha256:2601388def0d6b957cc30dd88f8ff74a5651ae6940dd9e488241608cfa2b15c7"}, + {file = "opencv_python-4.5.5.62-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71fdc49df412b102d97f14927321309043c79c4a3582cce1dc803370ff9c39c0"}, + {file = "opencv_python-4.5.5.62-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:130cc75d56b29aa3c5de8b6ac438242dd2574ba6eaa8bccdffdcfd6b78632f7f"}, + {file = "opencv_python-4.5.5.62-cp36-abi3-win32.whl", hash = "sha256:3a75c7ad45b032eea0c72e389aac6dd435f5c87e87f60237095c083400bc23aa"}, + {file = "opencv_python-4.5.5.62-cp36-abi3-win_amd64.whl", hash = "sha256:c463d2276d8662b972d20ca9644702188507de200ca5405b89e1fe71c5c99989"}, + {file = "opencv_python-4.5.5.62-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:ac92e743e22681f30001942d78512c1e39bce53dbffc504e5645fdc45c0f2c47"}, ] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, @@ -744,8 +718,8 @@ pyflakes = [ {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"}, ] pygments = [ - {file = "Pygments-2.10.0-py3-none-any.whl", hash = "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380"}, - {file = "Pygments-2.10.0.tar.gz", hash = "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"}, + {file = "Pygments-2.11.1-py3-none-any.whl", hash = "sha256:9135c1af61eec0f650cd1ea1ed8ce298e54d56bcd8cc2ef46edd7702c171337c"}, + {file = "Pygments-2.11.1.tar.gz", hash = "sha256:59b895e326f0fb0d733fd28c6839bd18ad0687ba20efc26d4277fd1d30b971f4"}, ] pyparsing = [ {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"}, @@ -756,8 +730,8 @@ pytz = [ {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, ] requests = [ - {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"}, - {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"}, + {file = "requests-2.27.0-py2.py3-none-any.whl", hash = "sha256:f71a09d7feba4a6b64ffd8e9d9bc60f9bf7d7e19fd0e04362acb1cfc2e3d98df"}, + {file = "requests-2.27.0.tar.gz", hash = "sha256:8e5643905bf20a308e25e4c1dd379117c09000bf8a82ebccc462cfb1b34a16b5"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -768,8 +742,8 @@ snowballstemmer = [ {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] sphinx = [ - {file = "Sphinx-4.3.1-py3-none-any.whl", hash = "sha256:048dac56039a5713f47a554589dc98a442b39226a2b9ed7f82797fcb2fe9253f"}, - {file = "Sphinx-4.3.1.tar.gz", hash = "sha256:32a5b3e9a1b176cc25ed048557d4d3d01af635e6b76c5bc7a43b0a34447fbd45"}, + {file = "Sphinx-4.3.2-py3-none-any.whl", hash = "sha256:6a11ea5dd0bdb197f9c2abc2e0ce73e01340464feaece525e64036546d24c851"}, + {file = "Sphinx-4.3.2.tar.gz", hash = "sha256:0a8836751a68306b3fe97ecbe44db786f8479c3bf4b80e3a7f5c838657b4698c"}, ] sphinxcontrib-applehelp = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, @@ -800,8 +774,8 @@ toml = [ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] typing-extensions = [ - {file = "typing_extensions-4.0.0-py3-none-any.whl", hash = "sha256:829704698b22e13ec9eaf959122315eabb370b0884400e9818334d8b677023d9"}, - {file = "typing_extensions-4.0.0.tar.gz", hash = "sha256:2cdf80e4e04866a9b3689a51869016d36db0814d84b8d8a568d22781d45d27ed"}, + {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"}, + {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"}, ] urllib3 = [ {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"}, diff --git a/pyproject.toml b/pyproject.toml index 3070fc8..412cd51 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,3 +59,20 @@ Sphinx = "^4.2.0" [build-system] requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api" + +[tool.mypy] +python_version = "3.10" +check_untyped_defs = true +ignore_errors = false +ignore_missing_imports = true +strict_optional = true +no_implicit_optional = true +warn_unused_ignores = true +warn_redundant_casts = true +warn_unused_configs = true +warn_unreachable = true + +show_error_context = true +pretty = true + +exclude = "build|dist|docs|stegano.egg-info" diff --git a/stegano/exifHeader/exifHeader.py b/stegano/exifHeader/exifHeader.py index 5da6637..9958b96 100644 --- a/stegano/exifHeader/exifHeader.py +++ b/stegano/exifHeader/exifHeader.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/stegano/lsb/lsb.py b/stegano/lsb/lsb.py index c5dede8..7d12790 100755 --- a/stegano/lsb/lsb.py +++ b/stegano/lsb/lsb.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/stegano/lsbset/generators.py b/stegano/lsbset/generators.py index 6ff3428..c450afe 100644 --- a/stegano/lsbset/generators.py +++ b/stegano/lsbset/generators.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # @@ -29,12 +29,11 @@ import itertools import cv2 import numpy as np import math -from typing import Dict, Iterator, List, Any +from typing import Dict, Iterator, List, Any, Union def identity() -> Iterator[int]: - """f(x) = x - """ + """f(x) = x""" n = 0 while True: yield n @@ -110,8 +109,7 @@ def carmichael() -> Iterator[int]: def ackermann_slow(m: int, n: int) -> int: - """Ackermann number. - """ + """Ackermann number.""" if m == 0: return n + 1 elif n == 0: @@ -121,8 +119,7 @@ def ackermann_slow(m: int, n: int) -> int: def ackermann_naive(m: int) -> Iterator[int]: - """Naive Ackermann encapsulated in a generator. - """ + """Naive Ackermann encapsulated in a generator.""" n = 0 while True: yield ackermann_slow(m, n) @@ -130,8 +127,7 @@ def ackermann_naive(m: int) -> Iterator[int]: def ackermann_fast(m: int, n: int) -> int: - """Ackermann number. - """ + """Ackermann number.""" while m >= 4: if n == 0: n = 1 @@ -149,8 +145,7 @@ def ackermann_fast(m: int, n: int) -> int: def ackermann(m: int) -> Iterator[int]: - """Ackermann encapsulated in a generator. - """ + """Ackermann encapsulated in a generator.""" n = 0 while True: yield ackermann_fast(m, n) @@ -168,8 +163,7 @@ def fibonacci() -> Iterator[int]: def log_gen() -> Iterator[int]: - """Logarithmic generator. - """ + """Logarithmic generator.""" y = 1 while True: adder = max(1, math.pow(10, int(math.log10(y)))) @@ -246,13 +240,15 @@ def shi_tomashi( """ image = cv2.imread(image_path) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) - corners: np.signedinteger[Any] = cv2.goodFeaturesToTrack( + corners: np.ndarray = cv2.goodFeaturesToTrack( gray, max_corners, quality, min_distance ) - corners = np.int0(corners) + corners_int: np.ndarray[Any, np.dtype[np.signedinteger[Any]]] = np.array( + np.int0(corners) + ) i = 0 while True: - x, y = corners[i].ravel() + x, y = corners_int[i].ravel() # Compute the pixel number with top left of image as origin # using coordinates of the corner. # (y * number of pixels a row) + pixels left in last row diff --git a/stegano/lsbset/lsbset.py b/stegano/lsbset/lsbset.py index 2bcda4a..f6d0ee4 100644 --- a/stegano/lsbset/lsbset.py +++ b/stegano/lsbset/lsbset.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/stegano/red/red.py b/stegano/red/red.py index 4865460..bea8aac 100755 --- a/stegano/red/red.py +++ b/stegano/red/red.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stéganô is a basic Python Steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/stegano/steganalysis/parity.py b/stegano/steganalysis/parity.py index 193e98d..9f08c75 100644 --- a/stegano/steganalysis/parity.py +++ b/stegano/steganalysis/parity.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/stegano/steganalysis/statistics.py b/stegano/steganalysis/statistics.py index 4e90b3f..8596f51 100644 --- a/stegano/steganalysis/statistics.py +++ b/stegano/steganalysis/statistics.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/stegano/tools.py b/stegano/tools.py index 6ddafed..6ddeac3 100755 --- a/stegano/tools.py +++ b/stegano/tools.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/tests/test_exifHeader.py b/tests/test_exifHeader.py index 90d0472..196d168 100644 --- a/tests/test_exifHeader.py +++ b/tests/test_exifHeader.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/tests/test_generators.py b/tests/test_generators.py index 5eaed1c..914291c 100644 --- a/tests/test_generators.py +++ b/tests/test_generators.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # @@ -183,7 +183,7 @@ class TestGenerators(unittest.TestCase): @staticmethod def shi_tomashi_reconfigure( file_name: str, - corners: int = 1000, + max_corners: int = 1000, quality: float = 0.001, min_distance: int = 10, ): @@ -192,8 +192,10 @@ class TestGenerators(unittest.TestCase): """ image = cv2.imread(file_name) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) - corners = cv2.goodFeaturesToTrack(gray, corners, quality, min_distance) - corners = np.int0(corners) + corners = cv2.goodFeaturesToTrack(gray, max_corners, quality, min_distance) + # Commented because min_distance argument of generators.shi_tomashi is now set + # to 10.0: + # corners = np.int0(corners) corners = corners.reshape(corners.shape[0], -1) np.savetxt("tests/expected-results/shi_tomashi.txt", corners) diff --git a/tests/test_lsb.py b/tests/test_lsb.py index 9bda639..99ce4e3 100644 --- a/tests/test_lsb.py +++ b/tests/test_lsb.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/tests/test_lsbset.py b/tests/test_lsbset.py index 5e45a05..90658f6 100644 --- a/tests/test_lsbset.py +++ b/tests/test_lsbset.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # @@ -20,9 +20,9 @@ # along with this program. If not, see __author__ = "Cedric Bonhomme" -__version__ = "$Revision: 0.5 $" +__version__ = "$Revision: 0.6 $" __date__ = "$Date: 2016/04/13 $" -__revision__ = "$Date: 2021/11/29 $" +__revision__ = "$Date: 2022/01/04 $" __license__ = "GPLv3" import io @@ -193,7 +193,7 @@ class TestLSBSet(unittest.TestCase): lsbset.hide( "./tests/sample-files/Lenna.png", message_to_hide, - generators.eratosthene(), + generators.eratosthene(), # type: ignore ) def tearDown(self): diff --git a/tests/test_red.py b/tests/test_red.py index 13f363a..4d9e372 100644 --- a/tests/test_red.py +++ b/tests/test_red.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano # diff --git a/tests/test_tools.py b/tests/test_tools.py index 4ac66e6..de40d1a 100644 --- a/tests/test_tools.py +++ b/tests/test_tools.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # Stegano - Stegano is a pure Python steganography module. -# Copyright (C) 2010-2021 Cédric Bonhomme - https://www.cedricbonhomme.org +# Copyright (C) 2010-2022 Cédric Bonhomme - https://www.cedricbonhomme.org # # For more information : https://git.sr.ht/~cedric/stegano #