From 9af674b39efb08f8ec60004f3da73335e0a2f002 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 19:38:01 +0000 Subject: [PATCH 1/7] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/adrienverge/yamllint.git: v1.32.0 → v1.35.1](https://github.com/adrienverge/yamllint.git/compare/v1.32.0...v1.35.1) - [github.com/lyz-code/yamlfix: 1.13.0 → 1.16.0](https://github.com/lyz-code/yamlfix/compare/1.13.0...1.16.0) - [github.com/pre-commit/pre-commit-hooks: v4.4.0 → v4.6.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.4.0...v4.6.0) - [github.com/asottile/reorder-python-imports: v3.10.0 → v3.13.0](https://github.com/asottile/reorder-python-imports/compare/v3.10.0...v3.13.0) - [github.com/asottile/setup-cfg-fmt: v2.4.0 → v2.5.0](https://github.com/asottile/setup-cfg-fmt/compare/v2.4.0...v2.5.0) - [github.com/psf/black: 23.7.0 → 24.4.2](https://github.com/psf/black/compare/23.7.0...24.4.2) - https://github.com/charliermarsh/ruff-pre-commit → https://github.com/astral-sh/ruff-pre-commit - [github.com/astral-sh/ruff-pre-commit: v0.0.282 → v0.4.7](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.282...v0.4.7) - [github.com/nbQA-dev/nbQA: 1.7.0 → 1.8.5](https://github.com/nbQA-dev/nbQA/compare/1.7.0...1.8.5) - [github.com/executablebooks/mdformat: 0.7.16 → 0.7.17](https://github.com/executablebooks/mdformat/compare/0.7.16...0.7.17) - [github.com/codespell-project/codespell: v2.2.5 → v2.3.0](https://github.com/codespell-project/codespell/compare/v2.2.5...v2.3.0) --- .pre-commit-config.yaml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 966bdae..fd2a770 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,15 +6,15 @@ repos: - id: check-useless-excludes # - id: identity # Prints all files passed to pre-commits. Debugging. - repo: https://github.com/adrienverge/yamllint.git - rev: v1.32.0 + rev: v1.35.1 hooks: - id: yamllint - repo: https://github.com/lyz-code/yamlfix - rev: 1.13.0 + rev: 1.16.0 hooks: - id: yamlfix - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.6.0 hooks: - id: check-added-large-files args: @@ -42,23 +42,23 @@ repos: - id: python-use-type-annotations - id: text-unicode-replacement-char - repo: https://github.com/asottile/reorder-python-imports - rev: v3.10.0 + rev: v3.13.0 hooks: - id: reorder-python-imports args: - --py37-plus - repo: https://github.com/asottile/setup-cfg-fmt - rev: v2.4.0 + rev: v2.5.0 hooks: - id: setup-cfg-fmt - repo: https://github.com/psf/black - rev: 23.7.0 + rev: 24.4.2 hooks: - id: black language_version: python3.10 exclude: tests/utils/fast_upper_envelope_org.py - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.282 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.4.7 hooks: - id: ruff # exclude: | @@ -79,12 +79,12 @@ repos: - --blank exclude: tests/utils/fast_upper_envelope_org.py - repo: https://github.com/nbQA-dev/nbQA - rev: 1.7.0 + rev: 1.8.5 hooks: - id: nbqa-black - id: nbqa-ruff - repo: https://github.com/executablebooks/mdformat - rev: 0.7.16 + rev: 0.7.17 hooks: - id: mdformat additional_dependencies: @@ -95,7 +95,7 @@ repos: - '88' files: (README\.md) - repo: https://github.com/codespell-project/codespell - rev: v2.2.5 + rev: v2.3.0 hooks: - id: codespell additional_dependencies: From fd07a7c70eb51e8313207ffbeeb940d18b847164 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 19:40:03 +0000 Subject: [PATCH 2/7] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/upper_envelope/fues_jax/fues_jax.py | 1 + src/upper_envelope/fues_numba/fues_numba.py | 1 + tests/test_fues_jax.py | 1 + tests/test_fues_numba.py | 1 + tests/utils/upper_envelope_fedor.py | 19 +++++++++---------- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/upper_envelope/fues_jax/fues_jax.py b/src/upper_envelope/fues_jax/fues_jax.py index 927aabc..ad20030 100644 --- a/src/upper_envelope/fues_jax/fues_jax.py +++ b/src/upper_envelope/fues_jax/fues_jax.py @@ -5,6 +5,7 @@ https://dx.doi.org/10.2139/ssrn.4181302 """ + from functools import partial from typing import Callable from typing import Dict diff --git a/src/upper_envelope/fues_numba/fues_numba.py b/src/upper_envelope/fues_numba/fues_numba.py index 92ad6a7..3d861f4 100644 --- a/src/upper_envelope/fues_numba/fues_numba.py +++ b/src/upper_envelope/fues_numba/fues_numba.py @@ -5,6 +5,7 @@ https://dx.doi.org/10.2139/ssrn.4181302 """ + from typing import Callable from typing import Optional from typing import Tuple diff --git a/tests/test_fues_jax.py b/tests/test_fues_jax.py index 764e454..f01c982 100644 --- a/tests/test_fues_jax.py +++ b/tests/test_fues_jax.py @@ -1,4 +1,5 @@ """Test the JAX implementation of the fast upper envelope scan.""" + from pathlib import Path from typing import Dict diff --git a/tests/test_fues_numba.py b/tests/test_fues_numba.py index 6b4ea3f..ae00686 100644 --- a/tests/test_fues_numba.py +++ b/tests/test_fues_numba.py @@ -1,4 +1,5 @@ """Test the numba implementation of the fast upper envelope scan.""" + from pathlib import Path import numpy as np diff --git a/tests/utils/upper_envelope_fedor.py b/tests/utils/upper_envelope_fedor.py index 47b96c9..304607c 100644 --- a/tests/utils/upper_envelope_fedor.py +++ b/tests/utils/upper_envelope_fedor.py @@ -4,6 +4,7 @@ https://github.com/fediskhakov/dcegm/blob/master/model_retirement.m """ + from typing import Callable from typing import Dict from typing import List @@ -317,16 +318,14 @@ def compute_upper_envelope( values_all_segments = np.empty((len(segments), 1)) for segment in range(len(segments)): - values_all_segments[ - segment - ] = _linear_interpolation_with_inserting_missing_values( - x=segments[segment][0], - y=segments[segment][1], - x_new=np.array([intersect_point]), - missing_value=-np.inf, - )[ - 0 - ] + values_all_segments[segment] = ( + _linear_interpolation_with_inserting_missing_values( + x=segments[segment][0], + y=segments[segment][1], + x_new=np.array([intersect_point]), + missing_value=-np.inf, + )[0] + ) index_max_value_intersect = np.where( values_all_segments == values_all_segments.max(axis=0) From 8d661a0accb20d7c6e834ff494afcc662e3d5dce Mon Sep 17 00:00:00 2001 From: Sebastian Gsell Date: Tue, 4 Jun 2024 21:21:10 +0200 Subject: [PATCH 3/7] Use isort instead of asottile's reorder-python-imports --- .pre-commit-config.yaml | 15 +++++++++++---- src/upper_envelope/__init__.py | 6 ++---- .../fues_jax/check_and_scan_funcs.py | 1 + src/upper_envelope/fues_jax/fues_jax.py | 10 +++------- src/upper_envelope/fues_numba/fues_numba.py | 4 +--- tests/test_fues_jax.py | 10 ++++++---- tests/test_fues_numba.py | 8 +++++--- tests/utils/fast_upper_envelope_org.py | 4 +--- tests/utils/upper_envelope_fedor.py | 6 +----- 9 files changed, 31 insertions(+), 33 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fd2a770..0fe60e0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -41,12 +41,19 @@ repos: - id: python-no-log-warn - id: python-use-type-annotations - id: text-unicode-replacement-char - - repo: https://github.com/asottile/reorder-python-imports - rev: v3.13.0 + - repo: https://github.com/pycqa/isort + rev: 5.13.2 hooks: - - id: reorder-python-imports + - id: isort + name: isort args: - - --py37-plus + - --profile=black + # - repo: https://github.com/asottile/reorder-python-imports + # rev: v3.13.0 + # hooks: + # - id: reorder-python-imports + # args: + # - --py37-plus - repo: https://github.com/asottile/setup-cfg-fmt rev: v2.5.0 hooks: diff --git a/src/upper_envelope/__init__.py b/src/upper_envelope/__init__.py index 0ae40f1..16055e5 100644 --- a/src/upper_envelope/__init__.py +++ b/src/upper_envelope/__init__.py @@ -1,4 +1,2 @@ -from upper_envelope.fues_jax.fues_jax import fues_jax -from upper_envelope.fues_jax.fues_jax import fues_jax_unconstrained -from upper_envelope.fues_numba.fues_numba import fues_numba -from upper_envelope.fues_numba.fues_numba import fues_numba_unconstrained +from upper_envelope.fues_jax.fues_jax import fues_jax, fues_jax_unconstrained +from upper_envelope.fues_numba.fues_numba import fues_numba, fues_numba_unconstrained diff --git a/src/upper_envelope/fues_jax/check_and_scan_funcs.py b/src/upper_envelope/fues_jax/check_and_scan_funcs.py index e7c5e3f..77fc653 100644 --- a/src/upper_envelope/fues_jax/check_and_scan_funcs.py +++ b/src/upper_envelope/fues_jax/check_and_scan_funcs.py @@ -3,6 +3,7 @@ import jax from jax import numpy as jnp + from upper_envelope.math_funcs import calc_gradient diff --git a/src/upper_envelope/fues_jax/fues_jax.py b/src/upper_envelope/fues_jax/fues_jax.py index ad20030..8988ce1 100644 --- a/src/upper_envelope/fues_jax/fues_jax.py +++ b/src/upper_envelope/fues_jax/fues_jax.py @@ -7,21 +7,17 @@ """ from functools import partial -from typing import Callable -from typing import Dict -from typing import Optional -from typing import Tuple +from typing import Callable, Dict, Optional, Tuple import jax import jax.numpy as jnp import numpy as np from jax import vmap + from upper_envelope.fues_jax.check_and_scan_funcs import ( determine_cases_and_conduct_necessary_scans, ) -from upper_envelope.math_funcs import ( - calc_intersection_and_extrapolate_policy, -) +from upper_envelope.math_funcs import calc_intersection_and_extrapolate_policy @partial( diff --git a/src/upper_envelope/fues_numba/fues_numba.py b/src/upper_envelope/fues_numba/fues_numba.py index 3d861f4..7a0ed91 100644 --- a/src/upper_envelope/fues_numba/fues_numba.py +++ b/src/upper_envelope/fues_numba/fues_numba.py @@ -6,9 +6,7 @@ """ -from typing import Callable -from typing import Optional -from typing import Tuple +from typing import Callable, Optional, Tuple import numpy as np from numba import njit diff --git a/tests/test_fues_jax.py b/tests/test_fues_jax.py index f01c982..869fa49 100644 --- a/tests/test_fues_jax.py +++ b/tests/test_fues_jax.py @@ -7,13 +7,15 @@ import jax.numpy as jnp import numpy as np import pytest -import upper_envelope as upenv from numpy.testing import assert_array_almost_equal as aaae -from upper_envelope.fues_jax.check_and_scan_funcs import back_and_forward_scan_wrapper -from tests.utils.interpolation import interpolate_policy_and_value_on_wealth_grid -from tests.utils.interpolation import linear_interpolation_with_extrapolation +import upper_envelope as upenv +from tests.utils.interpolation import ( + interpolate_policy_and_value_on_wealth_grid, + linear_interpolation_with_extrapolation, +) from tests.utils.upper_envelope_fedor import upper_envelope +from upper_envelope.fues_jax.check_and_scan_funcs import back_and_forward_scan_wrapper jax.config.update("jax_enable_x64", True) diff --git a/tests/test_fues_numba.py b/tests/test_fues_numba.py index ae00686..98189cf 100644 --- a/tests/test_fues_numba.py +++ b/tests/test_fues_numba.py @@ -4,12 +4,14 @@ import numpy as np import pytest -import upper_envelope as upenv from numpy.testing import assert_array_almost_equal as aaae +import upper_envelope as upenv from tests.utils.fast_upper_envelope_org import fast_upper_envelope_wrapper_org -from tests.utils.interpolation import interpolate_single_policy_and_value_on_wealth_grid -from tests.utils.interpolation import linear_interpolation_with_extrapolation +from tests.utils.interpolation import ( + interpolate_single_policy_and_value_on_wealth_grid, + linear_interpolation_with_extrapolation, +) from tests.utils.upper_envelope_fedor import upper_envelope # Obtain the test directory of the package. diff --git a/tests/utils/fast_upper_envelope_org.py b/tests/utils/fast_upper_envelope_org.py index b37098c..6db12ad 100644 --- a/tests/utils/fast_upper_envelope_org.py +++ b/tests/utils/fast_upper_envelope_org.py @@ -5,9 +5,7 @@ https://dx.doi.org/10.2139/ssrn.4181302 """ -from typing import Callable -from typing import Optional -from typing import Tuple +from typing import Callable, Optional, Tuple import numpy as np diff --git a/tests/utils/upper_envelope_fedor.py b/tests/utils/upper_envelope_fedor.py index 304607c..9895e76 100644 --- a/tests/utils/upper_envelope_fedor.py +++ b/tests/utils/upper_envelope_fedor.py @@ -5,15 +5,11 @@ """ -from typing import Callable -from typing import Dict -from typing import List -from typing import Tuple +from typing import Callable, Dict, List, Tuple import numpy as np from scipy.optimize import brenth as root - EPS = 2.2204e-16 From b194fab4472bfda2c68f4fec9feb1ff97f53fbe0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 18:07:13 +0000 Subject: [PATCH 4/7] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/adrienverge/yamllint.git: v1.35.1 → v1.37.1](https://github.com/adrienverge/yamllint.git/compare/v1.35.1...v1.37.1) - [github.com/lyz-code/yamlfix: 1.16.0 → 1.17.0](https://github.com/lyz-code/yamlfix/compare/1.16.0...1.17.0) - [github.com/pre-commit/pre-commit-hooks: v4.6.0 → v5.0.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.6.0...v5.0.0) - [github.com/pycqa/isort: 5.13.2 → 6.0.1](https://github.com/pycqa/isort/compare/5.13.2...6.0.1) - [github.com/asottile/setup-cfg-fmt: v2.5.0 → v2.8.0](https://github.com/asottile/setup-cfg-fmt/compare/v2.5.0...v2.8.0) - [github.com/psf/black: 24.4.2 → 25.1.0](https://github.com/psf/black/compare/24.4.2...25.1.0) - [github.com/astral-sh/ruff-pre-commit: v0.4.7 → v0.11.8](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.7...v0.11.8) - [github.com/nbQA-dev/nbQA: 1.8.5 → 1.9.1](https://github.com/nbQA-dev/nbQA/compare/1.8.5...1.9.1) - [github.com/executablebooks/mdformat: 0.7.17 → 0.7.22](https://github.com/executablebooks/mdformat/compare/0.7.17...0.7.22) - [github.com/codespell-project/codespell: v2.3.0 → v2.4.1](https://github.com/codespell-project/codespell/compare/v2.3.0...v2.4.1) --- .pre-commit-config.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0fe60e0..fc295c2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,15 +6,15 @@ repos: - id: check-useless-excludes # - id: identity # Prints all files passed to pre-commits. Debugging. - repo: https://github.com/adrienverge/yamllint.git - rev: v1.35.1 + rev: v1.37.1 hooks: - id: yamllint - repo: https://github.com/lyz-code/yamlfix - rev: 1.16.0 + rev: 1.17.0 hooks: - id: yamlfix - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: check-added-large-files args: @@ -42,7 +42,7 @@ repos: - id: python-use-type-annotations - id: text-unicode-replacement-char - repo: https://github.com/pycqa/isort - rev: 5.13.2 + rev: 6.0.1 hooks: - id: isort name: isort @@ -55,17 +55,17 @@ repos: # args: # - --py37-plus - repo: https://github.com/asottile/setup-cfg-fmt - rev: v2.5.0 + rev: v2.8.0 hooks: - id: setup-cfg-fmt - repo: https://github.com/psf/black - rev: 24.4.2 + rev: 25.1.0 hooks: - id: black language_version: python3.10 exclude: tests/utils/fast_upper_envelope_org.py - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.7 + rev: v0.11.8 hooks: - id: ruff # exclude: | @@ -86,12 +86,12 @@ repos: - --blank exclude: tests/utils/fast_upper_envelope_org.py - repo: https://github.com/nbQA-dev/nbQA - rev: 1.8.5 + rev: 1.9.1 hooks: - id: nbqa-black - id: nbqa-ruff - repo: https://github.com/executablebooks/mdformat - rev: 0.7.17 + rev: 0.7.22 hooks: - id: mdformat additional_dependencies: @@ -102,7 +102,7 @@ repos: - '88' files: (README\.md) - repo: https://github.com/codespell-project/codespell - rev: v2.3.0 + rev: v2.4.1 hooks: - id: codespell additional_dependencies: From 271261e50307a54b20ecdf14b5ccc9563ba6864d Mon Sep 17 00:00:00 2001 From: Sebastian Gsell Date: Tue, 20 May 2025 14:31:59 +0200 Subject: [PATCH 5/7] Edit environment --- .envs/testenv.yml | 4 +--- .pre-commit-config.yaml | 2 +- environment.yml | 6 +----- setup.cfg | 3 +-- tox.ini | 1 - 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/.envs/testenv.yml b/.envs/testenv.yml index 9e36df6..9558c59 100644 --- a/.envs/testenv.yml +++ b/.envs/testenv.yml @@ -12,14 +12,12 @@ dependencies: - jax - numpy - numba - - pandas - pyyaml # Testing infrastructure - pytest - pytest-cov - pytest-xdist - - # Install locally - pip: + # Install locally - -e ../ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fc295c2..b8ea1d4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -62,7 +62,7 @@ repos: rev: 25.1.0 hooks: - id: black - language_version: python3.10 + language_version: python3.11 exclude: tests/utils/fast_upper_envelope_org.py - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.11.8 diff --git a/environment.yml b/environment.yml index 0a57a9a..dbd5582 100644 --- a/environment.yml +++ b/environment.yml @@ -4,27 +4,23 @@ channels: - conda-forge - defaults dependencies: - - python=3.10 + - python=3.11 - pip - pytest - pytest-cov - pytest-xdist # Package dependencies - - estimagic - numpy - scipy - numba - - pandas - jax - - networkx # Misc - black - nb_black - flake8 - jupyterlab - - matplotlib - pdbpp - pre-commit - setuptools_scm diff --git a/setup.cfg b/setup.cfg index 41dcdd0..40bd090 100644 --- a/setup.cfg +++ b/setup.cfg @@ -11,7 +11,6 @@ platforms = unix, linux, osx, cygwin, win32 classifiers = Development Status :: 1 - Planning Intended Audience :: Science/Research - License :: OSI Approved :: MIT License Operating System :: MacOS :: MacOS X Operating System :: Microsoft :: Windows Operating System :: POSIX @@ -24,7 +23,7 @@ project_urls = [options] packages = find: -python_requires = >=3.8 +python_requires = >=3.9 include_package_data = True package_dir = =src diff --git a/tox.ini b/tox.ini index fdea22c..9f985e4 100644 --- a/tox.ini +++ b/tox.ini @@ -21,7 +21,6 @@ conda_deps = jax numpy numba - pandas jax # Optional and test dependencies From fb610a34aaa3ce252e7a359a817790d96f3fa1ed Mon Sep 17 00:00:00 2001 From: Sebastian Gsell Date: Tue, 20 May 2025 14:37:08 +0200 Subject: [PATCH 6/7] Comment out docformatter --- .pre-commit-config.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b8ea1d4..4e181c6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -73,18 +73,18 @@ repos: # tests/| # docs/source/conf.py| # )$ - - repo: https://github.com/PyCQA/docformatter - rev: v1.7.5 - hooks: - - id: docformatter - args: - - --in-place - - --wrap-summaries - - '88' - - --wrap-descriptions - - '88' - - --blank - exclude: tests/utils/fast_upper_envelope_org.py + # - repo: https://github.com/PyCQA/docformatter + # rev: v1.7.5 + # hooks: + # - id: docformatter + # args: + # - --in-place + # - --wrap-summaries + # - '88' + # - --wrap-descriptions + # - '88' + # - --blank + # exclude: tests/utils/fast_upper_envelope_org.py - repo: https://github.com/nbQA-dev/nbQA rev: 1.9.1 hooks: From 6f188858dc4c6daf59577b91cae5775ca391b29b Mon Sep 17 00:00:00 2001 From: Sebastian Gsell Date: Tue, 20 May 2025 14:46:35 +0200 Subject: [PATCH 7/7] Move to higher version --- .pre-commit-config.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4e181c6..e150bf7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -73,18 +73,18 @@ repos: # tests/| # docs/source/conf.py| # )$ - # - repo: https://github.com/PyCQA/docformatter - # rev: v1.7.5 - # hooks: - # - id: docformatter - # args: - # - --in-place - # - --wrap-summaries - # - '88' - # - --wrap-descriptions - # - '88' - # - --blank - # exclude: tests/utils/fast_upper_envelope_org.py + - repo: https://github.com/PyCQA/docformatter + rev: v1.7.7 + hooks: + - id: docformatter + args: + - --in-place + - --wrap-summaries + - '88' + - --wrap-descriptions + - '88' + - --blank + exclude: tests/utils/fast_upper_envelope_org.py - repo: https://github.com/nbQA-dev/nbQA rev: 1.9.1 hooks: