From 8f8174a9025b867b2aa0b2cf96039a70ad196c88 Mon Sep 17 00:00:00 2001 From: Nathaniel Landau Date: Sun, 26 Feb 2023 10:41:17 -0500 Subject: [PATCH] build: update ruff and pass linting --- .pre-commit-config.yaml | 4 +- poetry.lock | 176 ++++++++++---------- pyproject.toml | 24 +-- src/obsidian_metadata/models/application.py | 74 ++++---- src/obsidian_metadata/models/metadata.py | 13 +- src/obsidian_metadata/models/notes.py | 40 ++--- src/obsidian_metadata/models/vault.py | 23 +-- tests/vault_test.py | 4 +- 8 files changed, 172 insertions(+), 186 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 103ba3f..9a4ca46 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ default_stages: [commit, manual] fail_fast: true repos: - repo: "https://github.com/commitizen-tools/commitizen" - rev: v2.42.0 + rev: v2.42.1 hooks: - id: commitizen - id: commitizen-branch @@ -64,7 +64,7 @@ repos: rev: "v0.0.252" hooks: - id: ruff - args: ["--extend-ignore", "I001,D301,D401,PLR2004,PLR0913"] + args: ["--extend-ignore", "I001,D301,D401,PLR2004"] exclude: tests/ - repo: "https://github.com/jendrikseipp/vulture" diff --git a/poetry.lock b/poetry.lock index a30a29c..a9d3488 100644 --- a/poetry.lock +++ b/poetry.lock @@ -139,14 +139,14 @@ files = [ [[package]] name = "commitizen" -version = "2.42.0" +version = "2.42.1" description = "Python commitizen client tool" category = "dev" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ - {file = "commitizen-2.42.0-py3-none-any.whl", hash = "sha256:3be082c1eecbf1a1fb4c390fbbd3fd26be39e0f105f30c9079fc0e789386d08d"}, - {file = "commitizen-2.42.0.tar.gz", hash = "sha256:c4c944408f3d55ca22b1c136e22217c167123c54f46730eb27a1c6503d705c69"}, + {file = "commitizen-2.42.1-py3-none-any.whl", hash = "sha256:fad7d37cfae361a859b713d4ac591859d5ca03137dd52de4e1bd208f7f45d5dc"}, + {file = "commitizen-2.42.1.tar.gz", hash = "sha256:eac18c7c65587061aac6829534907aeb208405b8230bfd35ec08503c228a7f17"}, ] [package.dependencies] @@ -164,63 +164,63 @@ typing-extensions = ">=4.0.1,<5.0.0" [[package]] name = "coverage" -version = "7.2.0" +version = "7.2.1" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "coverage-7.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90e7a4cbbb7b1916937d380beb1315b12957b8e895d7d9fb032e2038ac367525"}, - {file = "coverage-7.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:34d7211be69b215ad92298a962b2cd5a4ef4b17c7871d85e15d3d1b6dc8d8c96"}, - {file = "coverage-7.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:971b49dbf713044c3e5f6451b39f65615d4d1c1d9a19948fa0f41b0245a98765"}, - {file = "coverage-7.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0557289260125a6c453ad5673ba79e5b6841d9a20c9e101f758bfbedf928a77"}, - {file = "coverage-7.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:049806ae2df69468c130f04f0fab4212c46b34ba5590296281423bb1ae379df2"}, - {file = "coverage-7.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:875b03d92ac939fbfa8ae74a35b2c468fc4f070f613d5b1692f9980099a3a210"}, - {file = "coverage-7.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c160e34e388277f10c50dc2c7b5e78abe6d07357d9fe7fcb2f3c156713fd647e"}, - {file = "coverage-7.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:32e6a730fd18b2556716039ab93278ccebbefa1af81e6aa0c8dba888cf659e6e"}, - {file = "coverage-7.2.0-cp310-cp310-win32.whl", hash = "sha256:f3ff4205aff999164834792a3949f82435bc7c7655c849226d5836c3242d7451"}, - {file = "coverage-7.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:93db11da6e728587e943dff8ae1b739002311f035831b6ecdb15e308224a4247"}, - {file = "coverage-7.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cd38140b56538855d3d5722c6d1b752b35237e7ea3f360047ce57f3fade82d98"}, - {file = "coverage-7.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9dbb21561b0e04acabe62d2c274f02df0d715e8769485353ddf3cf84727e31ce"}, - {file = "coverage-7.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:171dd3aa71a49274a7e4fc26f5bc167bfae5a4421a668bc074e21a0522a0af4b"}, - {file = "coverage-7.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4655ecd813f4ba44857af3e9cffd133ab409774e9d2a7d8fdaf4fdfd2941b789"}, - {file = "coverage-7.2.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1856a8c4aa77eb7ca0d42c996d0ca395ecafae658c1432b9da4528c429f2575c"}, - {file = "coverage-7.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd67df6b48db18c10790635060858e2ea4109601e84a1e9bfdd92e898dc7dc79"}, - {file = "coverage-7.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2d7daf3da9c7e0ed742b3e6b4de6cc464552e787b8a6449d16517b31bbdaddf5"}, - {file = "coverage-7.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf9e02bc3dee792b9d145af30db8686f328e781bd212fdef499db5e9e4dd8377"}, - {file = "coverage-7.2.0-cp311-cp311-win32.whl", hash = "sha256:3713a8ec18781fda408f0e853bf8c85963e2d3327c99a82a22e5c91baffcb934"}, - {file = "coverage-7.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:88ae5929f0ef668b582fd7cad09b5e7277f50f912183cf969b36e82a1c26e49a"}, - {file = "coverage-7.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5e29a64e9586194ea271048bc80c83cdd4587830110d1e07b109e6ff435e5dbc"}, - {file = "coverage-7.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d5302eb84c61e758c9d68b8a2f93a398b272073a046d07da83d77b0edc8d76b"}, - {file = "coverage-7.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c9fffbc39dc4a6277e1525cab06c161d11ee3995bbc97543dc74fcec33e045b"}, - {file = "coverage-7.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6ceeab5fca62bca072eba6865a12d881f281c74231d2990f8a398226e1a5d96"}, - {file = "coverage-7.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:28563a35ef4a82b5bc5160a01853ce62b9fceee00760e583ffc8acf9e3413753"}, - {file = "coverage-7.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bfa065307667f1c6e1f4c3e13f415b0925e34e56441f5fda2c84110a4a1d8bda"}, - {file = "coverage-7.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7f992b32286c86c38f07a8b5c3fc88384199e82434040a729ec06b067ee0d52c"}, - {file = "coverage-7.2.0-cp37-cp37m-win32.whl", hash = "sha256:2c15bd09fd5009f3a79c8b3682b52973df29761030b692043f9834fc780947c4"}, - {file = "coverage-7.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f332d61fbff353e2ef0f3130a166f499c3fad3a196e7f7ae72076d41a6bfb259"}, - {file = "coverage-7.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:577a8bc40c01ad88bb9ab1b3a1814f2f860ff5c5099827da2a3cafc5522dadea"}, - {file = "coverage-7.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9240a0335365c29c968131bdf624bb25a8a653a9c0d8c5dbfcabf80b59c1973c"}, - {file = "coverage-7.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:358d3bce1468f298b19a3e35183bdb13c06cdda029643537a0cc37e55e74e8f1"}, - {file = "coverage-7.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:932048364ff9c39030c6ba360c31bf4500036d4e15c02a2afc5a76e7623140d4"}, - {file = "coverage-7.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7efa21611ffc91156e6f053997285c6fe88cfef3fb7533692d0692d2cb30c846"}, - {file = "coverage-7.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:465ea431c3b78a87e32d7d9ea6d081a1003c43a442982375cf2c247a19971961"}, - {file = "coverage-7.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0f03c229f1453b936916f68a47b3dfb5e84e7ad48e160488168a5e35115320c8"}, - {file = "coverage-7.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:40785553d68c61e61100262b73f665024fd2bb3c6f0f8e2cd5b13e10e4df027b"}, - {file = "coverage-7.2.0-cp38-cp38-win32.whl", hash = "sha256:b09dd7bef59448c66e6b490cc3f3c25c14bc85d4e3c193b81a6204be8dd355de"}, - {file = "coverage-7.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:dc4f9a89c82faf6254d646180b2e3aa4daf5ff75bdb2c296b9f6a6cf547e26a7"}, - {file = "coverage-7.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c243b25051440386179591a8d5a5caff4484f92c980fb6e061b9559da7cc3f64"}, - {file = "coverage-7.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4b8fd32f85b256fc096deeb4872aeb8137474da0c0351236f93cbedc359353d6"}, - {file = "coverage-7.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7f2a7df523791e6a63b40360afa6792a11869651307031160dc10802df9a252"}, - {file = "coverage-7.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da32526326e8da0effb452dc32a21ffad282c485a85a02aeff2393156f69c1c3"}, - {file = "coverage-7.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1153a6156715db9d6ae8283480ae67fb67452aa693a56d7dae9ffe8f7a80da"}, - {file = "coverage-7.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:74cd60fa00f46f28bd40048d6ca26bd58e9bee61d2b0eb4ec18cea13493c003f"}, - {file = "coverage-7.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:59a427f8a005aa7254074719441acb25ac2c2f60c1f1026d43f846d4254c1c2f"}, - {file = "coverage-7.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c3c4beddee01c8125a75cde3b71be273995e2e9ec08fbc260dd206b46bb99969"}, - {file = "coverage-7.2.0-cp39-cp39-win32.whl", hash = "sha256:08e3dd256b8d3e07bb230896c8c96ec6c5dffbe5a133ba21f8be82b275b900e8"}, - {file = "coverage-7.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad12c74c6ce53a027f5a5ecbac9be20758a41c85425c1bbab7078441794b04ee"}, - {file = "coverage-7.2.0-pp37.pp38.pp39-none-any.whl", hash = "sha256:ffa637a2d5883298449a5434b699b22ef98dd8e2ef8a1d9e60fa9cfe79813411"}, - {file = "coverage-7.2.0.tar.gz", hash = "sha256:9cc9c41aa5af16d845b53287051340c363dd03b7ef408e45eec3af52be77810d"}, + {file = "coverage-7.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49567ec91fc5e0b15356da07a2feabb421d62f52a9fff4b1ec40e9e19772f5f8"}, + {file = "coverage-7.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d2ef6cae70168815ed91388948b5f4fcc69681480a0061114db737f957719f03"}, + {file = "coverage-7.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3004765bca3acd9e015794e5c2f0c9a05587f5e698127ff95e9cfba0d3f29339"}, + {file = "coverage-7.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cca7c0b7f5881dfe0291ef09ba7bb1582cb92ab0aeffd8afb00c700bf692415a"}, + {file = "coverage-7.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2167d116309f564af56f9aa5e75ef710ef871c5f9b313a83050035097b56820"}, + {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cb5f152fb14857cbe7f3e8c9a5d98979c4c66319a33cad6e617f0067c9accdc4"}, + {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:87dc37f16fb5e3a28429e094145bf7c1753e32bb50f662722e378c5851f7fdc6"}, + {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e191a63a05851f8bce77bc875e75457f9b01d42843f8bd7feed2fc26bbe60833"}, + {file = "coverage-7.2.1-cp310-cp310-win32.whl", hash = "sha256:e3ea04b23b114572b98a88c85379e9e9ae031272ba1fb9b532aa934c621626d4"}, + {file = "coverage-7.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:0cf557827be7eca1c38a2480484d706693e7bb1929e129785fe59ec155a59de6"}, + {file = "coverage-7.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570c21a29493b350f591a4b04c158ce1601e8d18bdcd21db136fbb135d75efa6"}, + {file = "coverage-7.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e872b082b32065ac2834149dc0adc2a2e6d8203080501e1e3c3c77851b466f9"}, + {file = "coverage-7.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fac6343bae03b176e9b58104a9810df3cdccd5cfed19f99adfa807ffbf43cf9b"}, + {file = "coverage-7.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abacd0a738e71b20e224861bc87e819ef46fedba2fb01bc1af83dfd122e9c319"}, + {file = "coverage-7.2.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9256d4c60c4bbfec92721b51579c50f9e5062c21c12bec56b55292464873508"}, + {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:80559eaf6c15ce3da10edb7977a1548b393db36cbc6cf417633eca05d84dd1ed"}, + {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0bd7e628f6c3ec4e7d2d24ec0e50aae4e5ae95ea644e849d92ae4805650b4c4e"}, + {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09643fb0df8e29f7417adc3f40aaf379d071ee8f0350ab290517c7004f05360b"}, + {file = "coverage-7.2.1-cp311-cp311-win32.whl", hash = "sha256:1b7fb13850ecb29b62a447ac3516c777b0e7a09ecb0f4bb6718a8654c87dfc80"}, + {file = "coverage-7.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:617a94ada56bbfe547aa8d1b1a2b8299e2ec1ba14aac1d4b26a9f7d6158e1273"}, + {file = "coverage-7.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8649371570551d2fd7dee22cfbf0b61f1747cdfb2b7587bb551e4beaaa44cb97"}, + {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d2b9b5e70a21474c105a133ba227c61bc95f2ac3b66861143ce39a5ea4b3f84"}, + {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae82c988954722fa07ec5045c57b6d55bc1a0890defb57cf4a712ced65b26ddd"}, + {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:861cc85dfbf55a7a768443d90a07e0ac5207704a9f97a8eb753292a7fcbdfcfc"}, + {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0339dc3237c0d31c3b574f19c57985fcbe494280153bbcad33f2cdf469f4ac3e"}, + {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5928b85416a388dd557ddc006425b0c37e8468bd1c3dc118c1a3de42f59e2a54"}, + {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8d3843ca645f62c426c3d272902b9de90558e9886f15ddf5efe757b12dd376f5"}, + {file = "coverage-7.2.1-cp37-cp37m-win32.whl", hash = "sha256:6a034480e9ebd4e83d1aa0453fd78986414b5d237aea89a8fdc35d330aa13bae"}, + {file = "coverage-7.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6fce673f79a0e017a4dc35e18dc7bb90bf6d307c67a11ad5e61ca8d42b87cbff"}, + {file = "coverage-7.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f099da6958ddfa2ed84bddea7515cb248583292e16bb9231d151cd528eab657"}, + {file = "coverage-7.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:97a3189e019d27e914ecf5c5247ea9f13261d22c3bb0cfcfd2a9b179bb36f8b1"}, + {file = "coverage-7.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a81dbcf6c6c877986083d00b834ac1e84b375220207a059ad45d12f6e518a4e3"}, + {file = "coverage-7.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78d2c3dde4c0b9be4b02067185136b7ee4681978228ad5ec1278fa74f5ca3e99"}, + {file = "coverage-7.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a209d512d157379cc9ab697cbdbb4cfd18daa3e7eebaa84c3d20b6af0037384"}, + {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f3d07edb912a978915576a776756069dede66d012baa503022d3a0adba1b6afa"}, + {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8dca3c1706670297851bca1acff9618455122246bdae623be31eca744ade05ec"}, + {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b1991a6d64231a3e5bbe3099fb0dd7c9aeaa4275ad0e0aeff4cb9ef885c62ba2"}, + {file = "coverage-7.2.1-cp38-cp38-win32.whl", hash = "sha256:22c308bc508372576ffa3d2dbc4824bb70d28eeb4fcd79d4d1aed663a06630d0"}, + {file = "coverage-7.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:b0c0d46de5dd97f6c2d1b560bf0fcf0215658097b604f1840365296302a9d1fb"}, + {file = "coverage-7.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4dd34a935de268a133e4741827ae951283a28c0125ddcdbcbba41c4b98f2dfef"}, + {file = "coverage-7.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0f8318ed0f3c376cfad8d3520f496946977abde080439d6689d7799791457454"}, + {file = "coverage-7.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:834c2172edff5a08d78e2f53cf5e7164aacabeb66b369f76e7bb367ca4e2d993"}, + {file = "coverage-7.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4d70c853f0546855f027890b77854508bdb4d6a81242a9d804482e667fff6e6"}, + {file = "coverage-7.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a6450da4c7afc4534305b2b7d8650131e130610cea448ff240b6ab73d7eab63"}, + {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:99f4dd81b2bb8fc67c3da68b1f5ee1650aca06faa585cbc6818dbf67893c6d58"}, + {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bdd3f2f285ddcf2e75174248b2406189261a79e7fedee2ceeadc76219b6faa0e"}, + {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f29351393eb05e6326f044a7b45ed8e38cb4dcc38570d12791f271399dc41431"}, + {file = "coverage-7.2.1-cp39-cp39-win32.whl", hash = "sha256:e2b50ebc2b6121edf352336d503357321b9d8738bb7a72d06fc56153fd3f4cd8"}, + {file = "coverage-7.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:bd5a12239c0006252244f94863f1c518ac256160cd316ea5c47fb1a11b25889a"}, + {file = "coverage-7.2.1-pp37.pp38.pp39-none-any.whl", hash = "sha256:436313d129db7cf5b4ac355dd2bd3f7c7e5294af077b090b85de75f8458b8616"}, + {file = "coverage-7.2.1.tar.gz", hash = "sha256:c77f2a9093ccf329dd523a9b2b3c854c20d2a3d968b6def3b820272ca6732242"}, ] [package.extras] @@ -298,14 +298,14 @@ testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pyt [[package]] name = "identify" -version = "2.5.17" +version = "2.5.18" description = "File identification library for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "identify-2.5.17-py2.py3-none-any.whl", hash = "sha256:7d526dd1283555aafcc91539acc061d8f6f59adb0a7bba462735b0a318bff7ed"}, - {file = "identify-2.5.17.tar.gz", hash = "sha256:93cc61a861052de9d4c541a7acb7e3dcc9c11b398a2144f6e52ae5285f5f4f06"}, + {file = "identify-2.5.18-py2.py3-none-any.whl", hash = "sha256:93aac7ecf2f6abf879b8f29a8002d3c6de7086b8c28d88e1ad15045a15ab63f9"}, + {file = "identify-2.5.18.tar.gz", hash = "sha256:89e144fa560cc4cffb6ef2ab5e9fb18ed9f9b3cb054384bab4b95c12f6c309fe"}, ] [package.extras] @@ -388,24 +388,24 @@ dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils [[package]] name = "markdown-it-py" -version = "2.1.0" +version = "2.2.0" description = "Python port of markdown-it. Markdown parsing, done right!" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "markdown-it-py-2.1.0.tar.gz", hash = "sha256:cf7e59fed14b5ae17c0006eff14a2d9a00ed5f3a846148153899a0224e2c07da"}, - {file = "markdown_it_py-2.1.0-py3-none-any.whl", hash = "sha256:93de681e5c021a432c63147656fe21790bc01231e0cd2da73626f1aa3ac0fe27"}, + {file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"}, + {file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"}, ] [package.dependencies] mdurl = ">=0.1,<1.0" [package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark (>=3.2,<4.0)"] -code-style = ["pre-commit (==2.6)"] -compare = ["commonmark (>=0.9.1,<0.10.0)", "markdown (>=3.3.6,<3.4.0)", "mistletoe (>=0.8.1,<0.9.0)", "mistune (>=2.0.2,<2.1.0)", "panflute (>=2.1.3,<2.2.0)"] -linkify = ["linkify-it-py (>=1.0,<2.0)"] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] plugins = ["mdit-py-plugins"] profiling = ["gprof2dot"] rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] @@ -615,19 +615,19 @@ dev = ["black", "hypothesis", "mypy", "pygments (>=2.14.0)", "pytest", "pytest-c [[package]] name = "platformdirs" -version = "2.6.2" +version = "3.0.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"}, - {file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"}, + {file = "platformdirs-3.0.0-py3-none-any.whl", hash = "sha256:b1d5eb14f221506f50d6604a561f4c5786d9e80355219694a1b244bcd96f4567"}, + {file = "platformdirs-3.0.0.tar.gz", hash = "sha256:8a1228abb1ef82d788f74139988b137e78692984ec7b08eaa6c65f1723af28f9"}, ] [package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" @@ -697,14 +697,14 @@ virtualenv = ">=20.10.0" [[package]] name = "prompt-toolkit" -version = "3.0.36" +version = "3.0.37" description = "Library for building powerful interactive command lines in Python" category = "main" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.36-py3-none-any.whl", hash = "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305"}, - {file = "prompt_toolkit-3.0.36.tar.gz", hash = "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63"}, + {file = "prompt_toolkit-3.0.37-py3-none-any.whl", hash = "sha256:6a2948ec427dfcc7c983027b1044b355db6aaa8be374f54ad2015471f7d81c5b"}, + {file = "prompt_toolkit-3.0.37.tar.gz", hash = "sha256:d5d73d4b5eb1a92ba884a88962b157f49b71e06c4348b417dd622b25cdd3800b"}, ] [package.dependencies] @@ -1118,14 +1118,14 @@ files = [ [[package]] name = "setuptools" -version = "67.1.0" +version = "67.4.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.1.0-py3-none-any.whl", hash = "sha256:a7687c12b444eaac951ea87a9627c4f904ac757e7abdc5aac32833234af90378"}, - {file = "setuptools-67.1.0.tar.gz", hash = "sha256:e261cdf010c11a41cb5cb5f1bf3338a7433832029f559a6a7614bd42a967c300"}, + {file = "setuptools-67.4.0-py3-none-any.whl", hash = "sha256:f106dee1b506dee5102cc3f3e9e68137bbad6d47b616be7991714b0c62204251"}, + {file = "setuptools-67.4.0.tar.gz", hash = "sha256:e5fd0a713141a4a105412233c63dc4e17ba0090c8e8334594ac790ec97792330"}, ] [package.extras] @@ -1250,44 +1250,44 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. [[package]] name = "types-python-dateutil" -version = "2.8.19.6" +version = "2.8.19.8" description = "Typing stubs for python-dateutil" category = "dev" optional = false python-versions = "*" files = [ - {file = "types-python-dateutil-2.8.19.6.tar.gz", hash = "sha256:4a6f4cc19ce4ba1a08670871e297bf3802f55d4f129e6aa2443f540b6cf803d2"}, - {file = "types_python_dateutil-2.8.19.6-py3-none-any.whl", hash = "sha256:cfb7d31021c6bce6f3362c69af6e3abb48fe3e08854f02487e844ff910deec2a"}, + {file = "types-python-dateutil-2.8.19.8.tar.gz", hash = "sha256:316c6b107d055bbd06324b71362e6104102220e6988aa4a388550aa3a8ad5d06"}, + {file = "types_python_dateutil-2.8.19.8-py3-none-any.whl", hash = "sha256:6b44741d3e79b2f2ba595f6bfa96f1a5091a00703848547efb3bc5b71df3cf9d"}, ] [[package]] name = "typing-extensions" -version = "4.4.0" +version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, + {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, ] [[package]] name = "virtualenv" -version = "20.18.0" +version = "20.19.0" description = "Virtual Python Environment builder" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.18.0-py3-none-any.whl", hash = "sha256:9d61e4ec8d2c0345dab329fb825eb05579043766a4b26a2f66b28948de68c722"}, - {file = "virtualenv-20.18.0.tar.gz", hash = "sha256:f262457a4d7298a6b733b920a196bf8b46c8af15bf1fd9da7142995eff15118e"}, + {file = "virtualenv-20.19.0-py3-none-any.whl", hash = "sha256:54eb59e7352b573aa04d53f80fc9736ed0ad5143af445a1e539aada6eb947dd1"}, + {file = "virtualenv-20.19.0.tar.gz", hash = "sha256:37a640ba82ed40b226599c522d411e4be5edb339a0c0de030c0dc7b646d61590"}, ] [package.dependencies] distlib = ">=0.3.6,<1" filelock = ">=3.4.1,<4" -platformdirs = ">=2.4,<3" +platformdirs = ">=2.4,<4" [package.extras] docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] @@ -1338,4 +1338,4 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "513ab619dbac631bca8cc366ad0182caa51ece251e85f404d40292ccb4a66f75" +content-hash = "24126a6868e5ca4bba97f6a34f27525a136bd129a93716b84fd518659e2c2f0b" diff --git a/pyproject.toml b/pyproject.toml index 115c9c3..eb1b6bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ [tool.poetry.group.dev.dependencies] black = "^23.1.0" - commitizen = "^2.42.0" + commitizen = "^2.42.1" coverage = "^7.2.0" interrogate = "^1.5.0" mypy = "^1.0.1" @@ -73,12 +73,7 @@ ] ignore-init-module-imports = true line-length = 100 - per-file-ignores = { "cli.py" = [ - "PLR0913", - ], "tests/*.py" = [ - "E999", - "PLR2004", - ] } + per-file-ignores = { "cli.py" = ["PLR0913"], "tests/*.py" = ["E999", "PLR2004"] } select = [ "A", "B", @@ -143,15 +138,12 @@ line-length = 100 [tool.commitizen] - bump_message = "bump(release): v$current_version → v$new_version" - changelog_incremental = true - tag_format = "v$version" + bump_message = "bump(release): v$current_version → v$new_version" + changelog_incremental = true + tag_format = "v$version" update_changelog_on_bump = true - version = "0.6.0" - version_files = [ - "pyproject.toml:version", - "src/obsidian_metadata/__version__.py:__version__", - ] + version = "0.6.0" + version_files = ["pyproject.toml:version", "src/obsidian_metadata/__version__.py:__version__"] [tool.interrogate] exclude = ["build", "docs", "tests"] @@ -211,7 +203,7 @@ help = "Lint this package" [[tool.poe.tasks.lint.sequence]] - shell = "ruff --extend-ignore=I001,D301,D401,PLR2004,PLR0913 src/" + shell = "ruff --extend-ignore=I001,D301,D401,PLR2004 src/" [[tool.poe.tasks.lint.sequence]] shell = "black --check src/ tests/" diff --git a/src/obsidian_metadata/models/application.py b/src/obsidian_metadata/models/application.py index a77b57d..d481632 100644 --- a/src/obsidian_metadata/models/application.py +++ b/src/obsidian_metadata/models/application.py @@ -1,21 +1,19 @@ """Questions for the cli.""" -from typing import Any from pathlib import Path +from typing import Any + import questionary -from rich import print -from rich import box +from rich import box, print from rich.console import Console from rich.table import Table -from obsidian_metadata._config import VaultConfig -from obsidian_metadata._utils.alerts import logger as log -from obsidian_metadata.models import Patterns, Vault, VaultFilter -from obsidian_metadata._utils import alerts -from obsidian_metadata.models.questions import Questions -from obsidian_metadata.models.enums import MetadataType -PATTERNS = Patterns() +from obsidian_metadata._config import VaultConfig +from obsidian_metadata._utils import alerts +from obsidian_metadata.models import Vault, VaultFilter +from obsidian_metadata.models.enums import MetadataType +from obsidian_metadata.models.questions import Questions class Application: @@ -34,7 +32,6 @@ class Application: def _load_vault(self) -> None: """Load the vault.""" - if len(self.filters) == 0: self.vault: Vault = Vault(config=self.config, dry_run=self.dry_run) else: @@ -52,7 +49,7 @@ class Application: while True: self.vault.info() - match self.questions.ask_application_main(): # noqa: E999 + match self.questions.ask_application_main(): case "vault_actions": self.application_vault() case "inspect_metadata": @@ -100,7 +97,7 @@ class Application: area=area, key=key, value=value, location=self.vault.insert_location ) if num_changed == 0: # pragma: no cover - alerts.warning(f"No notes were changed") + alerts.warning("No notes were changed") return alerts.success(f"Added metadata to {num_changed} notes") @@ -115,7 +112,7 @@ class Application: ) if num_changed == 0: # pragma: no cover - alerts.warning(f"No notes were changed") + alerts.warning("No notes were changed") return alerts.success(f"Added metadata to {num_changed} notes") @@ -123,6 +120,7 @@ class Application: return def application_delete_metadata(self) -> None: + """Delete metadata.""" alerts.usage("Delete either a key and all associated values, or a specific value.") choices = [ @@ -167,7 +165,7 @@ class Application: case _: # pragma: no cover return - def application_filter(self) -> None: + def application_filter(self) -> None: # noqa: C901,PLR0911,PLR0912 """Filter notes.""" alerts.usage("Limit the scope of notes to be processed with one or more filters.") @@ -229,29 +227,29 @@ class Application: show_header=False, box=box.HORIZONTALS, ) - for _n, filter in enumerate(self.filters, start=1): - if filter.path_filter is not None: + for _n, _filter in enumerate(self.filters, start=1): + if _filter.path_filter is not None: table.add_row( str(_n), - f"Path regex: [tan bold]{filter.path_filter}", + f"Path regex: [tan bold]{_filter.path_filter}", end_section=bool(_n == len(self.filters)), ) - elif filter.tag_filter is not None: + elif _filter.tag_filter is not None: table.add_row( str(_n), - f"Tag filter: [tan bold]{filter.tag_filter}", + f"Tag filter: [tan bold]{_filter.tag_filter}", end_section=bool(_n == len(self.filters)), ) - elif filter.key_filter is not None and filter.value_filter is None: + elif _filter.key_filter is not None and _filter.value_filter is None: table.add_row( str(_n), - f"Key filter: [tan bold]{filter.key_filter}", + f"Key filter: [tan bold]{_filter.key_filter}", end_section=bool(_n == len(self.filters)), ) - elif filter.key_filter is not None and filter.value_filter is not None: + elif _filter.key_filter is not None and _filter.value_filter is not None: table.add_row( str(_n), - f"Key/Value : [tan bold]{filter.key_filter}={filter.value_filter}", + f"Key/Value : [tan bold]{_filter.key_filter}={_filter.value_filter}", end_section=bool(_n == len(self.filters)), ) table.add_row(f"{len(self.filters) + 1}", "Clear All") @@ -322,13 +320,13 @@ class Application: path = self.questions.ask_path(question="Enter a path for the CSV file") if path is None: return - self.vault.export_metadata(path=path, format="csv") + self.vault.export_metadata(path=path, export_format="csv") alerts.success(f"Metadata written to {path}") case "export_json": path = self.questions.ask_path(question="Enter a path for the JSON file") if path is None: return - self.vault.export_metadata(path=path, format="json") + self.vault.export_metadata(path=path, export_format="json") alerts.success(f"Metadata written to {path}") case _: return @@ -405,7 +403,7 @@ class Application: num_changed = self.vault.delete_inline_tag(tag) if num_changed == 0: - alerts.warning(f"No notes were changed") + alerts.warning("No notes were changed") return alerts.success(f"Deleted inline tag: {tag} in {num_changed} notes") @@ -455,18 +453,17 @@ class Application: def noninteractive_export_csv(self, path: Path) -> None: """Export the vault metadata to CSV.""" self._load_vault() - self.vault.export_metadata(format="json", path=str(path)) + self.vault.export_metadata(export_format="json", path=str(path)) alerts.success(f"Exported metadata to {path}") def noninteractive_export_json(self, path: Path) -> None: """Export the vault metadata to JSON.""" self._load_vault() - self.vault.export_metadata(format="json", path=str(path)) + self.vault.export_metadata(export_format="json", path=str(path)) alerts.success(f"Exported metadata to {path}") def rename_key(self) -> None: - """Renames a key in the vault.""" - + """Rename a key in the vault.""" original_key = self.questions.ask_existing_key( question="Which key would you like to rename?" ) @@ -479,7 +476,7 @@ class Application: num_changed = self.vault.rename_metadata(original_key, new_key) if num_changed == 0: - alerts.warning(f"No notes were changed") + alerts.warning("No notes were changed") return alerts.success( @@ -488,7 +485,6 @@ class Application: def rename_inline_tag(self) -> None: """Rename an inline tag.""" - original_tag = self.questions.ask_existing_inline_tag(question="Which tag to rename?") if original_tag is None: # pragma: no cover return @@ -499,7 +495,7 @@ class Application: num_changed = self.vault.rename_inline_tag(original_tag, new_tag) if num_changed == 0: - alerts.warning(f"No notes were changed") + alerts.warning("No notes were changed") return alerts.success( @@ -524,7 +520,7 @@ class Application: num_changes = self.vault.rename_metadata(key, value, new_value) if num_changes == 0: - alerts.warning(f"No notes were changed") + alerts.warning("No notes were changed") return alerts.success(f"Renamed '{key}:{value}' to '{key}:{new_value}' in {num_changes} notes") @@ -558,7 +554,7 @@ class Application: break changed_notes[note_to_review].print_diff() - def transpose_metadata(self, begin: MetadataType, end: MetadataType) -> None: + def transpose_metadata(self, begin: MetadataType, end: MetadataType) -> None: # noqa: PLR0911 """Transpose metadata from one format to another. Args: @@ -580,7 +576,7 @@ class Application: ) if num_changed == 0: - alerts.warning(f"No notes were changed") + alerts.warning("No notes were changed") return alerts.success(f"Transposed {begin.value} to {end.value} in {num_changed} notes") @@ -597,7 +593,7 @@ class Application: ) if num_changed == 0: - alerts.warning(f"No notes were changed") + alerts.warning("No notes were changed") return alerts.success( @@ -622,7 +618,7 @@ class Application: ) if num_changed == 0: - alerts.warning(f"No notes were changed") + alerts.warning("No notes were changed") return alerts.success( diff --git a/src/obsidian_metadata/models/metadata.py b/src/obsidian_metadata/models/metadata.py index d0660e1..8d02b22 100644 --- a/src/obsidian_metadata/models/metadata.py +++ b/src/obsidian_metadata/models/metadata.py @@ -1,16 +1,15 @@ """Work with metadata items.""" +import copy import re from io import StringIO -import copy + from rich import print from rich.columns import Columns from rich.console import Console from rich.table import Table from ruamel.yaml import YAML -from obsidian_metadata._utils.alerts import logger as log -from obsidian_metadata._utils import alerts from obsidian_metadata._utils import ( clean_dictionary, dict_contains, @@ -61,7 +60,7 @@ class VaultMetadata: self.tags.extend(metadata) self.tags = sorted({s.strip("#") for s in self.tags}) - def contains( + def contains( # noqa: PLR0911 self, area: MetadataType, key: str = None, value: str = None, is_regex: bool = False ) -> bool: """Check if a key and/or a value exists in the metadata. @@ -82,7 +81,7 @@ class VaultMetadata: if area != MetadataType.TAGS and key is None: raise ValueError("Key must be provided when checking for a key's existence.") - match area: # noqa: E999 + match area: case MetadataType.ALL: if dict_contains(self.dict, key, value, is_regex): return True @@ -249,7 +248,7 @@ class Frontmatter: return dict_values_to_lists_strings(frontmatter, strip_null_values=True) - def add(self, key: str, value: str | list[str] = None) -> bool: + def add(self, key: str, value: str | list[str] = None) -> bool: # noqa: PLR0911 """Add a key and value to the frontmatter. Args: @@ -399,7 +398,7 @@ class InlineMetadata: """ return f"InlineMetadata(inline_metadata={self.dict})" - def add(self, key: str, value: str | list[str] = None) -> bool: + def add(self, key: str, value: str | list[str] = None) -> bool: # noqa: PLR0911 """Add a key and value to the inline metadata. Args: diff --git a/src/obsidian_metadata/models/notes.py b/src/obsidian_metadata/models/notes.py index baaa269..0e1bd25 100644 --- a/src/obsidian_metadata/models/notes.py +++ b/src/obsidian_metadata/models/notes.py @@ -1,14 +1,16 @@ """Representation of notes and in the vault.""" +import copy import difflib import re from pathlib import Path -import copy + import rich.repr import typer from rich.console import Console from rich.table import Table + from obsidian_metadata._utils import alerts from obsidian_metadata._utils.alerts import logger as log from obsidian_metadata.models import ( @@ -117,7 +119,7 @@ class Note: _v = re.escape(_v) self.sub(f"{_k}:: ?{_v}", f"{_k}:: {value_2}", is_regex=True) - def add_metadata( + def add_metadata( # noqa: C901 self, area: MetadataType, key: str = None, @@ -135,17 +137,16 @@ class Note: Returns: bool: Whether the metadata was added. """ - match area: # noqa: E999 + match area: case MetadataType.FRONTMATTER if self.frontmatter.add(key, value): self.update_frontmatter() return True case MetadataType.INLINE: - if value is None: - if self.inline_metadata.add(key): - line = f"{key}::" - self.insert(new_string=line, location=location) - return True + if value is None and self.inline_metadata.add(key): + line = f"{key}::" + self.insert(new_string=line, location=location) + return True new_values = [] if isinstance(value, list): @@ -169,9 +170,10 @@ class Note: if new_values: for value in new_values: - if value.startswith("#"): - value = value[1:] - self.insert(new_string=f"#{value}", location=location) + _v = value + if _v.startswith("#"): + _v = _v[1:] + self.insert(new_string=f"#{_v}", location=location) return True case _: @@ -437,7 +439,7 @@ class Note: self.file_content = re.sub(pattern, replacement, self.file_content, re.MULTILINE) - def transpose_metadata( + def transpose_metadata( # noqa: C901, PLR0912, PLR0911, PLR0913 self, begin: MetadataType, end: MetadataType, @@ -492,8 +494,8 @@ class Note: self.add_metadata(key=k, value=value, area=end, location=location) self.delete_metadata(key=k, value=value, area=begin) return True - else: - return False + + return False if isinstance(value, list): for value_item in value: @@ -508,10 +510,7 @@ class Note: if temp_dict[k] == []: self.delete_metadata(key=k, area=begin) - if has_changes: - return True - else: - return False + return bool(has_changes) if begin == MetadataType.TAGS: # TODO: Implement transposing to and from tags @@ -532,10 +531,7 @@ class Note: return new_frontmatter = self.frontmatter.to_yaml(sort_keys=sort_keys) - if self.frontmatter.dict == {}: - new_frontmatter = "" - else: - new_frontmatter = f"---\n{new_frontmatter}---\n" + new_frontmatter = "" if self.frontmatter.dict == {} else f"---\n{new_frontmatter}---\n" if current_frontmatter is None: self.file_content = new_frontmatter + self.file_content diff --git a/src/obsidian_metadata/models/vault.py b/src/obsidian_metadata/models/vault.py index f8acfb2..b3eec5c 100644 --- a/src/obsidian_metadata/models/vault.py +++ b/src/obsidian_metadata/models/vault.py @@ -1,11 +1,12 @@ """Obsidian vault representation.""" import csv +import json import re import shutil from dataclasses import dataclass from pathlib import Path -import json + import rich.repr from rich import box from rich.console import Console @@ -13,7 +14,7 @@ from rich.progress import Progress, SpinnerColumn, TextColumn from rich.prompt import Confirm from rich.table import Table -from obsidian_metadata._config.config import Config, VaultConfig +from obsidian_metadata._config.config import VaultConfig from obsidian_metadata._utils import alerts from obsidian_metadata._utils.alerts import logger as log from obsidian_metadata.models import InsertLocation, MetadataType, Note, VaultMetadata @@ -120,13 +121,15 @@ class Vault: """ if self.config["insert_location"].upper() == "TOP": return InsertLocation.TOP - elif self.config["insert_location"].upper() == "HEADER": + + if self.config["insert_location"].upper() == "HEADER": return InsertLocation.AFTER_TITLE - elif self.config["insert_location"].upper() == "BOTTOM": - return InsertLocation.BOTTOM - else: + + if self.config["insert_location"].upper() == "BOTTOM": return InsertLocation.BOTTOM + return InsertLocation.BOTTOM + def _find_markdown_notes(self) -> list[Path]: """Build list of all markdown files in the vault. @@ -285,16 +288,16 @@ class Vault: return num_changed - def export_metadata(self, path: str, format: str = "csv") -> None: + def export_metadata(self, path: str, export_format: str = "csv") -> None: """Write metadata to a csv file. Args: path (Path): Path to write csv file to. - export_as (str, optional): Export as 'csv' or 'json'. Defaults to "csv". + export_format (str, optional): Export as 'csv' or 'json'. Defaults to "csv". """ export_file = Path(path).expanduser().resolve() - match format: # noqa: E999 + match export_format: case "csv": with open(export_file, "w", encoding="UTF8") as f: writer = csv.writer(f) @@ -412,7 +415,7 @@ class Vault: return num_changed - def transpose_metadata( + def transpose_metadata( # noqa: PLR0913 self, begin: MetadataType, end: MetadataType, diff --git a/tests/vault_test.py b/tests/vault_test.py index 9e7f1c8..4da5484 100644 --- a/tests/vault_test.py +++ b/tests/vault_test.py @@ -348,7 +348,7 @@ def test_export_csv(tmp_path, test_vault): vault = Vault(config=vault_config) export_file = Path(f"{tmp_path}/export.csv") - vault.export_metadata(path=export_file, format="csv") + vault.export_metadata(path=export_file, export_format="csv") assert export_file.exists() is True assert "frontmatter,date_created,2022-12-22" in export_file.read_text() @@ -361,7 +361,7 @@ def test_export_json(tmp_path, test_vault): vault = Vault(config=vault_config) export_file = Path(f"{tmp_path}/export.json") - vault.export_metadata(path=export_file, format="json") + vault.export_metadata(path=export_file, export_format="json") assert export_file.exists() is True assert '"frontmatter": {' in export_file.read_text()