diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index a315630..e768d8d 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -1,7 +1,7 @@ name: Bug Report description: Report an issue or a bug. title: "[BUG]: << Please use a comprehensive title... >>" -labels: [ Defect ] +labels: [Defect] body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/documentation-improvement.yml b/.github/ISSUE_TEMPLATE/documentation-improvement.yml index 50bc0ba..aac7542 100644 --- a/.github/ISSUE_TEMPLATE/documentation-improvement.yml +++ b/.github/ISSUE_TEMPLATE/documentation-improvement.yml @@ -1,7 +1,7 @@ name: Documentation Improvement description: Report a documentation improvement. title: "[DOCUMENTATION]: << Please use a comprehensive title... >>" -labels: [ Documentation ] +labels: [Documentation] body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml index c86bc6d..9e243c6 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -1,7 +1,7 @@ name: Feature Request description: Suggest a new feature to implement. title: "[FEATURE]: << Please use a comprehensive title... >>" -labels: [ Feature ] +labels: [Feature] body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml index 9d9c125..6ca6e80 100644 --- a/.github/ISSUE_TEMPLATE/question.yml +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -1,7 +1,7 @@ name: Question description: Ask a question. title: "[DISCUSSION]: << Please use a comprehensive title... >>" -labels: [ Discussion ] +labels: [Discussion] body: - type: markdown diff --git a/.github/workflows/continuous-integration-documentation.yml b/.github/workflows/continuous-integration-documentation.yml index 9e03bbe..677f18a 100644 --- a/.github/workflows/continuous-integration-documentation.yml +++ b/.github/workflows/continuous-integration-documentation.yml @@ -8,41 +8,41 @@ jobs: strategy: matrix: os: [ubuntu-22.04] - python-version: [3.11] + python-version: [3.12] fail-fast: false runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v1 - - name: Environment Variables - run: | - echo "CI_PYTHON_VERSION=${{ matrix.python-version }}" >> $GITHUB_ENV - echo "CI_PACKAGE=colour_demosaicing" >> $GITHUB_ENV - echo "CI_SHA=${{ github.sha }}" >> $GITHUB_ENV - echo "MPLBACKEND=AGG" >> $GITHUB_ENV - echo "COLOUR_SCIENCE__DOCUMENTATION_BUILD=True" >> $GITHUB_ENV - shell: bash - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - name: Install Dependencies - run: | - sudo apt-get update - sudo apt-get --yes install latexmk texlive-full - - name: Install Poetry - env: - POETRY_VERSION: 1.4.0 - run: | - curl -sSL https://install.python-poetry.org | POETRY_HOME=$HOME/.poetry python3 - - echo "$HOME/.poetry/bin" >> $GITHUB_PATH - shell: bash - - name: Install Package Dependencies - run: | - poetry run python -m pip install --upgrade pip - poetry install - poetry run python -c "import imageio;imageio.plugins.freeimage.download()" - shell: bash - - name: Build Documentation - run: | - poetry run invoke docs - shell: bash + - uses: actions/checkout@v1 + - name: Environment Variables + run: | + echo "CI_PYTHON_VERSION=${{ matrix.python-version }}" >> $GITHUB_ENV + echo "CI_PACKAGE=colour_demosaicing" >> $GITHUB_ENV + echo "CI_SHA=${{ github.sha }}" >> $GITHUB_ENV + echo "MPLBACKEND=AGG" >> $GITHUB_ENV + echo "COLOUR_SCIENCE__DOCUMENTATION_BUILD=True" >> $GITHUB_ENV + shell: bash + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install Dependencies + run: | + sudo apt-get update + sudo apt-get --yes install latexmk texlive-full + - name: Install Poetry + env: + POETRY_VERSION: 1.4.0 + run: | + curl -sSL https://install.python-poetry.org | POETRY_HOME=$HOME/.poetry python3 - + echo "$HOME/.poetry/bin" >> $GITHUB_PATH + shell: bash + - name: Install Package Dependencies + run: | + poetry run python -m pip install --upgrade pip + poetry install + poetry run python -c "import imageio;imageio.plugins.freeimage.download()" + shell: bash + - name: Build Documentation + run: | + poetry run invoke docs + shell: bash diff --git a/.github/workflows/continuous-integration-quality-unit-tests.yml b/.github/workflows/continuous-integration-quality-unit-tests.yml index aa32687..33336dd 100644 --- a/.github/workflows/continuous-integration-quality-unit-tests.yml +++ b/.github/workflows/continuous-integration-quality-unit-tests.yml @@ -8,55 +8,55 @@ jobs: strategy: matrix: os: [macOS-latest, ubuntu-22.04, windows-latest] - python-version: [3.9, '3.10', 3.11] + python-version: [3.9, "3.10", 3.11, 3.12] fail-fast: false runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v1 - with: - submodules: true - - name: Environment Variables - run: | - echo "CI_PYTHON_VERSION=${{ matrix.python-version }}" >> $GITHUB_ENV - echo "CI_PACKAGE=colour_demosaicing" >> $GITHUB_ENV - echo "CI_SHA=${{ github.sha }}" >> $GITHUB_ENV - echo "COVERALLS_REPO_TOKEN=${{ secrets.COVERALLS_REPO_TOKEN }}" >> $GITHUB_ENV - shell: bash - - name: Set up Python 3.9 for Pre-Commit - uses: actions/setup-python@v1 - with: - python-version: 3.9 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - name: Install Poetry - env: - POETRY_VERSION: 1.4.0 - run: | - curl -sSL https://install.python-poetry.org | POETRY_HOME=$HOME/.poetry python3 - - echo "$HOME/.poetry/bin" >> $GITHUB_PATH - shell: bash - - name: Install Package Dependencies - run: | - poetry run python -m pip install --upgrade pip - poetry install - poetry run python -c "import imageio;imageio.plugins.freeimage.download()" - shell: bash - - name: Pre-Commit (All Files) - run: | - poetry run pre-commit run --all-files - shell: bash - - name: Test Optimised Python Execution - run: | - poetry run python -OO -c "import $CI_PACKAGE" - shell: bash - - name: Test with Pytest - run: | - poetry run python -W ignore -m pytest --doctest-modules --ignore=$CI_PACKAGE/examples --cov=$CI_PACKAGE $CI_PACKAGE - shell: bash - - name: Upload Coverage to coveralls.io - if: matrix.os == 'macOS-latest' && matrix.python-version == '3.11' - run: | - if [ -z "$COVERALLS_REPO_TOKEN" ]; then echo \"COVERALLS_REPO_TOKEN\" secret is undefined!; else poetry run coveralls; fi - shell: bash + - uses: actions/checkout@v1 + with: + submodules: true + - name: Environment Variables + run: | + echo "CI_PYTHON_VERSION=${{ matrix.python-version }}" >> $GITHUB_ENV + echo "CI_PACKAGE=colour_demosaicing" >> $GITHUB_ENV + echo "CI_SHA=${{ github.sha }}" >> $GITHUB_ENV + echo "COVERALLS_REPO_TOKEN=${{ secrets.COVERALLS_REPO_TOKEN }}" >> $GITHUB_ENV + shell: bash + - name: Set up Python 3.9 for Pre-Commit + uses: actions/setup-python@v4 + with: + python-version: 3.9 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install Poetry + env: + POETRY_VERSION: 1.4.0 + run: | + curl -sSL https://install.python-poetry.org | POETRY_HOME=$HOME/.poetry python3 - + echo "$HOME/.poetry/bin" >> $GITHUB_PATH + shell: bash + - name: Install Package Dependencies + run: | + poetry run python -m pip install --upgrade pip + poetry install + poetry run python -c "import imageio;imageio.plugins.freeimage.download()" + shell: bash + - name: Pre-Commit (All Files) + run: | + poetry run pre-commit run --all-files + shell: bash + - name: Test Optimised Python Execution + run: | + poetry run python -OO -c "import $CI_PACKAGE" + shell: bash + - name: Test with Pytest + run: | + poetry run python -W ignore -m pytest --doctest-modules --ignore=$CI_PACKAGE/examples --cov=$CI_PACKAGE $CI_PACKAGE + shell: bash + - name: Upload Coverage to coveralls.io + if: matrix.os == 'macOS-latest' && matrix.python-version == '3.11' + run: | + if [ -z "$COVERALLS_REPO_TOKEN" ]; then echo \"COVERALLS_REPO_TOKEN\" secret is undefined!; else poetry run coveralls; fi + shell: bash diff --git a/.github/workflows/continuous-integration-static-type-checking.yml b/.github/workflows/continuous-integration-static-type-checking.yml index 88ec0fd..e74dd22 100644 --- a/.github/workflows/continuous-integration-static-type-checking.yml +++ b/.github/workflows/continuous-integration-static-type-checking.yml @@ -8,22 +8,22 @@ jobs: strategy: matrix: os: [macOS-latest] - python-version: [3.11] + python-version: [3.12] fail-fast: false runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v1 - - name: Environment Variables - run: | - echo "CI_PACKAGE=colour_demosaicing" >> $GITHUB_ENV - shell: bash - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v1 - with: - python-version: ${{ matrix.python-version }} - - name: Install Package Dependencies - run: | - pip install -r requirements.txt - - name: Static Type Checking - run: | - pyright --skipunannotated + - uses: actions/checkout@v1 + - name: Environment Variables + run: | + echo "CI_PACKAGE=colour_demosaicing" >> $GITHUB_ENV + shell: bash + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install Package Dependencies + run: | + pip install -r requirements.txt + - name: Static Type Checking + run: | + pyright --skipunannotated diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b527df6..054a788 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,19 +1,55 @@ repos: -- repo: https://github.com/ikamensh/flynt/ - rev: '1.0.1' + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: "v4.5.0" hooks: - - id: flynt -- repo: https://github.com/charliermarsh/ruff-pre-commit - rev: 'v0.0.285' + - id: check-added-large-files + - id: check-case-conflict + - id: check-merge-conflict + - id: check-symlinks + - id: check-yaml + - id: debug-statements + - id: end-of-file-fixer + - id: mixed-line-ending + - id: name-tests-test + args: ["--pytest-test-first"] + - id: requirements-txt-fixer + - id: trailing-whitespace + - repo: https://github.com/codespell-project/codespell + rev: v2.2.6 hooks: - - id: ruff -- repo: https://github.com/psf/black - rev: 23.7.0 + - id: codespell + exclude: "BIBLIOGRAPHY.bib|CONTRIBUTORS.rst|.*.ipynb" + - repo: https://github.com/ikamensh/flynt + rev: "1.0.1" hooks: - - id: black - language_version: python3.9 -- repo: https://github.com/keewis/blackdoc - rev: v0.3.8 + - id: flynt + args: [--verbose] + - repo: https://github.com/PyCQA/isort + rev: "5.12.0" hooks: - - id: blackdoc - language_version: python3.9 + - id: isort + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: "v0.1.6" + hooks: + - id: ruff + - repo: https://github.com/psf/black-pre-commit-mirror + rev: 23.11.0 + hooks: + - id: black + language_version: python3.9 + - repo: https://github.com/adamchainz/blacken-docs + rev: 1.16.0 + hooks: + - id: blacken-docs + language_version: python3.9 + - repo: https://github.com/pre-commit/mirrors-prettier + rev: "v3.1.0" + hooks: + - id: prettier + exclude: config-aces-reference.ocio.yaml + - repo: https://github.com/pre-commit/pygrep-hooks + rev: "v1.10.0" + hooks: + - id: rst-backticks + - id: rst-directive-colons + - id: rst-inline-touching-normal diff --git a/.readthedocs.yaml b/.readthedocs.yaml index c93eb8a..47935c5 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -6,7 +6,7 @@ build: python: "3.11" sphinx: - configuration: docs/conf.py + configuration: docs/conf.py formats: - htmlzip @@ -14,4 +14,4 @@ formats: python: install: - - requirements: docs/requirements.txt \ No newline at end of file + - requirements: docs/requirements.txt diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 67ab8e5..58ec1de 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -8,23 +8,22 @@ In the interest of fostering an open and welcoming environment, we as contributo Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others’ private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities - Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. @@ -35,7 +34,6 @@ This Code of Conduct applies within all project spaces, and it also applies when ## Enforcement - Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting Thomas Mansencal and Michael Mauderer via email at thomas@colour-science.org and michael@colour-science.org respectively. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership. @@ -46,6 +44,5 @@ This Code of Conduct is adapted from the Contributor Covenant, version 1.4, avai For answers to common questions about this code of conduct, see [https://www.contributor-covenant.org/faq][faq]. - [homepage]: https://www.contributor-covenant.org/version/1/4/code-of-conduct.html -[faq]: https://www.contributor-covenant.org/faq \ No newline at end of file +[faq]: https://www.contributor-covenant.org/faq diff --git a/colour_demosaicing/__init__.py b/colour_demosaicing/__init__.py index 1796d42..341d49a 100644 --- a/colour_demosaicing/__init__.py +++ b/colour_demosaicing/__init__.py @@ -12,11 +12,11 @@ from __future__ import annotations import contextlib -import numpy as np import os import subprocess import colour +import numpy as np from .bayer import ( demosaicing_CFA_Bayer_bilinear, diff --git a/colour_demosaicing/bayer/demosaicing/bilinear.py b/colour_demosaicing/bayer/demosaicing/bilinear.py index 55033d3..3c4b842 100644 --- a/colour_demosaicing/bayer/demosaicing/bilinear.py +++ b/colour_demosaicing/bayer/demosaicing/bilinear.py @@ -14,10 +14,9 @@ from __future__ import annotations import numpy as np -from scipy.ndimage.filters import convolve - from colour.hints import ArrayLike, Literal, NDArrayFloat from colour.utilities import as_float_array, tstack +from scipy.ndimage.filters import convolve from colour_demosaicing.bayer import masks_CFA_Bayer diff --git a/colour_demosaicing/bayer/demosaicing/malvar2004.py b/colour_demosaicing/bayer/demosaicing/malvar2004.py index 5ca880b..69ba00b 100644 --- a/colour_demosaicing/bayer/demosaicing/malvar2004.py +++ b/colour_demosaicing/bayer/demosaicing/malvar2004.py @@ -16,10 +16,9 @@ from __future__ import annotations import numpy as np -from scipy.ndimage.filters import convolve - from colour.hints import ArrayLike, Literal, NDArrayFloat from colour.utilities import as_float_array, ones, tstack +from scipy.ndimage.filters import convolve from colour_demosaicing.bayer import masks_CFA_Bayer diff --git a/colour_demosaicing/bayer/demosaicing/menon2007.py b/colour_demosaicing/bayer/demosaicing/menon2007.py index c2dc29a..b4aa2b2 100644 --- a/colour_demosaicing/bayer/demosaicing/menon2007.py +++ b/colour_demosaicing/bayer/demosaicing/menon2007.py @@ -15,10 +15,9 @@ from __future__ import annotations import numpy as np -from scipy.ndimage.filters import convolve, convolve1d - from colour.hints import ArrayLike, Literal, NDArrayFloat from colour.utilities import as_float_array, ones, tsplit, tstack +from scipy.ndimage.filters import convolve, convolve1d from colour_demosaicing.bayer import masks_CFA_Bayer diff --git a/colour_demosaicing/bayer/demosaicing/tests/test_bilinear.py b/colour_demosaicing/bayer/demosaicing/tests/test_bilinear.py index 2493828..386c7be 100644 --- a/colour_demosaicing/bayer/demosaicing/tests/test_bilinear.py +++ b/colour_demosaicing/bayer/demosaicing/tests/test_bilinear.py @@ -6,11 +6,12 @@ from __future__ import annotations -import numpy as np import os import unittest +import numpy as np from colour import read_image +from colour.constants import TOLERANCE_ABSOLUTE_TESTS from colour_demosaicing import ROOT_RESOURCES_TESTS from colour_demosaicing.bayer import demosaicing_CFA_Bayer_bilinear @@ -52,12 +53,12 @@ def test_demosaicing_CFA_Bayer_bilinear(self): ROOT_RESOURCES_BAYER, f"Lighthouse_Bilinear_{pattern}.exr" ) - np.testing.assert_array_almost_equal( + np.testing.assert_allclose( demosaicing_CFA_Bayer_bilinear( read_image(str(CFA))[..., 0], pattern ), read_image(str(RGB)), - decimal=7, + atol=TOLERANCE_ABSOLUTE_TESTS, ) diff --git a/colour_demosaicing/bayer/demosaicing/tests/test_malvar2004.py b/colour_demosaicing/bayer/demosaicing/tests/test_malvar2004.py index 2481c42..7eb5d59 100644 --- a/colour_demosaicing/bayer/demosaicing/tests/test_malvar2004.py +++ b/colour_demosaicing/bayer/demosaicing/tests/test_malvar2004.py @@ -6,11 +6,12 @@ from __future__ import annotations -import numpy as np import os import unittest +import numpy as np from colour import read_image +from colour.constants import TOLERANCE_ABSOLUTE_TESTS from colour_demosaicing import ROOT_RESOURCES_TESTS from colour_demosaicing.bayer import demosaicing_CFA_Bayer_Malvar2004 @@ -52,12 +53,12 @@ def test_demosaicing_CFA_Bayer_Malvar2004(self): ROOT_RESOURCES_BAYER, f"Lighthouse_Malvar2004_{pattern}.exr" ) - np.testing.assert_array_almost_equal( + np.testing.assert_allclose( demosaicing_CFA_Bayer_Malvar2004( read_image(str(CFA))[..., 0], pattern ), read_image(str(RGB)), - decimal=7, + atol=TOLERANCE_ABSOLUTE_TESTS, ) diff --git a/colour_demosaicing/bayer/demosaicing/tests/test_menon2007.py b/colour_demosaicing/bayer/demosaicing/tests/test_menon2007.py index f9d890b..b04bbd1 100644 --- a/colour_demosaicing/bayer/demosaicing/tests/test_menon2007.py +++ b/colour_demosaicing/bayer/demosaicing/tests/test_menon2007.py @@ -6,11 +6,12 @@ from __future__ import annotations -import numpy as np import os import unittest +import numpy as np from colour import read_image +from colour.constants import TOLERANCE_ABSOLUTE_TESTS from colour_demosaicing import ROOT_RESOURCES_TESTS from colour_demosaicing.bayer import demosaicing_CFA_Bayer_Menon2007 @@ -52,25 +53,25 @@ def test_demosaicing_CFA_Bayer_Menon2007(self): ROOT_RESOURCES_BAYER, f"Lighthouse_Menon2007_{pattern}.exr" ) - np.testing.assert_array_almost_equal( + np.testing.assert_allclose( demosaicing_CFA_Bayer_Menon2007( read_image(str(CFA))[..., 0], pattern ), read_image(str(RGB)), - decimal=7, + atol=TOLERANCE_ABSOLUTE_TESTS, ) RGB = os.path.join( ROOT_RESOURCES_BAYER, f"Lighthouse_Menon2007_NR_{pattern}.exr" ) - np.testing.assert_array_almost_equal( + np.testing.assert_allclose( demosaicing_CFA_Bayer_Menon2007( read_image(str(CFA))[..., 0], pattern, refining_step=False, ), read_image(str(RGB)), - decimal=7, + atol=TOLERANCE_ABSOLUTE_TESTS, ) diff --git a/colour_demosaicing/bayer/masks.py b/colour_demosaicing/bayer/masks.py index 1c99bb1..6d920f3 100644 --- a/colour_demosaicing/bayer/masks.py +++ b/colour_demosaicing/bayer/masks.py @@ -8,7 +8,6 @@ from __future__ import annotations import numpy as np - from colour.hints import Literal, NDArray, Tuple from colour.utilities import validate_method diff --git a/colour_demosaicing/bayer/tests/test_masks.py b/colour_demosaicing/bayer/tests/test_masks.py index a64b0dc..2f98d08 100644 --- a/colour_demosaicing/bayer/tests/test_masks.py +++ b/colour_demosaicing/bayer/tests/test_masks.py @@ -3,11 +3,12 @@ from __future__ import annotations -import numpy as np import os import unittest +import numpy as np from colour import read_image +from colour.constants import TOLERANCE_ABSOLUTE_TESTS from colour.utilities import tstack from colour_demosaicing import ROOT_RESOURCES_TESTS @@ -44,10 +45,10 @@ def test_masks_CFA_Bayer(self): for pattern in ("RGGB", "BGGR", "GRBG", "GBRG"): mask = os.path.join(ROOT_RESOURCES_BAYER, f"{pattern}_Masks.exr") - np.testing.assert_array_almost_equal( + np.testing.assert_allclose( tstack(masks_CFA_Bayer((8, 8), pattern)), read_image(str(mask)), - decimal=7, + atol=TOLERANCE_ABSOLUTE_TESTS, ) diff --git a/colour_demosaicing/bayer/tests/test_mosaicing.py b/colour_demosaicing/bayer/tests/test_mosaicing.py index b191d52..562dc79 100644 --- a/colour_demosaicing/bayer/tests/test_mosaicing.py +++ b/colour_demosaicing/bayer/tests/test_mosaicing.py @@ -6,11 +6,12 @@ from __future__ import annotations -import numpy as np import os import unittest +import numpy as np from colour import read_image +from colour.constants import TOLERANCE_ABSOLUTE_TESTS from colour_demosaicing import ROOT_RESOURCES_TESTS from colour_demosaicing.bayer import mosaicing_CFA_Bayer @@ -52,10 +53,10 @@ def test_mosaicing_CFA_Bayer(self): CFA = os.path.join( ROOT_RESOURCES_BAYER, f"Lighthouse_CFA_{pattern}.exr" ) - np.testing.assert_array_almost_equal( + np.testing.assert_allclose( mosaicing_CFA_Bayer(image, pattern), read_image(str(CFA))[..., 0], - decimal=7, + atol=TOLERANCE_ABSOLUTE_TESTS, ) diff --git a/docs/conf.py b/docs/conf.py index 6944c67..cc0ea11 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -31,11 +31,12 @@ ] intersphinx_mapping = { - "python": ("https://docs.python.org/3.11", None), + "python": ("https://docs.python.org/3/", None), + "colour-science": ("https://colour.readthedocs.io/en/stable/", None), "matplotlib": ("https://matplotlib.org/stable", None), "numpy": ("https://numpy.org/doc/stable", None), - "pandas": ("https://pandas.pydata.org/pandas-docs/dev", None), - "scipy": ("https://docs.scipy.org/doc/scipy-1.8.0/", None), + "pandas": ("https://pandas.pydata.org/pandas-docs/stable", None), + "scipy": ("https://docs.scipy.org/doc/scipy/", None), } autodoc_member_order = "bysource" diff --git a/docs/requirements.txt b/docs/requirements.txt index 9cde8f7..99d627e 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,50 +1,50 @@ -accessible-pygments==0.0.4 ; python_version >= "3.9" and python_version < "3.12" -alabaster==0.7.13 ; python_version >= "3.9" and python_version < "3.12" -babel==2.12.1 ; python_version >= "3.9" and python_version < "3.12" -beautifulsoup4==4.12.2 ; python_version >= "3.9" and python_version < "3.12" -biblib-simple==0.1.2 ; python_version >= "3.9" and python_version < "3.12" -certifi==2023.7.22 ; python_version >= "3.9" and python_version < "3.12" -charset-normalizer==3.2.0 ; python_version >= "3.9" and python_version < "3.12" -colorama==0.4.6 ; python_version >= "3.9" and python_version < "3.12" and sys_platform == "win32" -colour-science==0.4.3 ; python_version >= "3.9" and python_version < "3.12" -contourpy==1.1.0 ; python_version >= "3.9" and python_version < "3.12" -cycler==0.11.0 ; python_version >= "3.9" and python_version < "3.12" -docutils==0.17.1 ; python_version >= "3.9" and python_version < "3.12" -fonttools==4.42.1 ; python_version >= "3.9" and python_version < "3.12" -idna==3.4 ; python_version >= "3.9" and python_version < "3.12" -imageio==2.31.2 ; python_version >= "3.9" and python_version < "3.12" -imagesize==1.4.1 ; python_version >= "3.9" and python_version < "3.12" -importlib-metadata==6.8.0 ; python_version >= "3.9" and python_version < "3.10" -importlib-resources==6.0.1 ; python_version >= "3.9" and python_version < "3.10" -jinja2==3.1.2 ; python_version >= "3.9" and python_version < "3.12" -kiwisolver==1.4.5 ; python_version >= "3.9" and python_version < "3.12" -latexcodec==2.0.1 ; python_version >= "3.9" and python_version < "3.12" -markupsafe==2.1.3 ; python_version >= "3.9" and python_version < "3.12" -matplotlib==3.7.2 ; python_version >= "3.9" and python_version < "3.12" -numpy==1.25.2 ; python_version >= "3.9" and python_version < "3.12" -packaging==23.1 ; python_version >= "3.9" and python_version < "3.12" -pillow==10.0.0 ; python_version >= "3.9" and python_version < "3.12" -pybtex-docutils==1.0.3 ; python_version >= "3.9" and python_version < "3.12" -pybtex==0.24.0 ; python_version >= "3.9" and python_version < "3.12" -pydata-sphinx-theme==0.13.3 ; python_version >= "3.9" and python_version < "3.12" -pygments==2.16.1 ; python_version >= "3.9" and python_version < "3.12" -pyparsing==3.0.9 ; python_version >= "3.9" and python_version < "3.12" -python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "3.12" -pyyaml==6.0.1 ; python_version >= "3.9" and python_version < "3.12" -requests==2.31.0 ; python_version >= "3.9" and python_version < "3.12" -restructuredtext-lint==1.4.0 ; python_version >= "3.9" and python_version < "3.12" -scipy==1.11.2 ; python_version >= "3.9" and python_version < "3.12" -six==1.16.0 ; python_version >= "3.9" and python_version < "3.12" -snowballstemmer==2.2.0 ; python_version >= "3.9" and python_version < "3.12" -soupsieve==2.4.1 ; python_version >= "3.9" and python_version < "3.12" -sphinx==4.5.0 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-bibtex==2.6.0 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.9" and python_version < "3.12" -typing-extensions==4.7.1 ; python_version >= "3.9" and python_version < "3.12" -urllib3==2.0.4 ; python_version >= "3.9" and python_version < "3.12" -zipp==3.16.2 ; python_version >= "3.9" and python_version < "3.10" +accessible-pygments==0.0.4 ; python_version >= "3.9" and python_version < "3.13" +alabaster==0.7.13 ; python_version >= "3.9" and python_version < "3.13" +babel==2.14.0 ; python_version >= "3.9" and python_version < "3.13" +beautifulsoup4==4.12.2 ; python_version >= "3.9" and python_version < "3.13" +biblib-simple==0.1.2 ; python_version >= "3.9" and python_version < "3.13" +certifi==2023.11.17 ; python_version >= "3.9" and python_version < "3.13" +charset-normalizer==3.3.2 ; python_version >= "3.9" and python_version < "3.13" +colorama==0.4.6 ; python_version >= "3.9" and python_version < "3.13" and sys_platform == "win32" +colour-science==0.4.4 ; python_version >= "3.9" and python_version < "3.13" +contourpy==1.2.0 ; python_version >= "3.9" and python_version < "3.13" +cycler==0.12.1 ; python_version >= "3.9" and python_version < "3.13" +docutils==0.20.1 ; python_version >= "3.9" and python_version < "3.13" +fonttools==4.46.0 ; python_version >= "3.9" and python_version < "3.13" +idna==3.6 ; python_version >= "3.9" and python_version < "3.13" +imageio==2.33.1 ; python_version >= "3.9" and python_version < "3.13" +imagesize==1.4.1 ; python_version >= "3.9" and python_version < "3.13" +importlib-metadata==7.0.0 ; python_version >= "3.9" and python_version < "3.10" +importlib-resources==6.1.1 ; python_version >= "3.9" and python_version < "3.10" +jinja2==3.1.2 ; python_version >= "3.9" and python_version < "3.13" +kiwisolver==1.4.5 ; python_version >= "3.9" and python_version < "3.13" +latexcodec==2.0.1 ; python_version >= "3.9" and python_version < "3.13" +markupsafe==2.1.3 ; python_version >= "3.9" and python_version < "3.13" +matplotlib==3.8.2 ; python_version >= "3.9" and python_version < "3.13" +numpy==1.26.2 ; python_version >= "3.9" and python_version < "3.13" +packaging==23.2 ; python_version >= "3.9" and python_version < "3.13" +pillow==10.1.0 ; python_version >= "3.9" and python_version < "3.13" +pybtex==0.24.0 ; python_version >= "3.9" and python_version < "3.13" +pybtex-docutils==1.0.3 ; python_version >= "3.9" and python_version < "3.13" +pydata-sphinx-theme==0.14.4 ; python_version >= "3.9" and python_version < "3.13" +pygments==2.17.2 ; python_version >= "3.9" and python_version < "3.13" +pyparsing==3.1.1 ; python_version >= "3.9" and python_version < "3.13" +python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "3.13" +pyyaml==6.0.1 ; python_version >= "3.9" and python_version < "3.13" +requests==2.31.0 ; python_version >= "3.9" and python_version < "3.13" +restructuredtext-lint==1.4.0 ; python_version >= "3.9" and python_version < "3.13" +scipy==1.11.4 ; python_version >= "3.9" and python_version < "3.13" +six==1.16.0 ; python_version >= "3.9" and python_version < "3.13" +snowballstemmer==2.2.0 ; python_version >= "3.9" and python_version < "3.13" +soupsieve==2.5 ; python_version >= "3.9" and python_version < "3.13" +sphinx==7.2.6 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-applehelp==1.0.7 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-bibtex==2.6.1 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-devhelp==1.0.5 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-htmlhelp==2.0.4 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-qthelp==1.0.6 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-serializinghtml==1.1.9 ; python_version >= "3.9" and python_version < "3.13" +typing-extensions==4.9.0 ; python_version >= "3.9" and python_version < "3.13" +urllib3==2.1.0 ; python_version >= "3.9" and python_version < "3.13" +zipp==3.17.0 ; python_version >= "3.9" and python_version < "3.10" diff --git a/pyproject.toml b/pyproject.toml index 65177f6..e7b66a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,8 +48,8 @@ exclude = [ ] [tool.poetry.dependencies] -python = ">= 3.9, < 3.12" -colour-science = ">= 0.4.3" +python = ">= 3.9, < 3.13" +colour-science = ">= 0.4.4" imageio = ">= 2, < 3" numpy = ">= 1.22, < 2" scipy = ">= 1.8, < 2" @@ -59,19 +59,15 @@ typing-extensions = ">= 4, < 5" matplotlib = ">= 3.5, != 3.5.0, != 3.5.1" [tool.poetry.group.dev.dependencies] -black = "*" -blackdoc = "*" coverage = "!= 6.3" coveralls = "*" -flynt = "*" invoke = "*" jupyter = "*" -pre-commit = "*" +pre-commit = ">= 3.5" pyright = "*" pytest = "*" pytest-cov = "*" pytest-xdist = "*" -ruff = "*" toml = "*" twine = "*" @@ -95,6 +91,16 @@ exclude = ''' [tool.flynt] line_length=999 +[tool.isort] +ensure_newline_before_comments = true +force_grid_wrap = 0 +include_trailing_comma = true +line_length = 88 +multi_line_output = 3 +skip_glob = ["colour_demosaicing/**/__init__.py"] +split_on_trailing_comma = true +use_parentheses = true + [tool.pyright] reportMissingImports = false reportMissingModuleSource = false diff --git a/requirements.txt b/requirements.txt index edd4afd..e885a0b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,180 +1,171 @@ -accessible-pygments==0.0.4 ; python_version >= "3.9" and python_version < "3.12" -alabaster==0.7.13 ; python_version >= "3.9" and python_version < "3.12" -anyio==3.7.1 ; python_version >= "3.9" and python_version < "3.12" -appnope==0.1.3 ; python_version >= "3.9" and python_version < "3.12" and (platform_system == "Darwin" or sys_platform == "darwin") -argon2-cffi-bindings==21.2.0 ; python_version >= "3.9" and python_version < "3.12" -argon2-cffi==23.1.0 ; python_version >= "3.9" and python_version < "3.12" -arrow==1.2.3 ; python_version >= "3.9" and python_version < "3.12" -astor==0.8.1 ; python_version >= "3.9" and python_version < "3.12" -asttokens==2.2.1 ; python_version >= "3.9" and python_version < "3.12" -async-lru==2.0.4 ; python_version >= "3.9" and python_version < "3.12" -attrs==23.1.0 ; python_version >= "3.9" and python_version < "3.12" -babel==2.12.1 ; python_version >= "3.9" and python_version < "3.12" -backcall==0.2.0 ; python_version >= "3.9" and python_version < "3.12" -beautifulsoup4==4.12.2 ; python_version >= "3.9" and python_version < "3.12" -biblib-simple==0.1.2 ; python_version >= "3.9" and python_version < "3.12" -black==23.7.0 ; python_version >= "3.9" and python_version < "3.12" -blackdoc==0.3.8 ; python_version >= "3.9" and python_version < "3.12" -bleach==6.0.0 ; python_version >= "3.9" and python_version < "3.12" -certifi==2023.7.22 ; python_version >= "3.9" and python_version < "3.12" -cffi==1.15.1 ; python_version >= "3.9" and python_version < "3.12" -cfgv==3.4.0 ; python_version >= "3.9" and python_version < "3.12" -charset-normalizer==3.2.0 ; python_version >= "3.9" and python_version < "3.12" -click==8.1.7 ; python_version >= "3.9" and python_version < "3.12" -colorama==0.4.6 ; python_version >= "3.9" and python_version < "3.12" and (sys_platform == "win32" or platform_system == "Windows") -colour-science==0.4.3 ; python_version >= "3.9" and python_version < "3.12" -comm==0.1.4 ; python_version >= "3.9" and python_version < "3.12" -contourpy==1.1.0 ; python_version >= "3.9" and python_version < "3.12" -coverage==6.5.0 ; python_version >= "3.9" and python_version < "3.12" -coverage[toml]==6.5.0 ; python_version >= "3.9" and python_version < "3.12" -coveralls==3.3.1 ; python_version >= "3.9" and python_version < "3.12" -cryptography==41.0.3 ; python_version >= "3.9" and python_version < "3.12" and sys_platform == "linux" -cycler==0.11.0 ; python_version >= "3.9" and python_version < "3.12" -debugpy==1.6.7.post1 ; python_version >= "3.9" and python_version < "3.12" -decorator==5.1.1 ; python_version >= "3.9" and python_version < "3.12" -defusedxml==0.7.1 ; python_version >= "3.9" and python_version < "3.12" -distlib==0.3.7 ; python_version >= "3.9" and python_version < "3.12" -docopt==0.6.2 ; python_version >= "3.9" and python_version < "3.12" -docutils==0.17.1 ; python_version >= "3.9" and python_version < "3.12" -exceptiongroup==1.1.3 ; python_version >= "3.9" and python_version < "3.11" -execnet==2.0.2 ; python_version >= "3.9" and python_version < "3.12" -executing==1.2.0 ; python_version >= "3.9" and python_version < "3.12" -fastjsonschema==2.18.0 ; python_version >= "3.9" and python_version < "3.12" -filelock==3.12.2 ; python_version >= "3.9" and python_version < "3.12" -flynt==1.0.1 ; python_version >= "3.9" and python_version < "3.12" -fonttools==4.42.1 ; python_version >= "3.9" and python_version < "3.12" -fqdn==1.5.1 ; python_version >= "3.9" and python_version < "3.12" -identify==2.5.27 ; python_version >= "3.9" and python_version < "3.12" -idna==3.4 ; python_version >= "3.9" and python_version < "3.12" -imageio==2.31.2 ; python_version >= "3.9" and python_version < "3.12" -imagesize==1.4.1 ; python_version >= "3.9" and python_version < "3.12" -importlib-metadata==6.8.0 ; python_version >= "3.9" and python_version < "3.12" -importlib-resources==6.0.1 ; python_version >= "3.9" and python_version < "3.10" -iniconfig==2.0.0 ; python_version >= "3.9" and python_version < "3.12" -invoke==2.2.0 ; python_version >= "3.9" and python_version < "3.12" -ipykernel==6.25.1 ; python_version >= "3.9" and python_version < "3.12" -ipython-genutils==0.2.0 ; python_version >= "3.9" and python_version < "3.12" -ipython==8.14.0 ; python_version >= "3.9" and python_version < "3.12" -ipywidgets==8.1.0 ; python_version >= "3.9" and python_version < "3.12" -isoduration==20.11.0 ; python_version >= "3.9" and python_version < "3.12" -jaraco-classes==3.3.0 ; python_version >= "3.9" and python_version < "3.12" -jedi==0.19.0 ; python_version >= "3.9" and python_version < "3.12" -jeepney==0.8.0 ; python_version >= "3.9" and python_version < "3.12" and sys_platform == "linux" -jinja2==3.1.2 ; python_version >= "3.9" and python_version < "3.12" -json5==0.9.14 ; python_version >= "3.9" and python_version < "3.12" -jsonpointer==2.4 ; python_version >= "3.9" and python_version < "3.12" -jsonschema-specifications==2023.7.1 ; python_version >= "3.9" and python_version < "3.12" -jsonschema==4.19.0 ; python_version >= "3.9" and python_version < "3.12" -jsonschema[format-nongpl]==4.19.0 ; python_version >= "3.9" and python_version < "3.12" -jupyter-client==8.3.0 ; python_version >= "3.9" and python_version < "3.12" -jupyter-console==6.6.3 ; python_version >= "3.9" and python_version < "3.12" -jupyter-core==5.3.1 ; python_version >= "3.9" and python_version < "3.12" -jupyter-events==0.7.0 ; python_version >= "3.9" and python_version < "3.12" -jupyter-lsp==2.2.0 ; python_version >= "3.9" and python_version < "3.12" -jupyter-server-terminals==0.4.4 ; python_version >= "3.9" and python_version < "3.12" -jupyter-server==2.7.2 ; python_version >= "3.9" and python_version < "3.12" -jupyter==1.0.0 ; python_version >= "3.9" and python_version < "3.12" -jupyterlab-pygments==0.2.2 ; python_version >= "3.9" and python_version < "3.12" -jupyterlab-server==2.24.0 ; python_version >= "3.9" and python_version < "3.12" -jupyterlab-widgets==3.0.8 ; python_version >= "3.9" and python_version < "3.12" -jupyterlab==4.0.5 ; python_version >= "3.9" and python_version < "3.12" -keyring==24.2.0 ; python_version >= "3.9" and python_version < "3.12" -kiwisolver==1.4.5 ; python_version >= "3.9" and python_version < "3.12" -latexcodec==2.0.1 ; python_version >= "3.9" and python_version < "3.12" -markdown-it-py==3.0.0 ; python_version >= "3.9" and python_version < "3.12" -markupsafe==2.1.3 ; python_version >= "3.9" and python_version < "3.12" -matplotlib-inline==0.1.6 ; python_version >= "3.9" and python_version < "3.12" -matplotlib==3.7.2 ; python_version >= "3.9" and python_version < "3.12" -mdurl==0.1.2 ; python_version >= "3.9" and python_version < "3.12" -mistune==3.0.1 ; python_version >= "3.9" and python_version < "3.12" -more-itertools==10.1.0 ; python_version >= "3.9" and python_version < "3.12" -mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "3.12" -nbclient==0.8.0 ; python_version >= "3.9" and python_version < "3.12" -nbconvert==7.7.4 ; python_version >= "3.9" and python_version < "3.12" -nbformat==5.9.2 ; python_version >= "3.9" and python_version < "3.12" -nest-asyncio==1.5.7 ; python_version >= "3.9" and python_version < "3.12" -nodeenv==1.8.0 ; python_version >= "3.9" and python_version < "3.12" -notebook-shim==0.2.3 ; python_version >= "3.9" and python_version < "3.12" -notebook==7.0.2 ; python_version >= "3.9" and python_version < "3.12" -numpy==1.25.2 ; python_version >= "3.9" and python_version < "3.12" -overrides==7.4.0 ; python_version >= "3.9" and python_version < "3.12" -packaging==23.1 ; python_version >= "3.9" and python_version < "3.12" -pandocfilters==1.5.0 ; python_version >= "3.9" and python_version < "3.12" -parso==0.8.3 ; python_version >= "3.9" and python_version < "3.12" -pathspec==0.11.2 ; python_version >= "3.9" and python_version < "3.12" -pexpect==4.8.0 ; python_version >= "3.9" and python_version < "3.12" and sys_platform != "win32" -pickleshare==0.7.5 ; python_version >= "3.9" and python_version < "3.12" -pillow==10.0.0 ; python_version >= "3.9" and python_version < "3.12" -pkginfo==1.9.6 ; python_version >= "3.9" and python_version < "3.12" -platformdirs==3.10.0 ; python_version >= "3.9" and python_version < "3.12" -pluggy==1.3.0 ; python_version >= "3.9" and python_version < "3.12" -pre-commit==3.3.3 ; python_version >= "3.9" and python_version < "3.12" -prometheus-client==0.17.1 ; python_version >= "3.9" and python_version < "3.12" -prompt-toolkit==3.0.39 ; python_version >= "3.9" and python_version < "3.12" -psutil==5.9.5 ; python_version >= "3.9" and python_version < "3.12" -ptyprocess==0.7.0 ; python_version >= "3.9" and python_version < "3.12" and (sys_platform != "win32" or os_name != "nt") -pure-eval==0.2.2 ; python_version >= "3.9" and python_version < "3.12" -pybtex-docutils==1.0.3 ; python_version >= "3.9" and python_version < "3.12" -pybtex==0.24.0 ; python_version >= "3.9" and python_version < "3.12" -pycparser==2.21 ; python_version >= "3.9" and python_version < "3.12" -pydata-sphinx-theme==0.13.3 ; python_version >= "3.9" and python_version < "3.12" -pygments==2.16.1 ; python_version >= "3.9" and python_version < "3.12" -pyparsing==3.0.9 ; python_version >= "3.9" and python_version < "3.12" -pyright==1.1.324 ; python_version >= "3.9" and python_version < "3.12" -pytest-cov==4.1.0 ; python_version >= "3.9" and python_version < "3.12" -pytest-xdist==3.3.1 ; python_version >= "3.9" and python_version < "3.12" -pytest==7.4.0 ; python_version >= "3.9" and python_version < "3.12" -python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "3.12" -python-json-logger==2.0.7 ; python_version >= "3.9" and python_version < "3.12" -pywin32-ctypes==0.2.2 ; python_version >= "3.9" and python_version < "3.12" and sys_platform == "win32" -pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.9" and python_version < "3.12" -pywinpty==2.0.11 ; python_version >= "3.9" and python_version < "3.12" and os_name == "nt" -pyyaml==6.0.1 ; python_version >= "3.9" and python_version < "3.12" -pyzmq==25.1.1 ; python_version >= "3.9" and python_version < "3.12" -qtconsole==5.4.3 ; python_version >= "3.9" and python_version < "3.12" -qtpy==2.3.1 ; python_version >= "3.9" and python_version < "3.12" -readme-renderer==41.0 ; python_version >= "3.9" and python_version < "3.12" -referencing==0.30.2 ; python_version >= "3.9" and python_version < "3.12" -requests-toolbelt==1.0.0 ; python_version >= "3.9" and python_version < "3.12" -requests==2.31.0 ; python_version >= "3.9" and python_version < "3.12" -restructuredtext-lint==1.4.0 ; python_version >= "3.9" and python_version < "3.12" -rfc3339-validator==0.1.4 ; python_version >= "3.9" and python_version < "3.12" -rfc3986-validator==0.1.1 ; python_version >= "3.9" and python_version < "3.12" -rfc3986==2.0.0 ; python_version >= "3.9" and python_version < "3.12" -rich==13.5.2 ; python_version >= "3.9" and python_version < "3.12" -rpds-py==0.9.2 ; python_version >= "3.9" and python_version < "3.12" -ruff==0.0.286 ; python_version >= "3.9" and python_version < "3.12" -scipy==1.11.2 ; python_version >= "3.9" and python_version < "3.12" -secretstorage==3.3.3 ; python_version >= "3.9" and python_version < "3.12" and sys_platform == "linux" -send2trash==1.8.2 ; python_version >= "3.9" and python_version < "3.12" -setuptools==68.1.2 ; python_version >= "3.9" and python_version < "3.12" -six==1.16.0 ; python_version >= "3.9" and python_version < "3.12" -sniffio==1.3.0 ; python_version >= "3.9" and python_version < "3.12" -snowballstemmer==2.2.0 ; python_version >= "3.9" and python_version < "3.12" -soupsieve==2.4.1 ; python_version >= "3.9" and python_version < "3.12" -sphinx==4.5.0 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-bibtex==2.6.0 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.9" and python_version < "3.12" -sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.9" and python_version < "3.12" -stack-data==0.6.2 ; python_version >= "3.9" and python_version < "3.12" -terminado==0.17.1 ; python_version >= "3.9" and python_version < "3.12" -tinycss2==1.2.1 ; python_version >= "3.9" and python_version < "3.12" -toml==0.10.2 ; python_version >= "3.9" and python_version < "3.12" -tomli==2.0.1 ; python_version >= "3.9" and python_version < "3.12" -tornado==6.3.3 ; python_version >= "3.9" and python_version < "3.12" -traitlets==5.9.0 ; python_version >= "3.9" and python_version < "3.12" -twine==4.0.2 ; python_version >= "3.9" and python_version < "3.12" -typing-extensions==4.7.1 ; python_version >= "3.9" and python_version < "3.12" -uri-template==1.3.0 ; python_version >= "3.9" and python_version < "3.12" -urllib3==2.0.4 ; python_version >= "3.9" and python_version < "3.12" -virtualenv==20.24.3 ; python_version >= "3.9" and python_version < "3.12" -wcwidth==0.2.6 ; python_version >= "3.9" and python_version < "3.12" -webcolors==1.13 ; python_version >= "3.9" and python_version < "3.12" -webencodings==0.5.1 ; python_version >= "3.9" and python_version < "3.12" -websocket-client==1.6.2 ; python_version >= "3.9" and python_version < "3.12" -widgetsnbextension==4.0.8 ; python_version >= "3.9" and python_version < "3.12" -zipp==3.16.2 ; python_version >= "3.9" and python_version < "3.12" +accessible-pygments==0.0.4 ; python_version >= "3.9" and python_version < "3.13" +alabaster==0.7.13 ; python_version >= "3.9" and python_version < "3.13" +anyio==4.2.0 ; python_version >= "3.9" and python_version < "3.13" +appnope==0.1.3 ; python_version >= "3.9" and python_version < "3.13" and platform_system == "Darwin" +argon2-cffi==23.1.0 ; python_version >= "3.9" and python_version < "3.13" +argon2-cffi-bindings==21.2.0 ; python_version >= "3.9" and python_version < "3.13" +arrow==1.3.0 ; python_version >= "3.9" and python_version < "3.13" +asttokens==2.4.1 ; python_version >= "3.9" and python_version < "3.13" +async-lru==2.0.4 ; python_version >= "3.9" and python_version < "3.13" +attrs==23.1.0 ; python_version >= "3.9" and python_version < "3.13" +babel==2.14.0 ; python_version >= "3.9" and python_version < "3.13" +beautifulsoup4==4.12.2 ; python_version >= "3.9" and python_version < "3.13" +biblib-simple==0.1.2 ; python_version >= "3.9" and python_version < "3.13" +bleach==6.1.0 ; python_version >= "3.9" and python_version < "3.13" +certifi==2023.11.17 ; python_version >= "3.9" and python_version < "3.13" +cffi==1.16.0 ; python_version >= "3.9" and python_version < "3.13" +cfgv==3.4.0 ; python_version >= "3.9" and python_version < "3.13" +charset-normalizer==3.3.2 ; python_version >= "3.9" and python_version < "3.13" +colorama==0.4.6 ; python_version >= "3.9" and python_version < "3.13" and sys_platform == "win32" +colour-science==0.4.4 ; python_version >= "3.9" and python_version < "3.13" +comm==0.2.0 ; python_version >= "3.9" and python_version < "3.13" +contourpy==1.2.0 ; python_version >= "3.9" and python_version < "3.13" +coverage==7.3.3 ; python_version >= "3.9" and python_version < "3.13" +coverage[toml]==7.3.3 ; python_version >= "3.9" and python_version < "3.13" +coveralls==1.8.0 ; python_version >= "3.9" and python_version < "3.13" +cryptography==41.0.7 ; python_version >= "3.9" and python_version < "3.13" and sys_platform == "linux" +cycler==0.12.1 ; python_version >= "3.9" and python_version < "3.13" +debugpy==1.8.0 ; python_version >= "3.9" and python_version < "3.13" +decorator==5.1.1 ; python_version >= "3.9" and python_version < "3.13" +defusedxml==0.7.1 ; python_version >= "3.9" and python_version < "3.13" +distlib==0.3.8 ; python_version >= "3.9" and python_version < "3.13" +docopt==0.6.2 ; python_version >= "3.9" and python_version < "3.13" +docutils==0.20.1 ; python_version >= "3.9" and python_version < "3.13" +exceptiongroup==1.2.0 ; python_version >= "3.9" and python_version < "3.11" +execnet==2.0.2 ; python_version >= "3.9" and python_version < "3.13" +executing==2.0.1 ; python_version >= "3.9" and python_version < "3.13" +fastjsonschema==2.19.0 ; python_version >= "3.9" and python_version < "3.13" +filelock==3.13.1 ; python_version >= "3.9" and python_version < "3.13" +fonttools==4.46.0 ; python_version >= "3.9" and python_version < "3.13" +fqdn==1.5.1 ; python_version >= "3.9" and python_version < "3.13" +identify==2.5.33 ; python_version >= "3.9" and python_version < "3.13" +idna==3.6 ; python_version >= "3.9" and python_version < "3.13" +imageio==2.33.1 ; python_version >= "3.9" and python_version < "3.13" +imagesize==1.4.1 ; python_version >= "3.9" and python_version < "3.13" +importlib-metadata==7.0.0 ; python_version >= "3.9" and python_version < "3.13" +importlib-resources==6.1.1 ; python_version >= "3.9" and python_version < "3.10" +iniconfig==2.0.0 ; python_version >= "3.9" and python_version < "3.13" +invoke==2.2.0 ; python_version >= "3.9" and python_version < "3.13" +ipykernel==6.27.1 ; python_version >= "3.9" and python_version < "3.13" +ipython==8.18.1 ; python_version >= "3.9" and python_version < "3.13" +ipywidgets==8.1.1 ; python_version >= "3.9" and python_version < "3.13" +isoduration==20.11.0 ; python_version >= "3.9" and python_version < "3.13" +jaraco-classes==3.3.0 ; python_version >= "3.9" and python_version < "3.13" +jedi==0.19.1 ; python_version >= "3.9" and python_version < "3.13" +jeepney==0.8.0 ; python_version >= "3.9" and python_version < "3.13" and sys_platform == "linux" +jinja2==3.1.2 ; python_version >= "3.9" and python_version < "3.13" +json5==0.9.14 ; python_version >= "3.9" and python_version < "3.13" +jsonpointer==2.4 ; python_version >= "3.9" and python_version < "3.13" +jsonschema==4.20.0 ; python_version >= "3.9" and python_version < "3.13" +jsonschema-specifications==2023.11.2 ; python_version >= "3.9" and python_version < "3.13" +jsonschema[format-nongpl]==4.20.0 ; python_version >= "3.9" and python_version < "3.13" +jupyter==1.0.0 ; python_version >= "3.9" and python_version < "3.13" +jupyter-client==8.6.0 ; python_version >= "3.9" and python_version < "3.13" +jupyter-console==6.6.3 ; python_version >= "3.9" and python_version < "3.13" +jupyter-core==5.5.0 ; python_version >= "3.9" and python_version < "3.13" +jupyter-events==0.9.0 ; python_version >= "3.9" and python_version < "3.13" +jupyter-lsp==2.2.1 ; python_version >= "3.9" and python_version < "3.13" +jupyter-server==2.12.1 ; python_version >= "3.9" and python_version < "3.13" +jupyter-server-terminals==0.5.0 ; python_version >= "3.9" and python_version < "3.13" +jupyterlab==4.0.9 ; python_version >= "3.9" and python_version < "3.13" +jupyterlab-pygments==0.3.0 ; python_version >= "3.9" and python_version < "3.13" +jupyterlab-server==2.25.2 ; python_version >= "3.9" and python_version < "3.13" +jupyterlab-widgets==3.0.9 ; python_version >= "3.9" and python_version < "3.13" +keyring==24.3.0 ; python_version >= "3.9" and python_version < "3.13" +kiwisolver==1.4.5 ; python_version >= "3.9" and python_version < "3.13" +latexcodec==2.0.1 ; python_version >= "3.9" and python_version < "3.13" +markdown-it-py==3.0.0 ; python_version >= "3.9" and python_version < "3.13" +markupsafe==2.1.3 ; python_version >= "3.9" and python_version < "3.13" +matplotlib==3.8.2 ; python_version >= "3.9" and python_version < "3.13" +matplotlib-inline==0.1.6 ; python_version >= "3.9" and python_version < "3.13" +mdurl==0.1.2 ; python_version >= "3.9" and python_version < "3.13" +mistune==3.0.2 ; python_version >= "3.9" and python_version < "3.13" +more-itertools==10.1.0 ; python_version >= "3.9" and python_version < "3.13" +nbclient==0.9.0 ; python_version >= "3.9" and python_version < "3.13" +nbconvert==7.12.0 ; python_version >= "3.9" and python_version < "3.13" +nbformat==5.9.2 ; python_version >= "3.9" and python_version < "3.13" +nest-asyncio==1.5.8 ; python_version >= "3.9" and python_version < "3.13" +nh3==0.2.15 ; python_version >= "3.9" and python_version < "3.13" +nodeenv==1.8.0 ; python_version >= "3.9" and python_version < "3.13" +notebook==7.0.6 ; python_version >= "3.9" and python_version < "3.13" +notebook-shim==0.2.3 ; python_version >= "3.9" and python_version < "3.13" +numpy==1.26.2 ; python_version >= "3.9" and python_version < "3.13" +overrides==7.4.0 ; python_version >= "3.9" and python_version < "3.13" +packaging==23.2 ; python_version >= "3.9" and python_version < "3.13" +pandocfilters==1.5.0 ; python_version >= "3.9" and python_version < "3.13" +parso==0.8.3 ; python_version >= "3.9" and python_version < "3.13" +pexpect==4.9.0 ; python_version >= "3.9" and python_version < "3.13" and sys_platform != "win32" +pillow==10.1.0 ; python_version >= "3.9" and python_version < "3.13" +pkginfo==1.9.6 ; python_version >= "3.9" and python_version < "3.13" +platformdirs==4.1.0 ; python_version >= "3.9" and python_version < "3.13" +pluggy==1.3.0 ; python_version >= "3.9" and python_version < "3.13" +pre-commit==3.6.0 ; python_version >= "3.9" and python_version < "3.13" +prometheus-client==0.19.0 ; python_version >= "3.9" and python_version < "3.13" +prompt-toolkit==3.0.43 ; python_version >= "3.9" and python_version < "3.13" +psutil==5.9.6 ; python_version >= "3.9" and python_version < "3.13" +ptyprocess==0.7.0 ; python_version >= "3.9" and python_version < "3.13" and (sys_platform != "win32" or os_name != "nt") +pure-eval==0.2.2 ; python_version >= "3.9" and python_version < "3.13" +pybtex==0.24.0 ; python_version >= "3.9" and python_version < "3.13" +pybtex-docutils==1.0.3 ; python_version >= "3.9" and python_version < "3.13" +pycparser==2.21 ; python_version >= "3.9" and python_version < "3.13" +pydata-sphinx-theme==0.14.4 ; python_version >= "3.9" and python_version < "3.13" +pygments==2.17.2 ; python_version >= "3.9" and python_version < "3.13" +pyparsing==3.1.1 ; python_version >= "3.9" and python_version < "3.13" +pyright==1.1.341 ; python_version >= "3.9" and python_version < "3.13" +pytest==7.4.3 ; python_version >= "3.9" and python_version < "3.13" +pytest-cov==4.1.0 ; python_version >= "3.9" and python_version < "3.13" +pytest-xdist==3.5.0 ; python_version >= "3.9" and python_version < "3.13" +python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "3.13" +python-json-logger==2.0.7 ; python_version >= "3.9" and python_version < "3.13" +pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.9" and python_version < "3.13" +pywin32-ctypes==0.2.2 ; python_version >= "3.9" and python_version < "3.13" and sys_platform == "win32" +pywinpty==2.0.12 ; python_version >= "3.9" and python_version < "3.13" and os_name == "nt" +pyyaml==6.0.1 ; python_version >= "3.9" and python_version < "3.13" +pyzmq==25.1.2 ; python_version >= "3.9" and python_version < "3.13" +qtconsole==5.5.1 ; python_version >= "3.9" and python_version < "3.13" +qtpy==2.4.1 ; python_version >= "3.9" and python_version < "3.13" +readme-renderer==42.0 ; python_version >= "3.9" and python_version < "3.13" +referencing==0.32.0 ; python_version >= "3.9" and python_version < "3.13" +requests==2.31.0 ; python_version >= "3.9" and python_version < "3.13" +requests-toolbelt==1.0.0 ; python_version >= "3.9" and python_version < "3.13" +restructuredtext-lint==1.4.0 ; python_version >= "3.9" and python_version < "3.13" +rfc3339-validator==0.1.4 ; python_version >= "3.9" and python_version < "3.13" +rfc3986==2.0.0 ; python_version >= "3.9" and python_version < "3.13" +rfc3986-validator==0.1.1 ; python_version >= "3.9" and python_version < "3.13" +rich==13.7.0 ; python_version >= "3.9" and python_version < "3.13" +rpds-py==0.14.1 ; python_version >= "3.9" and python_version < "3.13" +scipy==1.11.4 ; python_version >= "3.9" and python_version < "3.13" +secretstorage==3.3.3 ; python_version >= "3.9" and python_version < "3.13" and sys_platform == "linux" +send2trash==1.8.2 ; python_version >= "3.9" and python_version < "3.13" +setuptools==69.0.2 ; python_version >= "3.9" and python_version < "3.13" +six==1.16.0 ; python_version >= "3.9" and python_version < "3.13" +sniffio==1.3.0 ; python_version >= "3.9" and python_version < "3.13" +snowballstemmer==2.2.0 ; python_version >= "3.9" and python_version < "3.13" +soupsieve==2.5 ; python_version >= "3.9" and python_version < "3.13" +sphinx==7.2.6 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-applehelp==1.0.7 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-bibtex==2.6.1 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-devhelp==1.0.5 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-htmlhelp==2.0.4 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-qthelp==1.0.6 ; python_version >= "3.9" and python_version < "3.13" +sphinxcontrib-serializinghtml==1.1.9 ; python_version >= "3.9" and python_version < "3.13" +stack-data==0.6.3 ; python_version >= "3.9" and python_version < "3.13" +terminado==0.18.0 ; python_version >= "3.9" and python_version < "3.13" +tinycss2==1.2.1 ; python_version >= "3.9" and python_version < "3.13" +toml==0.10.2 ; python_version >= "3.9" and python_version < "3.13" +tomli==2.0.1 ; python_version >= "3.9" and python_full_version <= "3.11.0a6" +tornado==6.4 ; python_version >= "3.9" and python_version < "3.13" +traitlets==5.14.0 ; python_version >= "3.9" and python_version < "3.13" +twine==4.0.2 ; python_version >= "3.9" and python_version < "3.13" +types-python-dateutil==2.8.19.14 ; python_version >= "3.9" and python_version < "3.13" +typing-extensions==4.9.0 ; python_version >= "3.9" and python_version < "3.13" +uri-template==1.3.0 ; python_version >= "3.9" and python_version < "3.13" +urllib3==2.1.0 ; python_version >= "3.9" and python_version < "3.13" +virtualenv==20.25.0 ; python_version >= "3.9" and python_version < "3.13" +wcwidth==0.2.12 ; python_version >= "3.9" and python_version < "3.13" +webcolors==1.13 ; python_version >= "3.9" and python_version < "3.13" +webencodings==0.5.1 ; python_version >= "3.9" and python_version < "3.13" +websocket-client==1.7.0 ; python_version >= "3.9" and python_version < "3.13" +widgetsnbextension==4.0.9 ; python_version >= "3.9" and python_version < "3.13" +zipp==3.17.0 ; python_version >= "3.9" and python_version < "3.13" diff --git a/tasks.py b/tasks.py index e6dd1ec..1c327ce 100644 --- a/tasks.py +++ b/tasks.py @@ -5,23 +5,23 @@ from __future__ import annotations -import biblib.bib import contextlib import fnmatch +import inspect import os import re import uuid -import colour_demosaicing +import biblib.bib from colour.utilities import message_box -import inspect +import colour_demosaicing if not hasattr(inspect, "getargspec"): inspect.getargspec = inspect.getfullargspec # pyright: ignore -from invoke.tasks import task from invoke.context import Context +from invoke.tasks import task __author__ = "Colour Developers" __copyright__ = "Copyright 2015 Colour Developers"