diff --git a/.github/workflows/pythonapp.yaml b/.github/workflows/pythonapp.yaml index 516778f..a27463d 100644 --- a/.github/workflows/pythonapp.yaml +++ b/.github/workflows/pythonapp.yaml @@ -22,7 +22,7 @@ jobs: - name: Install dependencies run: | pip install poetry - poetry install + poetry install --with dev - name: Lint with flake8 run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..64f381b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,27 @@ +on: + release: + types: + - published + +name: release + +jobs: + pypi-publish: + name: Upload release to PyPI + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/p/Stegano + + permissions: + id-token: write # IMPORTANT: this permission is mandatory for trusted publishing + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install Poetry + run: python -m pip install --upgrade pip poetry + - name: Build artifacts + run: poetry build + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 394759e..02e8fd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,233 +1,239 @@ ## Release History +### 0.11.5 (2025-02-13) + +- Updated dependencies +- Aligned pyproject.toml with the standard specification. +- Publishing to PyPI using a Trusted Publisher + ### 0.11.4 (2024-09-07) -* Added a parameter, close_file, to lsb.reveal in order to +- Added a parameter, close_file, to lsb.reveal in order to specify if the file must be closed at the end of the processing. ### 0.11.3 (2024-01-02) -* Stegano now supports Python 3.12. Support of Python 3.8 has been removed. +- Stegano now supports Python 3.12. Support of Python 3.8 has been removed. ### 0.11.2 (2023-05-23) -* improved typing of various functions; -* updated dependencies. +- improved typing of various functions; +- updated dependencies. ### 0.11.1 (2022-11-20) -* Fixed a bug in the command line when no sub-command is specified. +- Fixed a bug in the command line when no sub-command is specified. ### 0.11.0 (2022-11-20) -* Reduced memory footprint and processing speed, +- Reduced memory footprint and processing speed, the modules ``lsb`` and ``lsbset`` have been merged ([PR #34](https://github.com/cedricbonhomme/Stegano/pull/34)). ### 0.10.2 (2022-01-13) -* Stegano now uses Pillow 9.0.0 (CVE-2022-22815). +- Stegano now uses Pillow 9.0.0 (CVE-2022-22815). ### 0.10.1 (2021-11-30) -* Stegano now uses OpenCV Python 4.5.4 abd Numpy 1.21.4. +- Stegano now uses OpenCV Python 4.5.4 abd Numpy 1.21.4. ### 0.10.0 (2021-11-29) -* new: Implemented Shi-Tomashi corner generator +- new: Implemented Shi-Tomashi corner generator ([PR #32](https://github.com/cedricbonhomme/Stegano/pull/32)). Implemented by thundersparkf (see CONTRIBUTORS.md file). ### 0.9.9 (2021-07-02) -* Stegano now uses Pillow 8.3.0. +- Stegano now uses Pillow 8.3.0. ### 0.9.8 (2019-12-20) -* Stegano is now using poetry; -* minor improvements to the command line. +- Stegano is now using poetry; +- minor improvements to the command line. ### 0.9.7 (2019-10-27) -* fixed markdown of the previous release. +- fixed markdown of the previous release. ### 0.9.6 (2019-10-27) -* fixed markdown of the previous release; +- fixed markdown of the previous release; ### 0.9.5 (2019-10-27) -* updated dependencies; -* home page of the project is now: https://github.com/cedricbonhomme/Stegano +- updated dependencies; +- home page of the project is now: https://github.com/cedricbonhomme/Stegano ### 0.9.4 (2019-06-05) -* new: Implemented LFSR generator (with tests and CLI) +- new: Implemented LFSR generator (with tests and CLI) ([PR #27](https://github.com/cedricbonhomme/Stegano/pull/27)) -* new: Implemented Ackermann generators CLI interface +- new: Implemented Ackermann generators CLI interface ([PR #26](https://github.com/cedricbonhomme/Stegano/pull/26)) -* new: The Ackermann functions are not actual generators +- new: The Ackermann functions are not actual generators ([#24](https://github.com/cedricbonhomme/Stegano/issues/24)) -* new: add a shift parameter for the lsbmodule +- new: add a shift parameter for the lsbmodule ([#25](https://github.com/cedricbonhomme/Stegano/issues/25)) -* fix: lsbset.hide cause .png transparent area lost +- fix: lsbset.hide cause .png transparent area lost ([#23](https://github.com/cedricbonhomme/Stegano/issues/23)) ### 0.9.3 (2019-04-10) -* it is now possible to either pass the location of an image or directly pass +- it is now possible to either pass the location of an image or directly pass an already opened Image.Image to the hide and reveal methods; -* code re-formatted a bit with black. +- code re-formatted a bit with black. ### 0.9.2 (2019-04-04) -* updated Pillow dependency to version 6.0.0 in order to fix a bug when opening +- updated Pillow dependency to version 6.0.0 in order to fix a bug when opening some PNG files (https://github.com/python-pillow/Pillow/issues/3557). ### 0.9.1 (2019-03-06) -* updated Pillow dependency in order to fix a bug when opening some PNG files. +- updated Pillow dependency in order to fix a bug when opening some PNG files. ### 0.9.0 (2018-12-18) -* added the possibility to shift the encoded bits when using the lsbset module. +- added the possibility to shift the encoded bits when using the lsbset module. ### 0.8.6 (2018-11-05) -* fixed a potential security issue related to CVE-2018-18074. +- fixed a potential security issue related to CVE-2018-18074. ### 0.8.5 (2018-04-18) -* Fixed an encoding problem which occured on Windows during the installation +- Fixed an encoding problem which occured on Windows during the installation of the module. ### 0.8.4 (2018-02-28) -* Stegano is ready for use with pipenv and pipsi. +- Stegano is ready for use with pipenv and pipsi. ### 0.8.3 (2018-02-23) -* the recommended way to install Stegano is now to use pipenv. +- the recommended way to install Stegano is now to use pipenv. ### 0.8.2 (2017-12-20) -* Fixed a bug with the new 'encoding' function when using Stegano as a command +- Fixed a bug with the new 'encoding' function when using Stegano as a command line tool. No default value was set. Default value is UTF-8. ### 0.8.1 (2017-05-16) -* it is now possible to specify the encoding (UTF-8 or UTF-32LE) of the message +- it is now possible to specify the encoding (UTF-8 or UTF-32LE) of the message to hide/reveal through the command line; -* the help of the command line now displays the available choices for the +- the help of the command line now displays the available choices for the arguments, if it is necessary (list of available encodings, list of available generators); -* tests expected results lies now in a dedicated folder; -* a script has been added in order to get proper exit code check for mypy. +- tests expected results lies now in a dedicated folder; +- a script has been added in order to get proper exit code check for mypy. ### 0.8 (2017-05-06) -* updated command line. All commands are now prefixed with *stegano-*; -* improved type hints; -* it is possible to load and save images from and to file objects (BytesIO); -* improved checks when revealing a message with the lsbset module fails. +- updated command line. All commands are now prefixed with *stegano-*; +- improved type hints; +- it is possible to load and save images from and to file objects (BytesIO); +- improved checks when revealing a message with the lsbset module fails. ### 0.7.1 (2017-05-05) -* improved generators for the lsb-set module; -* improved tests for the generators; -* improved type hints. +- improved generators for the lsb-set module; +- improved tests for the generators; +- improved type hints. ### 0.7 (2017-05-04) -* unicode is now supported. By default UTF-8 encoding is used. UTF-32LE can also +- unicode is now supported. By default UTF-8 encoding is used. UTF-32LE can also be used to hide non-ASCII characters. UTF-8 (8 bits) is the default choice since it is possible to hide longer messages with it. -* improved checks with type hints. +- improved checks with type hints. ### 0.6.9 (2017-03-10) -* introduces some type hints (PEP 484); -* more tests for the generators and for the tools module; -* updated descriptions of generators; -* fixed a bug with a generator that has been previously renamed. +- introduces some type hints (PEP 484); +- more tests for the generators and for the tools module; +- updated descriptions of generators; +- fixed a bug with a generator that has been previously renamed. ### 0.6.8 (2017-03-08) -* bugfix: fixed #12: Error when revealing a hidden binary file in an image. +- bugfix: fixed #12: Error when revealing a hidden binary file in an image. ### 0.6.7 (2017-02-21) -* bugfix: added missing dependency in the setup.py file. +- bugfix: added missing dependency in the setup.py file. ### 0.6.6 (2017-02-20) -* improved docstrings for the desciption of the generators; -* improved the command which displays the list of generators. +- improved docstrings for the desciption of the generators; +- improved the command which displays the list of generators. ### 0.6.5 (2017-02-16) -* added a command to list all available generators for the lsb-set module; -* test when the data image is coming via byte stream, for the lsb module. +- added a command to list all available generators for the lsb-set module; +- test when the data image is coming via byte stream, for the lsb module. ### 0.6.4 (2017-02-06) -* a command line for the 'red' module has been added; -* bugfix: fixed a bug in the lsb-set command line when the generator wasn't +- a command line for the 'red' module has been added; +- bugfix: fixed a bug in the lsb-set command line when the generator wasn't specified by the user. ### 0.6.3 (2017-01-29) -* Support for transparent PNG images has been added (lsb and lsbset modules). +- Support for transparent PNG images has been added (lsb and lsbset modules). ### 0.6.2 (2017-01-19) -* bugfix: solved a bug when the image data is coming via byte streams (ByteIO), +- bugfix: solved a bug when the image data is coming via byte streams (ByteIO), for the exifHeader hiding method. ### 0.6.1 (2016-08-25) -* reorganization of the steganalysis sub-module. +- reorganization of the steganalysis sub-module. ### 0.6 (2016-08-04) -* improvements of the command line of Stéganô. The use of Stéganô through the +- improvements of the command line of Stéganô. The use of Stéganô through the command line has slightly changed ('hide' and 'reveal' are now sub-parameters of the command line). No changes if you use Stéganô as a module in your software. The documentation has been updated accordingly. @@ -235,66 +241,66 @@ ### 0.5.5 (2016-08-03) -* bugfix: Incorrect padding size in `base642string` in tools.base642binary(). +- bugfix: Incorrect padding size in `base642string` in tools.base642binary(). ### 0.5.4 (2016-05-22) -* the generator provided to the functions lsbset.hide() and lsbset.reveal() is +- the generator provided to the functions lsbset.hide() and lsbset.reveal() is now a function. This is more convenient for a user who wants to use a custom generator (not in the module lsbset.generators). -* performance improvements for the lsb and lsbset modules. +- performance improvements for the lsb and lsbset modules. ### 0.5.3 (2016-05-19) -* reorganization of all modules. No impact for the users of Stegano. +- reorganization of all modules. No impact for the users of Stegano. ### 0.5.2 (2016-05-18) -* improvements and bug fixes for the exifHeader module; -* added unit tests for the exifHeader module; -* improvements of the documentation. +- improvements and bug fixes for the exifHeader module; +- added unit tests for the exifHeader module; +- improvements of the documentation. ### 0.5.1 (2016-04-16) -* minor improvements and bug fixes; -* added unit tests for the slsb and slsbset modules. +- minor improvements and bug fixes; +- added unit tests for the slsb and slsbset modules. ### 0.5 (2016-03-18) -* management of greyscale images. +- management of greyscale images. ### 0.4.6 (2016-03-12) -* bugfix when the length of the message to hide is not divisible by 3, +- bugfix when the length of the message to hide is not divisible by 3, for the slsb and slsbset module. ### 0.4.5 (2015-12-23) -* bugfix. +- bugfix. ### 0.4.4 (2015-12-23) -* new project home page; -* minor updated to the documentation. +- new project home page; +- minor updated to the documentation. ### 0.4.3 (2015-10-06) -* bug fixes for Python 3; -* bug fixes in the scripts in *./bin*. +- bug fixes for Python 3; +- bug fixes in the scripts in *./bin*. ### 0.4.2 (2015-10-05) -* first stable release on PypI. +- first stable release on PypI. ### 0.4 (2012-01-02) @@ -308,16 +314,16 @@ Python codes as a Python module or as a program in your scripts. ### 0.3 (2011-04-15) -* you can now use Stéganô as a library in your Python program; +- you can now use Stéganô as a library in your Python program; (python setup.py install) or as a 'program' thanks to the scripts provided in the bin directory; -* new documentation (reStructuredText) comes with Stéganô. +- new documentation (reStructuredText) comes with Stéganô. ### 0.2 (2011-03-24) -* this release introduces some bugfixes and a major speed improvement of the +- this release introduces some bugfixes and a major speed improvement of the *reveal* function for the LSB method. Moreover it is now possible to hide a binary file (ogg, executable, etc.); -* a new technique for hiding/revealing a message in a JPEG picture by using the +- a new technique for hiding/revealing a message in a JPEG picture by using the description field of the image is provided. diff --git a/README.md b/README.md index 08d42be..3b10733 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # Stegano -[![builds.sr.ht status](https://builds.sr.ht/~cedric/stegano.svg)](https://builds.sr.ht/~cedric/stegano) [![Workflow](https://github.com/cedricbonhomme/Stegano/workflows/Python%20application/badge.svg?style=flat-square)](https://github.com/cedricbonhomme/Stegano/actions?query=workflow%3A%22Python+application%22) [Stegano](https://github.com/cedricbonhomme/Stegano), a pure Python Steganography diff --git a/poetry.lock b/poetry.lock index ddf75dc..97acda6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -241,14 +241,14 @@ pyflakes = ">=3.1.0,<3.2.0" [[package]] name = "identify" -version = "2.6.6" +version = "2.6.7" description = "File identification library for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "identify-2.6.6-py2.py3-none-any.whl", hash = "sha256:cbd1810bce79f8b671ecb20f53ee0ae8e86ae84b557de31d89709dc2a48ba881"}, - {file = "identify-2.6.6.tar.gz", hash = "sha256:7bec12768ed44ea4761efb47806f0a41f86e7c0a5fdf5950d4648c90eca7e251"}, + {file = "identify-2.6.7-py2.py3-none-any.whl", hash = "sha256:155931cb617a401807b09ecec6635d6c692d180090a1cedca8ef7d58ba5b6aa0"}, + {file = "identify-2.6.7.tar.gz", hash = "sha256:3fa266b42eba321ee0b2bb0936a6a6b9e36a1351cbb69055b3082f4193035684"}, ] [package.extras] @@ -478,67 +478,66 @@ dev = ["Sphinx", "sphinx-issues", "sphinx-rtd-theme"] [[package]] name = "numpy" -version = "2.2.2" +version = "2.2.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" groups = ["main"] files = [ - {file = "numpy-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7079129b64cb78bdc8d611d1fd7e8002c0a2565da6a47c4df8062349fee90e3e"}, - {file = "numpy-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ec6c689c61df613b783aeb21f945c4cbe6c51c28cb70aae8430577ab39f163e"}, - {file = "numpy-2.2.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:40c7ff5da22cd391944a28c6a9c638a5eef77fcf71d6e3a79e1d9d9e82752715"}, - {file = "numpy-2.2.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:995f9e8181723852ca458e22de5d9b7d3ba4da3f11cc1cb113f093b271d7965a"}, - {file = "numpy-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b78ea78450fd96a498f50ee096f69c75379af5138f7881a51355ab0e11286c97"}, - {file = "numpy-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fbe72d347fbc59f94124125e73fc4976a06927ebc503ec5afbfb35f193cd957"}, - {file = "numpy-2.2.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8e6da5cffbbe571f93588f562ed130ea63ee206d12851b60819512dd3e1ba50d"}, - {file = "numpy-2.2.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:09d6a2032faf25e8d0cadde7fd6145118ac55d2740132c1d845f98721b5ebcfd"}, - {file = "numpy-2.2.2-cp310-cp310-win32.whl", hash = "sha256:159ff6ee4c4a36a23fe01b7c3d07bd8c14cc433d9720f977fcd52c13c0098160"}, - {file = "numpy-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:64bd6e1762cd7f0986a740fee4dff927b9ec2c5e4d9a28d056eb17d332158014"}, - {file = "numpy-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:642199e98af1bd2b6aeb8ecf726972d238c9877b0f6e8221ee5ab945ec8a2189"}, - {file = "numpy-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6d9fc9d812c81e6168b6d405bf00b8d6739a7f72ef22a9214c4241e0dc70b323"}, - {file = "numpy-2.2.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c7d1fd447e33ee20c1f33f2c8e6634211124a9aabde3c617687d8b739aa69eac"}, - {file = "numpy-2.2.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:451e854cfae0febe723077bd0cf0a4302a5d84ff25f0bfece8f29206c7bed02e"}, - {file = "numpy-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd249bc894af67cbd8bad2c22e7cbcd46cf87ddfca1f1289d1e7e54868cc785c"}, - {file = "numpy-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02935e2c3c0c6cbe9c7955a8efa8908dd4221d7755644c59d1bba28b94fd334f"}, - {file = "numpy-2.2.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a972cec723e0563aa0823ee2ab1df0cb196ed0778f173b381c871a03719d4826"}, - {file = "numpy-2.2.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d6d6a0910c3b4368d89dde073e630882cdb266755565155bc33520283b2d9df8"}, - {file = "numpy-2.2.2-cp311-cp311-win32.whl", hash = "sha256:860fd59990c37c3ef913c3ae390b3929d005243acca1a86facb0773e2d8d9e50"}, - {file = "numpy-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:da1eeb460ecce8d5b8608826595c777728cdf28ce7b5a5a8c8ac8d949beadcf2"}, - {file = "numpy-2.2.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ac9bea18d6d58a995fac1b2cb4488e17eceeac413af014b1dd26170b766d8467"}, - {file = "numpy-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23ae9f0c2d889b7b2d88a3791f6c09e2ef827c2446f1c4a3e3e76328ee4afd9a"}, - {file = "numpy-2.2.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3074634ea4d6df66be04f6728ee1d173cfded75d002c75fac79503a880bf3825"}, - {file = "numpy-2.2.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8ec0636d3f7d68520afc6ac2dc4b8341ddb725039de042faf0e311599f54eb37"}, - {file = "numpy-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ffbb1acd69fdf8e89dd60ef6182ca90a743620957afb7066385a7bbe88dc748"}, - {file = "numpy-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0349b025e15ea9d05c3d63f9657707a4e1d471128a3b1d876c095f328f8ff7f0"}, - {file = "numpy-2.2.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:463247edcee4a5537841d5350bc87fe8e92d7dd0e8c71c995d2c6eecb8208278"}, - {file = "numpy-2.2.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9dd47ff0cb2a656ad69c38da850df3454da88ee9a6fde0ba79acceee0e79daba"}, - {file = "numpy-2.2.2-cp312-cp312-win32.whl", hash = "sha256:4525b88c11906d5ab1b0ec1f290996c0020dd318af8b49acaa46f198b1ffc283"}, - {file = "numpy-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:5acea83b801e98541619af398cc0109ff48016955cc0818f478ee9ef1c5c3dcb"}, - {file = "numpy-2.2.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b208cfd4f5fe34e1535c08983a1a6803fdbc7a1e86cf13dd0c61de0b51a0aadc"}, - {file = "numpy-2.2.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d0bbe7dd86dca64854f4b6ce2ea5c60b51e36dfd597300057cf473d3615f2369"}, - {file = "numpy-2.2.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:22ea3bb552ade325530e72a0c557cdf2dea8914d3a5e1fecf58fa5dbcc6f43cd"}, - {file = "numpy-2.2.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:128c41c085cab8a85dc29e66ed88c05613dccf6bc28b3866cd16050a2f5448be"}, - {file = "numpy-2.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:250c16b277e3b809ac20d1f590716597481061b514223c7badb7a0f9993c7f84"}, - {file = "numpy-2.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0c8854b09bc4de7b041148d8550d3bd712b5c21ff6a8ed308085f190235d7ff"}, - {file = "numpy-2.2.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b6fb9c32a91ec32a689ec6410def76443e3c750e7cfc3fb2206b985ffb2b85f0"}, - {file = "numpy-2.2.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:57b4012e04cc12b78590a334907e01b3a85efb2107df2b8733ff1ed05fce71de"}, - {file = "numpy-2.2.2-cp313-cp313-win32.whl", hash = "sha256:4dbd80e453bd34bd003b16bd802fac70ad76bd463f81f0c518d1245b1c55e3d9"}, - {file = "numpy-2.2.2-cp313-cp313-win_amd64.whl", hash = "sha256:5a8c863ceacae696aff37d1fd636121f1a512117652e5dfb86031c8d84836369"}, - {file = "numpy-2.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b3482cb7b3325faa5f6bc179649406058253d91ceda359c104dac0ad320e1391"}, - {file = "numpy-2.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9491100aba630910489c1d0158034e1c9a6546f0b1340f716d522dc103788e39"}, - {file = "numpy-2.2.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:41184c416143defa34cc8eb9d070b0a5ba4f13a0fa96a709e20584638254b317"}, - {file = "numpy-2.2.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7dca87ca328f5ea7dafc907c5ec100d187911f94825f8700caac0b3f4c384b49"}, - {file = "numpy-2.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bc61b307655d1a7f9f4b043628b9f2b721e80839914ede634e3d485913e1fb2"}, - {file = "numpy-2.2.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fad446ad0bc886855ddf5909cbf8cb5d0faa637aaa6277fb4b19ade134ab3c7"}, - {file = "numpy-2.2.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:149d1113ac15005652e8d0d3f6fd599360e1a708a4f98e43c9c77834a28238cb"}, - {file = "numpy-2.2.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:106397dbbb1896f99e044efc90360d098b3335060375c26aa89c0d8a97c5f648"}, - {file = "numpy-2.2.2-cp313-cp313t-win32.whl", hash = "sha256:0eec19f8af947a61e968d5429f0bd92fec46d92b0008d0a6685b40d6adf8a4f4"}, - {file = "numpy-2.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:97b974d3ba0fb4612b77ed35d7627490e8e3dff56ab41454d9e8b23448940576"}, - {file = "numpy-2.2.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b0531f0b0e07643eb089df4c509d30d72c9ef40defa53e41363eca8a8cc61495"}, - {file = "numpy-2.2.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:e9e82dcb3f2ebbc8cb5ce1102d5f1c5ed236bf8a11730fb45ba82e2841ec21df"}, - {file = "numpy-2.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0d4142eb40ca6f94539e4db929410f2a46052a0fe7a2c1c59f6179c39938d2a"}, - {file = "numpy-2.2.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:356ca982c188acbfa6af0d694284d8cf20e95b1c3d0aefa8929376fea9146f60"}, - {file = "numpy-2.2.2.tar.gz", hash = "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f"}, + {file = "numpy-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cbc6472e01952d3d1b2772b720428f8b90e2deea8344e854df22b0618e9cce71"}, + {file = "numpy-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdfe0c22692a30cd830c0755746473ae66c4a8f2e7bd508b35fb3b6a0813d787"}, + {file = "numpy-2.2.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:e37242f5324ffd9f7ba5acf96d774f9276aa62a966c0bad8dae692deebec7716"}, + {file = "numpy-2.2.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:95172a21038c9b423e68be78fd0be6e1b97674cde269b76fe269a5dfa6fadf0b"}, + {file = "numpy-2.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5b47c440210c5d1d67e1cf434124e0b5c395eee1f5806fdd89b553ed1acd0a3"}, + {file = "numpy-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0391ea3622f5c51a2e29708877d56e3d276827ac5447d7f45e9bc4ade8923c52"}, + {file = "numpy-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f6b3dfc7661f8842babd8ea07e9897fe3d9b69a1d7e5fbb743e4160f9387833b"}, + {file = "numpy-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1ad78ce7f18ce4e7df1b2ea4019b5817a2f6a8a16e34ff2775f646adce0a5027"}, + {file = "numpy-2.2.3-cp310-cp310-win32.whl", hash = "sha256:5ebeb7ef54a7be11044c33a17b2624abe4307a75893c001a4800857956b41094"}, + {file = "numpy-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:596140185c7fa113563c67c2e894eabe0daea18cf8e33851738c19f70ce86aeb"}, + {file = "numpy-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:16372619ee728ed67a2a606a614f56d3eabc5b86f8b615c79d01957062826ca8"}, + {file = "numpy-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5521a06a3148686d9269c53b09f7d399a5725c47bbb5b35747e1cb76326b714b"}, + {file = "numpy-2.2.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7c8dde0ca2f77828815fd1aedfdf52e59071a5bae30dac3b4da2a335c672149a"}, + {file = "numpy-2.2.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:77974aba6c1bc26e3c205c2214f0d5b4305bdc719268b93e768ddb17e3fdd636"}, + {file = "numpy-2.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d42f9c36d06440e34226e8bd65ff065ca0963aeecada587b937011efa02cdc9d"}, + {file = "numpy-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2712c5179f40af9ddc8f6727f2bd910ea0eb50206daea75f58ddd9fa3f715bb"}, + {file = "numpy-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c8b0451d2ec95010d1db8ca733afc41f659f425b7f608af569711097fd6014e2"}, + {file = "numpy-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9b4a8148c57ecac25a16b0e11798cbe88edf5237b0df99973687dd866f05e1b"}, + {file = "numpy-2.2.3-cp311-cp311-win32.whl", hash = "sha256:1f45315b2dc58d8a3e7754fe4e38b6fce132dab284a92851e41b2b344f6441c5"}, + {file = "numpy-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f48ba6f6c13e5e49f3d3efb1b51c8193215c42ac82610a04624906a9270be6f"}, + {file = "numpy-2.2.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12c045f43b1d2915eca6b880a7f4a256f59d62df4f044788c8ba67709412128d"}, + {file = "numpy-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:87eed225fd415bbae787f93a457af7f5990b92a334e346f72070bf569b9c9c95"}, + {file = "numpy-2.2.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:712a64103d97c404e87d4d7c47fb0c7ff9acccc625ca2002848e0d53288b90ea"}, + {file = "numpy-2.2.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a5ae282abe60a2db0fd407072aff4599c279bcd6e9a2475500fc35b00a57c532"}, + {file = "numpy-2.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5266de33d4c3420973cf9ae3b98b54a2a6d53a559310e3236c4b2b06b9c07d4e"}, + {file = "numpy-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b787adbf04b0db1967798dba8da1af07e387908ed1553a0d6e74c084d1ceafe"}, + {file = "numpy-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:34c1b7e83f94f3b564b35f480f5652a47007dd91f7c839f404d03279cc8dd021"}, + {file = "numpy-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4d8335b5f1b6e2bce120d55fb17064b0262ff29b459e8493d1785c18ae2553b8"}, + {file = "numpy-2.2.3-cp312-cp312-win32.whl", hash = "sha256:4d9828d25fb246bedd31e04c9e75714a4087211ac348cb39c8c5f99dbb6683fe"}, + {file = "numpy-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:83807d445817326b4bcdaaaf8e8e9f1753da04341eceec705c001ff342002e5d"}, + {file = "numpy-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bfdb06b395385ea9b91bf55c1adf1b297c9fdb531552845ff1d3ea6e40d5aba"}, + {file = "numpy-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:23c9f4edbf4c065fddb10a4f6e8b6a244342d95966a48820c614891e5059bb50"}, + {file = "numpy-2.2.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:a0c03b6be48aaf92525cccf393265e02773be8fd9551a2f9adbe7db1fa2b60f1"}, + {file = "numpy-2.2.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:2376e317111daa0a6739e50f7ee2a6353f768489102308b0d98fcf4a04f7f3b5"}, + {file = "numpy-2.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fb62fe3d206d72fe1cfe31c4a1106ad2b136fcc1606093aeab314f02930fdf2"}, + {file = "numpy-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52659ad2534427dffcc36aac76bebdd02b67e3b7a619ac67543bc9bfe6b7cdb1"}, + {file = "numpy-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1b416af7d0ed3271cad0f0a0d0bee0911ed7eba23e66f8424d9f3dfcdcae1304"}, + {file = "numpy-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1402da8e0f435991983d0a9708b779f95a8c98c6b18a171b9f1be09005e64d9d"}, + {file = "numpy-2.2.3-cp313-cp313-win32.whl", hash = "sha256:136553f123ee2951bfcfbc264acd34a2fc2f29d7cdf610ce7daf672b6fbaa693"}, + {file = "numpy-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:5b732c8beef1d7bc2d9e476dbba20aaff6167bf205ad9aa8d30913859e82884b"}, + {file = "numpy-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:435e7a933b9fda8126130b046975a968cc2d833b505475e588339e09f7672890"}, + {file = "numpy-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7678556eeb0152cbd1522b684dcd215250885993dd00adb93679ec3c0e6e091c"}, + {file = "numpy-2.2.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:2e8da03bd561504d9b20e7a12340870dfc206c64ea59b4cfee9fceb95070ee94"}, + {file = "numpy-2.2.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:c9aa4496fd0e17e3843399f533d62857cef5900facf93e735ef65aa4bbc90ef0"}, + {file = "numpy-2.2.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4ca91d61a4bf61b0f2228f24bbfa6a9facd5f8af03759fe2a655c50ae2c6610"}, + {file = "numpy-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deaa09cd492e24fd9b15296844c0ad1b3c976da7907e1c1ed3a0ad21dded6f76"}, + {file = "numpy-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:246535e2f7496b7ac85deffe932896a3577be7af8fb7eebe7146444680297e9a"}, + {file = "numpy-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:daf43a3d1ea699402c5a850e5313680ac355b4adc9770cd5cfc2940e7861f1bf"}, + {file = "numpy-2.2.3-cp313-cp313t-win32.whl", hash = "sha256:cf802eef1f0134afb81fef94020351be4fe1d6681aadf9c5e862af6602af64ef"}, + {file = "numpy-2.2.3-cp313-cp313t-win_amd64.whl", hash = "sha256:aee2512827ceb6d7f517c8b85aa5d3923afe8fc7a57d028cffcd522f1c6fd082"}, + {file = "numpy-2.2.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3c2ec8a0f51d60f1e9c0c5ab116b7fc104b165ada3f6c58abf881cb2eb16044d"}, + {file = "numpy-2.2.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:ed2cf9ed4e8ebc3b754d398cba12f24359f018b416c380f577bbae112ca52fc9"}, + {file = "numpy-2.2.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39261798d208c3095ae4f7bc8eaeb3481ea8c6e03dc48028057d3cbdbdb8937e"}, + {file = "numpy-2.2.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:783145835458e60fa97afac25d511d00a1eca94d4a8f3ace9fe2043003c678e4"}, ] [[package]] @@ -1070,14 +1069,14 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.29.1" +version = "20.29.2" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779"}, - {file = "virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35"}, + {file = "virtualenv-20.29.2-py3-none-any.whl", hash = "sha256:febddfc3d1ea571bdb1dc0f98d7b45d24def7428214d4fb73cc486c9568cce6a"}, + {file = "virtualenv-20.29.2.tar.gz", hash = "sha256:fdaabebf6d03b5ba83ae0a02cfe96f48a716f4fae556461d180825866f75b728"}, ] [package.dependencies] diff --git a/pyproject.toml b/pyproject.toml index ca98501..43a2433 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,14 +5,15 @@ build-backend = "poetry.core.masonry.api" [project] name = "stegano" -version = "0.11.4" +version = "0.11.5" description = "A pure Python Steganography module." authors = [ {name = "Cédric Bonhomme", email= "cedric@cedricbonhomme.org"} ] license = "GPL-3.0-or-later" readme = "README.md" -keywords = ["steganography", "security", "stegano"] +keywords = ["Steganography", "Security", "Stegano"] + dynamic = ["classifiers"] requires-python = ">=3.10,<4.0"