From 9d17e6ff7b6bf2be2e9c1350877ae4f938a474b0 Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Thu, 11 Jul 2024 14:31:36 +0200 Subject: [PATCH 01/15] add import linter --- poetry.lock | 147 ++++++++++++++++++++++++++++++++++++++++++++++--- pyproject.toml | 9 +++ 2 files changed, 147 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5ade9131..417c19f5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alabaster" @@ -482,15 +482,126 @@ pygments = ">=2.7" sphinx = ">=6.0,<8.0" sphinx-basic-ng = ">=1.0.0.beta2" +[[package]] +name = "grimp" +version = "3.4" +description = "Builds a queryable graph of the imports within one or more Python packages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "grimp-3.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d87e8bb272adc6b1a9b9601ba01fdd04044408c0f08606097f1244333dedabdb"}, + {file = "grimp-3.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6af6890d2e38d303c0f0aaf078b98bae17e256f0d450e8d16e8ce3a931bbbfb"}, + {file = "grimp-3.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64987a7a03bb5174579ec6759ab5d4b9957974f8e512fdf989ecfb98e855d61d"}, + {file = "grimp-3.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3b47fc9f3468017105a45fa92411def4044d241a5db261f5cb3c37dd9b1da591"}, + {file = "grimp-3.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:adf9610e811b78f03adc0af8d62cbe8c7f855c32055cf0f95db993abbb0af92f"}, + {file = "grimp-3.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ea62b2145fc03f083706fa06ddfc0f5efafc2cfb9791bc341ebdf91463113f7"}, + {file = "grimp-3.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0cce16a76f2167f6bea57d52ea3d22e556459e369462a7f471357b11193625fa"}, + {file = "grimp-3.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bce142578b3ad3671e7f6f6c2815b0a8cc63ba6d2178650682955b0578a8e80"}, + {file = "grimp-3.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ad3b95cc1d2e354ad9e480d2f1362534cf6ec560caef00ee38070a970068d6d0"}, + {file = "grimp-3.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:8105edfd686a2db38685e93bceaf6e8b0e7d54f3ad789cd1ba003f30873b042f"}, + {file = "grimp-3.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8512b4a33a97ec6d8417b268d8653c071b52316d0a14d214ea8b323e42e2046b"}, + {file = "grimp-3.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:49adbf99be81e9bb9b2f67e578007b709bcece387f70e9095614d2172cd551a0"}, + {file = "grimp-3.4-cp310-none-win32.whl", hash = "sha256:0b4578aa664400739d1f6e0efd8c5494ebc49c3b04be1d6b2786422f5281115c"}, + {file = "grimp-3.4-cp310-none-win_amd64.whl", hash = "sha256:c81bb2f7a0474c7af711191be5def724562680f7b2d25e92e45a98550f6bedea"}, + {file = "grimp-3.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:e728ec67b6c0b13aaff433bd30a700578900eb4fd77884b4be116eec7c38a582"}, + {file = "grimp-3.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:517e693792677516550b1479088fdce99fb769d173e9385304ca99f0236f3a75"}, + {file = "grimp-3.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c250905604ee643edbcfc07db71328d48323e6ed80065fbef0ae81ac783af554"}, + {file = "grimp-3.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1e40a70e2bfdc451bf9811fe35a11c04d690ced37b5c12af6e49c92c048316fd"}, + {file = "grimp-3.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00d6a2607c02b41f1771b9c2f603e79e0535986acbda1811865b8cec15b1c7dd"}, + {file = "grimp-3.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a82acc83aab22dbacf5d90836e21e611f556d021d8b245b0cf6eb2cc631812c"}, + {file = "grimp-3.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:21a918ebd6bb1bf033ee178fd9d8c251a2ff4d3528861425ce1b1033b35678ab"}, + {file = "grimp-3.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b59bb20383f5004ea8d1712ac201a94e4198f7ffb2227532b6a7daceda8f5ac"}, + {file = "grimp-3.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:05225a62bc6a46e76280d79f5b8d9077ce86187fe329481ac72f4202659901d3"}, + {file = "grimp-3.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:632d76795f3b73b96d92cf1499903f1934e26ab5c877d2959edefa68e60204cd"}, + {file = "grimp-3.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a5d44dbcb93efd2f60a8b0e5fc1b2924191b863a4179a92eadaaa73f6febd1a4"}, + {file = "grimp-3.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f065763b5889336b20219a0b8e145e3752a353749158bc2dc648b6b678324483"}, + {file = "grimp-3.4-cp311-none-win32.whl", hash = "sha256:08620bdd2c4a6eb5701787743873110389697a0f0ecc6bbc56574c27a646205b"}, + {file = "grimp-3.4-cp311-none-win_amd64.whl", hash = "sha256:c2ba16ab669ede3636e043a5c53f936faa8f7444eceef49dac0f8ba57d1aad79"}, + {file = "grimp-3.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:87d7c9deb6794be7d9870288a2a50372d930162213612788474e155e29ee134b"}, + {file = "grimp-3.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0606c3625ccd4dc756fdc7e85e88227f9eb698fe9a6e4c4ec585236349b98931"}, + {file = "grimp-3.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9dbfbabd3c534bdf9d6a3a9c0390a45eff982c14aead2d5c13f4f5b515c0b04"}, + {file = "grimp-3.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:475efbe82bf96311905e02e77e72a87c4cff865055e6c4e357485d072f3d5785"}, + {file = "grimp-3.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af9fcd44107f4ed5a7f54226863be9d5e1aebe3e9f409666f340ce54814bf6b"}, + {file = "grimp-3.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:903c6b322bb11608da6ad908c698d57e3a661552b63e7f084d4d33fd98b175f7"}, + {file = "grimp-3.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a97d9727a94179bdbf0a510dce19ea3da89884223aa9fc3ad82c1e8ca22eba58"}, + {file = "grimp-3.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92156ef3a2b5971d941ce2381e62403c5c46f2e8b76320ab4b3e69142043706d"}, + {file = "grimp-3.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:09d77ff1ef320fc1ec874869bacebdd178d7b561e84ff484b53274e89e4d4d62"}, + {file = "grimp-3.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c5ffff88b5c1b2ff2096ef7c841c5e9bf621ad26159dfb81c138a06184f13079"}, + {file = "grimp-3.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e5f5a906219d39fc350489b878614e2b226ccf8d4bef7e031ed1aaae2f5fb7ba"}, + {file = "grimp-3.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c50507f0d0db54d0efdf26e1a09c9b332f1e87f34373f4c457b5dbe712deebbe"}, + {file = "grimp-3.4-cp312-none-win32.whl", hash = "sha256:e04adcb193a917c01a2c7b25efbfab1311379b26b9c8fc83df176347093aead7"}, + {file = "grimp-3.4-cp312-none-win_amd64.whl", hash = "sha256:174bc1165342680c55dcfb2ab9858aa391c60ae610eb5db955b3e2af7b3a9f45"}, + {file = "grimp-3.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:831a339ee76778ace9c0122dc449f3b60b5afec20d240bb8dd4f373dba697fb5"}, + {file = "grimp-3.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:56cf4ff83897a6ef9aefc28ae19597e270c5f7e67668b6776257a9bb3b1e6e33"}, + {file = "grimp-3.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1e0e45f94e299429612dbd2f5f8f342de1d5f5288c985c07decd55964160289"}, + {file = "grimp-3.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c207417f964ffc2717df378abfe174f1e8336a066cd79a984163182152e14d1"}, + {file = "grimp-3.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e07aa7337090e2d8ec68be0c38985b3165b2a8109089e58a51184ffd76c2e52"}, + {file = "grimp-3.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5a6950586425c93d7cab78d6d98d1f08f22628230c7e362ee35665da4f9065f"}, + {file = "grimp-3.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1b2ba55873984b85d2510d3aac04391f4f3b83fbcade88dcc805e2f19ae892f"}, + {file = "grimp-3.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47ea417e49379ceaef83024ba2d43ae12a070a328401d0bb0204bd9c98454f1b"}, + {file = "grimp-3.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:49c767f1abbfa59ebed5901112e97f4f1db04cb3b87f0269cd4e4b33f4021b1a"}, + {file = "grimp-3.4-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:61093ea30e2278ab464463a7ed3a462b6cecda264469c936b261031803970093"}, + {file = "grimp-3.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:e22f35f9c5e7f319852173125a993c0d9e0d885b5c9b7e2ac05be671c32e2fb5"}, + {file = "grimp-3.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:22c67227f0fd155ac595ad506baaf02a54230e9f4bb17a5dcf060f2acd1df9ee"}, + {file = "grimp-3.4-cp38-none-win32.whl", hash = "sha256:5ef2029bea7161b5b142b08209ef888c80994ce85e1e8f7e9711feab864f9e05"}, + {file = "grimp-3.4-cp38-none-win_amd64.whl", hash = "sha256:094264f2a4089607d0f82f21494b6ff7eef4704902ffda5025cd7d84211a9e5b"}, + {file = "grimp-3.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8e7b150b39550e6c1fb8480b091fb003f985ad1e49710b6bddb0701c9857422c"}, + {file = "grimp-3.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d13f131768e2496ff99702a60adbffa397ca4f7409bf0cc31ba9563c193fe542"}, + {file = "grimp-3.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1848ce636400f0546d946a8f7761fc1469f3830f1e2ca7a902e3b54079862a9"}, + {file = "grimp-3.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d28b2a562e7295724293c4a19bcfd5a5e3556a3af0830dae8e8bdd5974959d86"}, + {file = "grimp-3.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53b90a232bbcc41c293075b6a3eab01d070b6b22f154773e19a987028d90ddb6"}, + {file = "grimp-3.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:419a0fb9b4fd03cfd4b52a0525e0c1e6ec92b960983523c31a8795542f99fe9a"}, + {file = "grimp-3.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d96e3199f6c21a0856bad8bcbb5981685297b9b20b1bae720242935ff47f678a"}, + {file = "grimp-3.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56e4676f7060578fe5cff7cf6aed33973c53c54ad52bd43a138eb278ae44fd23"}, + {file = "grimp-3.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e6b7150396ec69485aa61411d4ee50906109ace6d489c3e077096bffb469a49e"}, + {file = "grimp-3.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:d0ce44b4beef679c85059ea4aa208cfcee1b192fda8624e8f61b597c4c9402d5"}, + {file = "grimp-3.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:94715b3ab1bce3d74172367814a0bb05a627d6603494a66e52d94cc3196e829f"}, + {file = "grimp-3.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:889ac57829c7480593133c642acaeb84bdbe8c002ecedc64e123b7a042f41438"}, + {file = "grimp-3.4-cp39-none-win32.whl", hash = "sha256:0e14777b502f5364cd4e4f7c8f1c95f17d3dfed8e8cb0c13af4e8c789e71077d"}, + {file = "grimp-3.4-cp39-none-win_amd64.whl", hash = "sha256:6d77c9bdd673b2ef8bb6ef81e7adc8cd2acc26ab13deb9df337c8c51c27ebc3c"}, + {file = "grimp-3.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d6c15d7497ff8c63d6e6882765ea240ba8d5a5e93a661bd0c65086c9607eab2"}, + {file = "grimp-3.4-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3d6cb756cbb3e5c0cd7be1a25596a14e76ddafafcb652c8892d4cd04ac36776d"}, + {file = "grimp-3.4-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:af9d44df5b7a6386273c03b441b33aa30f6ba440d5036fe4b32c4099a5cac192"}, + {file = "grimp-3.4-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d37668a3bb240856ea56d437c8d1e8ab44d32f2653c2a29a41aa4b55645512ee"}, + {file = "grimp-3.4-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f07a013221e5579683a2e4b148559d3d890b4f43dccd0abc20a3adb7aef0314c"}, + {file = "grimp-3.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9309365cca5deb4f94976cfe09e0563bd34e91f6cb505d34b33dd175049cfb4e"}, + {file = "grimp-3.4-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:214cd5cc5c9a81b5b4b996de83123609292be0b3db3cec6a9a6157d4fe24432d"}, + {file = "grimp-3.4-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:80f5413792023814a2e4c63d5050f56d7566ea2e8e61d64bc2e2104c01f9021f"}, + {file = "grimp-3.4-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:7c548e02a2c83488a45b7224f205753a89a68946c00fb3ae4dfeae0c9e23932a"}, + {file = "grimp-3.4-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:35dc3e2e031df8bb51defc9edff156996d5169a06c9908fe5914ec99630444a6"}, + {file = "grimp-3.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ccdfeb3476079b4f294d8bf3c9fd88452662672fce063d28b3ccfec484c26e48"}, + {file = "grimp-3.4-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0e7b7f216e1519a620821748f85ca3a12953595500a2ff993256b92ac92b341"}, + {file = "grimp-3.4-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae00c0b3b33f0d36b4d36fe623fad6c290478e233234a6faaebea74441040d95"}, + {file = "grimp-3.4-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ec6a0ce16d0555c14e614b233e054cc9a5178b4ed847665ae41fcc18be2f92f1"}, + {file = "grimp-3.4-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:f1af48d43aab12e2491847aba35eae9bd522a20b6d27cfe7092777626791526f"}, + {file = "grimp-3.4-pp38-pypy38_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:9c4e6860b9925910001a3a3c60d6900970e99de2e86d192784d5734b62d1d93f"}, + {file = "grimp-3.4-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c8c9b78ed1ac471d636a1623b7d82ae9784b9a9a0bd0d51a9398c4f45f1197db"}, + {file = "grimp-3.4-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:bed022e8cdaa998735c0035ebf0bc095731a5835cde04825c0050fda2a65165d"}, + {file = "grimp-3.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9ad2a70098d8deeda0387b6dd876b9482708cdba9969546a730a78954ff7c9b"}, + {file = "grimp-3.4-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:619b069f311fd4d4760ed038f65d82659dc84a8838ec633d473d23edb7be386d"}, + {file = "grimp-3.4-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83784d0b74fee3f86555df8fa5d648e8b27d5eb9b95920d84837e26d2b442e7f"}, + {file = "grimp-3.4-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f35c93beccad5050de2f8a3873f71fc4b0f081a8a610947271fefa18727a4a4c"}, + {file = "grimp-3.4-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43bc91d1419163808bb9cebff772a897668de7648067e886d949007e5c36a790"}, + {file = "grimp-3.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb6cdbc136202a4bcefc52dc8b50146e2b379100fe45d4d171ef6708688dff9d"}, + {file = "grimp-3.4-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:9fe64793492bda1a0d8d09eaae2e325a238ec0649549f0ff7f96ebaa59cc8649"}, + {file = "grimp-3.4-pp39-pypy39_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:669053be719233bddd673fcbf53369d2721d5b9cde9de3fff2ed55f86aa82d84"}, + {file = "grimp-3.4-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:83e218d6ab6f019bc39a8e4c340761e3e392224b42bf54cd4d7beefd0088cc8f"}, + {file = "grimp-3.4-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:cfebb5360fb6d8748c6a67bf8e0596cac56c2a6395e33c4aa80ff422cdf94969"}, + {file = "grimp-3.4.tar.gz", hash = "sha256:835c4509a54a17bc02ae1ffe27089fc6271af61bfb6a1566772c9de4a15d015f"}, +] + +[package.dependencies] +typing-extensions = ">=3.10.0.0" + [[package]] name = "identify" -version = "2.5.36" +version = "2.6.0" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, - {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, + {file = "identify-2.6.0-py2.py3-none-any.whl", hash = "sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0"}, + {file = "identify-2.6.0.tar.gz", hash = "sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf"}, ] [package.extras] @@ -518,6 +629,23 @@ files = [ {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, ] +[[package]] +name = "import-linter" +version = "2.0" +description = "Enforces rules for the imports within and between Python packages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "import-linter-2.0.tar.gz", hash = "sha256:b067cf0cdbf11c4f87524e32c2e3eaa62d46572e9e06511e6b453198b15b1c9a"}, + {file = "import_linter-2.0-py3-none-any.whl", hash = "sha256:200f9b46d20a055c1f6f514e4cd8074852261bc9c8733d028201a55be6058bb0"}, +] + +[package.dependencies] +click = ">=6" +grimp = ">=3.2" +tomli = {version = ">=1.2.1", markers = "python_version < \"3.11\""} +typing-extensions = ">=3.10.0.0" + [[package]] name = "importlib-metadata" version = "8.0.0" @@ -1232,6 +1360,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -1580,13 +1709,13 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.5" +version = "0.13.0" description = "Style preserving TOML library" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tomlkit-0.12.5-py3-none-any.whl", hash = "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f"}, - {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"}, + {file = "tomlkit-0.13.0-py3-none-any.whl", hash = "sha256:7075d3042d03b80f603482d69bf0c8f345c2b30e41699fd8883227f89972b264"}, + {file = "tomlkit-0.13.0.tar.gz", hash = "sha256:08ad192699734149f5b97b45f1f18dad7eb1b6d16bc72ad0c2335772650d7b72"}, ] [[package]] @@ -1683,4 +1812,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "0c3d812d374a65bb11dd86cd5ee2029011e536ed80836fada04c7d8ad55e774f" +content-hash = "1bcb101f2acdea656e28bb3b41fea399348f21e424b6993ea43882d460ab8305" diff --git a/pyproject.toml b/pyproject.toml index b4afc32b..e91eba9d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,6 +56,7 @@ shibuya = ">=2024.5.14" sphinx-design = ">=0.5.0,<1" +import-linter = "^2.0" [tool.poetry.group.dev.dependencies] autoimport = "^1.4.0" @@ -108,3 +109,11 @@ ignore_errors = true [tool.poetry.scripts] tbx = 'exasol.toolbox.tools.tbx:CLI' + +[tool.importlinter] +root_package = "exasol.toolbox" +include_external_packages = true + +[[tool.importlinter.contracts]] +name = "contract test" +type = "independence" From b66c23bd502a10cc5d28308045218758bf4996ff Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Fri, 19 Jul 2024 15:10:47 +0200 Subject: [PATCH 02/15] add import linter to nox --- .importlinter | 2 ++ exasol/toolbox/nox/_lint.py | 21 +++++++++++++++++++++ noxconfig.py | 1 + pyproject.toml | 7 ------- 4 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 .importlinter diff --git a/.importlinter b/.importlinter new file mode 100644 index 00000000..6afea97c --- /dev/null +++ b/.importlinter @@ -0,0 +1,2 @@ +[importlinter] +root_package = exasol.toolbox diff --git a/exasol/toolbox/nox/_lint.py b/exasol/toolbox/nox/_lint.py index b476c734..3d334475 100644 --- a/exasol/toolbox/nox/_lint.py +++ b/exasol/toolbox/nox/_lint.py @@ -37,6 +37,16 @@ def _type_check(session: Session, files: Iterable[str]) -> None: ) +def _import_lint(session: Session, path: str) -> None: + session.run( + "poetry", + "run", + "lint-imports", + "--config", + path + ) + + @nox.session(python=False) def lint(session: Session) -> None: """Runs the linter on the project""" @@ -49,3 +59,14 @@ def type_check(session: Session) -> None: """Runs the type checker on the project""" py_files = [f"{file}" for file in python_files(PROJECT_CONFIG.root)] _type_check(session, py_files) + + +@nox.session(name="import-lint", python=False) +@nox.parametrize('own_config_file', ['no', 'yes']) +def import_lint(session: Session, own_config_file: str) -> None: + """Runs the import linter on the project""" + if own_config_file == 'yes': + path = input("Config file: ") + else: + path = str(PROJECT_CONFIG.importlinter) + _import_lint(session, path) diff --git a/noxconfig.py b/noxconfig.py index a78b5779..e54618e4 100644 --- a/noxconfig.py +++ b/noxconfig.py @@ -34,6 +34,7 @@ class Config: root: Path = Path(__file__).parent doc: Path = Path(__file__).parent / "doc" + importlinter: Path = Path(__file__).parent / ".importlinter" version_file: Path = Path(__file__).parent / "exasol" / "toolbox" / "version.py" path_filters: Iterable[str] = ("dist", ".eggs", "venv", "metrics-schema", "project-template") plugins = [UpdateTemplates] diff --git a/pyproject.toml b/pyproject.toml index e91eba9d..b9e27d34 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -110,10 +110,3 @@ ignore_errors = true [tool.poetry.scripts] tbx = 'exasol.toolbox.tools.tbx:CLI' -[tool.importlinter] -root_package = "exasol.toolbox" -include_external_packages = true - -[[tool.importlinter.contracts]] -name = "contract test" -type = "independence" From 80fac75f5723a81e9ca7ea6ca617867c2c4ec838 Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Tue, 23 Jul 2024 18:31:22 +0200 Subject: [PATCH 03/15] changed config file input --- exasol/toolbox/nox/_lint.py | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/exasol/toolbox/nox/_lint.py b/exasol/toolbox/nox/_lint.py index 3d334475..69a80d96 100644 --- a/exasol/toolbox/nox/_lint.py +++ b/exasol/toolbox/nox/_lint.py @@ -1,6 +1,8 @@ from __future__ import annotations from typing import Iterable +import argparse +from pathlib import Path import nox from nox import Session @@ -62,11 +64,34 @@ def type_check(session: Session) -> None: @nox.session(name="import-lint", python=False) -@nox.parametrize('own_config_file', ['no', 'yes']) -def import_lint(session: Session, own_config_file: str) -> None: +def import_lint(session: Session) -> None: """Runs the import linter on the project""" - if own_config_file == 'yes': - path = input("Config file: ") + + usage = "nox -s import-lint -- [options]" + description = "Runs the import linter on the project" + parser = argparse.ArgumentParser( + description=description, + usage=usage + ) + parser.add_argument( + "-c", + "--config", + type=str, + help="path to the configuration file for the importlinter", + metavar="TEXT" + ) + + args: argparse.Namespace = parser.parse_args(args=session.posargs) + file: str = args.config + print(f"-{file}-") + if file is None: + path: path = getattr(PROJECT_CONFIG, "importlinter", Path(".importlinter")) + else: + path: path = Path(file) + if path.exists(): + _import_lint(session=session, path=path) else: - path = str(PROJECT_CONFIG.importlinter) - _import_lint(session, path) + session.error( + "Please make sure you have a configuration file for the importlinter" + ) + From 9d1b435840e3a7768e4545e446f6fe83424c0a0d Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Thu, 25 Jul 2024 09:29:23 +0200 Subject: [PATCH 04/15] fix --- exasol/toolbox/nox/_lint.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/exasol/toolbox/nox/_lint.py b/exasol/toolbox/nox/_lint.py index 69a80d96..9efbfc38 100644 --- a/exasol/toolbox/nox/_lint.py +++ b/exasol/toolbox/nox/_lint.py @@ -39,7 +39,7 @@ def _type_check(session: Session, files: Iterable[str]) -> None: ) -def _import_lint(session: Session, path: str) -> None: +def _import_lint(session: Session, path: Path) -> None: session.run( "poetry", "run", @@ -84,10 +84,11 @@ def import_lint(session: Session) -> None: args: argparse.Namespace = parser.parse_args(args=session.posargs) file: str = args.config print(f"-{file}-") + path: Path if file is None: - path: path = getattr(PROJECT_CONFIG, "importlinter", Path(".importlinter")) + path = getattr(PROJECT_CONFIG, "importlinter", Path(".importlinter")) else: - path: path = Path(file) + path = Path(file) if path.exists(): _import_lint(session=session, path=path) else: From d7a449cb1e8d6eca2e99bcc9b95dad064439966c Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Thu, 25 Jul 2024 10:25:16 +0200 Subject: [PATCH 05/15] fix --- exasol/toolbox/nox/_lint.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/exasol/toolbox/nox/_lint.py b/exasol/toolbox/nox/_lint.py index 9efbfc38..651c5334 100644 --- a/exasol/toolbox/nox/_lint.py +++ b/exasol/toolbox/nox/_lint.py @@ -83,8 +83,7 @@ def import_lint(session: Session) -> None: args: argparse.Namespace = parser.parse_args(args=session.posargs) file: str = args.config - print(f"-{file}-") - path: Path + path: Path | None = None if file is None: path = getattr(PROJECT_CONFIG, "importlinter", Path(".importlinter")) else: From 4dda19ef1ddb70e3d2ae01343b97af15a29f1358 Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Tue, 10 Sep 2024 11:01:59 +0200 Subject: [PATCH 06/15] resolves the conversations --- .importlinter => .import_linter_config | 0 exasol/toolbox/nox/_lint.py | 14 +++++--------- noxconfig.py | 2 +- pyproject.toml | 2 +- 4 files changed, 7 insertions(+), 11 deletions(-) rename .importlinter => .import_linter_config (100%) diff --git a/.importlinter b/.import_linter_config similarity index 100% rename from .importlinter rename to .import_linter_config diff --git a/exasol/toolbox/nox/_lint.py b/exasol/toolbox/nox/_lint.py index 651c5334..2e566e9f 100644 --- a/exasol/toolbox/nox/_lint.py +++ b/exasol/toolbox/nox/_lint.py @@ -66,12 +66,9 @@ def type_check(session: Session) -> None: @nox.session(name="import-lint", python=False) def import_lint(session: Session) -> None: """Runs the import linter on the project""" - - usage = "nox -s import-lint -- [options]" - description = "Runs the import linter on the project" parser = argparse.ArgumentParser( - description=description, - usage=usage + usage="nox -s import-lint -- [options]", + description="Runs the import linter on the project" ) parser.add_argument( "-c", @@ -85,13 +82,12 @@ def import_lint(session: Session) -> None: file: str = args.config path: Path | None = None if file is None: - path = getattr(PROJECT_CONFIG, "importlinter", Path(".importlinter")) + path = getattr(PROJECT_CONFIG, "import_linter_config", Path(".import_linter_config")) else: path = Path(file) - if path.exists(): - _import_lint(session=session, path=path) - else: + if not path.exists(): session.error( "Please make sure you have a configuration file for the importlinter" ) + _import_lint(session=session, path=path) diff --git a/noxconfig.py b/noxconfig.py index e54618e4..6d79f027 100644 --- a/noxconfig.py +++ b/noxconfig.py @@ -34,7 +34,7 @@ class Config: root: Path = Path(__file__).parent doc: Path = Path(__file__).parent / "doc" - importlinter: Path = Path(__file__).parent / ".importlinter" + importlinter: Path = Path(__file__).parent / ".import_linter_config" version_file: Path = Path(__file__).parent / "exasol" / "toolbox" / "version.py" path_filters: Iterable[str] = ("dist", ".eggs", "venv", "metrics-schema", "project-template") plugins = [UpdateTemplates] diff --git a/pyproject.toml b/pyproject.toml index b9e27d34..1b5d9538 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,9 +54,9 @@ myst-parser = ">=2.0.0,<4" pluggy = "^1.5.0" shibuya = ">=2024.5.14" sphinx-design = ">=0.5.0,<1" +import-linter = "^2.0" -import-linter = "^2.0" [tool.poetry.group.dev.dependencies] autoimport = "^1.4.0" From f071414eba3350239530a704edd0a98ba348df2b Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Tue, 10 Sep 2024 11:51:16 +0200 Subject: [PATCH 07/15] resolves the conversations --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..7e2c020e --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +poetry.lock linguist-generated=true \ No newline at end of file From 4057740141dd0332efec94ce5fe4dcfeb506aa0a Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Tue, 24 Sep 2024 10:19:38 +0200 Subject: [PATCH 08/15] sort poetry dependencies --- pyproject.toml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0cbe0b2f..5e9f327f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,27 +34,27 @@ keywords = [ "Changelog" = "https://exasol.github.io/python-toolbox/changelog.html" [tool.poetry.dependencies] -python = "^3.8" -nox = ">=2022.8.7" -sphinx = ">=5.3,<8" -pytest = ">=7.2.2,<9" -mypy = ">=0.971" -sphinx-copybutton = "^0.5.0" -furo = ">=2022.9.15" -pyupgrade = ">=2.38.2,<4.0.0" black = ">=24.1.0" -isort = "^5.12.0" -pre-commit = ">=3.1.1,<4" coverage = ">=6.4.4,<8.0.0" -pylint = ">=2.15.4" -typer = {extras = ["all"], version = ">=0.7.0"} -prysk = {extras = ["pytest-plugin"], version = ">0.17.0,<1"} +furo = ">=2022.9.15" importlib-resources = ">=5.12.0" +import-linter = "^2.0" +isort = "^5.12.0" +mypy = ">=0.971" myst-parser = ">=2.0.0,<4" +nox = ">=2022.8.7" pluggy = "^1.5.0" +pre-commit = ">=3.1.1,<4" +prysk = extras = ["pytest-plugin"], version = ">0.17.0,<1"} +pylint = ">=2.15.4" +pytest = ">=7.2.2,<9" +python = "^3.8" +pyupgrade = ">=2.38.2,<4.0.0" shibuya = ">=2024.5.14" +sphinx = ">=5.3,<8" +sphinx-copybutton = "^0.5.0" sphinx-design = ">=0.5.0,<1" -import-linter = "^2.0" +typer = {extras = ["all"], version = ">=0.7.0"} [tool.poetry.group.dev.dependencies] From a941460af49fe4dda79378893eb8689bf6348429 Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Wed, 25 Sep 2024 11:34:59 +0200 Subject: [PATCH 09/15] update changelog --- doc/changes/unreleased.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changes/unreleased.md b/doc/changes/unreleased.md index 42c338f3..baafe734 100644 --- a/doc/changes/unreleased.md +++ b/doc/changes/unreleased.md @@ -3,6 +3,7 @@ ## ✨ Added * Added cookiecutter-template for creating new project +* #149: Added import linter and nox task for it ## 🔩 Internal From 60c3db09c287bb707aa3462785e3245b148ae03f Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Tue, 1 Oct 2024 10:36:45 +0200 Subject: [PATCH 10/15] resolve conversation --- doc/changes/unreleased.md | 2 +- doc/user_guide/modules/modules.rst | 1 + exasol/toolbox/nox/_lint.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/changes/unreleased.md b/doc/changes/unreleased.md index baafe734..3fefebdf 100644 --- a/doc/changes/unreleased.md +++ b/doc/changes/unreleased.md @@ -3,7 +3,7 @@ ## ✨ Added * Added cookiecutter-template for creating new project -* #149: Added import linter and nox task for it +* #149: Added nox task to lint imports ## 🔩 Internal diff --git a/doc/user_guide/modules/modules.rst b/doc/user_guide/modules/modules.rst index 84ef6b0f..af41d8fc 100644 --- a/doc/user_guide/modules/modules.rst +++ b/doc/user_guide/modules/modules.rst @@ -5,6 +5,7 @@ Modules :maxdepth: 2 nox + nox_tasks pre_commit_hooks sphinx/sphinx diff --git a/exasol/toolbox/nox/_lint.py b/exasol/toolbox/nox/_lint.py index e2b56535..c255c9b3 100644 --- a/exasol/toolbox/nox/_lint.py +++ b/exasol/toolbox/nox/_lint.py @@ -99,7 +99,7 @@ def security_lint(session: Session) -> None: @nox.session(name="import-lint", python=False) def import_lint(session: Session) -> None: - """Runs the import linter on the project""" + """Runs import linter on the project""" parser = argparse.ArgumentParser( usage="nox -s import-lint -- [options]", description="Runs the import linter on the project" From 47465928988e5b2037ccb31dca5b7b19ddddb55a Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Tue, 1 Oct 2024 14:13:10 +0200 Subject: [PATCH 11/15] resolve conversation --- doc/user_guide/modules/nox_tasks.rst | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 doc/user_guide/modules/nox_tasks.rst diff --git a/doc/user_guide/modules/nox_tasks.rst b/doc/user_guide/modules/nox_tasks.rst new file mode 100644 index 00000000..f64eb00f --- /dev/null +++ b/doc/user_guide/modules/nox_tasks.rst @@ -0,0 +1,14 @@ +nox_tasks +========= + +import-lint +___________ + +.. important:: + + first configure the ".import_linter_config" file + + information about the configuration you find on + `import-linter top-level-configuration `_ + and `import-linter contrakt types `_ + From c99630cb4d596562dac51452544901b75aceda76 Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Fri, 18 Oct 2024 10:15:15 +0200 Subject: [PATCH 12/15] more info user guide nox import-lint --- doc/user_guide/modules/nox_tasks.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/user_guide/modules/nox_tasks.rst b/doc/user_guide/modules/nox_tasks.rst index f64eb00f..b156bc52 100644 --- a/doc/user_guide/modules/nox_tasks.rst +++ b/doc/user_guide/modules/nox_tasks.rst @@ -3,6 +3,7 @@ nox_tasks import-lint ___________ +check that you are following a self-imposed architecture within your Python project. .. important:: From a59f060002428845b2697c95382d85cb0647fe85 Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Fri, 18 Oct 2024 12:49:14 +0200 Subject: [PATCH 13/15] changes in user guide nox-task --- doc/user_guide/modules/nox_tasks.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/user_guide/modules/nox_tasks.rst b/doc/user_guide/modules/nox_tasks.rst index b156bc52..a6200a4a 100644 --- a/doc/user_guide/modules/nox_tasks.rst +++ b/doc/user_guide/modules/nox_tasks.rst @@ -3,13 +3,12 @@ nox_tasks import-lint ___________ -check that you are following a self-imposed architecture within your Python project. +`Import Linter `_ +allows you to define and enforce rules for the imports within and between Python packages. .. important:: - first configure the ".import_linter_config" file - - information about the configuration you find on + First configure the linter in file :code:`.import_linter_config`, see `import-linter top-level-configuration `_ - and `import-linter contrakt types `_ + and `import-linter contract types `_ From 5347abcf7ca9c0181b4bc01417fe0df3191cefce Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Fri, 18 Oct 2024 13:42:56 +0200 Subject: [PATCH 14/15] change unreleased.md --- doc/changes/unreleased.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/changes/unreleased.md b/doc/changes/unreleased.md index a1e97245..bb219c87 100644 --- a/doc/changes/unreleased.md +++ b/doc/changes/unreleased.md @@ -1,5 +1,5 @@ # Unreleased -## ✨ Added +## ✨ Features #149: Added nox task to lint imports \ No newline at end of file From f53ea65809edb37c15bcd05cb8c8f6e10293afdc Mon Sep 17 00:00:00 2001 From: Jannis Mittenzwei Date: Fri, 18 Oct 2024 13:45:50 +0200 Subject: [PATCH 15/15] insert newline userguide --- doc/user_guide/modules/nox.rst | 1 + doc/user_guide/modules/nox_tasks.rst | 1 + doc/user_guide/modules/pre_commit_hooks.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/doc/user_guide/modules/nox.rst b/doc/user_guide/modules/nox.rst index 5818aeec..20966422 100644 --- a/doc/user_guide/modules/nox.rst +++ b/doc/user_guide/modules/nox.rst @@ -1,5 +1,6 @@ nox === + The nox package contains nox related functionalities like pre defined nox tasks. .. figure:: ../../_static/nothing-to-see-here.png diff --git a/doc/user_guide/modules/nox_tasks.rst b/doc/user_guide/modules/nox_tasks.rst index a6200a4a..78786c4f 100644 --- a/doc/user_guide/modules/nox_tasks.rst +++ b/doc/user_guide/modules/nox_tasks.rst @@ -3,6 +3,7 @@ nox_tasks import-lint ___________ + `Import Linter `_ allows you to define and enforce rules for the imports within and between Python packages. diff --git a/doc/user_guide/modules/pre_commit_hooks.rst b/doc/user_guide/modules/pre_commit_hooks.rst index 00d24a84..7807655d 100644 --- a/doc/user_guide/modules/pre_commit_hooks.rst +++ b/doc/user_guide/modules/pre_commit_hooks.rst @@ -1,5 +1,6 @@ pre_commit_hooks ================= + In the pre_commit_hook package contains git commit hooks and similar functionalities. .. figure:: ../../_static/nothing-to-see-here.png