diff --git a/.github/workflows/docs.yaml.bkp b/.github/workflows/docs.yaml.bkp
index 3e3d49fc..c77eab94 100644
--- a/.github/workflows/docs.yaml.bkp
+++ b/.github/workflows/docs.yaml.bkp
@@ -15,10 +15,10 @@ jobs:
steps:
# checkout repository
- name: Checkout repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
# set up specific python version
- name: Set up Python v3.12
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.12"
# building
@@ -30,10 +30,10 @@ jobs:
run: python package/export docs
# set up Pages
- name: Set up Pages
- uses: actions/configure-pages@v3
+ uses: actions/configure-pages@v4
# upload static page
- name: Upload artifact
- uses: actions/upload-pages-artifact@v1
+ uses: actions/upload-pages-artifact@v3
with:
path: ${{ env.BUILD_PATH }}/site
deploy:
@@ -50,4 +50,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
- uses: actions/deploy-pages@v2
+ uses: actions/deploy-pages@v4
diff --git a/.github/workflows/package.yaml b/.github/workflows/package.yaml.bkp
similarity index 92%
rename from .github/workflows/package.yaml
rename to .github/workflows/package.yaml.bkp
index aa82a7b9..8eac84a0 100644
--- a/.github/workflows/package.yaml
+++ b/.github/workflows/package.yaml.bkp
@@ -16,10 +16,10 @@ jobs:
steps:
# checkout repository
- name: Checkout repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
# set up specific python version
- name: Set up Python v3.8
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.8"
# install dependencies
@@ -38,7 +38,7 @@ jobs:
deactivate
# upload package as artifact
- name: Upload artifact
- uses: actions/upload-pages-artifact@v1
+ uses: actions/upload-pages-artifact@v3
with:
path: ${{ env.BUILD_PATH }}/dist
publish:
diff --git a/.github/workflows/pycqa.yaml b/.github/workflows/pycqa.yaml
index 028966b1..f713e300 100644
--- a/.github/workflows/pycqa.yaml
+++ b/.github/workflows/pycqa.yaml
@@ -14,10 +14,10 @@ jobs:
steps:
# checkout repository
- name: Checkout repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
# set up specific python version
- name: Set up Python v3.8
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: "3.8"
# tooling
@@ -41,10 +41,10 @@ jobs:
# checkout repository again!
# ref: https://github.com/actions/checkout/issues/19
- name: Checkout repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
# set up specific python version
- name: Set up Python v${{ matrix.python-version }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
diff --git a/.github/workflows/sast.yaml b/.github/workflows/sast.yaml
index 629220f9..167b5695 100644
--- a/.github/workflows/sast.yaml
+++ b/.github/workflows/sast.yaml
@@ -16,7 +16,7 @@ jobs:
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Bandit
uses: mdegis/bandit-action@85fcc340c3b0bf5d86029abb49b9aac916d807b2
with:
diff --git a/.gitignore b/.gitignore
index 0438693c..d3cb65aa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -69,11 +69,7 @@ instance/
.scrapy
# Sphinx documentation
-# docs/references/
docs/_build/
-# temporary
-docs/references/*.rst
-docs/*.rst
docs/*.1
# PyBuilder
diff --git a/CHANGES.md b/CHANGES.md
index 237e6bc1..144a53f9 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -9,9 +9,26 @@ Note to self: Breaking changes must increment either
-->
+## 0.23.2 (2024-03-20)
+
+_**Breaking**_
+
+> No breaking changes were introduced in this version.
+
+_**Features**_
+
+> No features were introduced in this version.
+
+_**Maintenance**_
+
+- maint: rectifies changelog by @yozachar in [#336](ttps://github.com/python-validators/validators/pull/336)
+- fix: packaging as well as `rST` & `md` document generation by @yozachar in [#337](ttps://github.com/python-validators/validators/pull/337)
+
+**Full Changelog**: [`0.23.1...0.23.2`](https://github.com/python-validators/validators/compare/0.23.1...0.23.2)
+
## 0.23.1 (2024-03-19)
-_**Breaking**_ ⚠️
+_**Breaking**_
> No breaking changes were introduced in this version.
@@ -28,7 +45,7 @@ _**Maintenance**_
## 0.23.0 (2024-03-19)
-_**Breaking**_ ⚠️
+_**Breaking**_
> No breaking changes were introduced in this version.
@@ -101,7 +118,7 @@ _**Maintenance**_
## 0.21.1 (2023-04-10)
-_**Breaking**_ ⚠️
+_**Breaking**_
> No breaking changes were introduced in this version.
diff --git a/MANIFEST.in b/MANIFEST.in
index b68967ac..cac7294a 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,21 +1,31 @@
# MANIFEST.in stays as long as pyproject.toml does not officially support it
# https://packaging.python.org/en/latest/specifications/declaring-project-metadata/
-include docs/*
-include .gitignore
+# include
+include CHANGES.md
+include mkdocs.yaml
+
# global-include
+
+# recursive-include
recursive-include tests *
+recursive-include docs *
+
# graft
+
# exclude
+
# global-exclude
-recursive-exclude docs *.rst
-recursive-exclude docs/references *.md
+# recursive-exclude
+
+
+# prune
prune docs/_build
prune **/__pycache__
diff --git a/SECURITY.md b/SECURITY.md
index d7cff3c8..32541cd0 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -4,7 +4,7 @@
| Version | Supported |
| ---------- | ------------------ |
-| `>=0.23.0` | :white_check_mark: |
+| `>=0.23.2` | :white_check_mark: |
## Reporting a Vulnerability
diff --git a/docs/references/between.md b/docs/api/between.md
similarity index 100%
rename from docs/references/between.md
rename to docs/api/between.md
diff --git a/docs/api/between.rst b/docs/api/between.rst
new file mode 100644
index 00000000..bc98767c
--- /dev/null
+++ b/docs/api/between.rst
@@ -0,0 +1,5 @@
+between
+-------
+
+.. module:: validators.between
+.. autofunction:: between
diff --git a/docs/references/btc_address.md b/docs/api/btc_address.md
similarity index 100%
rename from docs/references/btc_address.md
rename to docs/api/btc_address.md
diff --git a/docs/api/btc_address.rst b/docs/api/btc_address.rst
new file mode 100644
index 00000000..cd325f55
--- /dev/null
+++ b/docs/api/btc_address.rst
@@ -0,0 +1,5 @@
+btc_address
+-----------
+
+.. module:: validators.btc_address
+.. autofunction:: btc_address
diff --git a/docs/references/card.md b/docs/api/card.md
similarity index 100%
rename from docs/references/card.md
rename to docs/api/card.md
diff --git a/docs/api/card.rst b/docs/api/card.rst
new file mode 100644
index 00000000..eb9eff7c
--- /dev/null
+++ b/docs/api/card.rst
@@ -0,0 +1,12 @@
+card
+----
+
+.. module:: validators.card
+.. autofunction:: amex
+.. autofunction:: card_number
+.. autofunction:: diners
+.. autofunction:: discover
+.. autofunction:: jcb
+.. autofunction:: mastercard
+.. autofunction:: unionpay
+.. autofunction:: visa
diff --git a/docs/references/country_code.md b/docs/api/country_code.md
similarity index 100%
rename from docs/references/country_code.md
rename to docs/api/country_code.md
diff --git a/docs/api/country_code.rst b/docs/api/country_code.rst
new file mode 100644
index 00000000..fb19e319
--- /dev/null
+++ b/docs/api/country_code.rst
@@ -0,0 +1,5 @@
+country_code
+------------
+
+.. module:: validators.country_code
+.. autofunction:: country_code
diff --git a/docs/references/domain.md b/docs/api/domain.md
similarity index 100%
rename from docs/references/domain.md
rename to docs/api/domain.md
diff --git a/docs/api/domain.rst b/docs/api/domain.rst
new file mode 100644
index 00000000..33f17f19
--- /dev/null
+++ b/docs/api/domain.rst
@@ -0,0 +1,5 @@
+domain
+------
+
+.. module:: validators.domain
+.. autofunction:: domain
diff --git a/docs/references/email.md b/docs/api/email.md
similarity index 100%
rename from docs/references/email.md
rename to docs/api/email.md
diff --git a/docs/api/email.rst b/docs/api/email.rst
new file mode 100644
index 00000000..eef81780
--- /dev/null
+++ b/docs/api/email.rst
@@ -0,0 +1,5 @@
+email
+-----
+
+.. module:: validators.email
+.. autofunction:: email
diff --git a/docs/references/hashes.md b/docs/api/hashes.md
similarity index 100%
rename from docs/references/hashes.md
rename to docs/api/hashes.md
diff --git a/docs/api/hashes.rst b/docs/api/hashes.rst
new file mode 100644
index 00000000..bc77b7b2
--- /dev/null
+++ b/docs/api/hashes.rst
@@ -0,0 +1,9 @@
+hashes
+------
+
+.. module:: validators.hashes
+.. autofunction:: md5
+.. autofunction:: sha1
+.. autofunction:: sha224
+.. autofunction:: sha256
+.. autofunction:: sha512
diff --git a/docs/references/hostname.md b/docs/api/hostname.md
similarity index 100%
rename from docs/references/hostname.md
rename to docs/api/hostname.md
diff --git a/docs/api/hostname.rst b/docs/api/hostname.rst
new file mode 100644
index 00000000..6f86a755
--- /dev/null
+++ b/docs/api/hostname.rst
@@ -0,0 +1,5 @@
+hostname
+--------
+
+.. module:: validators.hostname
+.. autofunction:: hostname
diff --git a/docs/references/i18n.md b/docs/api/i18n.md
similarity index 100%
rename from docs/references/i18n.md
rename to docs/api/i18n.md
diff --git a/docs/api/i18n.rst b/docs/api/i18n.rst
new file mode 100644
index 00000000..4a905e29
--- /dev/null
+++ b/docs/api/i18n.rst
@@ -0,0 +1,12 @@
+i18n
+----
+
+.. module:: validators.i18n
+.. autofunction:: es_cif
+.. autofunction:: es_doi
+.. autofunction:: es_nie
+.. autofunction:: es_nif
+.. autofunction:: fi_business_id
+.. autofunction:: fi_ssn
+.. autofunction:: fr_department
+.. autofunction:: fr_ssn
diff --git a/docs/references/iban.md b/docs/api/iban.md
similarity index 100%
rename from docs/references/iban.md
rename to docs/api/iban.md
diff --git a/docs/api/iban.rst b/docs/api/iban.rst
new file mode 100644
index 00000000..22f4c4b0
--- /dev/null
+++ b/docs/api/iban.rst
@@ -0,0 +1,5 @@
+iban
+----
+
+.. module:: validators.iban
+.. autofunction:: iban
diff --git a/docs/references/ip_address.md b/docs/api/ip_address.md
similarity index 100%
rename from docs/references/ip_address.md
rename to docs/api/ip_address.md
diff --git a/docs/api/ip_address.rst b/docs/api/ip_address.rst
new file mode 100644
index 00000000..2a613d72
--- /dev/null
+++ b/docs/api/ip_address.rst
@@ -0,0 +1,6 @@
+ip_address
+----------
+
+.. module:: validators.ip_address
+.. autofunction:: ipv4
+.. autofunction:: ipv6
diff --git a/docs/references/length.md b/docs/api/length.md
similarity index 100%
rename from docs/references/length.md
rename to docs/api/length.md
diff --git a/docs/api/length.rst b/docs/api/length.rst
new file mode 100644
index 00000000..8216bbcf
--- /dev/null
+++ b/docs/api/length.rst
@@ -0,0 +1,5 @@
+length
+------
+
+.. module:: validators.length
+.. autofunction:: length
diff --git a/docs/references/mac_address.md b/docs/api/mac_address.md
similarity index 100%
rename from docs/references/mac_address.md
rename to docs/api/mac_address.md
diff --git a/docs/api/mac_address.rst b/docs/api/mac_address.rst
new file mode 100644
index 00000000..038b44ba
--- /dev/null
+++ b/docs/api/mac_address.rst
@@ -0,0 +1,5 @@
+mac_address
+-----------
+
+.. module:: validators.mac_address
+.. autofunction:: mac_address
diff --git a/docs/references/slug.md b/docs/api/slug.md
similarity index 100%
rename from docs/references/slug.md
rename to docs/api/slug.md
diff --git a/docs/api/slug.rst b/docs/api/slug.rst
new file mode 100644
index 00000000..3b90a417
--- /dev/null
+++ b/docs/api/slug.rst
@@ -0,0 +1,5 @@
+slug
+----
+
+.. module:: validators.slug
+.. autofunction:: slug
diff --git a/docs/references/url.md b/docs/api/url.md
similarity index 100%
rename from docs/references/url.md
rename to docs/api/url.md
diff --git a/docs/api/url.rst b/docs/api/url.rst
new file mode 100644
index 00000000..c0271e65
--- /dev/null
+++ b/docs/api/url.rst
@@ -0,0 +1,5 @@
+url
+---
+
+.. module:: validators.url
+.. autofunction:: url
diff --git a/docs/references/utils.md b/docs/api/utils.md
similarity index 100%
rename from docs/references/utils.md
rename to docs/api/utils.md
diff --git a/docs/api/utils.rst b/docs/api/utils.rst
new file mode 100644
index 00000000..214aa9bc
--- /dev/null
+++ b/docs/api/utils.rst
@@ -0,0 +1,6 @@
+utils
+-----
+
+.. module:: validators.utils
+.. autofunction:: ValidationError
+.. autofunction:: validator
diff --git a/docs/references/uuid.md b/docs/api/uuid.md
similarity index 100%
rename from docs/references/uuid.md
rename to docs/api/uuid.md
diff --git a/docs/api/uuid.rst b/docs/api/uuid.rst
new file mode 100644
index 00000000..dbe2fc60
--- /dev/null
+++ b/docs/api/uuid.rst
@@ -0,0 +1,5 @@
+uuid
+----
+
+.. module:: validators.uuid
+.. autofunction:: uuid
diff --git a/docs/conf.py b/docs/conf.py
index f20fa8cb..faf5cfee 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -28,7 +28,7 @@
"sphinx.ext.napoleon",
"myst_parser",
]
-exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "*.md"]
+exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "**/*.md", "*.md"]
# -- Options for HTML output -------------------------------------------------
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 00000000..04a5fdcc
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,69 @@
+validators - Python Data Validation for Humans™
+===============================================
+
+|PyCQA| |SAST| |Docs| |Version| |Downloads|
+
+.. raw:: html
+
+
+
+Python has all kinds of data validation tools, but every one of them
+seems to require defining a schema or form. I wanted to create a simple
+validation library where validating a simple value does not require
+defining a form or a schema.
+
+.. code:: python
+
+ >>> import validators
+ >>>
+ >>> validators.email('someone@example.com')
+ True
+
+Resources
+---------
+
+.. raw:: html
+
+
+
+.. raw:: html
+
+
+
+- `Documentation `__
+- `Bugtracker `__
+- `Security `__
+- `Code `__
+
+.. raw:: html
+
+
+
+.. raw:: html
+
+
+
+.. raw:: html
+
+
+
+.. |PyCQA| image:: https://github.com/python-validators/validators/actions/workflows/pycqa.yaml/badge.svg
+ :target: https://github.com/python-validators/validators/actions/workflows/pycqa.yaml
+.. |SAST| image:: https://github.com/python-validators/validators/actions/workflows/sast.yaml/badge.svg
+ :target: https://github.com/python-validators/validators/actions/workflows/sast.yaml
+.. |Docs| image:: https://github.com/yozachar/pyvalidators/actions/workflows/pages/pages-build-deployment/badge.svg
+ :target: https://github.com/yozachar/pyvalidators/actions/workflows/pages/pages-build-deployment
+.. |Version| image:: https://img.shields.io/pypi/v/validators?logo=pypi&logoColor=white&label=version&color=blue
+ :target: https://pypi.python.org/pypi/validators/
+.. |Downloads| image:: https://img.shields.io/pypi/dm/validators?logo=pypi&logoColor=white&color=blue
+ :target: https://pypi.python.org/pypi/validators/
+
+
+.. toctree::
+ :hidden:
+ :maxdepth: 2
+ :caption: Reference:
+ :glob:
+
+ api/*
diff --git a/mkdocs.yaml b/mkdocs.yaml
index b25bc374..6031461d 100644
--- a/mkdocs.yaml
+++ b/mkdocs.yaml
@@ -65,20 +65,20 @@ copyright: Copyright © 2013 - 2024 Konsta Vesterinen
nav:
- Home: index.md
- API:
- - references/between.md
- - references/btc_address.md
- - references/card.md
- - references/country_code.md
- - references/domain.md
- - references/email.md
- - references/hashes.md
- - references/hostname.md
- - references/i18n.md
- - references/iban.md
- - references/ip_address.md
- - references/length.md
- - references/mac_address.md
- - references/slug.md
- - references/url.md
- - references/utils.md
- - references/uuid.md
+ - api/between.md
+ - api/btc_address.md
+ - api/card.md
+ - api/country_code.md
+ - api/domain.md
+ - api/email.md
+ - api/hashes.md
+ - api/hostname.md
+ - api/i18n.md
+ - api/iban.md
+ - api/ip_address.md
+ - api/length.md
+ - api/mac_address.md
+ - api/slug.md
+ - api/url.md
+ - api/utils.md
+ - api/uuid.md
diff --git a/package/export/__main__.py b/package/export/__main__.py
index 6a18229d..91ae018f 100644
--- a/package/export/__main__.py
+++ b/package/export/__main__.py
@@ -5,11 +5,9 @@
from os import getenv
from os.path import getsize
from pathlib import Path
-from shutil import copy, move, rmtree
+from shutil import copy, rmtree
from subprocess import Popen # nosec
-__all__ = ("generate_documentation",)
-
def _write_ref_content(source: Path, module_name: str, func_name: str):
"""Write content."""
@@ -21,8 +19,12 @@ def _write_ref_content(source: Path, module_name: str, func_name: str):
)
if f"{source}".endswith(".md")
else (
- (f"{module_name}\n{len(module_name) * '-'}\n\n" if getsize(source) == 0 else "")
- + f".. module:: validators.{module_name}\n"
+ (
+ f"{module_name}\n{len(module_name) * '-'}\n\n"
+ + f".. module:: validators.{module_name}\n"
+ if getsize(source) == 0
+ else ""
+ )
+ f".. autofunction:: {func_name}\n"
)
)
@@ -40,13 +42,15 @@ def _parse_package(source: Path):
def _gen_md_docs(source: Path, refs_path: Path):
"""Generate Markdown docs."""
# remove existing markdown files
- for md_files in (source / "docs/references").glob("*.md"):
+ for md_files in (source / "docs/api").glob("*.md"):
md_files.unlink()
+ # generate md reference documentation
+ for module_name, aliases in _parse_package(source / "src/validators/__init__.py"):
+ for alias in aliases:
+ _write_ref_content(refs_path / f"{module_name}.md", module_name, alias.name)
# build mkdocs as subprocess
mkdocs_build = Popen(("mkdocs", "build")) # nosec
mkdocs_build.communicate()
- # restore mkdocs config
- move(str(source / "mkdocs.bak.yaml"), source / "mkdocs.yaml")
return mkdocs_build.returncode
@@ -55,6 +59,10 @@ def _gen_rst_docs(source: Path, refs_path: Path, only_web: bool = False, only_ma
# external
from pypandoc import convert_file # type: ignore
+ # remove existing rST files
+ for rst_files in (source / "docs/api").glob("*.rst"):
+ rst_files.unlink()
+
with open(source / "docs/index.rst", "wt") as idx_f:
idx_f.write(
convert_file(source_file=source / "docs/index.md", format="md", to="rst").replace(
@@ -65,9 +73,9 @@ def _gen_rst_docs(source: Path, refs_path: Path, only_web: bool = False, only_ma
+ "\n :maxdepth: 2"
+ "\n :caption: Reference:"
+ "\n :glob:\n"
- + "\n references/*\n"
+ + "\n api/*\n"
)
- # generate RST reference documentation
+ # generate rST reference documentation
for module_name, aliases in _parse_package(source / "src/validators/__init__.py"):
for alias in aliases:
_write_ref_content(refs_path / f"{module_name}.rst", module_name, alias.name)
@@ -89,7 +97,7 @@ def _gen_rst_docs(source: Path, refs_path: Path, only_web: bool = False, only_ma
return exit_code
-def generate_documentation(
+def _generate_documentation(
source: Path,
only_md: bool = False,
only_rst_web: bool = False,
@@ -104,7 +112,7 @@ def generate_documentation(
# copy readme as docs index file
copy(source / "README.md", source / "docs/index.md")
# clean destination
- refs_path = source / "docs/references"
+ refs_path = source / "docs/api"
# if refs_path.is_dir():
# rmtree(refs_path)
refs_path.mkdir(exist_ok=True)
@@ -122,7 +130,8 @@ def generate_documentation(
def package(source: Path):
- generate_documentation(source, only_rst_man=True, discard_refs=False)
+ """Package the source code."""
+ _generate_documentation(source, only_rst_man=True, discard_refs=False)
# print()
if getenv("CI", "false") == "true":
process = Popen(("./.venv/bin/python", "-m", "build"), shell=False) # nosec
@@ -145,7 +154,7 @@ def package(source: Path):
if argv[1] == "pkg":
exit_code = package(project_root)
if argv[1] == "docs":
- exit_code = generate_documentation(
+ exit_code = _generate_documentation(
project_root,
only_md=True,
only_rst_web=False,
diff --git a/package/requirements.mkdocs.txt b/package/requirements.mkdocs.txt
index 6383c18a..cefb5b84 100644
--- a/package/requirements.mkdocs.txt
+++ b/package/requirements.mkdocs.txt
@@ -103,18 +103,18 @@ gitdb==4.0.11 \
gitpython==3.1.42 \
--hash=sha256:1bf9cd7c9e7255f77778ea54359e54ac22a72a5b51288c457c881057b7bb9ecd \
--hash=sha256:2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb
-griffe==0.42.0 \
- --hash=sha256:384df6b802a60f70e65fdb7e83f5b27e2da869a12eac85b25b55250012dbc263 \
- --hash=sha256:fb83ee602701ffdf99c9a6bf5f0a5a3bd877364b3bffb2c451dc8fbd9645b0cf
+griffe==0.42.1 \
+ --hash=sha256:57046131384043ed078692b85d86b76568a686266cc036b9b56b704466f803ce \
+ --hash=sha256:7e805e35617601355edcac0d3511cedc1ed0cb1f7645e2d336ae4b05bbae7b3b
idna==3.6 \
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
importlib-metadata==7.0.2 \
--hash=sha256:198f568f3230878cb1b44fbd7975f87906c22336dba2e4a7f05278c281fbd792 \
--hash=sha256:f4bc4c0c070c490abf4ce96d715f68e95923320370efb66143df00199bb6c100
-importlib-resources==6.3.1 \
- --hash=sha256:29a3d16556e330c3c8fb8202118c5ff41241cc34cbfb25989bbad226d99b7995 \
- --hash=sha256:4811639ca7fa830abdb8e9ca0a104dc6ad13de691d9fe0d3173a71304f068159
+importlib-resources==6.3.2 \
+ --hash=sha256:963eb79649252b0160c1afcfe5a1d3fe3ad66edd0a8b114beacffb70c0674223 \
+ --hash=sha256:f41f4098b16cd140a97d256137cfd943d958219007990b2afb00439fc623f580
jinja2==3.1.3 \
--hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \
--hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90
@@ -211,9 +211,6 @@ pathspec==0.12.1 \
platformdirs==4.2.0 \
--hash=sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068 \
--hash=sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768
-pyaml==23.12.0 \
- --hash=sha256:90407d74c95a55d9b41d3860fcc1759640444d2795df748a328d077bc4f58393 \
- --hash=sha256:ce6f648efdfb1b3a5579f8cedb04facf0fa1e8f64846b639309b585bb322b4e5
pygments==2.17.2 \
--hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \
--hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367
diff --git a/package/requirements.tooling.txt b/package/requirements.tooling.txt
index 39819219..4f72b846 100644
--- a/package/requirements.tooling.txt
+++ b/package/requirements.tooling.txt
@@ -54,9 +54,6 @@ platformdirs==4.2.0 \
pluggy==1.4.0 \
--hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \
--hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be
-pyaml==23.12.0 \
- --hash=sha256:90407d74c95a55d9b41d3860fcc1759640444d2795df748a328d077bc4f58393 \
- --hash=sha256:ce6f648efdfb1b3a5579f8cedb04facf0fa1e8f64846b639309b585bb322b4e5
pypandoc-binary==1.13 \
--hash=sha256:11a2497320eb3dccb74de3c67b6df3e5d3f66cdc2a36a67e9a871708f7e48412 \
--hash=sha256:21ef0345726d36fc45a50211320614daf2caede684b0d0963ce8738292809746 \
@@ -71,46 +68,6 @@ pyright==1.1.354 \
pytest==8.1.1 \
--hash=sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7 \
--hash=sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044
-pyyaml==6.0.1 \
- --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \
- --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \
- --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \
- --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \
- --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \
- --hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \
- --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \
- --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \
- --hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \
- --hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \
- --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \
- --hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \
- --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \
- --hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \
- --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \
- --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \
- --hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \
- --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \
- --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \
- --hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \
- --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \
- --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \
- --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \
- --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \
- --hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \
- --hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \
- --hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \
- --hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \
- --hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \
- --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \
- --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \
- --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \
- --hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \
- --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \
- --hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \
- --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \
- --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \
- --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \
- --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f
ruff==0.3.3 \
--hash=sha256:0171aab5fecdc54383993389710a3d1227f2da124d76a2784a7098e818f92d61 \
--hash=sha256:0da458989ce0159555ef224d5b7c24d3d2e4bf4c300b85467b08c3261c6bc6a8 \
diff --git a/package/roll.ps1 b/package/roll.ps1
old mode 100644
new mode 100755
index c565b83a..49099545
--- a/package/roll.ps1
+++ b/package/roll.ps1
@@ -1,55 +1,58 @@
-#!/bin/pwsh
-
-$ErrorActionPreference = "Stop"
-
-# Check if CI environment variable is set to "false"
-if ($null -eq $env:CI || "false" -eq $env:CI) {
- # tooling
- pdm export --group tooling,pycqa -f requirements -o package/requirements.tooling.txt
- # mkdocs
- pdm export --group docs-online -f requirements -o package/requirements.mkdocs.txt
- # sphinx
- pdm export --group docs-offline -f requirements -o package/requirements.sphinx.txt
-
- # create environment variable
- $env:CI = "true";
-}
-
-# Check if venv directory exists and remove it if it does
-$venv_dir = "./.venv.dev"
-if (Test-Path $venv_dir) {
- Remove-Item -Path $venv_dir -Recurse -Force
-}
-
-# Create venv
-python -m venv $venv_dir
-
-
-$bin_path = "Scripts"
-if ($IsLinux || $IsMacOS) {
- $bin_path = "bin"
-}
-
-# Upgrade pip
-& $venv_dir\$bin_path\python -m pip install --upgrade pip
-
-# Install the current package
-& $venv_dir\$bin_path\pip install .
-
-# Install sphinx requirements
-& $venv_dir\$bin_path\pip install -r package/requirements.sphinx.txt
-
-# Install build tool
-& $venv_dir\$bin_path\pip install build
-
-# Activate virtual environment
-. $venv_dir\$bin_path\Activate.ps1
-
-# Run export script
-python package/export pkg
-
-# Deactivate virtual environment
-deactivate
-
-# delete environment variable
-$env:CI = "";
+#!/bin/pwsh
+
+$ErrorActionPreference = "Stop"
+
+# Check if CI environment variable is set to "false"
+if ($null -eq $env:CI || "false" -eq $env:CI) {
+ # tooling
+ pdm export --group tooling -f requirements -o package/requirements.tooling.txt
+ # mkdocs
+ pdm export --group docs-online -f requirements -o package/requirements.mkdocs.txt
+ # sphinx
+ pdm export --group docs-offline -f requirements -o package/requirements.sphinx.txt
+
+ # create environment variable
+ $env:CI = "true";
+}
+
+# Cleanup directories
+$venv_dir = ".\.venv.dev"
+$directories = @($venv_dir, ".\build", ".\dist")
+foreach ($dir in $directories) {
+ if (Test-Path $dir -PathType Container) {
+ Remove-Item $dir -Recurse -Force
+ }
+}
+
+# Create venv
+python -m venv $venv_dir
+
+
+$bin_path = "Scripts"
+if ($IsLinux || $IsMacOS) {
+ $bin_path = "bin"
+}
+
+# Upgrade pip
+& $venv_dir\$bin_path\python -m pip install --upgrade pip
+
+# Install the current package
+& $venv_dir\$bin_path\pip install .
+
+# Install sphinx requirements
+& $venv_dir\$bin_path\pip install -r package/requirements.sphinx.txt
+
+# Install build tool
+& $venv_dir\$bin_path\pip install build
+
+# Activate virtual environment
+. $venv_dir\$bin_path\Activate.ps1
+
+# Run export script
+python package/export pkg
+
+# Deactivate virtual environment
+deactivate
+
+# delete environment variable
+$env:CI = "";
diff --git a/package/roll.sh b/package/roll.sh
index 5287a162..7ff35355 100755
--- a/package/roll.sh
+++ b/package/roll.sh
@@ -7,7 +7,7 @@ set -e
# Using the wrong way see: https://stackoverflow.com/a/13864829
if [ -z "$CI" ] || [ "$CI" = "false" ]; then
# tooling
- pdm export --group tooling,pycqa -f requirements -o package/requirements.tooling.txt
+ pdm export --group tooling -f requirements -o package/requirements.tooling.txt
# mkdocs
pdm export --group docs-online -f requirements -o package/requirements.mkdocs.txt
# sphinx
@@ -15,11 +15,14 @@ if [ -z "$CI" ] || [ "$CI" = "false" ]; then
export CI=true
fi
-# Check if venv directory exists and remove it if it does
+# Cleanup directories
venv_dir="./.venv.dev"
-if [ -d "$venv_dir" ]; then
- rm -rf $venv_dir
-fi
+directories=("$venv_dir" "./build" "./dist")
+for dir in "${directories[@]}"; do
+ if [ -d "$dir" ]; then
+ rm -rf "$dir"
+ fi
+done
# Create venv
python -m venv $venv_dir
diff --git a/pdm.lock b/pdm.lock
index 0e2833f5..c8dc2a0e 100644
--- a/pdm.lock
+++ b/pdm.lock
@@ -2,10 +2,10 @@
# It is not intended for manual editing.
[metadata]
-groups = ["default", "docs-online", "docs-offline", "package", "sast", "pycqa", "tooling", "runner", "hooks", "testing"]
+groups = ["default", "package", "runner", "sast", "docs-offline", "hooks", "docs-online", "tooling"]
strategy = ["cross_platform", "inherit_metadata"]
lock_version = "4.4.1"
-content_hash = "sha256:ffefa9d4ad84bffbc4133cb83dc85da5f57442aaf90820d3726c19238d062d23"
+content_hash = "sha256:2607ff83af55ecb23667ed8d234bc82d90b98f8e5877fdd0930e557aa734602a"
[[package]]
name = "alabaster"
@@ -154,77 +154,12 @@ name = "certifi"
version = "2024.2.2"
requires_python = ">=3.6"
summary = "Python package for providing Mozilla's CA Bundle."
-groups = ["docs-offline", "docs-online", "package"]
+groups = ["docs-offline", "docs-online"]
files = [
{file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"},
{file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"},
]
-[[package]]
-name = "cffi"
-version = "1.16.0"
-requires_python = ">=3.8"
-summary = "Foreign Function Interface for Python calling C code."
-groups = ["package"]
-marker = "platform_python_implementation != \"PyPy\" and sys_platform == \"linux\""
-dependencies = [
- "pycparser",
-]
-files = [
- {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"},
- {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"},
- {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"},
- {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"},
- {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"},
- {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"},
- {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"},
- {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"},
- {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"},
- {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"},
- {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"},
- {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"},
- {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"},
- {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"},
- {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"},
- {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"},
- {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"},
- {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"},
- {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"},
- {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"},
- {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"},
- {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"},
- {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"},
- {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"},
- {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"},
- {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"},
- {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"},
- {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"},
- {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"},
- {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"},
- {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"},
- {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"},
- {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"},
- {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"},
- {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"},
- {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"},
- {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"},
- {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"},
- {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"},
- {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"},
- {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"},
- {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"},
- {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"},
- {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"},
- {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"},
- {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"},
- {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"},
- {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"},
- {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"},
- {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"},
- {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"},
- {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"},
-]
-
[[package]]
name = "cfgv"
version = "3.4.0"
@@ -252,7 +187,7 @@ name = "charset-normalizer"
version = "3.3.2"
requires_python = ">=3.7.0"
summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
-groups = ["docs-offline", "docs-online", "package"]
+groups = ["docs-offline", "docs-online"]
files = [
{file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
{file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
@@ -352,57 +287,12 @@ name = "colorama"
version = "0.4.6"
requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
summary = "Cross-platform colored terminal text."
-groups = ["docs-offline", "docs-online", "package", "pycqa", "runner", "sast", "testing", "tooling"]
+groups = ["docs-offline", "docs-online", "package", "runner", "sast", "tooling"]
files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
]
-[[package]]
-name = "cryptography"
-version = "42.0.5"
-requires_python = ">=3.7"
-summary = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
-groups = ["package"]
-marker = "sys_platform == \"linux\""
-dependencies = [
- "cffi>=1.12; platform_python_implementation != \"PyPy\"",
-]
-files = [
- {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16"},
- {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec"},
- {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb"},
- {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4"},
- {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278"},
- {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7"},
- {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee"},
- {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1"},
- {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d"},
- {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da"},
- {file = "cryptography-42.0.5-cp37-abi3-win32.whl", hash = "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74"},
- {file = "cryptography-42.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940"},
- {file = "cryptography-42.0.5-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8"},
- {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1"},
- {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e"},
- {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc"},
- {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a"},
- {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7"},
- {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922"},
- {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc"},
- {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30"},
- {file = "cryptography-42.0.5-cp39-abi3-win32.whl", hash = "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413"},
- {file = "cryptography-42.0.5-cp39-abi3-win_amd64.whl", hash = "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400"},
- {file = "cryptography-42.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8"},
- {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2"},
- {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c"},
- {file = "cryptography-42.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576"},
- {file = "cryptography-42.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6"},
- {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e"},
- {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac"},
- {file = "cryptography-42.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd"},
- {file = "cryptography-42.0.5.tar.gz", hash = "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"},
-]
-
[[package]]
name = "distlib"
version = "0.3.8"
@@ -418,7 +308,7 @@ name = "docutils"
version = "0.20.1"
requires_python = ">=3.7"
summary = "Docutils -- Python Documentation Utilities"
-groups = ["docs-offline", "package"]
+groups = ["docs-offline"]
files = [
{file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"},
{file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"},
@@ -429,7 +319,7 @@ name = "exceptiongroup"
version = "1.2.0"
requires_python = ">=3.7"
summary = "Backport of PEP 654 (exception groups)"
-groups = ["pycqa", "testing"]
+groups = ["tooling"]
marker = "python_version < \"3.11\""
files = [
{file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
@@ -490,7 +380,7 @@ files = [
[[package]]
name = "griffe"
-version = "0.42.0"
+version = "0.42.1"
requires_python = ">=3.8"
summary = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API."
groups = ["docs-online"]
@@ -499,8 +389,8 @@ dependencies = [
"colorama>=0.4",
]
files = [
- {file = "griffe-0.42.0-py3-none-any.whl", hash = "sha256:384df6b802a60f70e65fdb7e83f5b27e2da869a12eac85b25b55250012dbc263"},
- {file = "griffe-0.42.0.tar.gz", hash = "sha256:fb83ee602701ffdf99c9a6bf5f0a5a3bd877364b3bffb2c451dc8fbd9645b0cf"},
+ {file = "griffe-0.42.1-py3-none-any.whl", hash = "sha256:7e805e35617601355edcac0d3511cedc1ed0cb1f7645e2d336ae4b05bbae7b3b"},
+ {file = "griffe-0.42.1.tar.gz", hash = "sha256:57046131384043ed078692b85d86b76568a686266cc036b9b56b704466f803ce"},
]
[[package]]
@@ -519,7 +409,7 @@ name = "idna"
version = "3.6"
requires_python = ">=3.5"
summary = "Internationalized Domain Names in Applications (IDNA)"
-groups = ["docs-offline", "docs-online", "package"]
+groups = ["docs-offline", "docs-online"]
files = [
{file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
{file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
@@ -552,16 +442,16 @@ files = [
[[package]]
name = "importlib-resources"
-version = "6.3.1"
+version = "6.3.2"
requires_python = ">=3.8"
summary = "Read resources from Python packages"
-groups = ["docs-online", "package"]
+groups = ["docs-online"]
dependencies = [
"zipp>=3.1.0; python_version < \"3.10\"",
]
files = [
- {file = "importlib_resources-6.3.1-py3-none-any.whl", hash = "sha256:4811639ca7fa830abdb8e9ca0a104dc6ad13de691d9fe0d3173a71304f068159"},
- {file = "importlib_resources-6.3.1.tar.gz", hash = "sha256:29a3d16556e330c3c8fb8202118c5ff41241cc34cbfb25989bbad226d99b7995"},
+ {file = "importlib_resources-6.3.2-py3-none-any.whl", hash = "sha256:f41f4098b16cd140a97d256137cfd943d958219007990b2afb00439fc623f580"},
+ {file = "importlib_resources-6.3.2.tar.gz", hash = "sha256:963eb79649252b0160c1afcfe5a1d3fe3ad66edd0a8b114beacffb70c0674223"},
]
[[package]]
@@ -569,38 +459,12 @@ name = "iniconfig"
version = "2.0.0"
requires_python = ">=3.7"
summary = "brain-dead simple config-ini parsing"
-groups = ["pycqa", "testing"]
+groups = ["tooling"]
files = [
{file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
]
-[[package]]
-name = "jaraco-classes"
-version = "3.3.1"
-requires_python = ">=3.8"
-summary = "Utility functions for Python class constructs"
-groups = ["package"]
-dependencies = [
- "more-itertools",
-]
-files = [
- {file = "jaraco.classes-3.3.1-py3-none-any.whl", hash = "sha256:86b534de565381f6b3c1c830d13f931d7be1a75f0081c57dff615578676e2206"},
- {file = "jaraco.classes-3.3.1.tar.gz", hash = "sha256:cb28a5ebda8bc47d8c8015307d93163464f9f2b91ab4006e09ff0ce07e8bfb30"},
-]
-
-[[package]]
-name = "jeepney"
-version = "0.8.0"
-requires_python = ">=3.7"
-summary = "Low-level, pure Python DBus protocol wrapper."
-groups = ["package"]
-marker = "sys_platform == \"linux\""
-files = [
- {file = "jeepney-0.8.0-py3-none-any.whl", hash = "sha256:c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755"},
- {file = "jeepney-0.8.0.tar.gz", hash = "sha256:5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806"},
-]
-
[[package]]
name = "jinja2"
version = "3.1.3"
@@ -615,25 +479,6 @@ files = [
{file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
]
-[[package]]
-name = "keyring"
-version = "24.3.1"
-requires_python = ">=3.8"
-summary = "Store and access your passwords safely."
-groups = ["package"]
-dependencies = [
- "SecretStorage>=3.2; sys_platform == \"linux\"",
- "importlib-metadata>=4.11.4; python_version < \"3.12\"",
- "importlib-resources; python_version < \"3.9\"",
- "jaraco-classes",
- "jeepney>=0.4.2; sys_platform == \"linux\"",
- "pywin32-ctypes>=0.2.0; sys_platform == \"win32\"",
-]
-files = [
- {file = "keyring-24.3.1-py3-none-any.whl", hash = "sha256:df38a4d7419a6a60fea5cef1e45a948a3e8430dd12ad88b0f423c5c143906218"},
- {file = "keyring-24.3.1.tar.gz", hash = "sha256:c3327b6ffafc0e8befbdb597cacdb4928ffe5c1212f7645f186e6d9957a898db"},
-]
-
[[package]]
name = "markdown"
version = "3.5.2"
@@ -653,7 +498,7 @@ name = "markdown-it-py"
version = "3.0.0"
requires_python = ">=3.8"
summary = "Python port of markdown-it. Markdown parsing, done right!"
-groups = ["docs-offline", "package", "sast"]
+groups = ["docs-offline", "sast"]
dependencies = [
"mdurl~=0.1",
]
@@ -741,7 +586,7 @@ name = "mdurl"
version = "0.1.2"
requires_python = ">=3.7"
summary = "Markdown URL utilities"
-groups = ["docs-offline", "package", "sast"]
+groups = ["docs-offline", "sast"]
files = [
{file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"},
{file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"},
@@ -927,17 +772,6 @@ files = [
{file = "mkdocstrings-0.24.1.tar.gz", hash = "sha256:cc83f9a1c8724fc1be3c2fa071dd73d91ce902ef6a79710249ec8d0ee1064401"},
]
-[[package]]
-name = "more-itertools"
-version = "10.2.0"
-requires_python = ">=3.8"
-summary = "More routines for operating on iterables, beyond itertools"
-groups = ["package"]
-files = [
- {file = "more-itertools-10.2.0.tar.gz", hash = "sha256:8fccb480c43d3e99a00087634c06dd02b0d50fbf088b380de5a41a015ec239e1"},
- {file = "more_itertools-10.2.0-py3-none-any.whl", hash = "sha256:686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684"},
-]
-
[[package]]
name = "mypy-extensions"
version = "1.0.0"
@@ -968,30 +802,6 @@ files = [
{file = "myst_parser-2.0.0.tar.gz", hash = "sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead"},
]
-[[package]]
-name = "nh3"
-version = "0.2.15"
-summary = "Python bindings to the ammonia HTML sanitization library."
-groups = ["package"]
-files = [
- {file = "nh3-0.2.15-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:9c0d415f6b7f2338f93035bba5c0d8c1b464e538bfbb1d598acd47d7969284f0"},
- {file = "nh3-0.2.15-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:6f42f99f0cf6312e470b6c09e04da31f9abaadcd3eb591d7d1a88ea931dca7f3"},
- {file = "nh3-0.2.15-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac19c0d68cd42ecd7ead91a3a032fdfff23d29302dbb1311e641a130dfefba97"},
- {file = "nh3-0.2.15-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0d77272ce6d34db6c87b4f894f037d55183d9518f948bba236fe81e2bb4e28"},
- {file = "nh3-0.2.15-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:8d595df02413aa38586c24811237e95937ef18304e108b7e92c890a06793e3bf"},
- {file = "nh3-0.2.15-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86e447a63ca0b16318deb62498db4f76fc60699ce0a1231262880b38b6cff911"},
- {file = "nh3-0.2.15-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3277481293b868b2715907310c7be0f1b9d10491d5adf9fce11756a97e97eddf"},
- {file = "nh3-0.2.15-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60684857cfa8fdbb74daa867e5cad3f0c9789415aba660614fe16cd66cbb9ec7"},
- {file = "nh3-0.2.15-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3b803a5875e7234907f7d64777dfde2b93db992376f3d6d7af7f3bc347deb305"},
- {file = "nh3-0.2.15-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0d02d0ff79dfd8208ed25a39c12cbda092388fff7f1662466e27d97ad011b770"},
- {file = "nh3-0.2.15-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:f3b53ba93bb7725acab1e030bc2ecd012a817040fd7851b332f86e2f9bb98dc6"},
- {file = "nh3-0.2.15-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:b1e97221cedaf15a54f5243f2c5894bb12ca951ae4ddfd02a9d4ea9df9e1a29d"},
- {file = "nh3-0.2.15-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5167a6403d19c515217b6bcaaa9be420974a6ac30e0da9e84d4fc67a5d474c5"},
- {file = "nh3-0.2.15-cp37-abi3-win32.whl", hash = "sha256:427fecbb1031db085eaac9931362adf4a796428ef0163070c484b5a768e71601"},
- {file = "nh3-0.2.15-cp37-abi3-win_amd64.whl", hash = "sha256:bc2d086fb540d0fa52ce35afaded4ea526b8fc4d3339f783db55c95de40ef02e"},
- {file = "nh3-0.2.15.tar.gz", hash = "sha256:d1e30ff2d8d58fb2a14961f7aac1bbb1c51f9bdd7da727be35c63826060b0bf3"},
-]
-
[[package]]
name = "nodeenv"
version = "1.8.0"
@@ -1011,7 +821,7 @@ name = "packaging"
version = "24.0"
requires_python = ">=3.7"
summary = "Core utilities for Python packages"
-groups = ["docs-offline", "docs-online", "package", "pycqa", "runner", "testing", "tooling"]
+groups = ["docs-offline", "docs-online", "package", "runner", "tooling"]
files = [
{file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"},
{file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"},
@@ -1048,17 +858,6 @@ files = [
{file = "pbr-6.0.0.tar.gz", hash = "sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9"},
]
-[[package]]
-name = "pkginfo"
-version = "1.10.0"
-requires_python = ">=3.6"
-summary = "Query metadata from sdists / bdists / installed packages."
-groups = ["package"]
-files = [
- {file = "pkginfo-1.10.0-py3-none-any.whl", hash = "sha256:889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097"},
- {file = "pkginfo-1.10.0.tar.gz", hash = "sha256:5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297"},
-]
-
[[package]]
name = "platformdirs"
version = "4.2.0"
@@ -1075,7 +874,7 @@ name = "pluggy"
version = "1.4.0"
requires_python = ">=3.8"
summary = "plugin and hook calling mechanisms for python"
-groups = ["pycqa", "runner", "testing"]
+groups = ["runner", "tooling"]
files = [
{file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
{file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
@@ -1099,38 +898,12 @@ files = [
{file = "pre_commit-3.5.0.tar.gz", hash = "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32"},
]
-[[package]]
-name = "pyaml"
-version = "23.12.0"
-requires_python = ">=3.8"
-summary = "PyYAML-based module to produce a bit more pretty and readable YAML-serialized data"
-groups = ["docs-online", "pycqa"]
-dependencies = [
- "PyYAML",
-]
-files = [
- {file = "pyaml-23.12.0-py3-none-any.whl", hash = "sha256:90407d74c95a55d9b41d3860fcc1759640444d2795df748a328d077bc4f58393"},
- {file = "pyaml-23.12.0.tar.gz", hash = "sha256:ce6f648efdfb1b3a5579f8cedb04facf0fa1e8f64846b639309b585bb322b4e5"},
-]
-
-[[package]]
-name = "pycparser"
-version = "2.21"
-requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-summary = "C parser in Python"
-groups = ["package"]
-marker = "platform_python_implementation != \"PyPy\" and sys_platform == \"linux\""
-files = [
- {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
- {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
-]
-
[[package]]
name = "pygments"
version = "2.17.2"
requires_python = ">=3.7"
summary = "Pygments is a syntax highlighting package written in Python."
-groups = ["docs-offline", "docs-online", "package", "sast"]
+groups = ["docs-offline", "docs-online", "sast"]
files = [
{file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
{file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
@@ -1156,7 +929,7 @@ name = "pypandoc-binary"
version = "1.13"
requires_python = ">=3.6"
summary = "Thin wrapper for pandoc."
-groups = ["docs-offline", "pycqa"]
+groups = ["docs-offline", "tooling"]
files = [
{file = "pypandoc_binary-1.13-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:946666388eb79b307d7f497b3b33045ef807750f8e5ef3440e0ba3bbab698044"},
{file = "pypandoc_binary-1.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:21ef0345726d36fc45a50211320614daf2caede684b0d0963ce8738292809746"},
@@ -1226,7 +999,7 @@ name = "pytest"
version = "8.1.1"
requires_python = ">=3.8"
summary = "pytest: simple powerful testing with Python"
-groups = ["pycqa", "testing"]
+groups = ["tooling"]
dependencies = [
"colorama; sys_platform == \"win32\"",
"exceptiongroup>=1.0.0rc8; python_version < \"3.11\"",
@@ -1264,24 +1037,12 @@ files = [
{file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
]
-[[package]]
-name = "pywin32-ctypes"
-version = "0.2.2"
-requires_python = ">=3.6"
-summary = "A (partial) reimplementation of pywin32 using ctypes/cffi"
-groups = ["package"]
-marker = "sys_platform == \"win32\""
-files = [
- {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"},
- {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"},
-]
-
[[package]]
name = "pyyaml"
version = "6.0.1"
requires_python = ">=3.6"
summary = "YAML parser and emitter for Python"
-groups = ["docs-offline", "docs-online", "hooks", "pycqa", "sast"]
+groups = ["docs-offline", "docs-online", "hooks", "sast"]
files = [
{file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"},
{file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"},
@@ -1338,22 +1099,6 @@ files = [
{file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"},
]
-[[package]]
-name = "readme-renderer"
-version = "43.0"
-requires_python = ">=3.8"
-summary = "readme_renderer is a library for rendering readme descriptions for Warehouse"
-groups = ["package"]
-dependencies = [
- "Pygments>=2.5.1",
- "docutils>=0.13.1",
- "nh3>=0.2.14",
-]
-files = [
- {file = "readme_renderer-43.0-py3-none-any.whl", hash = "sha256:19db308d86ecd60e5affa3b2a98f017af384678c63c88e5d4556a380e674f3f9"},
- {file = "readme_renderer-43.0.tar.gz", hash = "sha256:1818dd28140813509eeed8d62687f7cd4f7bad90d4db586001c5dc09d4fde311"},
-]
-
[[package]]
name = "regex"
version = "2023.12.25"
@@ -1447,7 +1192,7 @@ name = "requests"
version = "2.31.0"
requires_python = ">=3.7"
summary = "Python HTTP for Humans."
-groups = ["docs-offline", "docs-online", "package"]
+groups = ["docs-offline", "docs-online"]
dependencies = [
"certifi>=2017.4.17",
"charset-normalizer<4,>=2",
@@ -1459,37 +1204,12 @@ files = [
{file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
]
-[[package]]
-name = "requests-toolbelt"
-version = "1.0.0"
-requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-summary = "A utility belt for advanced users of python-requests"
-groups = ["package"]
-dependencies = [
- "requests<3.0.0,>=2.0.1",
-]
-files = [
- {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"},
- {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"},
-]
-
-[[package]]
-name = "rfc3986"
-version = "2.0.0"
-requires_python = ">=3.7"
-summary = "Validating URI References per RFC 3986"
-groups = ["package"]
-files = [
- {file = "rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd"},
- {file = "rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c"},
-]
-
[[package]]
name = "rich"
version = "13.7.1"
requires_python = ">=3.7.0"
summary = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
-groups = ["package", "sast"]
+groups = ["sast"]
dependencies = [
"markdown-it-py>=2.2.0",
"pygments<3.0.0,>=2.13.0",
@@ -1526,22 +1246,6 @@ files = [
{file = "ruff-0.3.3.tar.gz", hash = "sha256:38671be06f57a2f8aba957d9f701ea889aa5736be806f18c0cd03d6ff0cbca8d"},
]
-[[package]]
-name = "secretstorage"
-version = "3.3.3"
-requires_python = ">=3.6"
-summary = "Python bindings to FreeDesktop.org Secret Service API"
-groups = ["package"]
-marker = "sys_platform == \"linux\""
-dependencies = [
- "cryptography>=2.0",
- "jeepney>=0.6",
-]
-files = [
- {file = "SecretStorage-3.3.3-py3-none-any.whl", hash = "sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99"},
- {file = "SecretStorage-3.3.3.tar.gz", hash = "sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77"},
-]
-
[[package]]
name = "setuptools"
version = "69.2.0"
@@ -1700,7 +1404,7 @@ name = "tomli"
version = "2.0.1"
requires_python = ">=3.7"
summary = "A lil' TOML parser"
-groups = ["package", "pycqa", "runner", "sast", "testing", "tooling"]
+groups = ["package", "runner", "sast", "tooling"]
marker = "python_version < \"3.11\""
files = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
@@ -1730,34 +1434,12 @@ files = [
{file = "tox-4.14.1.tar.gz", hash = "sha256:f0ad758c3bbf7e237059c929d3595479363c3cdd5a06ac3e49d1dd020ffbee45"},
]
-[[package]]
-name = "twine"
-version = "5.0.0"
-requires_python = ">=3.8"
-summary = "Collection of utilities for publishing packages on PyPI"
-groups = ["package"]
-dependencies = [
- "importlib-metadata>=3.6",
- "keyring>=15.1",
- "pkginfo>=1.8.1",
- "readme-renderer>=35.0",
- "requests-toolbelt!=0.9.0,>=0.8.0",
- "requests>=2.20",
- "rfc3986>=1.4.0",
- "rich>=12.0.0",
- "urllib3>=1.26.0",
-]
-files = [
- {file = "twine-5.0.0-py3-none-any.whl", hash = "sha256:a262933de0b484c53408f9edae2e7821c1c45a3314ff2df9bdd343aa7ab8edc0"},
- {file = "twine-5.0.0.tar.gz", hash = "sha256:89b0cc7d370a4b66421cc6102f269aa910fe0f1861c124f573cf2ddedbc10cf4"},
-]
-
[[package]]
name = "typing-extensions"
version = "4.10.0"
requires_python = ">=3.8"
summary = "Backported and Experimental Type Hints for Python 3.8+"
-groups = ["docs-online", "package", "sast", "tooling"]
+groups = ["docs-online", "sast", "tooling"]
marker = "python_version < \"3.11\""
files = [
{file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"},
@@ -1769,7 +1451,7 @@ name = "urllib3"
version = "2.2.1"
requires_python = ">=3.8"
summary = "HTTP library with thread-safe connection pooling, file post, and more."
-groups = ["docs-offline", "docs-online", "package"]
+groups = ["docs-offline", "docs-online"]
files = [
{file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"},
{file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"},
diff --git a/pyproject.toml b/pyproject.toml
index f7da2a58..0b41886d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -38,8 +38,8 @@ dynamic = ["version"]
dependencies = []
[project.urls]
-Homepage = "https://python-validators.github.io/validators"
-Documentation = "https://python-validators.github.io/validators"
+Homepage = "https://yozachar.github.io/pyvalidators" # temp url
+Documentation = "https://yozachar.github.io/pyvalidators" # temp url
Repository = "https://github.com/python-validators/validators"
Changelog = "https://github.com/python-validators/validators/blob/master/CHANGES.md"
@@ -60,16 +60,19 @@ docs-online = [
"mkdocs-git-revision-date-localized-plugin>=1.2.4",
"mkdocs-material>=9.5.14",
"mkdocstrings[python]>=0.24.1",
- "pyaml>=23.12.0",
"mike>=2.0.0",
]
hooks = ["pre-commit>=3.5.0"]
-package = ["build>=1.1.1", "twine>=5.0.0"]
-pycqa = ["pyaml>=23.12.0", "pypandoc-binary>=1.13", "pytest>=8.1.1"]
+package = ["build>=1.1.1"]
runner = ["tox>=4.14.1"]
sast = ["bandit[toml]>=1.7.8"]
-testing = ["pytest>=8.1.1"]
-tooling = ["black>=24.3.0", "ruff>=0.3.3", "pyright>=1.1.354"]
+tooling = [
+ "black>=24.3.0",
+ "ruff>=0.3.3",
+ "pyright>=1.1.354",
+ "pytest>=8.1.1",
+ "pypandoc-binary>=1.13", # helps with type checking
+]
####################
# Configurations #
@@ -167,7 +170,6 @@ commands = ruff check .
description = pyright type checker
deps =
pyright
- pyaml
pypandoc-binary
pytest
commands = pyright .
diff --git a/src/validators/__init__.py b/src/validators/__init__.py
index ae8b4210..d1995822 100644
--- a/src/validators/__init__.py
+++ b/src/validators/__init__.py
@@ -79,4 +79,4 @@
"validator",
)
-__version__ = "0.23.1"
+__version__ = "0.23.2"
diff --git a/src/validators/between.py b/src/validators/between.py
index 0cd79d46..6a65d5c9 100644
--- a/src/validators/between.py
+++ b/src/validators/between.py
@@ -51,10 +51,8 @@ def between(
If not provided, maximum value will not be checked.
Returns:
- (Literal[True]):
- If `value` is in between the given conditions.
- (ValidationError):
- If `value` is not in between the given conditions.
+ (Literal[True]): If `value` is in between the given conditions.
+ (ValidationError): If `value` is not in between the given conditions.
Raises:
(ValueError): If `min_val` is greater than `max_val`.
diff --git a/src/validators/btc_address.py b/src/validators/btc_address.py
index 73b5d95c..409a22fb 100644
--- a/src/validators/btc_address.py
+++ b/src/validators/btc_address.py
@@ -42,10 +42,8 @@ def btc_address(value: str, /):
Bitcoin address string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid bitcoin address.
- (ValidationError):
- If `value` is an invalid bitcoin address.
+ (Literal[True]): If `value` is a valid bitcoin address.
+ (ValidationError): If `value` is an invalid bitcoin address.
"""
if not value:
return False
diff --git a/src/validators/card.py b/src/validators/card.py
index dbfc85d1..7801eb6b 100644
--- a/src/validators/card.py
+++ b/src/validators/card.py
@@ -26,10 +26,8 @@ def card_number(value: str, /):
Generic card number string to validate
Returns:
- (Literal[True]):
- If `value` is a valid generic card number.
- (ValidationError):
- If `value` is an invalid generic card number.
+ (Literal[True]): If `value` is a valid generic card number.
+ (ValidationError): If `value` is an invalid generic card number.
"""
if not value:
return False
@@ -57,10 +55,8 @@ def visa(value: str, /):
Visa card number string to validate
Returns:
- (Literal[True]):
- If `value` is a valid Visa card number.
- (ValidationError):
- If `value` is an invalid Visa card number.
+ (Literal[True]): If `value` is a valid Visa card number.
+ (ValidationError): If `value` is an invalid Visa card number.
"""
pattern = re.compile(r"^4")
return card_number(value) and len(value) == 16 and pattern.match(value)
@@ -81,10 +77,8 @@ def mastercard(value: str, /):
Mastercard card number string to validate
Returns:
- (Literal[True]):
- If `value` is a valid Mastercard card number.
- (ValidationError):
- If `value` is an invalid Mastercard card number.
+ (Literal[True]): If `value` is a valid Mastercard card number.
+ (ValidationError): If `value` is an invalid Mastercard card number.
"""
pattern = re.compile(r"^(51|52|53|54|55|22|23|24|25|26|27)")
return card_number(value) and len(value) == 16 and pattern.match(value)
@@ -105,10 +99,8 @@ def amex(value: str, /):
American Express card number string to validate
Returns:
- (Literal[True]):
- If `value` is a valid American Express card number.
- (ValidationError):
- If `value` is an invalid American Express card number.
+ (Literal[True]): If `value` is a valid American Express card number.
+ (ValidationError): If `value` is an invalid American Express card number.
"""
pattern = re.compile(r"^(34|37)")
return card_number(value) and len(value) == 15 and pattern.match(value)
@@ -129,10 +121,8 @@ def unionpay(value: str, /):
UnionPay card number string to validate
Returns:
- (Literal[True]):
- If `value` is a valid UnionPay card number.
- (ValidationError):
- If `value` is an invalid UnionPay card number.
+ (Literal[True]): If `value` is a valid UnionPay card number.
+ (ValidationError): If `value` is an invalid UnionPay card number.
"""
pattern = re.compile(r"^62")
return card_number(value) and len(value) == 16 and pattern.match(value)
@@ -153,10 +143,8 @@ def diners(value: str, /):
Diners Club card number string to validate
Returns:
- (Literal[True]):
- If `value` is a valid Diners Club card number.
- (ValidationError):
- If `value` is an invalid Diners Club card number.
+ (Literal[True]): If `value` is a valid Diners Club card number.
+ (ValidationError): If `value` is an invalid Diners Club card number.
"""
pattern = re.compile(r"^(30|36|38|39)")
return card_number(value) and len(value) in {14, 16} and pattern.match(value)
@@ -177,10 +165,8 @@ def jcb(value: str, /):
JCB card number string to validate
Returns:
- (Literal[True]):
- If `value` is a valid JCB card number.
- (ValidationError):
- If `value` is an invalid JCB card number.
+ (Literal[True]): If `value` is a valid JCB card number.
+ (ValidationError): If `value` is an invalid JCB card number.
"""
pattern = re.compile(r"^35")
return card_number(value) and len(value) == 16 and pattern.match(value)
@@ -201,10 +187,8 @@ def discover(value: str, /):
Discover card number string to validate
Returns:
- (Literal[True]):
- If `value` is a valid Discover card number.
- (ValidationError):
- If `value` is an invalid Discover card number.
+ (Literal[True]): If `value` is a valid Discover card number.
+ (ValidationError): If `value` is an invalid Discover card number.
"""
pattern = re.compile(r"^(60|64|65)")
return card_number(value) and len(value) == 16 and pattern.match(value)
diff --git a/src/validators/country_code.py b/src/validators/country_code.py
index 822f2ea6..61cfbbd3 100644
--- a/src/validators/country_code.py
+++ b/src/validators/country_code.py
@@ -141,10 +141,8 @@ def country_code(value: str, /, *, iso_format: str = "auto"):
`auto`, `alpha2`, `alpha3` and `numeric`.
Returns:
- (Literal[True]):
- If `value` is a valid country code.
- (ValidationError):
- If `value` is an invalid country code.
+ (Literal[True]): If `value` is a valid country code.
+ (ValidationError): If `value` is an invalid country code.
"""
if not value:
return False
diff --git a/src/validators/domain.py b/src/validators/domain.py
index c17f7677..1c25df5f 100644
--- a/src/validators/domain.py
+++ b/src/validators/domain.py
@@ -32,10 +32,8 @@ def domain(value: str, /, *, rfc_1034: bool = False, rfc_2782: bool = False):
Returns:
- (Literal[True]):
- If `value` is a valid domain name.
- (ValidationError):
- If `value` is an invalid domain name.
+ (Literal[True]): If `value` is a valid domain name.
+ (ValidationError): If `value` is an invalid domain name.
"""
if not value:
return False
diff --git a/src/validators/email.py b/src/validators/email.py
index faf45e5f..f1fb3f6f 100644
--- a/src/validators/email.py
+++ b/src/validators/email.py
@@ -52,10 +52,8 @@ def email(
Ref: [RFC 2782](https://www.rfc-editor.org/rfc/rfc2782).
Returns:
- (Literal[True]):
- If `value` is a valid eMail.
- (ValidationError):
- If `value` is an invalid eMail.
+ (Literal[True]): If `value` is a valid eMail.
+ (ValidationError): If `value` is an invalid eMail.
"""
if not value or value.count("@") != 1:
return False
diff --git a/src/validators/hashes.py b/src/validators/hashes.py
index 3129ad65..6004d30a 100644
--- a/src/validators/hashes.py
+++ b/src/validators/hashes.py
@@ -22,10 +22,8 @@ def md5(value: str, /):
MD5 string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid MD5 hash.
- (ValidationError):
- If `value` is an invalid MD5 hash.
+ (Literal[True]): If `value` is a valid MD5 hash.
+ (ValidationError): If `value` is an invalid MD5 hash.
"""
return re.match(r"^[0-9a-f]{32}$", value, re.IGNORECASE) if value else False
@@ -45,10 +43,8 @@ def sha1(value: str, /):
SHA1 string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid SHA1 hash.
- (ValidationError):
- If `value` is an invalid SHA1 hash.
+ (Literal[True]): If `value` is a valid SHA1 hash.
+ (ValidationError): If `value` is an invalid SHA1 hash.
"""
return re.match(r"^[0-9a-f]{40}$", value, re.IGNORECASE) if value else False
@@ -68,10 +64,8 @@ def sha224(value: str, /):
SHA224 string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid SHA224 hash.
- (ValidationError):
- If `value` is an invalid SHA224 hash.
+ (Literal[True]): If `value` is a valid SHA224 hash.
+ (ValidationError): If `value` is an invalid SHA224 hash.
"""
return re.match(r"^[0-9a-f]{56}$", value, re.IGNORECASE) if value else False
@@ -94,10 +88,8 @@ def sha256(value: str, /):
SHA256 string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid SHA256 hash.
- (ValidationError):
- If `value` is an invalid SHA256 hash.
+ (Literal[True]): If `value` is a valid SHA256 hash.
+ (ValidationError): If `value` is an invalid SHA256 hash.
"""
return re.match(r"^[0-9a-f]{64}$", value, re.IGNORECASE) if value else False
@@ -121,9 +113,7 @@ def sha512(value: str, /):
SHA512 string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid SHA512 hash.
- (ValidationError):
- If `value` is an invalid SHA512 hash.
+ (Literal[True]): If `value` is a valid SHA512 hash.
+ (ValidationError): If `value` is an invalid SHA512 hash.
"""
return re.match(r"^[0-9a-f]{128}$", value, re.IGNORECASE) if value else False
diff --git a/src/validators/hostname.py b/src/validators/hostname.py
index de273df3..dd7e6991 100644
--- a/src/validators/hostname.py
+++ b/src/validators/hostname.py
@@ -100,10 +100,8 @@ def hostname(
Ref: [RFC 2782](https://www.rfc-editor.org/rfc/rfc2782).
Returns:
- (Literal[True]):
- If `value` is a valid hostname.
- (ValidationError):
- If `value` is an invalid hostname.
+ (Literal[True]): If `value` is a valid hostname.
+ (ValidationError): If `value` is an invalid hostname.
"""
if not value:
return False
diff --git a/src/validators/i18n/es.py b/src/validators/i18n/es.py
index 3b4bf56d..ad5011d0 100644
--- a/src/validators/i18n/es.py
+++ b/src/validators/i18n/es.py
@@ -48,10 +48,8 @@ def es_cif(value: str, /):
DOI string which is to be validated.
Returns:
- (Literal[True]):
- If `value` is a valid DOI string.
- (ValidationError):
- If `value` is an invalid DOI string.
+ (Literal[True]): If `value` is a valid DOI string.
+ (ValidationError): If `value` is an invalid DOI string.
"""
if not value or len(value) != 9:
return False
@@ -102,10 +100,8 @@ def es_nif(value: str, /):
DOI string which is to be validated.
Returns:
- (Literal[True]):
- If `value` is a valid DOI string.
- (ValidationError):
- If `value` is an invalid DOI string.
+ (Literal[True]): If `value` is a valid DOI string.
+ (ValidationError): If `value` is an invalid DOI string.
"""
number_by_letter = {"L": "0", "M": "0", "K": "0"}
special_cases = {"X0000000T", "00000000T", "00000001R"}
@@ -135,10 +131,8 @@ def es_nie(value: str, /):
DOI string which is to be validated.
Returns:
- (Literal[True]):
- If `value` is a valid DOI string.
- (ValidationError):
- If `value` is an invalid DOI string.
+ (Literal[True]): If `value` is a valid DOI string.
+ (ValidationError): If `value` is an invalid DOI string.
"""
number_by_letter = {"X": "0", "Y": "1", "Z": "2"}
# NIE must must start with X Y or Z
@@ -169,9 +163,7 @@ def es_doi(value: str, /):
DOI string which is to be validated.
Returns:
- (Literal[True]):
- If `value` is a valid DOI string.
- (ValidationError):
- If `value` is an invalid DOI string.
+ (Literal[True]): If `value` is a valid DOI string.
+ (ValidationError): If `value` is an invalid DOI string.
"""
return es_nie(value) or es_nif(value) or es_cif(value)
diff --git a/src/validators/i18n/fi.py b/src/validators/i18n/fi.py
index 773da6b4..243ee08f 100644
--- a/src/validators/i18n/fi.py
+++ b/src/validators/i18n/fi.py
@@ -51,10 +51,8 @@ def fi_business_id(value: str, /):
Business ID string to be validated.
Returns:
- (Literal[True]):
- If `value` is a valid finnish business id.
- (ValidationError):
- If `value` is an invalid finnish business id.
+ (Literal[True]): If `value` is a valid finnish business id.
+ (ValidationError): If `value` is an invalid finnish business id.
"""
if not value:
return False
@@ -90,10 +88,8 @@ def fi_ssn(value: str, /, *, allow_temporal_ssn: bool = True):
SSN numbers are valid.
Returns:
- (Literal[True]):
- If `value` is a valid finnish SSN.
- (ValidationError):
- If `value` is an invalid finnish SSN.
+ (Literal[True]): If `value` is a valid finnish SSN.
+ (ValidationError): If `value` is an invalid finnish SSN.
"""
if not value:
return False
diff --git a/src/validators/i18n/fr.py b/src/validators/i18n/fr.py
index ad28e54c..49d5830d 100644
--- a/src/validators/i18n/fr.py
+++ b/src/validators/i18n/fr.py
@@ -49,10 +49,8 @@ def fr_department(value: typing.Union[str, int]):
French department number to validate.
Returns:
- (Literal[True]):
- If `value` is a valid french department number.
- (ValidationError):
- If `value` is an invalid french department number.
+ (Literal[True]): If `value` is a valid french department number.
+ (ValidationError): If `value` is an invalid french department number.
"""
if not value:
return False
@@ -90,10 +88,8 @@ def fr_ssn(value: str):
French Social Security Number string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid french Social Security Number.
- (ValidationError):
- If `value` is an invalid french Social Security Number.
+ (Literal[True]): If `value` is a valid french Social Security Number.
+ (ValidationError): If `value` is an invalid french Social Security Number.
"""
if not value:
return False
diff --git a/src/validators/iban.py b/src/validators/iban.py
index b323e012..01925972 100644
--- a/src/validators/iban.py
+++ b/src/validators/iban.py
@@ -34,10 +34,8 @@ def iban(value: str, /):
IBAN string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid IBAN code.
- (ValidationError):
- If `value` is an invalid IBAN code.
+ (Literal[True]): If `value` is a valid IBAN code.
+ (ValidationError): If `value` is an invalid IBAN code.
"""
return (
(re.match(r"^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$", value) and _mod_check(value))
diff --git a/src/validators/ip_address.py b/src/validators/ip_address.py
index b7a341f4..64bf15f4 100644
--- a/src/validators/ip_address.py
+++ b/src/validators/ip_address.py
@@ -45,10 +45,8 @@ def ipv4(value: str, /, *, cidr: bool = True, strict: bool = False, host_bit: bo
[2]: https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network
Returns:
- (Literal[True]):
- If `value` is a valid IPv4 address.
- (ValidationError):
- If `value` is an invalid IPv4 address.
+ (Literal[True]): If `value` is a valid IPv4 address.
+ (ValidationError): If `value` is an invalid IPv4 address.
"""
if not value:
return False
@@ -92,10 +90,8 @@ def ipv6(value: str, /, *, cidr: bool = True, strict: bool = False, host_bit: bo
[2]: https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv6Network
Returns:
- (Literal[True]):
- If `value` is a valid IPv6 address.
- (ValidationError):
- If `value` is an invalid IPv6 address.
+ (Literal[True]): If `value` is a valid IPv6 address.
+ (ValidationError): If `value` is an invalid IPv6 address.
"""
if not value:
return False
diff --git a/src/validators/length.py b/src/validators/length.py
index be60d06e..af9413ec 100644
--- a/src/validators/length.py
+++ b/src/validators/length.py
@@ -31,10 +31,8 @@ def length(value: str, /, *, min_val: Union[int, None] = None, max_val: Union[in
maximum length will not be checked.
Returns:
- (Literal[True]):
- If `len(value)` is in between the given conditions.
- (ValidationError):
- If `len(value)` is not in between the given conditions.
+ (Literal[True]): If `len(value)` is in between the given conditions.
+ (ValidationError): If `len(value)` is not in between the given conditions.
Raises:
(ValueError): If either `min_val` or `max_val` is negative.
diff --git a/src/validators/mac_address.py b/src/validators/mac_address.py
index a0a28a2c..5e5dd749 100644
--- a/src/validators/mac_address.py
+++ b/src/validators/mac_address.py
@@ -26,9 +26,7 @@ def mac_address(value: str, /):
MAC address string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid MAC address.
- (ValidationError):
- If `value` is an invalid MAC address.
+ (Literal[True]): If `value` is a valid MAC address.
+ (ValidationError): If `value` is an invalid MAC address.
"""
return re.match(r"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$", value) if value else False
diff --git a/src/validators/slug.py b/src/validators/slug.py
index 9442997d..2bd83d5b 100644
--- a/src/validators/slug.py
+++ b/src/validators/slug.py
@@ -21,13 +21,10 @@ def slug(value: str, /):
# Output: ValidationError(func=slug, args={'value': 'my.slug'})
Args:
- value:
- Slug string to validate.
+ value: Slug string to validate.
Returns:
- (Literal[True]):
- If `value` is a valid slug.
- (ValidationError):
- If `value` is an invalid slug.
+ (Literal[True]): If `value` is a valid slug.
+ (ValidationError): If `value` is an invalid slug.
"""
return re.match(r"^[a-z0-9]+(?:-[a-z0-9]+)*$", value) if value else False
diff --git a/src/validators/url.py b/src/validators/url.py
index 7f22cde5..ac7f9364 100644
--- a/src/validators/url.py
+++ b/src/validators/url.py
@@ -135,8 +135,9 @@ def url(
):
r"""Return whether or not given value is a valid URL.
- This validator was inspired from [URL validator of dperini][1].
- The following diagram is from [urlly][2].
+ This validator was originally inspired from [URL validator of dperini][1].
+ The following diagram is from [urlly][2]::
+
foo://admin:hunter1@example.com:8042/over/there?name=ferret#nose
\_/ \___/ \_____/ \_________/ \__/\_________/ \_________/ \__/
@@ -177,10 +178,8 @@ def url(
Ref: [RFC 2782](https://www.rfc-editor.org/rfc/rfc2782).
Returns:
- (Literal[True]):
- If `value` is a valid url.
- (ValidationError):
- If `value` is an invalid url.
+ (Literal[True]): If `value` is a valid url.
+ (ValidationError): If `value` is an invalid url.
"""
if not value or re.search(r"\s", value):
# url must not contain any white
diff --git a/src/validators/uuid.py b/src/validators/uuid.py
index 2e4c6e95..336974d4 100644
--- a/src/validators/uuid.py
+++ b/src/validators/uuid.py
@@ -28,10 +28,8 @@ def uuid(value: Union[str, UUID], /):
UUID string or object to validate.
Returns:
- (Literal[True]):
- If `value` is a valid UUID.
- (ValidationError):
- If `value` is an invalid UUID.
+ (Literal[True]): If `value` is a valid UUID.
+ (ValidationError): If `value` is an invalid UUID.
"""
if not value:
return False