diff --git a/.pylint.ini b/.pylint.ini
index 18ae00d76..8ff38ea6a 100644
--- a/.pylint.ini
+++ b/.pylint.ini
@@ -87,6 +87,7 @@ disable=
logging-fstring-interpolation,
unnecessary-dunder-call,
deprecated-module,
+ deprecated-argument,
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
@@ -418,5 +419,5 @@ known-third-party=enchant
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
-# "Exception"
-overgeneral-exceptions=Exception
+# "builtin.Exception"
+overgeneral-exceptions=builtin.Exception
diff --git a/.verchew.ini b/.verchew.ini
index 9832f36a6..ce8587569 100644
--- a/.verchew.ini
+++ b/.verchew.ini
@@ -5,18 +5,18 @@ version = GNU Make
[Python]
-cli = python
+cli = python3
version = 3.9 || 3.10 || 3.11 || 3.12
[Poetry]
cli = poetry
-version = 1.7
+version = 1.7 || 1.8
[Graphviz]
cli = dot
cli_version_arg = -V
-version = 9 || 10
+version = 9 || 10 || 11 || 12
optional = true
message = This is only needed to generate UML diagrams for documentation.
diff --git a/Makefile b/Makefile
index e09db7e4e..6efab387a 100644
--- a/Makefile
+++ b/Makefile
@@ -46,19 +46,18 @@ DEPENDENCIES := $(VIRTUAL_ENV)/.poetry-$(shell bin/checksum pyproject.toml poetr
install: $(DEPENDENCIES) .cache
$(DEPENDENCIES): poetry.lock
- @ rm -rf ~/Library/Preferences/pypoetry
- @ poetry config virtualenvs.in-project true
+ poetry config virtualenvs.in-project true
poetry install
- @ touch $@
+ touch $@
ifndef CI
poetry.lock: pyproject.toml
poetry lock --no-update
- @ touch $@
+ touch $@
endif
.cache:
- @ mkdir -p .cache
+ mkdir -p .cache
# CHECKS ######################################################################
@@ -66,7 +65,7 @@ endif
format: install
poetry run isort $(PACKAGES)
poetry run black $(PACKAGES)
- @ echo
+ echo
.PHONY: check
check: install format ## Run formaters, linters, and static analysis
@@ -96,7 +95,7 @@ test: test-all ## Run unit and integration tests
test-unit: install
poetry run pytest $(PACKAGE) $(PYTEST_OPTIONS)
ifndef DISABLE_COVERAGE
- @ echo
+ echo
poetry run coveragespace update unit
endif
@@ -107,7 +106,7 @@ test-int: test-all
test-all: install
TEST_INTEGRATION=true poetry run pytest $(PACKAGES) $(PYTEST_OPTIONS)
ifndef DISABLE_COVERAGE
- @ echo
+ echo
poetry run coveragespace update overall
endif
@@ -132,16 +131,16 @@ docs: mkdocs uml ## Generate documentation and UML
.PHONY: mkdocs
mkdocs: install $(MKDOCS_INDEX)
$(MKDOCS_INDEX): docs/requirements.txt mkdocs.yml docs/*.md
- @ mkdir -p docs/about
- @ cd docs && ln -sf ../README.md index.md
- @ cd docs/about && ln -sf ../../CHANGELOG.md changelog.md
- @ cd docs/about && ln -sf ../../CONTRIBUTING.md contributing.md
- @ cd docs/about && ln -sf ../../LICENSE.md license.md
+ mkdir -p docs/about
+ cd docs && ln -sf ../README.md index.md
+ cd docs/about && ln -sf ../../CHANGELOG.md changelog.md
+ cd docs/about && ln -sf ../../CONTRIBUTING.md contributing.md
+ cd docs/about && ln -sf ../../LICENSE.md license.md
poetry run mkdocs build --clean --strict
docs/requirements.txt: poetry.lock
- @ poetry run pip list --format=freeze | grep mkdocs > $@
- @ poetry run pip list --format=freeze | grep Pygments >> $@
+ poetry run pip list --format=freeze | grep mkdocs > $@
+ poetry run pip list --format=freeze | grep Pygments >> $@
.PHONY: uml
uml: install docs/*.png
@@ -262,6 +261,6 @@ clean-all: clean
.PHONY: help
help: install
- @ grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
+ grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.DEFAULT_GOAL := help
diff --git a/bin/checksum b/bin/checksum
index 1036e2381..1272cd7d6 100755
--- a/bin/checksum
+++ b/bin/checksum
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import hashlib
diff --git a/bin/verchew b/bin/verchew
index bbd76b7e3..7319e11a6 100755
--- a/bin/verchew
+++ b/bin/verchew
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# The MIT License (MIT)
diff --git a/doorstop/cli/commands.py b/doorstop/cli/commands.py
index 1df175318..503142923 100644
--- a/doorstop/cli/commands.py
+++ b/doorstop/cli/commands.py
@@ -502,6 +502,8 @@ def run_export(args, cwd, error, catch=True, auto=False, _tree=None):
ext = utilities.get_ext(args, error, ".yml", ".csv", whole_tree=whole_tree)
# Get the tree or document
+ document = None
+
with utilities.capture(catch=catch) as success:
exporter.check(ext)
tree = _tree or _get_tree(args, cwd, load=whole_tree)
@@ -547,6 +549,7 @@ def run_publish(args, cwd, error, catch=True):
ext = utilities.get_ext(args, error, ".txt", ".html", whole_tree)
# Get the tree or document
+ document = None
with utilities.capture(catch=catch) as success:
publisher.check(ext)
tree = _get_tree(args, cwd, load=whole_tree)
@@ -665,12 +668,10 @@ def _iter_items(args, tree, error):
if item:
yield item
elif document:
- for item in document:
- yield item
+ yield from document
else:
for document in tree:
- for item in document:
- yield item
+ yield from document
def _export_import(args, cwd, error, document, ext):
diff --git a/doorstop/cli/main.py b/doorstop/cli/main.py
index 5b92b7c1a..962f6ee5c 100644
--- a/doorstop/cli/main.py
+++ b/doorstop/cli/main.py
@@ -179,12 +179,12 @@ def main(args=None): # pylint: disable=R0915
log.error(exc)
success = False
except KeyboardInterrupt:
- log.debug("command cancelled")
+ log.debug(f"command cancelled: {args}")
success = False
if success:
- log.debug("command succeeded")
+ log.debug("command succeeded: {args}")
else:
- log.debug("command failed")
+ log.debug(f"command failed: {args}")
sys.exit(1)
diff --git a/doorstop/common.py b/doorstop/common.py
index aad53aa2e..4f81417a7 100644
--- a/doorstop/common.py
+++ b/doorstop/common.py
@@ -107,8 +107,7 @@ def read_lines(path, encoding="utf-8"):
"""
log.trace("reading lines from '{}'...".format(path)) # type: ignore
with open(path, "r", encoding=encoding) as stream:
- for line in stream:
- yield line
+ yield from stream
def read_text(path):
diff --git a/doorstop/core/editor.py b/doorstop/core/editor.py
index 6dbdde0d9..61e95ca0c 100644
--- a/doorstop/core/editor.py
+++ b/doorstop/core/editor.py
@@ -94,6 +94,10 @@ def launch(path, tool=None):
args = ["start", path]
elif os.name == "posix":
args = ["xdg-open", path]
+ else:
+ raise DoorstopError(
+ "unknown operating system, unable to determine launch command"
+ )
# Launch the editor
try:
diff --git a/doorstop/core/tests/files/published.html b/doorstop/core/tests/files/published.html
index 882f46526..609f2e5a4 100644
--- a/doorstop/core/tests/files/published.html
+++ b/doorstop/core/tests/files/published.html
@@ -1,124 +1,278 @@
-
doc-REQ
-
-
-
-
-
-
+
+
+ doc-REQ
+
+
+
+
+
+
+
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ By
+
+
+
+ -
+
+
+
+ Issue
+
+
+
+ -
+
+
+
+
+
-
-
-
-
-
+
+
+
+
-
Test document for development of Doorstop
-
1.2.3 REQ001
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+
+
+ Test document for development of
+
+ Doorstop
+
+
+
+
+ 1.2.3 REQ001
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
-deserunt mollit anim id est laborum.
-
Parent links: SYS001 , SYS002
-
1.4 REQ003
-
Unicode: -40° ±1%
-
-external/text.txt
(line 3)
-
-
Parent links: REQ001
-
1.5 REQ006
-
Hello, world!
-
-external/text.txt
(line 3)
-external/text2.txt
-
-
Parent links: REQ001
-
1.6 REQ004
-
Hello, world!
-
2.1 Plantuml REQ002
-
Hello, world!
-
Dot Executable: /opt/local/bin/dot Dot executable does not exist Cannot find Graphviz. You should try @startuml testdot @enduml or java -jar plantuml.jar -testdot
-
Child links: TST001 , TST002
-
2.1 REQ2-001
-
Hello, world!
-
Test Math Expressions in Latex Style:
-
Inline Style 1: $a \ne 0$
+deserunt mollit anim id est laborum.
+
+
+
+ Parent links:
+
+
+ SYS001
+
+ ,
+
+ SYS002
+
+
+
+ 1.4 REQ003
+
+
+ Unicode: -40° ±1%
+
+
+
+
+ external/text.txt
+
+ (line 3)
+
+
+
+
+ Parent links:
+
+
+ REQ001
+
+
+
+ 1.5 REQ006
+
+
+ Hello, world!
+
+
+
+
+ external/text.txt
+
+ (line 3)
+
+ external/text2.txt
+
+
+
+
+
+ Parent links:
+
+
+ REQ001
+
+
+
+ 1.6 REQ004
+
+
+ Hello, world!
+
+
+ 2.1 Plantuml
+
+ REQ002
+
+
+
+ Hello, world!
+
+
+
+
+
+ Child links:
+
+
+ TST001
+
+ ,
+
+ TST002
+
+
+
+ 2.1 REQ2-001
+
+
+ Hello, world!
+
+
+ Test Math Expressions in Latex Style:
+
+
+ Inline Style 1: $a \ne 0$
Inline Style 2: (ax^2 + bx + c = 0)
-Multiline: $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
-
Parent links: REQ001
-
Child links: TST001
+Multiline: $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
+
+
+
+ Parent links:
+
+
+ REQ001
+
+
+
+
+ Child links:
+
+
+ TST001
+
+
-
-
-
-
+
+
+
+
-
diff --git a/doorstop/core/tests/files/published2.html b/doorstop/core/tests/files/published2.html
index 3d01124a9..d8f7c82bf 100644
--- a/doorstop/core/tests/files/published2.html
+++ b/doorstop/core/tests/files/published2.html
@@ -1,122 +1,242 @@
-doc-REQ
-
-
-
-
-
-
+
+
+ doc-REQ
+
+
+
+
+
+
+
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ By
+
+
+
+ -
+
+
+
+ Issue
+
+
+
+ -
+
+
+
+
+
-
-
-
-
-
+
+
+
+
-
Test document for development of Doorstop
-
1.2.3 REQ001
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+
+
+ Test document for development of
+
+ Doorstop
+
+
+
+
+ 1.2.3 REQ001
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
-deserunt mollit anim id est laborum.
-
Links: SYS001, SYS002
-
1.4 REQ003
-
Unicode: -40° ±1%
-
-external/text.txt
(line 3)
-
-
Links: REQ001
-
1.5 REQ006
-
Hello, world!
-
-external/text.txt
(line 3)
-external/text2.txt
-
-
Links: REQ001
-
1.6 REQ004
-
Hello, world!
-
2.1 Plantuml REQ002
-
Hello, world!
-
Dot Executable: /opt/local/bin/dot Dot executable does not exist Cannot find Graphviz. You should try @startuml testdot @enduml or java -jar plantuml.jar -testdot
-
2.1 REQ2-001
-
Hello, world!
-
Test Math Expressions in Latex Style:
-
Inline Style 1: $a \ne 0$
+deserunt mollit anim id est laborum.
+
+
+
+ Links: SYS001, SYS002
+
+
+
+ 1.4 REQ003
+
+
+ Unicode: -40° ±1%
+
+
+
+
+ external/text.txt
+
+ (line 3)
+
+
+
+
+ Links: REQ001
+
+
+
+ 1.5 REQ006
+
+
+ Hello, world!
+
+
+
+
+ external/text.txt
+
+ (line 3)
+
+ external/text2.txt
+
+
+
+
+
+ Links: REQ001
+
+
+
+ 1.6 REQ004
+
+
+ Hello, world!
+
+
+ 2.1 Plantuml
+
+ REQ002
+
+
+
+ Hello, world!
+
+
+
+
+ 2.1 REQ2-001
+
+
+ Hello, world!
+
+
+ Test Math Expressions in Latex Style:
+
+
+ Inline Style 1: $a \ne 0$
Inline Style 2: (ax^2 + bx + c = 0)
-Multiline: $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
-
Links: REQ001
+Multiline: $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
+
+
+
+ Links: REQ001
+
+
-
-
-
-
+
+
+
+
-
diff --git a/doorstop/core/tests/test_all.py b/doorstop/core/tests/test_all.py
index 6d2af1f8b..d5f040ea8 100644
--- a/doorstop/core/tests/test_all.py
+++ b/doorstop/core/tests/test_all.py
@@ -16,6 +16,7 @@
import openpyxl
import yaml
from plantuml_markdown import PlantUMLMarkdownExtension
+from bs4 import BeautifulSoup
from doorstop import common, core
from doorstop.common import DoorstopError, DoorstopInfo, DoorstopWarning
@@ -35,6 +36,14 @@
from doorstop.core.vcs import mockvcs
+def _remove_html_element(html: str, element: str) -> None:
+ soup = BeautifulSoup(html, "html.parser")
+ for data in soup([element]):
+ data.decompose()
+
+ return soup.prettify()
+
+
class TestItem(unittest.TestCase):
"""Integration tests for the Item class."""
@@ -582,9 +591,11 @@ def setUp(self):
FILES, "plantuml-1.2024.7.jar"
)
plantuml_ext = next(
- x for x in HtmlPublisher.EXTENSIONS if type(x) == PlantUMLMarkdownExtension
+ x for x in HtmlPublisher.EXTENSIONS if type(x) is PlantUMLMarkdownExtension
+ )
+ plantuml_ext.setConfigs(
+ {"server": "", "plantuml_cmd": plantuml_cmd, "theme": "bluegray"}
)
- plantuml_ext.setConfigs({"server": "", "plantuml_cmd": plantuml_cmd})
def tearDown(self):
if os.path.exists(self.temp):
@@ -668,11 +679,16 @@ def test_lines_html_document_linkify(self):
self.document, ".html", linkify=True, toc=True
)
actual = "".join(line + "\n" for line in lines)
+
+ # Strip out SVG tag, as its proven hard to get reproducable output from
+ # PlantUML across architectures.
+ actual_stripped = _remove_html_element(actual, "ns0:svg")
+
# Assert
- if actual != expected:
+ if actual_stripped != expected:
common.log.error(f"Published content changed: {path}")
- common.write_text(actual, path)
- self.assertEqual(expected, actual)
+ common.write_text(actual_stripped, path)
+ self.assertEqual(expected, actual_stripped)
@patch("doorstop.settings.PUBLISH_CHILD_LINKS", False)
def test_lines_html_document_without_child_links(self):
@@ -682,11 +698,16 @@ def test_lines_html_document_without_child_links(self):
# Act
lines = core.publisher.publish_lines(self.document, ".html", toc=True)
actual = "".join(line + "\n" for line in lines)
+
+ # Strip out SVG tag, as its proven hard to get reproducable output from
+ # PlantUML across architectures.
+ actual_stripped = _remove_html_element(actual, "ns0:svg")
+
# Assert
- if actual != expected:
+ if actual_stripped != expected:
common.log.error(f"Published content changed: {path}")
- common.write_text(actual, path)
- self.assertEqual(expected, actual)
+ common.write_text(actual_stripped, path)
+ self.assertEqual(expected, actual_stripped)
class TestModule(unittest.TestCase):
diff --git a/poetry.lock b/poetry.lock
index 9688c3dbc..f5b5fc250 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.7.1 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 = "altgraph"
@@ -13,22 +13,17 @@ files = [
[[package]]
name = "astroid"
-version = "2.13.5"
+version = "3.2.4"
description = "An abstract syntax tree for Python with inference support."
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.8.0"
files = [
- {file = "astroid-2.13.5-py3-none-any.whl", hash = "sha256:6891f444625b6edb2ac798829b689e95297e100ddf89dbed5a8c610e34901501"},
- {file = "astroid-2.13.5.tar.gz", hash = "sha256:df164d5ac811b9f44105a72b8f9d5edfb7b5b2d7e979b04ea377a77b3229114a"},
+ {file = "astroid-3.2.4-py3-none-any.whl", hash = "sha256:413658a61eeca6202a59231abb473f932038fbcbf1666587f66d482083413a25"},
+ {file = "astroid-3.2.4.tar.gz", hash = "sha256:0e14202810b30da1b735827f78f5157be2bbd4a7a59b7707ca0bfc2fb4c0063a"},
]
[package.dependencies]
-lazy-object-proxy = ">=1.4.0"
typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
-wrapt = [
- {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
- {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
-]
[[package]]
name = "atomicwrites"
@@ -513,52 +508,6 @@ MarkupSafe = ">=2.0"
[package.extras]
i18n = ["Babel (>=2.7)"]
-[[package]]
-name = "lazy-object-proxy"
-version = "1.10.0"
-description = "A fast and thorough lazy object proxy."
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"},
- {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"},
- {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"},
- {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"},
- {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"},
- {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"},
- {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"},
-]
-
[[package]]
name = "macfsevents"
version = "0.8.4"
@@ -986,23 +935,24 @@ setuptools = ">=42.0.0"
[[package]]
name = "pylint"
-version = "2.15.10"
+version = "3.2.7"
description = "python code static checker"
optional = false
-python-versions = ">=3.7.2"
+python-versions = ">=3.8.0"
files = [
- {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
- {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
+ {file = "pylint-3.2.7-py3-none-any.whl", hash = "sha256:02f4aedeac91be69fb3b4bea997ce580a4ac68ce58b89eaefeaf06749df73f4b"},
+ {file = "pylint-3.2.7.tar.gz", hash = "sha256:1b7a721b575eaeaa7d39db076b6e7743c993ea44f57979127c517c6c572c803e"},
]
[package.dependencies]
-astroid = ">=2.12.13,<=2.14.0-dev0"
+astroid = ">=3.2.4,<=3.3.0-dev0"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
dill = [
{version = ">=0.2", markers = "python_version < \"3.11\""},
- {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
+ {version = ">=0.3.7", markers = "python_version >= \"3.12\""},
+ {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""},
]
-isort = ">=4.2.5,<6"
+isort = ">=4.2.5,<5.13.0 || >5.13.0,<6"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2.0"
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
@@ -1191,6 +1141,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"},
@@ -1465,6 +1416,17 @@ h2 = ["h2 (>=4,<5)"]
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
zstd = ["zstandard (>=0.18.0)"]
+[[package]]
+name = "verchew"
+version = "3.4.2"
+description = "System dependency version checker."
+optional = false
+python-versions = ">=3.8,<4.0"
+files = [
+ {file = "verchew-3.4.2-py3-none-any.whl", hash = "sha256:d000ec54ccc87240feae05cf9e37b29016ca73406b6f39af69114a32773dfb7e"},
+ {file = "verchew-3.4.2.tar.gz", hash = "sha256:98f3f8e4894528afe316879ac848d1a6c8b47168a3b3de2e44fc2f5b83b29149"},
+]
+
[[package]]
name = "waitress"
version = "3.0.0"
@@ -1556,85 +1518,6 @@ WebOb = ">=1.2"
docs = ["Sphinx (>=1.8.1)", "docutils", "pylons-sphinx-themes (>=1.0.8)"]
tests = ["PasteDeploy", "WSGIProxy2", "coverage", "pyquery", "pytest", "pytest-cov"]
-[[package]]
-name = "wrapt"
-version = "1.16.0"
-description = "Module for decorators, wrappers and monkey patching."
-optional = false
-python-versions = ">=3.6"
-files = [
- {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"},
- {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"},
- {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"},
- {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"},
- {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"},
- {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"},
- {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"},
- {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"},
- {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"},
- {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"},
- {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"},
- {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"},
- {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"},
- {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"},
- {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"},
- {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"},
- {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"},
- {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"},
- {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"},
- {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"},
- {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"},
- {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"},
- {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"},
- {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"},
- {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"},
- {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"},
- {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"},
- {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"},
- {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"},
- {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"},
- {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"},
- {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"},
- {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"},
- {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"},
- {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"},
- {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"},
- {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"},
-]
-
[[package]]
name = "zipp"
version = "3.17.0"
@@ -1652,5 +1535,5 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
[metadata]
lock-version = "2.0"
-python-versions = "^3.9"
-content-hash = "6e106c06f163ef5b218caa5993a62cd99f6ed58a6c902e2a8ebf6c4f4683be58"
+python-versions = "<3.13,>=3.9"
+content-hash = "3264dd55dceebca407b61bc4bf00279198c259b1b449c73d3f105ec4835d8933"
diff --git a/pyproject.toml b/pyproject.toml
index a424edfb5..196384cda 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -43,7 +43,7 @@ classifiers = [
[tool.poetry.dependencies]
-python = "^3.9"
+python = "<3.13,>=3.9"
pyyaml = "^6.0"
markdown = "^3.3.3"
@@ -54,6 +54,7 @@ python-markdown-math = "~0.6"
plantuml-markdown = "^3.4.2"
six = "*" # fixes https://github.com/dougn/python-plantuml/issues/11
openpyxl = ">=3.1.2"
+verchew = "^3.4.2"
[tool.poetry.dev-dependencies]
@@ -62,9 +63,9 @@ black = "^24.3"
isort = "^5.12"
# Linters
-mypy = "^1.1.1"
+mypy = ">=1.1.1"
pydocstyle = "*"
-pylint = "~2.15"
+pylint = "~3.2.0"
types-markdown = "*"
types-pyyaml = "*"
types-requests = "*"
@@ -106,6 +107,12 @@ quiet = true
profile = "black"
+[tool.pytest.ini_options]
+# log_cli = true
+# log_cli_level = "WARNING"
+log_file = "pytest.log"
+log_file_level = "DEBUG"
+
[build-system]
requires = ["poetry-core"]