diff --git a/docs/_static/demos/readme-unknown-length.svg b/docs/_static/demos/readme-unknown-length.svg
index 1566c07..da58cde 100644
--- a/docs/_static/demos/readme-unknown-length.svg
+++ b/docs/_static/demos/readme-unknown-length.svg
@@ -37,5 +37,5 @@
Unknown length
- / |# | 0 Elapsed Time: 0:00:00- |# | 10 Elapsed Time: 0:00:00\ | # | 20 Elapsed Time: 0:00:00| | # | 30 Elapsed Time: 0:00:00/ | # | 40 Elapsed Time: 0:00:00- | # | 50 Elapsed Time: 0:00:00\ | # | 60 Elapsed Time: 0:00:00| | # | 70 Elapsed Time: 0:00:00/ | # | 80 Elapsed Time: 0:00:00- | # | 90 Elapsed Time: 0:00:00\ | # | 100 Elapsed Time: 0:00:01| | # | 110 Elapsed Time: 0:00:01| | # | 110 Elapsed Time: 0:00:01
+ / |# | 0 Elapsed Time: 0:00:00- | # | 10 Elapsed Time: 0:00:00\ | # | 20 Elapsed Time: 0:00:00| | # | 30 Elapsed Time: 0:00:00/ | # | 40 Elapsed Time: 0:00:00- | # | 50 Elapsed Time: 0:00:00\ | # | 60 Elapsed Time: 0:00:00| | # | 70 Elapsed Time: 0:00:00/ | # | 80 Elapsed Time: 0:00:00- | # | 90 Elapsed Time: 0:00:00\ | # | 100 Elapsed Time: 0:00:01| | # | 110 Elapsed Time: 0:00:01| | # | 110 Elapsed Time: 0:00:01
diff --git a/ruff.toml b/ruff.toml
index 7a95ec7..6b729e6 100644
--- a/ruff.toml
+++ b/ruff.toml
@@ -39,6 +39,7 @@ ignore = [
'ISC001', # String concatenation with implicit str conversion
'SIM108', # Ternary operators are not always more readable
'RUF100', # Unused noqa directives. Due to multiple Python versions, we need to keep them
+ 'ICN001', # ruff 0.17.1 wants `import datetime as dt`; the codebase uses `datetime.`
]
select = [
diff --git a/uv.lock b/uv.lock
index 11eed6e..2e6e832 100644
--- a/uv.lock
+++ b/uv.lock
@@ -796,6 +796,9 @@ docs-tests = [
{ name = "playwright" },
{ name = "pytest" },
{ name = "pytest-cov" },
+ { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
+ { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
+ { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
]
fast = [
{ name = "speedups" },
@@ -827,6 +830,7 @@ requires-dist = [
{ name = "pywin32", marker = "sys_platform == 'win32' and extra == 'tests'" },
{ name = "speedups", marker = "extra == 'fast'", specifier = ">=2.1.0" },
{ name = "sphinx", marker = "extra == 'docs'", specifier = ">=1.8.5" },
+ { name = "sphinx", marker = "extra == 'docs-tests'", specifier = ">=1.8.5" },
{ name = "sphinx-autodoc-typehints", marker = "extra == 'docs'", specifier = ">=1.6.0" },
]
provides-extras = ["fast", "docs", "tests", "docs-tests"]
@@ -1268,9 +1272,9 @@ wheels = [
[[package]]
name = "urllib3"
-version = "2.7.0"
+version = "2.8.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/e3/05/b17359e1cefb4f909b5e40b1b90a496d987258916dbbf88e842c729f510e/urllib3-2.8.0.tar.gz", hash = "sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63", size = 458972, upload-time = "2026-09-15T19:29:36.253Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" },
+ { url = "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl", hash = "sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3", size = 135717, upload-time = "2026-09-15T19:29:34.577Z" },
]