diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f914f1d30..fc3a05048 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,12 +1,12 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.1.2 + rev: v0.3.1 hooks: - id: ruff - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.1.2 + rev: v0.3.1 hooks: - id: ruff-format args: [--check] diff --git a/Taskfile b/Taskfile index ce979d69a..23c978366 100755 --- a/Taskfile +++ b/Taskfile @@ -10,7 +10,7 @@ function cmd { function fmt { cmd ruff format . "${@}" - cmd ruff --fix . "${@}" + cmd ruff check --fix . "${@}" fmt-xml } @@ -26,7 +26,7 @@ function fmt-xml { function lint-only { echo "Linting using ruff..." - cmd ruff ${src} + cmd ruff check ${src} } function install { diff --git a/poetry.lock b/poetry.lock index 82d59d36b..e9b92add5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.0 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 = "aiohttp" @@ -337,13 +337,13 @@ dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler", [[package]] name = "execnet" -version = "2.0.2" +version = "2.1.1" description = "execnet: rapid multi-Python deployment" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "execnet-2.0.2-py3-none-any.whl", hash = "sha256:88256416ae766bc9e8895c76a87928c0012183da3cc4fc18016e6f050e025f41"}, - {file = "execnet-2.0.2.tar.gz", hash = "sha256:cc59bc4423742fd71ad227122eb0dd44db51efb3dc4095b45ac9a08c770096af"}, + {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, + {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, ] [package.extras] @@ -791,13 +791,13 @@ files = [ [[package]] name = "mike" -version = "2.0.0" +version = "2.1.3" description = "Manage multiple versions of your MkDocs-powered documentation" optional = false python-versions = "*" files = [ - {file = "mike-2.0.0-py3-none-any.whl", hash = "sha256:87f496a65900f93ba92d72940242b65c86f3f2f82871bc60ebdcffc91fad1d9e"}, - {file = "mike-2.0.0.tar.gz", hash = "sha256:566f1cab1a58cc50b106fb79ea2f1f56e7bfc8b25a051e95e6eaee9fba0922de"}, + {file = "mike-2.1.3-py3-none-any.whl", hash = "sha256:d90c64077e84f06272437b464735130d380703a76a5738b152932884c60c062a"}, + {file = "mike-2.1.3.tar.gz", hash = "sha256:abd79b8ea483fb0275b7972825d3082e5ae67a41820f8d8a0dc7a3f49944e810"}, ] [package.dependencies] @@ -807,6 +807,7 @@ jinja2 = ">=2.7" mkdocs = ">=1.0" pyparsing = ">=3.0" pyyaml = ">=5.1" +pyyaml-env-tag = "*" verspec = "*" [package.extras] @@ -815,13 +816,13 @@ test = ["coverage", "flake8 (>=3.0)", "flake8-quotes", "shtab"] [[package]] name = "mkdocs" -version = "1.5.3" +version = "1.6.0" description = "Project documentation with Markdown." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"}, - {file = "mkdocs-1.5.3.tar.gz", hash = "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"}, + {file = "mkdocs-1.6.0-py3-none-any.whl", hash = "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7"}, + {file = "mkdocs-1.6.0.tar.gz", hash = "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"}, ] [package.dependencies] @@ -829,29 +830,45 @@ click = ">=7.0" colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} ghp-import = ">=1.0" jinja2 = ">=2.11.1" -markdown = ">=3.2.1" +markdown = ">=3.3.6" markupsafe = ">=2.0.1" mergedeep = ">=1.3.4" +mkdocs-get-deps = ">=0.2.0" packaging = ">=20.5" pathspec = ">=0.11.1" -platformdirs = ">=2.2.0" pyyaml = ">=5.1" pyyaml-env-tag = ">=0.1" watchdog = ">=2.0" [package.extras] i18n = ["babel (>=2.9.0)"] -min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, + {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, +] + +[package.dependencies] +mergedeep = ">=1.3.4" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" [[package]] name = "mkdocs-material" -version = "9.5.7" +version = "9.5.33" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.7-py3-none-any.whl", hash = "sha256:0be8ce8bcfebb52bae9b00cf9b851df45b8a92d629afcfd7f2c09b2dfa155ea3"}, - {file = "mkdocs_material-9.5.7.tar.gz", hash = "sha256:16110292575d88a338d2961f3cb665cf12943ff8829e551a9b364f24019e46af"}, + {file = "mkdocs_material-9.5.33-py3-none-any.whl", hash = "sha256:dbc79cf0fdc6e2c366aa987de8b0c9d4e2bb9f156e7466786ba2fd0f9bf7ffca"}, + {file = "mkdocs_material-9.5.33.tar.gz", hash = "sha256:d23a8b5e3243c9b2f29cdfe83051104a8024b767312dc8fde05ebe91ad55d89d"}, ] [package.dependencies] @@ -859,7 +876,7 @@ babel = ">=2.10,<3.0" colorama = ">=0.4,<1.0" jinja2 = ">=3.0,<4.0" markdown = ">=3.2,<4.0" -mkdocs = ">=1.5.3,<1.6.0" +mkdocs = ">=1.6,<2.0" mkdocs-material-extensions = ">=1.3,<2.0" paginate = ">=0.5,<1.0" pygments = ">=2.16,<3.0" @@ -868,7 +885,7 @@ regex = ">=2022.4" requests = ">=2.26,<3.0" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2,<2.0)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] @@ -885,13 +902,13 @@ files = [ [[package]] name = "mkdocs-static-i18n" -version = "1.2.0" +version = "1.2.3" description = "MkDocs i18n plugin using static translation markdown files" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mkdocs_static_i18n-1.2.0-py3-none-any.whl", hash = "sha256:3a076c128f6096a5b5bdcdbce44c038cf8cc77b6fdad5525bbecabd3787435fb"}, - {file = "mkdocs_static_i18n-1.2.0.tar.gz", hash = "sha256:4bd0ffec9f1d966b66ace853027b586889ae9a4b2b80c42eb51d4290e5ce0fd7"}, + {file = "mkdocs_static_i18n-1.2.3-py3-none-any.whl", hash = "sha256:e6f2f3c53b657d7632015b32dea3c64d0b80a7a8d6cde0334ca8f66f9e33b52f"}, + {file = "mkdocs_static_i18n-1.2.3.tar.gz", hash = "sha256:7ccf4da6dd29570ec49cd863ebff6fef9cb82dbb1cb85249bdf744e8d839c914"}, ] [package.dependencies] @@ -1001,43 +1018,43 @@ files = [ [[package]] name = "mypy" -version = "1.8.0" +version = "1.11.2" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:485a8942f671120f76afffff70f259e1cd0f0cfe08f81c05d8816d958d4577d3"}, - {file = "mypy-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:df9824ac11deaf007443e7ed2a4a26bebff98d2bc43c6da21b2b64185da011c4"}, - {file = "mypy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afecd6354bbfb6e0160f4e4ad9ba6e4e003b767dd80d85516e71f2e955ab50d"}, - {file = "mypy-1.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8963b83d53ee733a6e4196954502b33567ad07dfd74851f32be18eb932fb1cb9"}, - {file = "mypy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:e46f44b54ebddbeedbd3d5b289a893219065ef805d95094d16a0af6630f5d410"}, - {file = "mypy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:855fe27b80375e5c5878492f0729540db47b186509c98dae341254c8f45f42ae"}, - {file = "mypy-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c886c6cce2d070bd7df4ec4a05a13ee20c0aa60cb587e8d1265b6c03cf91da3"}, - {file = "mypy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d19c413b3c07cbecf1f991e2221746b0d2a9410b59cb3f4fb9557f0365a1a817"}, - {file = "mypy-1.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9261ed810972061388918c83c3f5cd46079d875026ba97380f3e3978a72f503d"}, - {file = "mypy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:51720c776d148bad2372ca21ca29256ed483aa9a4cdefefcef49006dff2a6835"}, - {file = "mypy-1.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:52825b01f5c4c1c4eb0db253ec09c7aa17e1a7304d247c48b6f3599ef40db8bd"}, - {file = "mypy-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f5ac9a4eeb1ec0f1ccdc6f326bcdb464de5f80eb07fb38b5ddd7b0de6bc61e55"}, - {file = "mypy-1.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afe3fe972c645b4632c563d3f3eff1cdca2fa058f730df2b93a35e3b0c538218"}, - {file = "mypy-1.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:42c6680d256ab35637ef88891c6bd02514ccb7e1122133ac96055ff458f93fc3"}, - {file = "mypy-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:720a5ca70e136b675af3af63db533c1c8c9181314d207568bbe79051f122669e"}, - {file = "mypy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:028cf9f2cae89e202d7b6593cd98db6759379f17a319b5faf4f9978d7084cdc6"}, - {file = "mypy-1.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e6d97288757e1ddba10dd9549ac27982e3e74a49d8d0179fc14d4365c7add66"}, - {file = "mypy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f1478736fcebb90f97e40aff11a5f253af890c845ee0c850fe80aa060a267c6"}, - {file = "mypy-1.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42419861b43e6962a649068a61f4a4839205a3ef525b858377a960b9e2de6e0d"}, - {file = "mypy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:2b5b6c721bd4aabaadead3a5e6fa85c11c6c795e0c81a7215776ef8afc66de02"}, - {file = "mypy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5c1538c38584029352878a0466f03a8ee7547d7bd9f641f57a0f3017a7c905b8"}, - {file = "mypy-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ef4be7baf08a203170f29e89d79064463b7fc7a0908b9d0d5114e8009c3a259"}, - {file = "mypy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7178def594014aa6c35a8ff411cf37d682f428b3b5617ca79029d8ae72f5402b"}, - {file = "mypy-1.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ab3c84fa13c04aeeeabb2a7f67a25ef5d77ac9d6486ff33ded762ef353aa5592"}, - {file = "mypy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:99b00bc72855812a60d253420d8a2eae839b0afa4938f09f4d2aa9bb4654263a"}, - {file = "mypy-1.8.0-py3-none-any.whl", hash = "sha256:538fd81bb5e430cc1381a443971c0475582ff9f434c16cd46d2c66763ce85d9d"}, - {file = "mypy-1.8.0.tar.gz", hash = "sha256:6ff8b244d7085a0b425b56d327b480c3b29cafbd2eff27316a004f9a7391ae07"}, + {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"}, + {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"}, + {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"}, + {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"}, + {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"}, + {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"}, + {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"}, + {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"}, + {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"}, + {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"}, + {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"}, + {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"}, + {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"}, + {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"}, + {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"}, + {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"}, + {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"}, + {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"}, + {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"}, + {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"}, + {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"}, + {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"}, + {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"}, + {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"}, + {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"}, + {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"}, + {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"}, ] [package.dependencies] mypy-extensions = ">=1.0.0" -typing-extensions = ">=4.1.0" +typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] @@ -1137,13 +1154,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest- [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -1152,13 +1169,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "3.6.0" +version = "3.8.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-3.6.0-py2.py3-none-any.whl", hash = "sha256:c255039ef399049a5544b6ce13d135caba8f2c28c3b4033277a788f434308376"}, - {file = "pre_commit-3.6.0.tar.gz", hash = "sha256:d30bad9abf165f7785c15a21a1f46da7d0677cb00ee7ff4c579fd38922efe15d"}, + {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, + {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, ] [package.dependencies] @@ -1170,109 +1187,122 @@ virtualenv = ">=20.10.0" [[package]] name = "pydantic" -version = "2.6.1" +version = "2.8.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, - {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, + {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, + {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.2" -typing-extensions = ">=4.6.1" +pydantic-core = "2.20.1" +typing-extensions = [ + {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, + {version = ">=4.6.1", markers = "python_version < \"3.13\""}, +] [package.extras] email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.2" -description = "" +version = "2.20.1" +description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, - {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, - {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, - {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, - {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, - {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, - {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, - {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, - {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, - {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, - {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, - {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, - {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, - {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, - {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, - {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, - {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, - {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, - {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, - {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, - {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, - {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, - {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, - {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, - {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, - {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, - {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, - {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, - {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, - {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, - {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, - {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, - {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, - {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, - {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, - {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, - {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, - {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, - {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, - {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, + {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, + {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, + {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, + {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, + {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, + {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, + {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, + {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, + {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, + {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, + {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, + {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, + {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, ] [package.dependencies] @@ -1346,38 +1376,38 @@ resolved_reference = "9ce188967c3873cb9126f823c888e1cdb9cf3225" [[package]] name = "pytest" -version = "8.0.0" +version = "8.3.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, - {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, + {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, + {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.3.0,<2.0" +pluggy = ">=1.5,<2" [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-xdist" -version = "3.5.0" +version = "3.6.1" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-xdist-3.5.0.tar.gz", hash = "sha256:cbb36f3d67e0c478baa57fa4edc8843887e0f6cfc42d677530a36d7472b32d8a"}, - {file = "pytest_xdist-3.5.0-py3-none-any.whl", hash = "sha256:d075629c7e00b611df89f490a5063944bee7a4362a5ff11c7cc7824a03dfce24"}, + {file = "pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7"}, + {file = "pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d"}, ] [package.dependencies] -execnet = ">=1.1" -pytest = ">=6.2.0" +execnet = ">=2.1" +pytest = ">=7.0.0" [package.extras] psutil = ["psutil (>=3.0)"] @@ -1434,6 +1464,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"}, @@ -1586,13 +1617,13 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -1625,73 +1656,74 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "ruff" -version = "0.1.15" +version = "0.6.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.1.15-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5fe8d54df166ecc24106db7dd6a68d44852d14eb0729ea4672bb4d96c320b7df"}, - {file = "ruff-0.1.15-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6f0bfbb53c4b4de117ac4d6ddfd33aa5fc31beeaa21d23c45c6dd249faf9126f"}, - {file = "ruff-0.1.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0d432aec35bfc0d800d4f70eba26e23a352386be3a6cf157083d18f6f5881c8"}, - {file = "ruff-0.1.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9405fa9ac0e97f35aaddf185a1be194a589424b8713e3b97b762336ec79ff807"}, - {file = "ruff-0.1.15-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c66ec24fe36841636e814b8f90f572a8c0cb0e54d8b5c2d0e300d28a0d7bffec"}, - {file = "ruff-0.1.15-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:6f8ad828f01e8dd32cc58bc28375150171d198491fc901f6f98d2a39ba8e3ff5"}, - {file = "ruff-0.1.15-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86811954eec63e9ea162af0ffa9f8d09088bab51b7438e8b6488b9401863c25e"}, - {file = "ruff-0.1.15-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4025ac5e87d9b80e1f300207eb2fd099ff8200fa2320d7dc066a3f4622dc6b"}, - {file = "ruff-0.1.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b17b93c02cdb6aeb696effecea1095ac93f3884a49a554a9afa76bb125c114c1"}, - {file = "ruff-0.1.15-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ddb87643be40f034e97e97f5bc2ef7ce39de20e34608f3f829db727a93fb82c5"}, - {file = "ruff-0.1.15-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:abf4822129ed3a5ce54383d5f0e964e7fef74a41e48eb1dfad404151efc130a2"}, - {file = "ruff-0.1.15-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6c629cf64bacfd136c07c78ac10a54578ec9d1bd2a9d395efbee0935868bf852"}, - {file = "ruff-0.1.15-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1bab866aafb53da39c2cadfb8e1c4550ac5340bb40300083eb8967ba25481447"}, - {file = "ruff-0.1.15-py3-none-win32.whl", hash = "sha256:2417e1cb6e2068389b07e6fa74c306b2810fe3ee3476d5b8a96616633f40d14f"}, - {file = "ruff-0.1.15-py3-none-win_amd64.whl", hash = "sha256:3837ac73d869efc4182d9036b1405ef4c73d9b1f88da2413875e34e0d6919587"}, - {file = "ruff-0.1.15-py3-none-win_arm64.whl", hash = "sha256:9a933dfb1c14ec7a33cceb1e49ec4a16b51ce3c20fd42663198746efc0427360"}, - {file = "ruff-0.1.15.tar.gz", hash = "sha256:f6dfa8c1b21c913c326919056c390966648b680966febcb796cc9d1aaab8564e"}, + {file = "ruff-0.6.2-py3-none-linux_armv6l.whl", hash = "sha256:5c8cbc6252deb3ea840ad6a20b0f8583caab0c5ef4f9cca21adc5a92b8f79f3c"}, + {file = "ruff-0.6.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:17002fe241e76544448a8e1e6118abecbe8cd10cf68fde635dad480dba594570"}, + {file = "ruff-0.6.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3dbeac76ed13456f8158b8f4fe087bf87882e645c8e8b606dd17b0b66c2c1158"}, + {file = "ruff-0.6.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:094600ee88cda325988d3f54e3588c46de5c18dae09d683ace278b11f9d4d534"}, + {file = "ruff-0.6.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:316d418fe258c036ba05fbf7dfc1f7d3d4096db63431546163b472285668132b"}, + {file = "ruff-0.6.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d72b8b3abf8a2d51b7b9944a41307d2f442558ccb3859bbd87e6ae9be1694a5d"}, + {file = "ruff-0.6.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2aed7e243be68487aa8982e91c6e260982d00da3f38955873aecd5a9204b1d66"}, + {file = "ruff-0.6.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d371f7fc9cec83497fe7cf5eaf5b76e22a8efce463de5f775a1826197feb9df8"}, + {file = "ruff-0.6.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8f310d63af08f583363dfb844ba8f9417b558199c58a5999215082036d795a1"}, + {file = "ruff-0.6.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7db6880c53c56addb8638fe444818183385ec85eeada1d48fc5abe045301b2f1"}, + {file = "ruff-0.6.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1175d39faadd9a50718f478d23bfc1d4da5743f1ab56af81a2b6caf0a2394f23"}, + {file = "ruff-0.6.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5b939f9c86d51635fe486585389f54582f0d65b8238e08c327c1534844b3bb9a"}, + {file = "ruff-0.6.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d0d62ca91219f906caf9b187dea50d17353f15ec9bb15aae4a606cd697b49b4c"}, + {file = "ruff-0.6.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7438a7288f9d67ed3c8ce4d059e67f7ed65e9fe3aa2ab6f5b4b3610e57e3cb56"}, + {file = "ruff-0.6.2-py3-none-win32.whl", hash = "sha256:279d5f7d86696df5f9549b56b9b6a7f6c72961b619022b5b7999b15db392a4da"}, + {file = "ruff-0.6.2-py3-none-win_amd64.whl", hash = "sha256:d9f3469c7dd43cd22eb1c3fc16926fb8258d50cb1b216658a07be95dd117b0f2"}, + {file = "ruff-0.6.2-py3-none-win_arm64.whl", hash = "sha256:f28fcd2cd0e02bdf739297516d5643a945cc7caf09bd9bcb4d932540a5ea4fa9"}, + {file = "ruff-0.6.2.tar.gz", hash = "sha256:239ee6beb9e91feb8e0ec384204a763f36cb53fb895a1a364618c6abb076b3be"}, ] [[package]] name = "saxonche" -version = "12.4.2" -description = "Official Saxonica python package for the SaxonC-HE 12.4.2 processor: for XSLT 3.0, XQuery 3.1, XPath 3.1 and XML Schema processing." +version = "12.5.0" +description = "Official Saxonica python package for the SaxonC-HE 12.5.0 processor: for XSLT 3.0, XQuery 3.1, XPath 3.1 and XML Schema processing." optional = false python-versions = ">=3.8" files = [ - {file = "saxonche-12.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7a4f89fe2628fa0bdac0490ef9d5cd1fc5e1069488965c28df2447b6a938634e"}, - {file = "saxonche-12.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa785811cc8d39622ba722763d598d81729876735121abbf9b15c7523356c417"}, - {file = "saxonche-12.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d57239fb6dfeaeb0ad072b4804ab7526ad2bbec699f14e6573021a4f2e8cb4fb"}, - {file = "saxonche-12.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c6194fa404122acfd8e47024069b8ee634822c5cf998dabe10a7bd283d24d07"}, - {file = "saxonche-12.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f8741f3720e641b302a46da7eade27f9b7533ca1449632f6e7a96ec53ccd17e4"}, - {file = "saxonche-12.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c145acb3727bbb639211c477d487732b45341711c5d486561749ad93741e2c67"}, - {file = "saxonche-12.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e1428f01026326d0d72b860e16cc76e277d6a6ca64a6a05561982d95009f175"}, - {file = "saxonche-12.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20529c4c8f46a6c78a6ad886b7ef5d7564bb55a656c2d1e43548bd8983ac6af7"}, - {file = "saxonche-12.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f9edec161e1a79a88678a8a00d62ca4abb6fa952ea65509d3afc3b43c4a0116"}, - {file = "saxonche-12.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:8d928f5d69b24d9da891b882028211e9da95ed43392a8c8687aedf64093becc9"}, - {file = "saxonche-12.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a92eb99cc3370e30625db8fa24e570d6d4accd45460616ac0c805a97a35868e2"}, - {file = "saxonche-12.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e8501503b79795e4be4209e7bb6af8907c7e9288a3d67b225b1e2140f86881a3"}, - {file = "saxonche-12.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f7056c513783671eeb1389c091c7047c236668170cb7b98a0d19f53d18470a2"}, - {file = "saxonche-12.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47cdc2314db85a77905117f1ac261f4a090c5a0454c0c2a8c29fcc49134c89dd"}, - {file = "saxonche-12.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:b3aad9cf51c7f89366479c9fe01b71df33f663e18f7c0ae4b31dc36b2e3e392b"}, - {file = "saxonche-12.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c7a714ef4e770a0be39800392ffd41ea1ff267988bed27aaf0dbff2c73c2a72e"}, - {file = "saxonche-12.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d9a0bc2ce92f3772e10a13ad54b2db2f95857c12ef3a5975c2f306477494b6a9"}, - {file = "saxonche-12.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eff667f60fcae35d10f29dc9c7d6854c03ff32dfe64eaa846b8088820cfa0bf"}, - {file = "saxonche-12.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4724e96130f42eefbef31e976b57dc7a23d3d9532616e95f72f8f76ffa6146ab"}, - {file = "saxonche-12.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:7ac5f7066045b7df8cf6dd5de6faafe9ee062353dbf9bd5645e4077e66a98811"}, - {file = "saxonche-12.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d27a4d04e08dd05ddb919dff29b6d53c4fa25fcefd7aa8658e0b55246c0bf41e"}, - {file = "saxonche-12.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af14d0c785cd696e84b2928168819124fa666a0c404b96eec376fe658bdd9bef"}, - {file = "saxonche-12.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9b51e5330daf40e2435dce1dbdb15ce5c0d3ff888e4ef171f466b97343050d"}, - {file = "saxonche-12.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05e6828d5432a293453dfdc54315cca9c0f344557b2dd3756a55ab999e319f65"}, - {file = "saxonche-12.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:604391c4400b344850e59265c399e626e252aae25ebfa415fadcf1e4245d9f74"}, + {file = "saxonche-12.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3f84604bc47721b2fc1df3106083e264d6dede5eec1934000376d61b3ad73c0b"}, + {file = "saxonche-12.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c03ce719be633ddfd70198cb469d1f27e67062e5220eb810001b16a1061f5f43"}, + {file = "saxonche-12.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:638895fc495e22a582e1d25dcc8b15c3fb94f645788bbff0efc0765287cd1fe1"}, + {file = "saxonche-12.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5079210932e6d6a77d638a5acc15a438a91ea47f4e322ae2ae8a8e2b1be40689"}, + {file = "saxonche-12.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:df4ac7ef8420477184f4aa48ed5e696fef7b787d61aadfb6b62695afbb204a79"}, + {file = "saxonche-12.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab8ff38eba50b86c547dfe62494e8525e49737fb8c111377a530f8e4aba5398"}, + {file = "saxonche-12.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:38a735bc7e7f7ec8fd31cf8d88d6880ea76d21f2c3da151c2d86a589f6cd6603"}, + {file = "saxonche-12.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bfa0f72280e518bc48cb2dc648534ec9cde8da3e7f1b4a60beca8ca29c9ede31"}, + {file = "saxonche-12.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:620849d0411e32a20193099106ddfe97d3ba07aa4b76ef0edab94920fdae0b34"}, + {file = "saxonche-12.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:a2d30fbe608390a9e32e27d8065696df398d3c56c5a776fd5e794e940d42b14b"}, + {file = "saxonche-12.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bc3f406ed0529ef56a796a3ddb66608047bc4d641ead57891b6924dfe0234f90"}, + {file = "saxonche-12.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:620d586392ef7084ba8d0c6747bed2193da49cd137866ba619c479185fa24ed4"}, + {file = "saxonche-12.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2374c58755944fa1bed6a5275eac2c988f132b461da15a33c66f79548b81f043"}, + {file = "saxonche-12.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78f4f606165f2d9c14c871132c3b3fd2ecaaa8a2f3d6a624c63f56524cef7470"}, + {file = "saxonche-12.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:bcdfc89a6ea6fb0e6b796cd55b6496cd21fc813110a692ed49a3457a47cafe31"}, + {file = "saxonche-12.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f05d0679d2355721adb6d1cd98968f698e46c7cc3c85d4f604315deef1ae82ec"}, + {file = "saxonche-12.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98d9647d37a166be9b2402bad389aaf28e5979258a672a6db86c1f48baf9db7e"}, + {file = "saxonche-12.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:957f28de384ad3c24125f761ad0d10a5d62e6aa5123775e845cb28303a8717c7"}, + {file = "saxonche-12.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7648002a76fcbd7c078fe91db52a93130a1b88932e5f7cd846f2ee5c91c89ff0"}, + {file = "saxonche-12.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:cbe5ff6b06a924e3f762ae359b5ec2fac9e5fe7febe6b0de95feca177fba7332"}, + {file = "saxonche-12.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4128c46466561b891ab07276043b94b37762187aa0a5a38331a3870e180907b1"}, + {file = "saxonche-12.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f926d4158a280bca25a8b1d87c98e0901c881c0d190f066dba415cb63d7361a"}, + {file = "saxonche-12.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4f9852684d70d708f36abc35e1da059b793b5e67d0d490c091c466fbce6d0f"}, + {file = "saxonche-12.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc22f5ea64e118bcae1599962b8a6b3ccdcd9da6eef14328f9eebd59ee2a4c88"}, + {file = "saxonche-12.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:26e0b1cfb7f99aed581c5c175db811a5cddfe860816b19bbeab4fdb1a7327fd6"}, ] [[package]] name = "saxonche-stubs" -version = "0.6.0" +version = "0.7.2" description = "Type stubs for saxonche" optional = false python-versions = ">=3.8" files = [ - {file = "saxonche_stubs-0.6.0-py3-none-any.whl", hash = "sha256:6495d38e9086b2f8d833cc59ad4966b0f3c46b49c1140e25567d1f8926e42ff4"}, - {file = "saxonche_stubs-0.6.0.tar.gz", hash = "sha256:7ac651a6e5acb87a1bb88b5f0de374c41abedcf5161ae011cb5645aff60fa8b2"}, + {file = "saxonche_stubs-0.7.2-py3-none-any.whl", hash = "sha256:8818562851f2631c374630418da95335b7e33fa0dd8e5b7749df5d3d602aca91"}, + {file = "saxonche_stubs-0.7.2.tar.gz", hash = "sha256:29b55c8ae8181be4ded520d73d282efa9c7c2a25f54d4f06f65af7deb9fe3cdb"}, ] [package.dependencies] @@ -1819,13 +1851,13 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. [[package]] name = "types-requests" -version = "2.31.0.20240125" +version = "2.32.0.20240712" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240125.tar.gz", hash = "sha256:03a28ce1d7cd54199148e043b2079cdded22d6795d19a2c2a6791a4b2b5e2eb5"}, - {file = "types_requests-2.31.0.20240125-py3-none-any.whl", hash = "sha256:9592a9a4cb92d6d75d9b491a41477272b710e021011a2a3061157e2fb1f1a5d1"}, + {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"}, + {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"}, ] [package.dependencies] @@ -1833,13 +1865,13 @@ urllib3 = ">=2" [[package]] name = "typing-extensions" -version = "4.9.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, - {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -2064,4 +2096,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "1e2c48af8ebae598f7185f7599e2bbd817966e3dd458bc704bbda36930ddb905" +content-hash = "5560c631d7cc06c319ad03dbc190551b114033feeccbcf2f5d2866279ef31064" diff --git a/pyproject.toml b/pyproject.toml index c76c0dcf6..7451bb02b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ authors = [ "Christian Sonder ", ] schemas = [ - { title = "SLS TEI-Schema", description = "The main schema used by the Swiss Law Sources to validate TEI XML transcriptions", entry = "main.odd.xml", name = "TEI_Schema", version = "1.1.0", tei_version = "4.5.0" }, + { title = "SLS TEI-Schema", description = "The main schema used by the Swiss Law Sources to validate TEI XML transcriptions", entry = "main.odd.xml", name = "TEI_Schema", version = "1.2.0", tei_version = "4.5.0" }, ] [tool.poetry] @@ -21,27 +21,27 @@ readme = "README.md" version = "0.1.0" [tool.poetry.dependencies] -pydantic = "^2.6.1" +pydantic = "^2.8.2" python = "^3.11" -requests = "^2.31.0" -saxonche = "^12.4.2" -saxonche-stubs = "^0.6.0" +requests = "^2.32.3" +saxonche = "^12.5.0" +saxonche-stubs = "^0.7.2" semver = "^3.0.2" [tool.poetry.group.dev.dependencies] -mypy = "^1.8.0" -pre-commit = "^3.6.0" +mypy = "^1.11.2" +pre-commit = "^3.8.0" pyschval = { git = "https://github.com/SSRQ-SDS-FDS/py-schematron-validator.git", rev = "main" } -pytest = "^8.0.0" -pytest-xdist = "^3.5.0" -ruff = "^0.1.14" +pytest = "^8.3.2" +pytest-xdist = "^3.6.1" +ruff = "^0.6.2" ssrq-cli = { git = "ssh://git@github.com/SSRQ-SDS-FDS/ssrq-cli.git", rev = "main" } -types-requests = "^2.31.0.20240125" +types-requests = "^2.32.0.20240712" [tool.poetry.group.docs.dependencies] -mike = "^2.0.0" -mkdocs-material = "^9.5.5" -mkdocs-static-i18n = "1.2.0" +mike = "^2.1.3" +mkdocs-material = "^9.5.33" +mkdocs-static-i18n = "1.2.3" pyuca = "^1.2" snakemd = "^2.2.0" @@ -51,7 +51,7 @@ testpaths = ["tests"] [tool.mypy] files = ["utils/**/*.py"] -[tool.ruff] +[tool.ruff.lint] ignore = ["E501"] select = ["C90", "E", "F", "I001", "RET", "UP"] diff --git a/src/docs/assets/css/extra.css b/src/docs/assets/css/extra.css index 5dbe894f8..03efefe17 100644 --- a/src/docs/assets/css/extra.css +++ b/src/docs/assets/css/extra.css @@ -34,10 +34,17 @@ font-weight: 400; } +@font-face { + font-family: 'Libertinus Serif'; + src: url('../fonts/LibertinusSerif-Regular.otf') format('opentype'); + font-style: normal; + font-weight: 400; +} + :root { --md-primary-fg-color: #994443; --md-footer-bg-color: #e1e1de; - --md-code-font: "Lexia Fontes"; + --md-code-font: "Lexia Fontes", "Libertinus Serif"; --md-text-font: Roboto, "Lexia Fontes"; --md-accent-fg-color: #994443; diff --git a/src/docs/assets/fonts/LibertinusSerif-Bold.otf b/src/docs/assets/fonts/LibertinusSerif-Bold.otf new file mode 100644 index 000000000..3e78353ef Binary files /dev/null and b/src/docs/assets/fonts/LibertinusSerif-Bold.otf differ diff --git a/src/docs/assets/fonts/LibertinusSerif-BoldItalic.otf b/src/docs/assets/fonts/LibertinusSerif-BoldItalic.otf new file mode 100644 index 000000000..a040174ea Binary files /dev/null and b/src/docs/assets/fonts/LibertinusSerif-BoldItalic.otf differ diff --git a/src/docs/assets/fonts/LibertinusSerif-Italic.otf b/src/docs/assets/fonts/LibertinusSerif-Italic.otf new file mode 100644 index 000000000..7ed8bd8ad Binary files /dev/null and b/src/docs/assets/fonts/LibertinusSerif-Italic.otf differ diff --git a/src/docs/assets/fonts/LibertinusSerif-Regular.otf b/src/docs/assets/fonts/LibertinusSerif-Regular.otf new file mode 100644 index 000000000..262c991ec Binary files /dev/null and b/src/docs/assets/fonts/LibertinusSerif-Regular.otf differ diff --git a/src/docs/assets/fonts/LibertinusSerif-Semibold.otf b/src/docs/assets/fonts/LibertinusSerif-Semibold.otf new file mode 100644 index 000000000..8946b3907 Binary files /dev/null and b/src/docs/assets/fonts/LibertinusSerif-Semibold.otf differ diff --git a/src/docs/assets/fonts/LibertinusSerif-SemiboldItalic.otf b/src/docs/assets/fonts/LibertinusSerif-SemiboldItalic.otf new file mode 100644 index 000000000..fdd81718c Binary files /dev/null and b/src/docs/assets/fonts/LibertinusSerif-SemiboldItalic.otf differ diff --git a/src/docs/base/dating_guidelines.de.md b/src/docs/base/dating_guidelines.de.md index d9925f6b9..32ea62c62 100644 --- a/src/docs/base/dating_guidelines.de.md +++ b/src/docs/base/dating_guidelines.de.md @@ -7,14 +7,14 @@ title: Datierungsrichtlinien Die Datierungsrichtlinien ermöglichen eine einheitliche und sprachunabhängige Erfassung und Abfrage von Datierungen und Zeiträumen. -## 1 Sortierlogik +## 1 Sortierlogik und Ausgabe Die Sortierlogik von Datierungen bzw. Zeiträumen ist die folgende: - Ältere Datierungen stehen vor neueren Datierungen, z. B. steht bei den beiden folgenden Zeiträumen «7.–10. Jh.» vor «8.–9. Jh.». - Alles, was vor einem Datum sein könnte, wird auch vor diesem eingeordnet, - so steht z. B. «18. Jh.» (01.01.1701–31.12.1800) vor «1800». + so steht z. B. «18. Jh.» (1.1.1701–31.12.1800) vor «1800». - Wenn zwei Datierungen mit unterschiedlichen Zeiträumen am selben Datum starten, dann steht die genauere Datierung vor der ungenaueren, z. B. «6.–7. Jh.» vor «6.–8. Jh.» und «1300–1350» vor «1300–1375». @@ -24,6 +24,8 @@ Die Sortierlogik von Datierungen bzw. Zeiträumen ist die folgende: Kalender zuerst, also `11.09. + 11.9. ``` ```xml diff --git a/src/docs/base/transcription/spelling/index.de.md b/src/docs/base/transcription/spelling/index.de.md index f98ba378d..0255fa622 100644 --- a/src/docs/base/transcription/spelling/index.de.md +++ b/src/docs/base/transcription/spelling/index.de.md @@ -4,7 +4,7 @@ title: Orthographie # 2. Orthographie - [Normalisierung](normalization.de.md) -- [Diakritika, Sonderzeichen und Ligaturen](special.de.md) +- [Sonderzeichen](special.de.md) - [Gross- und Kleinschreibung](versalia.de.md) - [Zusammen- und Getrenntschreibung](wordseparation.de.md) - [Zahlen und Ziffern](numbers.de.md) diff --git a/src/docs/base/transcription/spelling/numbers.de.md b/src/docs/base/transcription/spelling/numbers.de.md index 677bf2814..3266f5f81 100644 --- a/src/docs/base/transcription/spelling/numbers.de.md +++ b/src/docs/base/transcription/spelling/numbers.de.md @@ -3,12 +3,12 @@ ## Allgemeine Regeln Arabische und römische Zahlen werden gemäss Vorlage ziffern- bzw. -buchstabengetreu wiedergegeben. - -Römische Zahlen werden kleingeschrieben (vgl. [``](num.de.md)). +buchstabengetreu wiedergegeben. Römische Zahlen werden kleingeschrieben. Beispiel: «am .x. tag des monats Mey Anno m.d.xxv.» +Bruchzahlen werden mit Schrägstrich und [``](num.de.md) kodiert. + ## Währungen Zur Bezeichnung von Währungen werden Sonderzeichen verwendet. diff --git a/src/docs/base/transcription/spelling/special.de.md b/src/docs/base/transcription/spelling/special.de.md index 8c30bc0df..0ba1de2d9 100644 --- a/src/docs/base/transcription/spelling/special.de.md +++ b/src/docs/base/transcription/spelling/special.de.md @@ -1,171 +1,370 @@ -# Diakritika, Sonderzeichen und Ligaturen +# Sonderzeichen -## Diakritika -=== "Allgemeine Regel" +Alle Sonderzeichen werden in Unicode kodiert, ihre Darstellung erfolgt mithilfe +der SSRQ-Schrift Lexia Fontes für die lateinische Schrift sowie der Libertinus +Serif für die griechische und die hebräische Schrift. - Für diakritische Zeichen verwenden wir die Unicode-Sonderzeichen, die - SSRQ-Schrift Lexia Fontes sowie eine Tastaturbelegung, die das einfache - Tippen der kombinierten Zeichen erleichtert. +## Akzente und Diakritika + +### Allgemeine Regeln === "Deutsche Texte" - Diakritische Zeichen und übergeschriebene Buchstaben (z. B. aͤ, uͦ etc.) der + Diakritische Zeichen und übergeschriebene Buchstaben der deutschen Texte werden buchstabengetreu wiedergegeben. - Distinktionszeichen über «u», die in deutschen Texten einer Verwechslung - mit «n» vorbeugen sollen, werden nicht wiedergegeben. + Distinktionszeichen über `u`, die in deutschen Texten einer Verwechslung + mit `n` vorbeugen sollen, werden nicht wiedergegeben. + +=== "Lateinische Texte" + + e caudata (`ę`) wird vom gewöhnlichen `e` unterschieden. + + Die Gelehrten des 17. und 18. Jahrhunderts neigten aufgrund von + Hyperkorrekturen dazu, die Diphthongierung zu bevorzugen. + + Wenn ein mittelalterliches Original erhalten ist, sollte die Schreibweise des + Ausgangstextes beibehalten werden, d. h. das `ę`, das in späteren Kopien + wahrscheinlich als `æ` geschrieben wurde, sollte wiedergegeben werden. + Wenn nur die spätere Abschrift existiert, sollte man sich an die Schreibweise + dieser Abschrift halten und den Diphthong getreu wiedergeben. === "Französische und italienische Texte" Die diakritischen Zeichen des Französischen und Italienischen werden gemäss dem modernen Gebrauch verwendet, sofern keine Ausnahmen vorliegen. -### Akzente in französischen Texten - -=== "Allgemeine Regel" - Bei der Akzentsetzung sollte in einem Textkorpus ein kohärentes System angewendet werden, das sich so weit wie möglich an den graphischen und typographischen Gepflogenheiten der jeweiligen Zeit orientiert. +### Sonderregeln für französische Texte + === "Mittelalterliche Hss." Bei mittelalterlichen französischen Handschriften sollten keine Akzente hinzugefügt werden, ausser wenn dadurch homophone Verwechslungen aufgrund - des atonalen «e» und des tonischen «e» vermieden werden können. So erhalten - Endsilben auf «-e» oder «-es» einen Akzent. + des atonalen und des tonischen `e` vermieden werden können. So erhalten + Endsilben auf `-e` oder `-es` einen Akzent. Beispiele: - afrz. «aprés» meint frz. «après» (nach) - afrz. «apres» steht für frz. «âpres» (bitter) - afrz. «leve» meint frz. «lève», - während afrz. «levé» das Partizip des Verbs afrz. «lever» (hochheben) ist + afrz. `aprés` meint frz. `après` (nach) + afrz. `apres` steht für frz. `âpres` (bitter) + afrz. `leve` meint frz. `lève`, + während afrz. `levé` das Partizip des Verbs afrz. `lever` (hochheben) ist - Der Artikel afrz. «des» wird immer unverändert transkribiert, also «des» - und nicht «dés». + Der Artikel afrz. `des` wird immer unverändert transkribiert, also `des` + und nicht `dés`. === "Hss. 16. Jh." Für französische Texte des 16. Jhs. (bis ca. 1580) gelten die Standards, die für die Edition mittelalterlicher französischer Texte festgelegt wurden. - Es wird nur der Akzent auf dem Buchstaben «e» verwendet, um zwischen - tonischem und atonischem «e» zu unterscheiden. + Es wird nur der Akzent auf dem Buchstaben `e` verwendet, um zwischen + tonischem und atonischem `e` zu unterscheiden. Beispiele: - mfrz. «né», «tombé», «vous avés», «aprés», «procés» + mfrz. `né`, `tombé`, `vous avés`, `aprés`, `procés` - Endungen auf «-ee» werden nicht betont. + Endungen auf `-ee` werden nicht betont. Beispiele: - mfrz. «nee», «armee» + mfrz. `nee`, `armee` === "Hss. 17. Jh." Bei der Bearbeitung von französischen Handschriften aus dem 17. Jh. (bis ca. 1715) können Akzente in grösserem Umfang verwendet werden. - Insbesondere werden die Endungen auf «-ée» betont. + Insbesondere werden die Endungen auf `-ée` betont. Beispiele: - frz. «née», «armée» + frz. `née`, `armée` - Der Akzent auf den Buchstaben «a», «e» und «u» in einsilbigen Präpositionen + Der Akzent auf den Buchstaben `a`, `e` und `u` in einsilbigen Präpositionen und Adverbien wird verwendet, um sie von homographen Wörtern zu unterscheiden. Beispiele: - frz. «à», «là», «dès», «lès», «où» + frz. `à`, `là`, `dès`, `lès`, `où` - Dagegen wird der Buchstabe «e» innerhalb eines Wortes nicht betont. + Dagegen wird der Buchstabe `e` innerhalb eines Wortes nicht betont. Beispiele: - frz. «maniere», «pere», «present» + frz. `maniere`, `pere`, `present` === "Hss. 18. Jh." Auf französische Handschriften des 18. Jahrhunderts wird der heutige Sprachgebrauch angewendet. -### Trema in französischen Texten - -Grundsätzlich sollte das Trema entfernt werden, wenn es in Wörtern vorkommt, -die heute ohne Trema geschrieben werden. - -Beispiele: -frz. «queüe», «veü» +### Bestimmte Diakritika in französischen Texten -Dasselbe gilt für «ÿ» (vgl. [Normalisierung](normalization.de.md)). +=== "Trema" -Ausnahme: Bei mittelalterlichen literarischen Texten kann das Trema jedoch eine -phonetische Funktion haben, in diesem Fall wird es beibehalten. + Grundsätzlich sollte ein Trema, wenn es in Wörtern vorkommt, die heute ohne + Trema geschrieben werden, entfernt werden. Dasselbe gilt für `ÿ` (vgl. + [Normalisierung](normalization.de.md)). -## Sonderzeichen - -### Apostroph in französischen Texten + Beispiele: + frz. `queüe`, `veü` -Um die Bedeutung eines Textes zu verdeutlichen und ihn verständlicher zu -machen, ist das Hinzufügen von Apostrophen unerlässlich. Beispielsweise muss -die Schreibweise «se» für «c'est» mit «s'e» wiedergegeben werden. Da das -Pronomen der dritten Person Singular und Plural oft auf «i» reduziert wird, -muss ihm ein Apostroph vorangestellt werden, wenn es mit einem Relativpronomen -oder einer Konjunktion verbunden ist, damit «qui» nicht mit «qu'il» -verwechselt wird. + In mittelalterlichen literarischen Texten kann das Trema eine phonetische + Funktion haben, in diesem Fall wird es beibehalten. -Beispiel: -«Item ledit detenu a dit et confesé que illiaz quattre ans qu'i -deroba une boiste avec l'estuy.» +=== "Cedille (`ç`)" -Das oben genannte Beispiel zeigt auch, dass ein Apostroph hinzugefügt werden -sollte, um den bestimmten Artikel, der mit einem Substantiv verbunden sein -könnte, zu trennen. + Dem `c`, das einen phonetischen Wert als /s/ hat, soll eine Cedille + hinzugefügt werden. + + Beispiele: + `François` und nicht `Francois` + `il sçait` und nicht `il scait` -Beispiel: -«l'estuy» und nicht «lestuy» +=== "Apostroph" -Wenn die Kombination «quil» als relative Präposition fungiert, sollte sie so -transkribiert werden. + Um die Bedeutung eines Textes zu verdeutlichen und ihn verständlicher zu + machen, ist das Hinzufügen von Apostrophen unerlässlich. Beispielsweise muss + die Schreibweise `se` für `c’est` mit `s’e` wiedergegeben werden. Da das + Pronomen der dritten Person Singular und Plural oft auf `i` reduziert wird, + muss ihm ein Apostroph vorangestellt werden, wenn es mit einem Relativpronomen + oder einer Konjunktion verbunden ist, damit `qui` nicht mit `qu’il` + verwechselt wird. -Beispiel: -«Item for celuy quil allat querir le maistre d'ovre» + Beispiel: + ```Item ledit detenu a dit et confesé que illiaz quattre ans qu’i + deroba une boiste avec l’estuy.``` -### Cedille (ç) in französischen Texten + Das oben genannte Beispiel zeigt auch, dass ein Apostroph hinzugefügt werden + sollte, um den bestimmten Artikel, der mit einem Substantiv verbunden sein + könnte, zu trennen. -Dem «c», das einen phonetischen Wert als «s» hat, soll eine Cedille -hinzugefügt werden. + Beispiel: + `l’estuy` und nicht `lestuy` -Beispiele: -«François» und nicht «Francois» -«il sçait« und nicht «il scait» + Wenn die Kombination `quil` als relative Präposition fungiert, sollte sie so + transkribiert werden. -### e caudata (ę) in lateinischen Texten + Beispiel: + ```Item for celuy quil allat querir le maistre d’ovre``` -e caudata («ę») wird vom gewöhnlichen «e» unterschieden. +## Ligaturen -Die Gelehrten des 17. und 18. Jahrhunderts neigten aufgrund von -Hyperkorrekturen dazu, die Diphthongierung zu bevorzugen. +In Drucken werden Ligaturen in Einzelbuchstaben aufgelöst und auch in +handschriftlichen Texten wird auf die Verwendung von Ligaturen in der +Regel verzichtet. -Wenn ein mittelalterliches Original erhalten ist, sollte die Schreibweise des -Ausgangstextes beibehalten werden, d. h. das «ę», das in späteren Kopien -wahrscheinlich als «æ» geschrieben wurde, sollte wiedergegeben werden. -Wenn nur die spätere Abschrift existiert, sollte man sich an die Schreibweise -dieser Abschrift halten und den Diphthong getreu wiedergeben. +Ausnahmen: Eigene Zeichen können für die Ligaturen `Æ`, `æ`, +`Œ`, `œ` und `ß` verwendet werden. -## Ligaturen +Zum Beispiel kann anstelle von e caudata (`ę`) in einer späteren Kopie durch +Hyperkorrektur die Schreibweise `æ` entstehen. -In Drucken werden Ligaturen in Einzelbuchstaben aufgelöst. +Der Bearbeitende muss sich darüber im Klaren sein, dass `æ` und `ae` in der +digitalen Textverarbeitung nicht denselben Wert haben und nicht als +identisches Graphem erkannt werden. -Auch in handschriftlichen Texten wird auf die Verwendung von Ligaturen in der -Regel verzichtet. +Sonstige Ligaturen, die vor allem typographischen Charakter haben, +werden nicht mit eigenen Unicodezeichen kodiert, sondern einfach nur durch die +beiden aufeinanderfolgenden Grundbuchstaben, also: +`ff`, `fi`, `fl`, `ffi`, `ffl` und nicht `ff`, `fi`, `fl`, `ffi`, `ffl`. -Ausnahmen: Ligaturen können für die Grapheme ae (æ) und oe (œ) verwendet -werden, wenn die Diphthonge zu einem langen Vokal monophthongiert wurden. -Zum Beispiel kann anstelle von e caudata (ę) in einer späteren Kopie durch -Hyperkorrektur die Schreibweise «ae» entstehen, die in diesem Fall mit «æ» -transkribiert werden kann (vgl. oben). +## Brüche -Der Bearbeitende muss sich darüber im Klaren sein, dass ein mit «æ» -transkribiertes «ae» in der digitalen Textverarbeitung nicht denselben Wert -hat und nicht als identisches Graphem erkannt wird. +In Unicode gibt es zwar eine Reihe von speziellen Bruchzeichen, die für +die häufigsten Brüche gedacht sind, diese sollten jedoch nicht verwendet +werden, weil sie nicht alle in den Texten vorkommenden Fälle abdecken. +Stattdessen sollten Brüche mit dem Tag [``](num.de.md) +kodiert werden: -Dasselbe gilt für die Ligatur «fl»: Eine Volltextsuche nach dem Wort -«f-l-o-r-i-n» führt zu keinem Ergebnis, wenn es die Ligatur «fl» enthält, -die als ein Zeichen betrachtet wird: «fl-o-r-i-n». +Beispiele: +`1/2` und nicht `½` +`3/4` und nicht `¾` + +## Code-Tabelle für Sonderzeichen + +Die unten stehende Tabelle zeigt, wie die einzelnen Zeichen kodiert werden sollten. + +Für einige der angegebenen Zeichen hat es mehrere Möglichkeiten der Codierung: +So kann beispielsweise das e caudata sowohl als einzelnes Zeichen `ę` (U+0119) kodiert werden als +auch als Grundbuchstabe `e` (U+0065) mit einem kombinierenden Ogonek `ę` (U+0328). +Z. B. lassen sich `Ą ą Ę ę Į į Ǫ ǫ Ų ų` erzeugen, indem, wie beim e caudata, zuerst +der Grundbuchstabe eingegeben wird und anschliessend das kombinierende Ogonek. + +Es können bei Bedarf auch mehrere kombinierende Zeichen mit einem Grundbuchstaben verwendet werden, +z. B. `ā̧` (= a + kombinierendes Längenzeichen + kombinierende Cedille) oder `uͦ̈` (= o + Superskript +o + kombinierendes Trema). + +Grundsätzlich gilt, dass die kombinierende Variante bevorzugt wird, weil die kombinierenden +Zeichen an alle Grundbuchstaben angehängt werden können. Ausnahme: Der Einfachheit halber können +die deutschen Umlaute `Ä ä Ö ö Ü ü` direkt als Einzelzeichen eingegeben werden und müssen nicht +als Grundbuchstabe mit kombinierendem Trema (U+0308) erfasst werden. + +In der Tabelle wird daher bei kombinierenden Zeichen beispielhaft das `a` +verwendet, für die anderen Grundbuchstaben erfolgt die Eingabe analog. + +| Beschreibung | Sonderzeichen | Unicode-Codepunkt(e) | +|-----------------------------------------|-----------------------|----------------------| +| **Ligaturen** | | | +| A+E-Ligatur | `Æ` | U+00C6 | +| a+e-Ligatur | `æ` | U+00E6 | +| O+E-Ligatur | `Œ` | U+0152 | +| o+e-Ligatur | `œ` | U+0153 | +| s+z-Ligatur | `ß` | U+00DF | +| **Kombinierende Diakritika** | | | +| Buchstabe mit Gravis | `à` | Buchstabe + U+0300 | +| Buchstabe mit Akut | `á` | Buchstabe + U+0301 | +| Buchstabe mit Zirkumflex | `â` | Buchstabe + U+0302 | +| Buchstabe mit Tilde | `ã` | Buchstabe + U+0303 | +| Buchstabe mit Längenzeichen | `ā` | Buchstabe + U+0304 | +| Buchstabe mit Punkt | `ȧ` | Buchstabe + U+0307 | +| Buchstabe mit Trema | `ä` | Buchstabe + U+0308 | +| Buchstabe mit Haken | `ǎ` | Buchstabe + U+030C | +| Buchstabe mit vertikalem Strich | `a̍` | Buchstabe + U+030D | +| Buchstabe mit Cedille | `a̧` | Buchstabe + U+0327 | +| Buchstabe mit Ogonek | `ą` | Buchstabe + U+0328 | +| **Kombinierende Superkripte** | | | +| Buchstabe mit Superskript a | `aͣ` | Buchstabe + U+0363 | +| Buchstabe mit Superskript e | `aͤ` | Buchstabe + U+0364 | +| Buchstabe mit Superskript i | `aͥ` | Buchstabe + U+0365 | +| Buchstabe mit Superskript o | `aͦ` | Buchstabe + U+0366 | +| Buchstabe mit Superskript u | `aͧ` | Buchstabe + U+0367 | +| Buchstabe mit Superskript v | `aͮ` | Buchstabe + U+036E | +| Buchstabe mit Superskript w | `a` | Buchstabe + U+F03C | +| **Sonstige modifizierte Buchstaben** | | | +| i mit Strich (= eineinhalb) | `ɨ` | U+0268 | +| i mit zwei Strichen | `` | U+E8A1 | +| j mit Strich | `ɉ` | U+0249 | +| j mit zwei Strichen | `` | U+E8A2 | +| q mit Strich | `ꝗ` | U+A757 | +| t mit Strich | `ŧ` | U+0167 | +| v mit Strich (= viereinhalb) | `` | U+E8BB | +| v mit diagonalem Strich | `ꝟ` | U+A75F | +| v mit zwei Strichen | `` | U+E8BC | +| x mit Strich oben | `` | U+E8BD | +| x mit Strich unten (= neuneinhalb) | `` | U+E8BE | +| x mit zwei Strichen unten | `` | U+E8CE | +| **Währungen und Einheiten** | | | +| Florin | `` | U+F2E8 | +| Gulden | `` | U+F2E9 | +| h mit Strich (= Haller) | `ħ` | U+0127 | +| Helbling | `` | U+F2FB | +| Krone | `` | U+F2FA | +| Pfennig/Denar | `₰` | U+20B0 | +| Pfund (Währung) | `` | U+F2EA | +| Pfund (Gewicht) | `℔` | U+2114 | +| Schilling | `` | U+F2F7 | +| Scudo | `` | U+F2F9 | +| **Sonstige Symbole** | | | +| Zeigehand | `☞` | U+261E | +| Paragraphenzeichen | `§` | U+00A7 | +| Absatzzeichen | `¶` | U+00B6 | +| Kreuz | `†` | U+2020 | +| Doppelkreuz | `‡` | U+2021 | +| Dreifachkreuz | `` | U+F1D2 | +| Heiratssymbol | `⚭` | U+26AD | +| Kreissymbol | `○` | U+25CB | +| Marssymbol (Abk. für Dienstag) | `♂` | U+2642 | +| Copyrightsymbol | `©` | U+00a9 | +| **Satzzeichen und dergleichen** | | | +| Punkt (Kolon) | `.` | U+002E | +| Komma | `,` | U+002C | +| Semikolon | `;` | U+003B | +| Doppelpunkt | `:` | U+003A | +| Hochpunkt | `·` | U+00B7 | +| Apostroph | `’` | U+2019 | +| Ausrufezeichen | `!` | U+0021 | +| Fragezeichen | `?` | U+003F | +| Auslassungszeichen | `…` | U+2026 | +| Ein Punk vor zweien | `⁖` | U+2056 | +| Ein Punkt über zweien | `∵` | U+2235 | +| Vier Punkte | `⁘` | U+2058 | +| Halbgeviertstrich | `–` | U+2013 | +| Einfache vertikale Linie | | | U+007C | +| Doppelte vertikale Linie | `‖` | U+2016 | +| Doppelter Solidus | `⫽` | U+2AFD | +| Einfaches frz. Anführungszeichen links | `‹` | U+2039 | +| Einfaches frz. Anführungszeichen rechts | `›` | U+203A | +| Doppelte frz. Anführungszeichen links | `«` | U+00AB | +| Doppelte frz. Anführungszeichen rechts | `»` | U+00BB | +| Malkreuz | `×` | U+00D7 | +| Ordinalzeichen (in 1º, 2º, etc.) | `º` | U+00BA | + +## Griechische und hebräische Schrift + +Passagen in griechischer und hebräischer Schrift werden ebenfalls direkt in Unicode kodiert. +Hierbei gilt, dass die griechischen Akzente, Spiritus sowie *iota subscriptum* bzw. +*adscriptum* und die hebräischen Vokalisierungszeichen mit kombinierenden Zeichen dargestellt +werden sollen. +Als Beispiele hierfür dienen das gr. Alpha und das hebr. Alef. + +| Beschreibung | Sonderzeichen | Unicode-Codepunkt(e) | +|-------------------------------------------------------|---------------|--------------------------------------| +| **Griechische Buchstaben** | | | +| Alpha | `Α`, `α` | U+0391, U+03B1 | +| Beta | `Β`, `β` | U+0392, U+03B2 | +| Gamma | `Γ`, `γ` | U+0393, U+03B3 | +| Delta | `Δ`, `δ` | U+0394, U+03B4 | +| Epsilon | `Ε`, `ε` | U+0395, U+03B5 | +| Zeta | `Ζ`, `ζ` | U+0396, U+03B6 | +| Eta | `Η`, `η` | U+0397, U+03B7 | +| Theta | `Θ`, `θ` | U+0398, U+03B8 | +| Iota | `Ι`, `ι` | U+0399, U+03B9 | +| Kappa | `Κ`, `κ` | U+039A, U+03BA | +| Lambda | `Λ`, `λ` | U+039B, U+03BB | +| My | `Μ`, `μ` | U+039C, U+03BC | +| Ny | `Ν`, `ν` | U+039D, U+03BD | +| Xi | `Ξ`, `ξ` | U+039E, U+03BE | +| Omicron | `Ο`, `ο` | U+039F, U+03BF | +| Pi | `Π`, `π` | U+03A0, U+03C0 | +| Rho | `Ρ`, `ρ` | U+03A1, U+03C1 | +| Sigma | `Σ`, `ς`, `σ` | U+03A3, U+03C2, U+03C3 | +| Tau | `Τ`, `τ` | U+03A4, U+03C4 | +| Ypsilon | `Υ`, `υ` | U+03A5, U+03C5 | +| Phi | `Φ`, `φ` | U+03A6, U+03C6 | +| Chi | `Χ`, `χ` | U+03A7, U+03C7 | +| Psi | `Ψ`, `ψ` | U+03A8, U+03C8 | +| Omega | `Ω`, `ω` | U+03A9, U+03C9 | +| **Griechische Diakritika** | | | +| Buchstabe mit Gravis | `ὰ` | Buchstabe + U+0300 | +| Buchstabe mit Akut | `ά` | Buchstabe + U+0301 | +| Buchstabe mit Zirkumflex | `ᾶ` | Buchstabe + U+0342 | +| Buchstabe mit *spiritus lenis* | `ἀ` | Buchstabe + U+0313 | +| Buchstabe mit *spiritus asper* | `ἁ` | Buchstabe + U+0314 | +| Buchstabe mit *iota sub- bzw. adscriptum* | `ᾳ` | Buchstabe + U+0345 | +| Buchstabe mit Spiritus und Akzent | `ἅ` | Buchstabe + U+0314 + U+0301 | +| Buchstabe mit Spiritus, Akzent und *iota subscriptum* | `ᾅ` | Buchstabe + U+0314 + U+0301 + U+0345 | +| **Hebräische Buchstaben** | | | +| Alef | `א` | U+05D0 | +| Bet | `ב` | U+05D1 | +| Gimel | `ג` | U+05D2 | +| Dalet | `ד` | U+05D3 | +| He | `ה` | U+05D4 | +| Waw | `ו` | U+05D5 | +| Sajin | `ז` | U+05D6 | +| Chet | `ח` | U+05D7 | +| Tet | `ט` | U+05D8 | +| Jud | `י` | U+05D9 | +| Kaf | `כ`, `ך` | U+05DA, U+05DB | +| Lamed | `ל` | U+05DC | +| Mem | `מ`, `ם` | U+05DD, U+05DE | +| Nun | `נ`, `ן` | U+05DF, U+05E0 | +| Samech | `ס` | U+05E1 | +| Ajin | `ע` | U+05E2 | +| Pe | `פ`, `ף` | U+05E3, U+05E4 | +| Zade | `צ`, `ץ` | U+05E5, U+05E6 | +| Kuf | `ק` | U+05E7 | +| Resch | `ר` | U+05E8 | +| Sin, Schin | `ש` | U+05E9 | +| Taw | `ת` | U+05EA | +| **Hebräische Diakritika** | | | +| Buchstabe mit Schwa | `אְ` | Buchstabe + U+05B0 | +| Buchstabe mit Schwa und Seggol | `אֱ` | Buchstabe + U+05B1 | +| Buchstabe mit Schwa und Patach | `אֲ` | Buchstabe + U+05B2 | +| Buchstabe mit Schwa und Qamäz | `אֳ` | Buchstabe + U+05B3 | +| Buchstabe mit Chiriq | `אִ` | Buchstabe + U+05B4 | +| Buchstabe mit Sere | `אֵ` | Buchstabe + U+05B5 | +| Buchstabe mit Seggol | `אֶ` | Buchstabe + U+05B6 | +| Buchstabe mit Patach | `אַ` | Buchstabe + U+05B7 | +| Buchstabe mit Qamäz | `אַָ` | Buchstabe + U+05B8 | +| Buchstabe mit Choläm | `אֹ` | Buchstabe + U+05B9 | +| Buchstabe mit Qubbuz | `אֻ` | Buchstabe + U+05BB | \ No newline at end of file diff --git a/src/schema/commons/classes.odd.xml b/src/schema/commons/classes.odd.xml index 03fa26dec..a1533e64c 100644 --- a/src/schema/commons/classes.odd.xml +++ b/src/schema/commons/classes.odd.xml @@ -37,7 +37,6 @@ - @@ -104,8 +103,8 @@ - + @@ -115,18 +114,6 @@ - - Schematron to check the usage of attributes. - - - - - More attributes must be used together with @calendar to specify the date. - - - - - Verweist auf eine benannte Periode wie Jahreszeiten @@ -140,14 +127,6 @@ ou les jours de la semaine. En revanche, l'attribut dur-iso est utilisé pour des périodes telles que "quatre semaines". - -

Sommer und Winter

-

Été et hiver

- somer - unnd - wintter - -
@@ -155,31 +134,6 @@ Attribute zur Auszeichnung von Datierungen Attributes for the distinction of dating Attributs pour le marquage des datations - - Schematron rules for att.datable.custom - - - - The - @when-custom attribute cannot be used with any other - att.datable.custom attributes. - - - - The usage of - @notBefore-custom|@notAfter-custom is not allowed together with - @from-custom|@to-custom. - - @from-custom and - @to-custom must always be used together. - - - Invalid timespan – the @to-custom attribute must be a point later in time. - - - - - @@ -196,17 +150,6 @@ - -

Beispielhafte Auszeichnung des Zeitraums Pfingsten 1583 bis Pfingsten 1584

-

Exemplary award for the period from Pentecost 1583 to Pentecost 1584

-

Exemple de distinction de la période allant de la Pentecôte 1583 à la Pentecôte - 1584 -

- - von Pfingstmontag 1583 bis Pfingstmontag 1584 - - -
Gibt den Endpunkt eines Zeitraums gemäss ISO 8601 an. @@ -219,12 +162,6 @@ - - - ca. 1510 - - - Gibt den Startpunkt eines Zeitraums gemäss ISO 8601 @@ -239,12 +176,6 @@ - - - ca. 1510 - - - Gibt den Endpunkt eines Zeitraums gemäss ISO 8601 an. @@ -257,17 +188,6 @@ - -

Beispielhafte Auszeichnung des Zeitraums Pfingsten 1583 bis Pfingsten 1584

-

Exemplary award for the period from Pentecost 1583 to Pentecost 1584

-

Exemple de distinction de la période allant de la Pentecôte 1583 à la Pentecôte - 1584 -

- - von Pfingstmontag 1583 bis Pfingstmontag 1584 - - -
Gibt ein Datum gemäss ISO 8601 an. @@ -277,67 +197,11 @@ - -

Beispielhafte Datierung auf den 03. März 1631

-

Exemplary dating to March 3, 1631

-

Exemple de datation au 03 mars 1631

- - März, 03, 1631 - -
- - If unit has the value unknown, - quantity - must be unknown too. - - - - - When @unit is unknown, @quantity - must be unknown too. - - - - - - - Mutually dependent for all elements: @unit and @quantity - - - - - If the @quantity attribute is specified on the - - element, @unit must be present, - too. - - - If the @unit attribute is specified on the - - element, @quantity must be present, - too. - - - - - - - Prevent that quantity is zero - - - - - @quantity may only be zero, if it occurs in combination with @type="currency". - - - - - @@ -360,17 +224,6 @@ - -

Loch in einer Editionsvorlage, bei dem keine Ergänzung möglich ist

-

Hole in an edition template where no addition is possible

-

Trou à cause d'un dommage dans le texte source que l'éditeur ne peut pas - compléter -

-

Buco in un modello di edizione in cui non è possibile alcuna aggiunta

- und sol och der w - - -
@@ -380,12 +233,6 @@ - -

Angabe eines Längenmasses

- - - -
@@ -404,38 +251,16 @@ ISO-639-1-Sprachkürzel ISO-639-1-Language abbreviation ISO-639-1-Abréviation de la langue - - - Deutsch - German - Allemand - - - Französisch - French - Français - - - Hebräisch - Hebrew - Hébreu - - - Italienisch - Italian - Italien - - - Latein - Latin - Latin - - - Rätoromanisch - Romansh - Romanche - - + + + + + + + + + + @@ -469,20 +294,6 @@ - - Global constraint to ensure pattern of - facsimile names - - - - - - An underscore should not be followed by another underscore in @facs. - - - - -
@@ -504,16 +315,19 @@ hoch high élevé + alto mittel medium moyen + medio niedrig low faible + basso @@ -533,6 +347,32 @@
+ + + + Verweis auf ein anderes Stück + (bspw. im Falle der Mehrfachüberlieferung) oder auf ein + Archivinformationssystem. + + Reference to another item (e.g. in + the case of multiple records) or to an archival information system. + + Renvoi à une autre pièce (par ex. + en cas de livraison multiple) ou à un système d'information archivistique. + + + + + + + + + + + + + + @@ -556,7 +396,7 @@ - + @@ -565,20 +405,12 @@ Dans le cas des dimensions, spécifie l'expansion. - -

Unbestimmte Anzahl Pfund (0 verwenden)

- - etlich hundert pfund - - -
- -

Pour un nombre inconnu de livres (utiliser 0)

- - etlich hundert pfund - - -
+ + + + + +
Masseinheit oder Währung @@ -689,29 +521,8 @@ - - The @spanTo attribute must point to an element - following the current element – this rules replaces the original TEI constraint, because - we're using xs:IDREF. - - - - - The element indicated by @spanTo () must follow the - current element - - - - - - - -

- ... - -

-
-
+ +
@@ -728,7 +539,7 @@ Spaltenüberschrift column heading en-tête de colonne - intestazione di colonna + intestazione di colonna @@ -760,25 +571,6 @@ - - Make sure, the referenced ID belongs to a witness - element. - - - - - - - - Every referenced ID in @wit must belong to a witness or bibl element. - - - - -
@@ -807,20 +599,6 @@ - - A constraint to check the existence of an ID reference. - - - - - - The referenced ID () must belong to a handNote element. - Hint: Save the document to automatically generate a handNote. - - - - -
@@ -839,48 +617,55 @@ aufgedrückt applied pressé + aderente angehängt an einer Kordel sealed on a cord attaché à un cordo + pendente da una cordicella angehängt an Schnur sealed on a lace attaché à un cordon + pendente da un cordone angehängt an Lederstreifen sealed on a leather tag attaché à une lanière en cuir + pendente da un laccio di cuoio angehängt an Pergamentstreifen sealed on a parchment tag attaché à une lanière en parchemin + pendente da una stricia di pergamena angehängt an Band sealed on a ribbon attaché à un ruban + pendente da un nastro angehängt an Fäden sealed on laces attaché à un fil + c'è solo uno slot per il sigillo nur Siegelschlitz vorhanden slit with no seal - il n’existe qu’une fente pour le - sceau - + il n’existe qu’une fente pour le sceau + c'è solo uno slot per il sigillo zum Verschluss aufgedrückt seal applied to close a document sceau de clôture + sigillo di chiusura @@ -899,51 +684,61 @@ fehlt missing absent + perduto in Leinensäckchen enclosed in a linen sack lié dans un sachet de lin + rilegato in un sacchetto di lino bestossen chipped écorné + smussato beschädigt damaged endommagé + danneggiato ab und beiliegend ex and enclosed détaché et joint + staccato e allegato bruchstückhaft fragmentary fragmentaire + frammentario in verschlossener Holzkapsel in a wooden box dans une boîte en bois + in una scatola di legno in verschlossener Metallkapsel in a metal capsule dans une boîte en métal + in una scatola di metallo abgeschliffen polished poli + lucido gut erhalten well-preserved bien conservé + ben conservato @@ -956,41 +751,49 @@ Bulle bull bulle + bolla Papierwachssiegel papered seal sceau sous papier + sigillo sotto carta Siegellack sealing wax cire pour le scellement + ceralacca Oblatensiegel wafer sceau hostie + ostia Wachs wax cire + cera Wachs in Holzkapsel wax in a wooden box cire dans une boîte en bois + cera in una capsula di legno Wachs in Metallkapsel wax in a metal capsule cire dans une boîte en métal + cera in una capsula di metallo Wachs in Schüssel wax with margin cire avec un bord + cera con un bordo @@ -1003,81 +806,41 @@ herzförmig heart-shaped en forme de cœur + a forma di cuore achteckig octagonal octongonal + ottagonale spitzoval oval ovale pointu + gotico schildförmig scutiform en forme de bouclier + a forma di scudo rund round rond + rotonda dreieckig triangular triangulaire + triangolare
- - Stellt ein Attribut source bereit, dessen - Semantik dem der TEI entspricht. - - Provides a common source attribute - semantically identical to the TEI specification. - - Fournit un attribut source dont la sémantique - correspond à celle de la TEI. - - - - Verweis auf ein anderes Stück - (bspw. im Falle der Mehrfachüberlieferung) oder auf ein - Archivinformationssystem. - - Reference to another item (e.g. in - the case of multiple records) or to an archival information system. - - Renvoi à une autre pièce (par ex. - en cas de livraison multiple) ou à un système d'information archivistique. - - - - - - - - - - - - - - -

Lesung rekonstruiert durch eine andere Überlieferung

-

Reading reconstructed from another tradition

-

La lecture reconstruite à partir d'une autre tradition

- -

Zum ersten soll man wissen, - das - niemand -

-
-
-
diff --git a/src/schema/commons/constraints.odd.xml b/src/schema/commons/constraints.odd.xml index ce2600f08..cbc53426f 100644 --- a/src/schema/commons/constraints.odd.xml +++ b/src/schema/commons/constraints.odd.xml @@ -4,6 +4,142 @@ schematypens="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0"?>
+ + Schematron to check the usage of dating attributes. + + + + + More attributes must be used together with @calendar to specify the date. + + + + + + + Schematron rules for att.datable.custom + + + + + The @when-custom attribute cannot be used with any other att.datable.custom attributes. + + + + + The usage of @notBefore-custom and @notAfter-custom is not allowed together with + @from-custom and @to-custom. + + + @from-custom and @to-custom must always be used together. + + + Invalid timespan – the @to-custom attribute must be a point later in time. + + + + + + + + If unit has the value unknown, quantity must + be unknown too. + + + + + + If @unit has the value 'unknown', @quantity must be 'unknown' too. + + + + + + + unit and quantity are + mutually dependent. + + + + + If the @quantity attribute is specified on any element, @unit must be present, too. + + + If the @unit attribute is specified on any element, @quantity must be present, too. + + + + + + + Prevent that quantity is zero + + + + + @quantity may only be zero, if it occurs in combination with @type="currency". + + + + + + + The @spanTo attribute must point to an element + following the current element. + + + + The element indicated by @spanTo () must follow the + current element . + + + + + + Global constraint to ensure pattern of + facsimile names + + + + + An underscore should not be followed by another underscore in @facs. + + + + + + + Make sure, the referenced ID belongs to a + witness element. + + + + + + + Every referenced ID in @wit must belong to a witness or bibl element. + + + + + + + A constraint to check the existence of an + ID reference. + + + + + + The referenced ID () must belong to a handNote + element. + + + + + The value of an attribute should never start with some kind of whitespace @@ -48,6 +184,20 @@ must not be empty. + + must not be empty. + + + + + + + Global constraint to ensure a nbsp is never used. + + + + It is not allowed to use a non-breaking space in the text. + diff --git a/src/schema/commons/content.odd.xml b/src/schema/commons/content.odd.xml index bd5f279f0..e4c3501b2 100644 --- a/src/schema/commons/content.odd.xml +++ b/src/schema/commons/content.odd.xml @@ -39,7 +39,6 @@ - @@ -86,6 +85,7 @@ + diff --git a/src/schema/commons/datatypes.odd.xml b/src/schema/commons/datatypes.odd.xml index a655595a5..f328b4a18 100644 --- a/src/schema/commons/datatypes.odd.xml +++ b/src/schema/commons/datatypes.odd.xml @@ -11,9 +11,10 @@ - Hinzufügung durch spezielles Zeichen markiert. - Addition marked by special sign. - Ajout signalé par un signe spécial. + durch spezielles Zeichen markiert + marked by special sign + signalé par un signe spécial + contrassegnata da apposito segno @@ -30,121 +31,145 @@ Kassation cancellation cassation + cassamento Beschneidung am Blattrand clipping on the leaf margin écrêtage sur le bord de la feuille + rifilatura al margine della carta verdeckendes Siegel covering seal un sceau couvrant + sigillo oscurante Riss tear déchirure + strappo verblasste Tinte faded ink l’affaiblissement de l’encre + inchiostro sbiadito Rauch/Brandschaden smoke/fire la fumée/le feu + fumo/fuoco Falte fold pli + piega fehlende Seite/fehlendes Blatt lost folio la perte de la page/feuille + perdita di un foglio/una carta zusammengeklebte Seiten glued pages pages collées + pagine incollate feiner Riss hairline tear légère(s) fissure(s) + lieve strappo Loch hole - trou + un trou + buco Tintenklecks ink blot coulure d’encre + macchia d’inchiostro Tintenfrass ink hole corrosion d’encre + corrosione dell’inchiostro Insektenfrass insects des insectes + divorato dagli insetti Mäusefrass mice des rongeurs + divorato da un roditore Pilzbefall/Schimmel mold la moisissure + muffa Sonstiger Schaden other damage autres dommages + altri danni verdeckender Einband covering binding la couverture de la reliure + copertina della rilegatura fehlender Teil der Seite oder des Blatts lost part of the page/folio la perte d’une partie de la page/feuille + perdita di una parte di un foglio/una carta Restauration restoration la restauration + restauro Abnutzungs-/Gebrauchsspuren signs of wear signes d'usure/utilisation + segni di usura Fleck/Verfärbung stain or discoloration tache ou décoloration + macchia o scolorimento Heftklammer stapling une agrafe + graffetta Wasserfleck water spot des traces d’eau ou d’humidité + tracce d’umidità @@ -161,21 +186,25 @@ Edition edition édition + edizione Literatur literature littérature + letteratura Regest summary résumé + sintesi Übersetzung translation la traduction + traduzione URL @@ -184,6 +213,8 @@ URLs URL URLs + URL + URLs @@ -191,123 +222,122 @@ - Geschlossene Liste von Kalendertypen, die - von der SSRQ verwendet werden. Für weitere Informationen siehe Datierungsrichtlinien. - - Closed list of calender types used by the - SLS.For more information see dating - guidelines. - - Liste fermée de Types de calendriers - utilisés par la SDS. Pour plus d'informations, voir les directives - de datation. - + Geschlossene Liste von Kalendertypen, die von der + SSRQ verwendet werden. Für weitere Informationen siehe Datierungsrichtlinien. + Closed list of calender types used by the SLS.For + more information see dating guidelines. + Liste fermée de Types de calendriers utilisés par + la SDS. Pour plus d'informations, voir les directives de + datation. Gregorianischer Kalender Gregorian calendar le calendrier grégorien + il calendario gregoriano Julianischer Kalender Julian calendar le calendrier julien + il calendario giuliano Annuntiationsstil annunciation Style le style de l’Annonciation + stile dell’Annunciazione Natalstil Christmas Style or Nativity Style le style de la Nativité + stile della natività Unbekannt unknown inconnu + sconosciuto - - - Zwischen 3. - und 20 September 1588 - - - - - - - le quatre jour du mois de février en l’ans Notre Seigneur courant 1363 - - - Gibt Informationen zur Hand eines Textes Provides information on the hand of a text - Fournit des informations sur la main d'un texte + Fournit des informations sur la main d'un + texte Anlagehand (A) main hand (A) main principale (A) + mano principale (A) Nachtragshand (B) other hand (B) main secondaire (B) + mano secondaria (B) Nachtragshand (C) other hand (C) main secondaire (C) + mano secondaria (C) Nachtragshand (D) other hand (D) main secondaire (D) + mano secondaria (D) Nachtragshand (E) other hand (E) main secondaire (E) + mano secondaria (E) Nachtragshand (F) other hand (F) main secondaire (F) + mano secondaria (F) Nachtragshand (G) other hand (G) main secondaire (G) + mano secondaria (G) Nachtragshand (H) other hand (H) main secondaire (H) + mano secondaria (H) Nachtragshand (I) other hand (I) main secondaire (I) + mano secondaria (I) spätere Hand later hand main plus récente + mano più recente andere Hand another hand autre main + altra mano @@ -319,121 +349,219 @@ Hand des 10. Jh. hand of the 10th century main du Xe siècle + mano del secolo X Hand des 11. Jh. hand of the 11th century main du XIe siècle + mano del secolo XI Hand des 12. Jh. hand of the 12th century main du XIIe siècle + mano del secolo XII Hand des 13. Jh. hand of the 13th century main du XIIIe siècle + mano del secolo XIII Hand des 14. Jh. hand of the 14th century main du XIVe siècle + mano del secolo XIV Hand des 15. Jh. hand of the 15th century main du XVe siècle + mano del secolo XV Hand des 16. Jh. hand of the 16th century main du XVIe siècle + mano del secolo XVI Hand des 17. Jh. hand of the 17th century main du XVIIe siècle + mano del secolo XVII Hand des 18. Jh. hand of the 18th century main du XVIIIe siècle + mano del secolo XVIII Hand des 19. Jh. hand of the 19th century main du XIXe siècle + mano del secolo XIX Hand des 20. Jh. hand of the 20th century main du XXe siècle + mano del secolo XX Hand des 21. Jh. hand of the 21st century main du XXIe siècle + mano del secolo XXI Hand des 10. Jh.? hand of the 10th century? main du Xe siècle? + mano del secolo X? Hand des 11. Jh.? hand of the 11th century? main du XIe siècle? + mano del secolo XI? Hand des 12. Jh.? hand of the 12th century? main du XIIe siècle? + mano del secolo XII? Hand des 13. Jh.? hand of the 13th century? main du XIIIe siècle? + mano del secolo XIII? Hand des 14. Jh.? hand of the 14th century? main du XIVe siècle? + mano del secolo XIV? Hand des 15. Jh.? hand of the 15th century? main du XVe siècle? + mano del secolo XV? Hand des 16. Jh.? hand of the 16th century? main du XVIe siècle? + mano del secolo XVI? Hand des 17. Jh.? hand of the 17th century? main du XVIIe siècle? + mano del secolo XVII? Hand des 18. Jh. hand of the 18th century? main du XVIIIe siècle? + mano del secolo XVIII? Hand des 19. Jh.? hand of the 19th century? main du XIXe siècle? + mano del secolo XIX? Hand des 20. Jh.? hand of the 20th century? main du XXe siècle? + mano del secolo XX? Hand des 21. Jhs.? hand of the 21st century? main du XXIe siècle? + mano del secolo XXI? + + + + + + + + + + + Deutsch + German + Allemand + Tedesco + + + + + + + + + Französisch + French + Français + Francese + + + + + + + + + Hebräisch + Hebrew + Hébreu + Ebraico + + + + + + + + + Italienisch + Italian + Italien + Italiano + + + + + + + + + Latein + Latin + Latin + Latino + + + + + + + + + Rätoromanisch + Romansh + Romanche + Romancio @@ -450,66 +578,79 @@ Äpfel apples pommes + mele Gerste barley orge + orzo Bohnen beans haricots + fagioli Kleie bran son + crusca Brot bread pain + pane Butter butter beurre + burro Käse cheese fromage + fromaggio Kohle coal charbon + carbone Zwillich ticking coutil + ticchettio Tuch cloth étoffe + tessuto Dörrobst dried fruit fruit sec + frutta secca Mist manure fumier + letame Latwerge electuary électuaire + elletuario Acker @@ -517,6 +658,8 @@ fields champ champs + campo + campi Fisch @@ -524,275 +667,311 @@ fish poisson poissons + pesce + pesci Flachs flax lin + lino Mehl flour farine + farina Wald forest forêt + foresta Gold gold or + oro Korn grain grain + grano Fesen und Kernen grain and spelt grain non-décortiqué et épeautre égrugé + grano non decorticato e farro decorticato Korn und Weizen grain and wheat grain et blé + grano e frumento Wiese meadow pré + prato Heu hay foin + fieno Hanf hemp chanvre + cannabis Hering herring hareng + aringhe Honig honey miel + miele Land land pays + paese Schmalz lard saindoux + lardo Blei lead plomb + piombo Linsen lentils lentilles + lenti Kalk lime chaux + calce Ried marsh marais + palude Fleisch meat viande + carne Kaufmannsgut merchandise marchandise + merce Milch milk lait + latte Hirse millet millet + miglio Mus mush purée + purè Musmehl mushflour farine pour la purée + farina per il purè Most cider cidre + sidro Nüsse nuts noix + noci Hafer oat avoine + avena Erbsen peas pois + piselli Birnen pears poires + pere Stickel stake échalas + paletti Kartoffeln potatoes pommes de terre + patate Hülsenfrüchte pulses légumineuses + legumi Reis rice riz + riso Roggen rye seigel + segale Salz salt sel + sale Seide silk soie + seta Silber silver argent + argento Dinkel spelt épeautre + spelta Stahl steel acier + acciaio Stroh straw paille + paglia Unschlitt tallow suif + sego Zinn tin étain + stagno Gemüse vegetables légume + verdura Reben vineyard vigne + vigneto Wachs wax cire + cera Weizen wheat blé (froment) + frumento Wein wine vin + vino Holz wood bois + legno Wolle wool laine + lana Ziger ziger (whey cheese) ziger + ziger - -

Masseinheit

- Item - ein zentner landtwull - - git ij ß. - -
- -

Unité de mesure :

- Item - ein zentner landtwull - - git ij ß. - -
Herkunft eines Masses. @@ -804,156 +983,197 @@ Berner of Bern de Berne + di Berna Breisgauer of Breisgau de Brisgau + di Brisgovia Churer of Chur de Coire + di Coira Diessenhofer of Diessenhofen de Diessenhofen + di Diessenhofen Elsässer of Alsace de l’Alsace + dell'Alsazia Etsch of the Adige de l’Adige + del'Adige Feldkircher of Feldkirch de Feldkirch + di Feldkirch Florentiner of Florence de Florence + di Firenze französisch/e French français/e + francese + + + Freiburger + of Fribourg + de Fribourg Genfer of Geneva de Genève + di Ginevra Ungarischer of Hungary de Hongrie + ungherese Konstanzer of Konstanz de Constance + di Constanza Lausanner of Lausanne - Laus. + de Lausanne + di Losanna lothringische of Lorraine de la Lorraine + di Lorena Luzerner of Lucerne de Lucerne + di Lucerna Montforter of Montfort de Montfort + di Montfort Neuenburger of Neuchâtel de Neuchâtel + di Neuchâtel + + + Holländische + of Holland + de Hollande Österreicher of Austria d’Autriche + dell'Austria Rheinischer of Rhineland de la Rhénanie + renano Rheintaler of Rheintal de Rheintal + di Rheintal Sarganser of Sargans de Sargans + di Sargans Savoyer of Savoy de la Savoie + di Savoia St. Galler of St Gall de Saint-Gall + di San Gallo Schaffhauser of Schaffhausen de Schaffhouse + di Sciaffusa Steiner of Stein am Rhein de Stein am Rhein + di Stein am Rhein Schwyzer of Schwyz de Schwyz + di Svitto utrischer of Utrecht d’Utrecht + di Utrecht Werdenberger of Werdenberg de Werdenberg + di Werdenberg Wiler of Wil de Wil + di Wil Winterthurer of Winterthur de Winterthour + di Winterthur Zürcher of Zurich de Zurich + di Zurigo @@ -968,41 +1188,49 @@ Alter age âge + età Flächenmass area mesure de superficie + misura dell'area Währung currency unité monétaire + valuta Längenmass length mesure de longueur + misura lineare Textumfang Scope Taille du texte + Volume del testo Ungefähres Mass/Gewicht undefined measure/weight mesure/poid approximatif + misura/peso approssimativo Volumenmass volume mesure de volume + misura del volume Gewicht weight poid + peso @@ -1019,11 +1247,14 @@ fauchées fauchée fauchées + fauchée + fauchées Gertel gertel gertel + gertel Hube @@ -1031,6 +1262,7 @@ hube manse manses + hube Juchart @@ -1039,6 +1271,8 @@ jucharten pose poses + juchart + jucharten Kammer @@ -1047,11 +1281,14 @@ kammern kammer kammern + kammer + kammern Klafter klafter brasses + braccia Kuhsömmerung @@ -1062,6 +1299,9 @@ kuhsömmerung (valeur d’un alpage selon le nombre de vaches qui peuvent y paître en été) + kuhsömmerung (valore di un'alpe in + funzione del numero di vacche che possono pascolare lì in estate) + Kuhwinterung @@ -1072,37 +1312,46 @@ kuhwinterung (valeur d’un alpage selon le nombre de vaches qui peuvent y paître en hiver) + kuhwinterung (valore di un'alpe in + funzione del numero di vacche che possono pascolare lì in inverno) + Mal mal mal + mal Mannmad mannmad mad + mannmad Mannwerk mannwerk seiteur + mannwerk Mitmal mitmal mal/metmal + mitmal Mütt mütt muid + Mütt Rute Ruten rod perche + rute Schuh @@ -1111,22 +1360,27 @@ shoes chaussure chaussures + scarpa + scarpe Schuppose Schupposen schuppose schuppose + schuppose Staffel staffel staffel + staffel Tagwen tagwen tagwen + tagwen Vierling @@ -1134,11 +1388,14 @@ quarters un quart quarts + quartino + quartini Zeile line ligne + linea @@ -1154,6 +1411,8 @@ cups pinte pintes + pinto + pinte Brente @@ -1162,6 +1421,8 @@ brenten brante brantes + brente + brenten Eimer @@ -1169,6 +1430,7 @@ buckets setier setiers + secchio Fass @@ -1177,6 +1439,8 @@ barrels tonneau tonneaux + barile + barili Garbe @@ -1185,11 +1449,14 @@ sheafs gerbe gerbes + covone + covoni Immi immi émine + emina Kanne @@ -1198,11 +1465,14 @@ pots channe channes + brocca + brocche Klafter klafter brasses + braccia Kopf @@ -1211,69 +1481,84 @@ köpfe coupe coupes + kopf + köpfe Kratten crates kratten + kratten Kröttli kröttli kröttli + kröttli Ledi ledi ledi + ledi Legel legel legel + legel Mass mass pot pots + mass Mäss mäss bichet bichets + mäss Mässli small liter mässli + boccalo + boccali Malter malter malter + malter Mütt mütt muid + mütt Quart quart quart + quart Quartane Quartanen quartane quartanée + quartane Röhrchen tube tube + tubo Sack @@ -1282,16 +1567,21 @@ bags sac sacs + sacchetto, + sacchetti Saum saum saum + brenta + brente Schaffen schaffen schaffen + schaffen Scheffel @@ -1299,6 +1589,8 @@ bushels boisseau boisseaux + moggio + moggii Scheibe @@ -1307,21 +1599,26 @@ slices tranche tranches + fetta + fette Sechzehner sechzehner sechzehner + sechzehner Sester sester setier + sester Ster stere staro + stere Tonne @@ -1330,16 +1627,20 @@ tons tonneau tonneaux + tonnellata + tonnellate Trinken trinken trinken + trinken Vierdung vierdung vierdung + vierdung Viertel @@ -1347,11 +1648,14 @@ quarters un quart quarts + quarto + quarti Zuber tub baquet + pure @@ -1366,17 +1670,21 @@ Angster angster angster + angster Böhmischer Groschen Böhmische Groschen Prague groschen gros bohêmien + grosso + grossi Batzen batzen batz/bache + batzen Pfennig @@ -1385,11 +1693,14 @@ pennies denier deniers + centesimo + centesimi Dicken dicken dicken + dicken Dublone @@ -1398,6 +1709,8 @@ Doubloons Doublon Doublons + doblone + dobloni Dukaton @@ -1406,6 +1719,8 @@ ducatoons ducaton ducatons + ducatone + ducatoni Dukat @@ -1413,6 +1728,8 @@ ducat ducat ducats + ducato + ducati écu @@ -1421,6 +1738,8 @@ écus écu écus + écu + écus écu blanc @@ -1429,6 +1748,8 @@ écus blancs écu blanc écus blancs + écu blanc + écus blancs écu d’or @@ -1437,6 +1758,8 @@ écus d'or écu d’or écus d'or + écu d’or + écus d’or écu petit @@ -1445,6 +1768,8 @@ écus petits écu petit écus petits + écu petit + écus petits engrogne @@ -1453,6 +1778,8 @@ engrognes engrogne engrognes + engrogne + engrognes Gulden @@ -1460,6 +1787,8 @@ guilders florin florins + fiorino + fiorini Franken @@ -1467,11 +1796,15 @@ francs franc francs + franco + franchi Groschen gros gros + grosso + grossi Grosso @@ -1480,6 +1813,8 @@ grossi grosso grossi + grossi + grosso Haller @@ -1487,18 +1822,23 @@ hallers maille mailles + haller Halbgulden half-guilder half-guilders demi-gulden + mezzo fiorino + mezzi fiorini Halbtaler half thaler half thalers halbtaler + mezzo tallero + mezzi talleri Krone @@ -1507,11 +1847,14 @@ crowns écu/couronne écus/couronnes + corona + corone Kronentaler kronentaler kronentaler + kronentaler Schweizer Franken @@ -1519,12 +1862,16 @@ Swiss francs livre Suisse livres Suisse + franco svizzero + franchi svizzeri Pfund lb livre livres + libbra + libbre liard @@ -1533,6 +1880,8 @@ liards liard liards + liard + liards livre faible @@ -1541,11 +1890,14 @@ livres faibles livre faible livres faibles + livre faible + livres faibles Louis d’or Louis d’or Louis d’or + Louis d’or Louistaler @@ -1553,22 +1905,38 @@ Louis blancs Louis blanc Louis blancs + Louis blanc + Louis blancs + + + livre tournois + livres tournois + livre tournois + livres tournois + livre tournois + livres tournois + livre tournois + livres tournois Mark mark marc + mark Lous d’or Mirliton Lous d’or Mirliton Lous d’or Mirliton + Lous d’or Mirliton Ort ort un quart d’un florin quarts d’un florin + un quarto di fiorino + quarti di fiorino Pistole @@ -1577,6 +1945,8 @@ pistoles pistole pistoles + pistola + pistole Plappart @@ -1584,6 +1954,7 @@ plapparts plappart plapparts + plappart Quart (cart) @@ -1592,27 +1963,33 @@ quarts quart (cart) quarts + quart (cart) + quarts Sol sol sol sols + sol sol faible sol faible sol faible + sol faible Sonnendublone Sonnendublone Sonnendublone + Sonnendublone Spagürli spagürli spagürli + sesino Schilling @@ -1621,12 +1998,16 @@ shillings sou/sol sous/sols + scellino + scellini Taler thaler thalers thaler + tallero + talleri Testone @@ -1635,16 +2016,20 @@ testoni teston testons + testone + testoni Vierer vierer vierer + vierer Kreuzer kreutzer kreuzer + kreuzer Zechine @@ -1653,6 +2038,8 @@ zecchini zecchino zecchini + zecchino + zecchini @@ -1669,6 +2056,8 @@ thumbs pouce pouces + pollice + pollici Elle @@ -1677,6 +2066,8 @@ cubits coudée coudées + braccio + bracchi Finger @@ -1684,6 +2075,8 @@ fingers doigt doigts + dito + dita Fuss @@ -1692,11 +2085,14 @@ feets pied pieds + piede + piedi Klafter klafter brasses + braccia Linie @@ -1705,6 +2101,8 @@ lines ligne lignes + linea + linee @@ -1714,6 +2112,8 @@ lieues lega leghe + lega + lege Schritt @@ -1721,6 +2121,8 @@ step steps pas + passo + passi Schuh @@ -1729,6 +2131,8 @@ shoes chaussure chaussures + scarpa + scarpe Stab @@ -1737,6 +2141,8 @@ rods aune aunes + auna + aune Zoll @@ -1744,6 +2150,8 @@ inchs pouce pouces + pollice + pollici @@ -1755,6 +2163,7 @@ cm cm cm + cm @@ -1769,6 +2178,8 @@ lines ligne lignes + riga + righe @@ -1782,13 +2193,16 @@ quarters un quart quarts + quartino + quartini Masse zur Beschreibung des Textumfangs - Mass for the description of the text volume + Mass for the description of the text + volume Dimensions pour décrire la taille du texte @@ -1796,16 +2210,19 @@ Doppelblatt Double leaf Feuille double + Doppio lenzuolo Blatt leaf feuille + foglio Seite page page + pagina @@ -1823,6 +2240,8 @@ months mois mois + mese + mesi Woche @@ -1831,6 +2250,8 @@ weeks semaine semaines + settimana + settimane Jahr @@ -1839,17 +2260,19 @@ years an ans + anno + anni - Masseinheiten im Zusammenhang mit der typographischen - Gestaltung - - Units of measurement regarding the typographic design - Unités de mesure en rapport avec la conception typographique - + Masseinheiten im Zusammenhang mit der + typographischen Gestaltung + Units of measurement regarding the typographic + design + Unités de mesure en rapport avec la conception + typographique @@ -1859,6 +2282,8 @@ characters lettre lettres + lettera + lettere Wort @@ -1867,6 +2292,8 @@ words mot mots + parola + parole @@ -1878,6 +2305,7 @@ unbekannt unknown inconnu + sconosciuto @@ -1892,11 +2320,20 @@ Ballen bale ballot + balla + balle + + + Billio + billio + billio + billio Bürde load bürde + bürde Wagen @@ -1904,12 +2341,16 @@ carriages charretée charretées + carro + carri Dutzend dozen douzaine douzaines + dozzina + dozzine Fuder @@ -1917,16 +2358,20 @@ cartloads char chars + carro + carri Gaden gaden gaden + gaden Kloben kloben kloben + kloben Laib @@ -1935,16 +2380,20 @@ loaves miche miches + pagnotta + pagnotte Loden loden loden + loden Maschen stitch maschen + maglia Paar @@ -1953,11 +2402,14 @@ pairs paire paires + paio + paia Riste riste riste + riste Schoch @@ -1966,6 +2418,8 @@ Schochen Schoch Schochen + carriola + carriole Schubkarre @@ -1974,6 +2428,8 @@ barrows brouette brouettes + carriola + carriole Seil @@ -1982,11 +2438,14 @@ cords corde cordes + corda + corde Sester sester sester + sester Stock @@ -1995,6 +2454,8 @@ sticks bâton bâtons + bastone + bastoni Stuck @@ -2002,6 +2463,8 @@ pieces pièce pièces + pezzo + pezzi Zeine @@ -2010,6 +2473,8 @@ baskets panier paniers + cestino + cestini @@ -2024,6 +2489,7 @@ Biner biner biner + biner Denier (Skrupel) @@ -2031,11 +2497,14 @@ deniers (scrupules) denier (scrupule) deniers (scrupules) + denaro (scrupulo) + denari (scrupuli) Gewäg gewäg gewäg + gewäg Gran @@ -2043,16 +2512,20 @@ grains grain grains + grano + grani Krinne krinne krinne + krinne Lot lot lot + lot Pfund @@ -2061,6 +2534,8 @@ pounds livre livres + libbra + libbre Pfefferpfund @@ -2069,16 +2544,20 @@ pfefferpfunde pfefferpfund pfefferpfunde + pfefferpfund + pfefferpfunde Rupp rupp rupp + rupp Quentli quentli quentli + quentli Unze @@ -2087,12 +2566,16 @@ ounces once onces + oncia + once Zentner hundredweight quintal quintaux + quintale + quintali @@ -2100,24 +2583,29 @@
- Geschlossene Liste von Werten, - die ausdrücken, auf was sich ein origDate bzw. ein origPlace - bezieht. - Closed list of values, - which express what an origDate or an origPlace refers to. - Liste fermée de valeurs, - qui expriment à quoi un origDate ou un origPlace fait référence. + Geschlossene Liste von Werten, die ausdrücken, + auf was sich ein origDate bzw. ein origPlace bezieht. + Closed list of values, which express what an + origDate or an origPlace refers to. + Liste fermée de valeurs, qui expriment à quoi un + origDate ou un origPlace fait référence. Datierung des Inhalts des Dokuments Dating the contents of the document Datation du contenu du document + Datazione del contenuto del documento - Datierung des Dokuments als Textträger - Dating the document as a text carrier - Datation du document comme support de texte + Datierung des Dokuments als + Textträger + Dating the document as a text + carrier + Datation du document comme support de + texte + Datazione del documento a supporto + testo @@ -2125,131 +2613,139 @@ - Geschlossene Liste von Werten, die - von der SSRQ zur Bezeichnung von Wochentagen verwendet werden - - Closed list of values for naming - days of the week used by the SSRQ - - Liste fermée de valeurs utilisées - par la SSRQ pour désigner les jours de la semaine - + Geschlossene Liste von Werten, die von der SSRQ + zur Bezeichnung von Wochentagen verwendet werden + Closed list of values for naming days of the week + used by the SSRQ + Liste fermée de valeurs utilisées par la SSRQ + pour désigner les jours de la semaine Sonntag Sunday dimanche + domenica Montag Monday lundi + lunedì Dienstag Tuesday mardi + martedì Mittwoch Wednesday mercredi + mercoledì Donnerstag Thursday jeudi + giovedì Freitag Friday vendredi + venerdì Samstag Saturday samedi + sabato - Geschlossene Liste von Werten, die - von der SSRQ zur Bezeichnung von Tageszeiten verwendet werden - - Closed list of values for times of day - used by the SSRQ - - Liste fermée de valeurs utilisées - par la SSRQ pour désigner les heures de la journée - + Geschlossene Liste von Werten, die von der SSRQ + zur Bezeichnung von Tageszeiten verwendet werden + Closed list of values for times of day used by + the SSRQ + Liste fermée de valeurs utilisées par la SSRQ + pour désigner les heures de la journée nachmittags afternoon l’après-midi + il pomeriggio nachts night la nuit + la notte tags day le jour + di giorno abends evening le soir + la sera morgens morning le matin + la mattina mittags noon à midi + a mezzogiorno - Geschlossene Liste von Werten, die - von der SSRQ zur Bezeichnung von Jahreszeiten verwendet werden - - Closed list of values for naming - seasons used by the SSRQ - - Liste fermée de valeurs utilisées - par la SSRQ pour désigner les saisons - + Geschlossene Liste von Werten, die von der SSRQ + zur Bezeichnung von Jahreszeiten verwendet werden + Closed list of values for naming seasons used by + the SSRQ + Liste fermée de valeurs utilisées par la SSRQ + pour désigner les saisons Frühling spring printemps + primavera Sommer summer été + estate Herbst fall automne + autunno Winter winter hiver + inverno @@ -2266,56 +2762,67 @@ oberhalb der Zeile above the line au-dessus de la ligne + al di sopra della riga unterhalb der Zeile below the line au-dessous de la ligne + al di sotto della riga am unteren Rand on the bottom en bas de page + a piè di pagina auf dem Umschlag on the cover sur la couverture + sulla copertina auf dem Umschlag oben at the top of the cover en haut de la couverture + nella parte superiore della copertina auf dem Umschlag unten at the bottom of the cover en bas de la couverture + nella parte inferiore della copertina auf dem Umschlag in der Mitte in the middle of the cover au milieu de la couverture + nel mezzo della copertina am linken Rand on the left margin dans la marge de gauche + sul margine sinistro auf der nächsten Seite on the next page sur la page suivante + sulla pagina seguente am rechten Rand on the right margin dans la marge de droite + sul margine destro auf der Rückseite on the reverse side au verso + sul verso @@ -2330,86 +2837,103 @@ auf der linken Seite der Plica on the left side of the plica du côté gauche de la plica + a sinistra della plica auf dem Pergamentstreifen on the parchment tag à une lanière en parchemin + sulla striscia di pergamena auf der Plica on the plica sur la plica + sulla plica auf der Rückseite der Plica on the verso of the plica au verso de la plica + sul verso della plica auf der rechten Seite der Plica on the right side of the plica du côté droit de la plica + a destro della plica unter der Plica sub plica au-dessous de la plica + sotto la plica auf der Rückseite oben at the top of the verso - verso en haut de la page + au verso en haut de la page + sul verso superiore auf der Rückseite oben links at the top left of the verso au verso en haut à gauche + sul verso superiore a sinistra auf der Rückseite oben in der Mitte at the top of the verso in the middle au verso en haut au milieu + sul verso superiore in mezzo auf der Rückseite oben rechts at the top right of the verso au verso en haut à droite + sul verso superiore a destra auf der Rückseite unten at the bottom of the verso au verso en bas + sul verso inferiore auf der Rückseite unten links at the bottom left of the verso au verso en bas à gauche + sul verso inferiore a sinistra auf der Rückseite unten in der Mitte at the bottom of the verso in the middle au verso en bas au milieu + sul verso inferiore in mezzo auf der Rückseite unten rechts at the bottom right of the verso au verso en bas à droite + sul verso inferiore a destra auf der Rückseite am linken Rand on the left margin of the verso au verso dans la marge de gauche + sul verso sul margine sinistro auf der Rückseite in der Mitte in the middle of the verso au centre du verso de la page + sul verso in mezzo auf der Rückseite am rechten Rand on the right margin of the verso au verso dans la marge de droite + sul verso sul margine destro @@ -2424,41 +2948,49 @@ auf Zeilenhöhe inline à la hauteur de la ligne + all’altezza della riga zwischen zwei Zeilen interlinear entre les lignes + tra le righe am linken oberen Rand on the left top en haut à gauche + in alto a sinistra auf der gegenüberliegenden Seite on the opposite page sur la page opposée + sulla pagina opposta überschrieben overwritten par-dessus + sovrascritto auf der vorherigen Seite on the previous page sur la page précédente + sulla pagina precedente am rechten oberen Rand on the right top en haut à droite + in alto a destra am oberen Rand on the top en haut de page + sul bordo superiore @@ -2475,55 +3007,66 @@ mit anderer Tinte with different ink avec une autre encre + altro inchiostro mit Bleistift with pencil au crayon + matita - Gibt wieder, wie eine Streichung vorgenommen wurde. + Gibt wieder, wie eine Streichung vorgenommen + wurde. Represents how a deletion was made. - Représente comment une suppression a été effectuée. + Représente comment une suppression a été + effectuée. Streichung durch Schwärzen deletion by blackening text caviardage + depennamento Streichung durch Verwendung von Klammern deletion by bracketing text la suppression se trouve entre parenthèses + cancellazione tra parentesi Streichung durch gekreuzte Linien deletion by crossed lines suppression en croisant la ligne + cancellazione sbarrata Streichung durch direkte Überschreibung deleted text directly overwritten la suppression a été remplacée directement + cancellazione con sovrascrittura diretta Streichung durch Textlöschung/Rasur deletion by scraping suppression par grattage + cancellazione raschiata Streichung durch einfache Durchstreichung deletion by strikethrough suppression par biffage + cancellazione biffata Streichung durch Unterpunktung deletion by subpunctuation suppression par subponctuation + cancellazione con segno di espunzione + @@ -52,6 +53,7 @@ + @@ -138,6 +140,7 @@ + diff --git a/tests/src/schema/elements/test_bibl.py b/tests/src/schema/elements/test_bibl.py index b72f3559b..95fdafb0c 100644 --- a/tests/src/schema/elements/test_bibl.py +++ b/tests/src/schema/elements/test_bibl.py @@ -21,6 +21,11 @@ ", S. 93", True, ), + ( + "valid-bibl-with-pc-and-ref", + ": S. 93", + True, + ), ], ) def test_bibl( diff --git a/tests/src/schema/elements/test_damage.py b/tests/src/schema/elements/test_damage.py index 24f58cb65..dd9d192ef 100644 --- a/tests/src/schema/elements/test_damage.py +++ b/tests/src/schema/elements/test_damage.py @@ -31,6 +31,26 @@ "die", True, ), + ( + "damage-with-valid-child-element-combination-unclear-supplied", + "diebar", + True, + ), + ( + "damage-with-valid-child-element-combination-gap-supplied", + "bar", + True, + ), + ( + "damage-with-valid-child-element-combination-gap-unclear", + "bar", + True, + ), + ( + "damage-with-invalid-child-element-combination-gap-add", + "die hand='otherHand' place='overwritten'>foo", + False, + ), ( "invalid-damage-without-agent", "die", diff --git a/tests/src/schema/elements/test_date.py b/tests/src/schema/elements/test_date.py index b0aea9152..6bcb9e627 100644 --- a/tests/src/schema/elements/test_date.py +++ b/tests/src/schema/elements/test_date.py @@ -159,22 +159,22 @@ def test_date_rng( ), ( "valid-date-inside-pubStmt", - "", + "", True, ), ( "valid-date-inside-pubStmt-from-to", - "", + "", True, ), ( "invalid-date-inside-pubStmt-from", - "", + "", False, ), ( "invalid-date-inside-pubStmt", - "", + "", False, ), ], diff --git a/tests/src/schema/elements/test_div.py b/tests/src/schema/elements/test_div.py index b44638322..6b2bb4539 100644 --- a/tests/src/schema/elements/test_div.py +++ b/tests/src/schema/elements/test_div.py @@ -18,6 +18,11 @@ "

foo

", True, ), + ( + "valid-div-with-list", + "
foo
", + True, + ), ( "invalid-div-with-wrong-type", "

foo

", @@ -61,6 +66,31 @@ def test_div( "

foo

hello
", False, ), + ( + "valid-xml-lang-in-back", + "

foo

bar

", + True, + ), + ( + "invalid-xml-lang-in-back-just-one-div", + "

foo

", + False, + ), + ( + "invalid-xml-lang-in-back-just-one-xml-lang", + "

foo

bar

", + False, + ), + ( + "invalid-xml-lang-in-back-just-same-xml-lang", + "

foo

bar

", + False, + ), + ( + "invalid-xml-lang-in-body", + "

foo

", + False, + ), ], ) def test_div_text_constraint( diff --git a/tests/src/schema/elements/test_extent.py b/tests/src/schema/elements/test_extent.py index 360b0390e..6dc5ebe69 100644 --- a/tests/src/schema/elements/test_extent.py +++ b/tests/src/schema/elements/test_extent.py @@ -23,6 +23,11 @@ "", False, ), + ( + "invalid-extent-with-wrong-child", + "", + False, + ), ], ) def test_extent_rng( diff --git a/tests/src/schema/elements/test_idno.py b/tests/src/schema/elements/test_idno.py index 43ed28fe8..c7a1a4230 100644 --- a/tests/src/schema/elements/test_idno.py +++ b/tests/src/schema/elements/test_idno.py @@ -43,9 +43,9 @@ def test_idno( True, ), ( - "valid-series-idno-without-tradtion-part", + "invalid-series-idno-without-tradtion-part", "SSRQ-SG-III_4-77", - True, + False, ), ( "valid-series-idno", diff --git a/tests/src/schema/elements/test_list.py b/tests/src/schema/elements/test_list.py index f6dfd7c24..dfa0cef87 100644 --- a/tests/src/schema/elements/test_list.py +++ b/tests/src/schema/elements/test_list.py @@ -11,6 +11,25 @@ "foo", True, ), + ( + "valid-list-with-head", + "foofoo", + True, + ), + ( + "valid-list-with-multiple-elements", + """ + foo + + + foo + foo + + bar + bar + """, + True, + ), ( "invalid-list", "", diff --git a/tests/src/schema/elements/test_measure.py b/tests/src/schema/elements/test_measure.py index 670e5a524..857cedd6c 100644 --- a/tests/src/schema/elements/test_measure.py +++ b/tests/src/schema/elements/test_measure.py @@ -43,6 +43,11 @@ "zwai phunt nuwer Zuricher", False, ), + ( + "valid-measure-with-unknown-quantity", + "zwai phunt nuwer Zuricher", + True, + ), ], ) def test_measure( diff --git a/tests/src/schema/elements/test_note.py b/tests/src/schema/elements/test_note.py index 1d692e441..68d275145 100644 --- a/tests/src/schema/elements/test_note.py +++ b/tests/src/schema/elements/test_note.py @@ -16,7 +16,7 @@ ( "valid-note-with-type-and-place", "foo", - True, + False, ), ( "invalid-note-with-wrong-attribute-value", diff --git a/tests/src/schema/elements/test_num.py b/tests/src/schema/elements/test_num.py index 0ed0deda6..6b6fc5be1 100644 --- a/tests/src/schema/elements/test_num.py +++ b/tests/src/schema/elements/test_num.py @@ -28,6 +28,11 @@ "dreieinhalb", True, ), + ( + "valid-num-with-fraction", + "5/4", + True, + ), ( "num-with-invalid-floating-point", "dreieinhalb", diff --git a/tests/src/schema/elements/test_origin.py b/tests/src/schema/elements/test_origin.py index b96c90238..6f8c35003 100644 --- a/tests/src/schema/elements/test_origin.py +++ b/tests/src/schema/elements/test_origin.py @@ -1,6 +1,8 @@ import pytest +from pyschval.schematron.validate import apply_schematron_validation +from pyschval.types.result import SchematronResult -from ..conftest import RNG_test_function +from ..conftest import RNG_test_function, SimpleTEIWriter, add_tei_namespace @pytest.mark.parametrize( @@ -42,6 +44,15 @@ """, False, ), + ( + "invalid-origin-with-more-than-two-dates", + """ + + + + """, + False, + ), ], ) def test_origin_rng( @@ -51,3 +62,34 @@ def test_origin_rng( result: bool, ): test_element_with_rng("origin", name, markup, result, False) + + +@pytest.mark.parametrize( + "name, markup, result", + [ + ( + "invalid-origin-with-two-dates-of-the-same-type", + """ + + + """, + False, + ), + ( + "valid-origin-with-two-dates-of-different-types", + """ + + + """, + True, + ), + ], +) +def test_ref_constraint( + main_constraints: str, writer: SimpleTEIWriter, name: str, markup: str, result: bool +): + writer.write(name, add_tei_namespace(markup)) + reports: list[SchematronResult] = apply_schematron_validation( + input=writer.list(), isosch=main_constraints + ) + assert reports[0].report.is_valid() is result diff --git a/tests/src/schema/elements/test_p.py b/tests/src/schema/elements/test_p.py index 984b46b31..fc023aa63 100644 --- a/tests/src/schema/elements/test_p.py +++ b/tests/src/schema/elements/test_p.py @@ -28,6 +28,11 @@ "

foo

", False, ), + ( + "invalid-p-with-corr", + "

foo

", + False, + ), ], ) def test_p( diff --git a/tests/src/schema/elements/test_pc.py b/tests/src/schema/elements/test_pc.py new file mode 100644 index 000000000..29c68dfd4 --- /dev/null +++ b/tests/src/schema/elements/test_pc.py @@ -0,0 +1,32 @@ +import pytest + +from ..conftest import RNG_test_function + + +@pytest.mark.parametrize( + "name, markup, result", + [ + ( + "valid-pc", + ";", + True, + ), + ( + "invalid-pc-with-wrong-char", + "-", + False, + ), + ( + "invalid-pc-with-attribute", + ";", + False, + ), + ], +) +def test_pc( + test_element_with_rng: RNG_test_function, + name: str, + markup: str, + result: bool, +): + test_element_with_rng("pc", name, markup, result, False) diff --git a/tests/src/schema/elements/test_quote.py b/tests/src/schema/elements/test_quote.py index 9f38dd909..55256f2f8 100644 --- a/tests/src/schema/elements/test_quote.py +++ b/tests/src/schema/elements/test_quote.py @@ -14,10 +14,15 @@ True, ), ( - "valid-quote-with-attributes", + "valid-quote-with-attributes-fully-inserted", "bar baz foo", True, ), + ( + "valid-quote-with-attributes-partially-inserted", + "bar baz foo", + True, + ), ("valid-quote-with-two-segs", "12", True), ( "invalid-quote-with-two-seg-default-mixed", diff --git a/tests/src/schema/elements/test_title.py b/tests/src/schema/elements/test_title.py index c6f3c1338..7cce2921a 100644 --- a/tests/src/schema/elements/test_title.py +++ b/tests/src/schema/elements/test_title.py @@ -7,22 +7,27 @@ "name, markup, result", [ ( - "valid_title", + "valid-title", "foo", True, ), ( - "valid_title-with-xml-lang", + "valid_title-with-elements", + "foo<pc>:</pc> X<hi rend='sup'>e</hi> partie", + True, + ), + ( + "valid-title-with-xml-lang", "foo", True, ), ( - "invalid_title-with-wrong-attribute", + "invalid-title-with-wrong-attribute", "foo", False, ), ( - "invalid_title", + "invalid-title", "<p>foo</p>", False, ), diff --git a/tests/src/schema/test_constraints.py b/tests/src/schema/test_constraints.py index dc6b6d00a..b30f85f42 100644 --- a/tests/src/schema/test_constraints.py +++ b/tests/src/schema/test_constraints.py @@ -130,32 +130,32 @@ def test_facs_naming_conventions( [ ( "correct-datable-with-when", - "", + "2020", True, ), ( "incorrect-datable-combination-when-to-custom", - "", + "2020", False, ), ( "correct-datable-combination-from-to", - "", + "2020", True, ), ( "incorrect-datable-from-without-to", - "", + "2020", False, ), ( "incorrect-datable-combination-from-to-notBefore", - "", + "2020", False, ), ( "incorrect-datable-combination-from-to-notAfter", - "", + "2020", False, ), ], @@ -214,6 +214,16 @@ def test_datable_custom_attr( "", False, ), + ( + "valid-empty-date-in-teiHeader", + "", + True, + ), + ( + "invalid-empty-date-outside-teiHeader", + "", + False, + ), ], ) def test_text_content_constraint_gl4( @@ -277,3 +287,39 @@ def test_duplicate_attribute_values_constraint_gl6( input=writer.list(), isosch=main_constraints ) assert reports[0].report.is_valid() is result + + +@pytest.mark.parametrize( + "name, markup, result", + [ + ( + "invalid-node-with-text-using-nbsp-as-html-entity-160", + "

 foo

", + False, + ), + ( + "invalid-node-with-text-using-nbsp-as-html-entity-xA0", + "

 foo

", + False, + ), + ( + "invalid-node-with-text-using-nbsp-in-unicode-notation", + "

 foo

", + False, + ), + ( + "valid-node-with-text", + "

foo

", + True, + ), + ], +) +def test_uses_nbsp_in_text_node( + main_constraints: str, writer: SimpleTEIWriter, name: str, markup: str, result: bool +): + """Tests the global constraint, which ensures that no non-breaking-space is used.""" + writer.write(name, add_tei_namespace(markup)) + reports: list[SchematronResult] = apply_schematron_validation( + input=writer.list(), isosch=main_constraints + ) + assert reports[0].report.is_valid() is result diff --git a/utils/commons/filehandler.py b/utils/commons/filehandler.py index db56e9dad..69adb47fc 100644 --- a/utils/commons/filehandler.py +++ b/utils/commons/filehandler.py @@ -9,13 +9,11 @@ class AbstractFileHandler(Protocol): @staticmethod @abstractmethod - def read(directory: Path, file_name: str) -> Content: - ... + def read(directory: Path, file_name: str) -> Content: ... @staticmethod @abstractmethod - def write(directory: Path, file_name: str, content: Content) -> None: - ... + def write(directory: Path, file_name: str, content: Content) -> None: ... class FileHandler: diff --git a/utils/docs/extensions/magic_links.py b/utils/docs/extensions/magic_links.py index 389864965..94390b4c8 100644 --- a/utils/docs/extensions/magic_links.py +++ b/utils/docs/extensions/magic_links.py @@ -80,7 +80,7 @@ def init_file_lookup_table(files: Files) -> dict[str, list[File]]: file_list: dict[str, list[File]] = defaultdict(list) for file in files: - filename = PurePath(file.abs_src_path).name + filename = PurePath(file.abs_src_path).name # type: ignore file_list[filename].append(file) return file_list @@ -111,4 +111,4 @@ def create_relative_link(linker: File, target: File) -> str: Returns: str: The relative link.""" - return mkdocs_file_utils.get_relative_url(target.abs_src_path, linker.abs_src_path) + return mkdocs_file_utils.get_relative_url(target.abs_src_path, linker.abs_src_path) # type: ignore diff --git a/utils/docs/extensions/md_xi.py b/utils/docs/extensions/md_xi.py index 2964c397f..704d52411 100644 --- a/utils/docs/extensions/md_xi.py +++ b/utils/docs/extensions/md_xi.py @@ -77,7 +77,7 @@ def resolve_xi_includes( xsl: PyXsltExecutable = xslt_proc.compile_stylesheet( # type: ignore stylesheet_file=str(configs.XSLTS["xi"]) ) - xslt_result: str = xsl.transform_to_string(xdm_node=document) + xslt_result: str = xsl.transform_to_string(xdm_node=document) # type: ignore if xslt_result is None: raise ValueError(f"Failed to resolve xincludes for {include.filename}") @@ -136,6 +136,7 @@ def md_xi_plugin(markdown: str, xi_base_path: Path) -> str: Args: markdown (str): The Markdown text to parse. + xi_base_path (Path): The Path Returns: str: The Markdown text with resolved XIncludes.""" diff --git a/utils/docs/helpers/node_to_text.py b/utils/docs/helpers/node_to_text.py index 2ffed4730..701265111 100644 --- a/utils/docs/helpers/node_to_text.py +++ b/utils/docs/helpers/node_to_text.py @@ -9,9 +9,9 @@ from utils.docs.helpers.utils import split_tag_and_ns from utils.docs.specs.namespaces import XML_NS -RE_WHITESPACE_START_OR_MULTIPLE = re.compile( - r"^\s+|\s+$|\s+(?=-\S+)|\s+(?=\s)" -) # This is a regex to remove whitespace from the start and end of a string, and also to remove whitespace before a hyphen and whitespace before a space. +"""This is a regex to remove whitespace from the start and end of a string, + and also to remove whitespace before a hyphen and whitespace before a space.""" +RE_WHITESPACE_START_OR_MULTIPLE = re.compile(r"^\s+|\s+$|\s+(?=-\S+)|\s+(?=\s)") @dataclass(frozen=True) @@ -28,12 +28,13 @@ def __init__(self, message: str = "Can't transform the node.") -> None: def transform_node_to_text(node: ET.Element, lang: str | None = None) -> Iterator[str]: """ - A utility function to convert a ET.Element node to - a text representation, based on some opionated + A utility function to convert an ET.Element node to + a text representation, based on some opinionated transformation rules. Args: node (ET.Element): The node to convert. + lang: The language of the node. Yields: Iterator[str]: The text representation of the node. @@ -53,30 +54,34 @@ def transform_node_to_text(node: ET.Element, lang: str | None = None) -> Iterato if (lang_attr := node.get(f"{{{XML_NS}}}lang")) else parent_lang_attr ) - match child_node.tag_name: - case "att": - yield from att_to_md(child_node.content) - case "gi": - yield from gi_to_md(child_node.content, used_lang) - case "list": - yield from list_to_md(child_node.content) - case "p": - yield from p_to_md(child_node.content, used_lang) - case "ref": - yield from ref_to_md(child_node.content, used_lang) - case "remarks": - yield from remarks_to_md(child_node.content, used_lang) - case "tag": - yield from tag_to_md(child_node.content) - case "val": - yield from val_to_md(child_node.content) - case _: - yield from any_to_md(child_node.content) + yield from match_node_tag_name(child_node, used_lang) continue yield from node_text_to_md(child_node.content) # type: ignore +def match_node_tag_name(child_node, used_lang): + match child_node.tag_name: + case "att": + yield from att_to_md(child_node.content) + case "gi": + yield from gi_to_md(child_node.content, used_lang) + case "list": + yield from list_to_md(child_node.content) + case "p": + yield from p_to_md(child_node.content, used_lang) + case "ref": + yield from ref_to_md(child_node.content, used_lang) + case "remarks": + yield from remarks_to_md(child_node.content, used_lang) + case "tag": + yield from tag_to_md(child_node.content) + case "val": + yield from val_to_md(child_node.content) + case _: + yield from any_to_md(child_node.content) + + def convert_node_to_iterable(node: ET.Element) -> Iterator[Node]: """Creates an iterator over the content of a ElementTree. @@ -127,6 +132,7 @@ def gi_to_md(node: ET.Element, lang: str | None) -> Iterator[str]: Args: node (ET.Element): The node to convert. + lang: The language of the node. Raises: NodeTransformationError: If the node can't be transformed. @@ -174,6 +180,7 @@ def p_to_md(node: ET.Element, lang: str | None) -> Iterator[str]: Args: node (ET.Element): The p node to convert. + lang: The language of the node. Raises: NodeTransformationError: If the node can't be transformed. @@ -195,6 +202,7 @@ def ref_to_md(node: ET.Element, lang: str | None) -> Iterator[str]: Args: node (ET.Element): The ref node to convert. + lang: The language of the node. Raises: NodeTransformationError: If the ref has no target. diff --git a/utils/docs/specs/oddelement.py b/utils/docs/specs/oddelement.py index 3a3aaa949..4ab587b95 100644 --- a/utils/docs/specs/oddelement.py +++ b/utils/docs/specs/oddelement.py @@ -17,5 +17,4 @@ class ODDElement(Protocol): @abstractmethod def to_markdown( self, lang: str, lang_translations: dict[str, str], path: Path | None = None - ) -> None | str: - ... + ) -> None | str: ... diff --git a/utils/schema/compile.py b/utils/schema/compile.py index 8f4eb2e7a..b744b5d08 100644 --- a/utils/schema/compile.py +++ b/utils/schema/compile.py @@ -95,7 +95,7 @@ def resolve_relative_paths(doc: str) -> str: xsl: PyXsltExecutable = xsltproc.compile_stylesheet( # type: ignore stylesheet_file=str(configs.XSLTS["path"]) ) - result: str = xsl.transform_to_string(xdm_node=document) + result: str = xsl.transform_to_string(xdm_node=document) # type: ignore if result is None: raise ValueError("Failed to resolve relative paths") @@ -111,7 +111,7 @@ def resolve_specs(doc: str) -> str: xsl: PyXsltExecutable = xsltproc.compile_stylesheet( # type: ignore stylesheet_file=str(configs.XSLTS["specs"]) ) - result: str = xsl.transform_to_string(xdm_node=document) + result: str = xsl.transform_to_string(xdm_node=document) # type: ignore if result is None: raise ValueError("Failed to include tei:specGrpRefs") @@ -131,7 +131,7 @@ def resolve_xincludes(doc: str) -> str: xsl: PyXsltExecutable = xsltproc.compile_stylesheet( # type: ignore stylesheet_file=str(configs.XSLTS["xi"]) ) - result: str = xsl.transform_to_string(xdm_node=document) + result: str = xsl.transform_to_string(xdm_node=document) # type: ignore if result is None: raise ValueError("Failed to resolve xincludes") @@ -140,8 +140,9 @@ def resolve_xincludes(doc: str) -> str: def resolve_embedded_spec_files(doc: str) -> str: - """A helper function, which first resolves the content of all embeddes specs and then resolves the - examples embedded via xinclude.""" + """A helper function, which first resolves the content + of all embeddes specs and then resolves the examples + embedded via xinclude.""" result_specs = resolve_specs(doc=doc) return resolve_xincludes(doc=result_specs) @@ -166,7 +167,8 @@ def check_embedded_files(doc: str, schema: SSRQSchemaType) -> None: raise ExceptionGroup("File not found", bundled_exceptions) except ExceptionGroup as errors: print( - f"The following files in schema {schema['entry']} are missing – fix the paths before you continue:" + f"The following files in schema {schema['entry']} are missing – " + f"fix the paths before you continue:" ) for e in errors.exceptions: print(e) @@ -208,7 +210,7 @@ def compile_odd_to_odd(odd: str, tei_version: str) -> str: xsl: PyXsltExecutable = xsltproc.compile_stylesheet( # type: ignore stylesheet_file=str(configs.XSLTS["odd2odd"]) ) - result: str = xsl.transform_to_string(xdm_node=document) + result: str = xsl.transform_to_string(xdm_node=document) # type: ignore if result is None: raise ValueError("No result from XSLT transformation") @@ -225,7 +227,7 @@ def resolve_sch_let(odd: str) -> str: xsl: PyXsltExecutable = xsltproc.compile_stylesheet( # type: ignore stylesheet_file=str(configs.XSLTS["vars"]) ) - result: str = xsl.transform_to_string(xdm_node=document) + result: str = xsl.transform_to_string(xdm_node=document) # type: ignore if result is None: raise ValueError("No result from XSLT transformation, while cleaning") @@ -243,7 +245,7 @@ def compile_odd_to_rng(odd: str, tei_version: str) -> str: xsl: PyXsltExecutable = xsltproc.compile_stylesheet( # type: ignore stylesheet_file=str(configs.XSLTS["odd2rng"]) ) - result: str = xsl.transform_to_string(xdm_node=document) + result: str = xsl.transform_to_string(xdm_node=document) # type: ignore if result is None: raise ValueError("No result from XSLT transformation") @@ -285,7 +287,7 @@ def odd_factory( xsl: PyXsltExecutable = xsltproc.compile_stylesheet( # type: ignore stylesheet_file=str(configs.XSLTS["clean"]) ) - result: str = xsl.transform_to_string(xdm_node=document) + result: str = xsl.transform_to_string(xdm_node=document) # type: ignore if result is None: raise ValueError("No result from XSLT transformation, while cleaning") diff --git a/utils/schema/steps/step.py b/utils/schema/steps/step.py index fe2bd83e3..84485afef 100644 --- a/utils/schema/steps/step.py +++ b/utils/schema/steps/step.py @@ -10,5 +10,4 @@ class AbstractStep(Protocol): in a processing pipeline.""" @abstractmethod - def __call__(self, value: T) -> T: - ... + def __call__(self, value: T) -> T: ...