From 3a2c5132b8ec6fc2f375a347c5cac5300706d24c Mon Sep 17 00:00:00 2001 From: Jovial Joe Jayarson Date: Wed, 20 Mar 2024 10:36:23 +0530 Subject: [PATCH] fix: packaging as well as `rST` & `md` document generation - updates gh-action versions - moves `docs/references` to `docs/api` - ignores all `.md` files for Sphinx build - includes `rST` docs in source control and `sdist` - fixes all Sphinx doc generation warnings/errors - removes `pyaml` & `twine` from dev dependencies --- .github/workflows/docs.yaml.bkp | 10 +- .../{package.yaml => package.yaml.bkp} | 6 +- .github/workflows/pycqa.yaml | 8 +- .github/workflows/sast.yaml | 2 +- .gitignore | 4 - CHANGES.md | 23 +- MANIFEST.in | 18 +- SECURITY.md | 2 +- docs/{references => api}/between.md | 0 docs/api/between.rst | 5 + docs/{references => api}/btc_address.md | 0 docs/api/btc_address.rst | 5 + docs/{references => api}/card.md | 0 docs/api/card.rst | 12 + docs/{references => api}/country_code.md | 0 docs/api/country_code.rst | 5 + docs/{references => api}/domain.md | 0 docs/api/domain.rst | 5 + docs/{references => api}/email.md | 0 docs/api/email.rst | 5 + docs/{references => api}/hashes.md | 0 docs/api/hashes.rst | 9 + docs/{references => api}/hostname.md | 0 docs/api/hostname.rst | 5 + docs/{references => api}/i18n.md | 0 docs/api/i18n.rst | 12 + docs/{references => api}/iban.md | 0 docs/api/iban.rst | 5 + docs/{references => api}/ip_address.md | 0 docs/api/ip_address.rst | 6 + docs/{references => api}/length.md | 0 docs/api/length.rst | 5 + docs/{references => api}/mac_address.md | 0 docs/api/mac_address.rst | 5 + docs/{references => api}/slug.md | 0 docs/api/slug.rst | 5 + docs/{references => api}/url.md | 0 docs/api/url.rst | 5 + docs/{references => api}/utils.md | 0 docs/api/utils.rst | 6 + docs/{references => api}/uuid.md | 0 docs/api/uuid.rst | 5 + docs/conf.py | 2 +- docs/index.rst | 69 ++++ mkdocs.yaml | 34 +- package/export/__main__.py | 37 +- package/requirements.mkdocs.txt | 15 +- package/requirements.tooling.txt | 43 -- package/roll.ps1 | 113 +++--- package/roll.sh | 13 +- pdm.lock | 376 ++---------------- pyproject.toml | 18 +- src/validators/__init__.py | 2 +- src/validators/between.py | 6 +- src/validators/btc_address.py | 6 +- src/validators/card.py | 48 +-- src/validators/country_code.py | 6 +- src/validators/domain.py | 6 +- src/validators/email.py | 6 +- src/validators/hashes.py | 30 +- src/validators/hostname.py | 6 +- src/validators/i18n/es.py | 24 +- src/validators/i18n/fi.py | 12 +- src/validators/i18n/fr.py | 12 +- src/validators/iban.py | 6 +- src/validators/ip_address.py | 12 +- src/validators/length.py | 6 +- src/validators/mac_address.py | 6 +- src/validators/slug.py | 9 +- src/validators/url.py | 11 +- src/validators/uuid.py | 6 +- 71 files changed, 449 insertions(+), 669 deletions(-) rename .github/workflows/{package.yaml => package.yaml.bkp} (92%) rename docs/{references => api}/between.md (100%) create mode 100644 docs/api/between.rst rename docs/{references => api}/btc_address.md (100%) create mode 100644 docs/api/btc_address.rst rename docs/{references => api}/card.md (100%) create mode 100644 docs/api/card.rst rename docs/{references => api}/country_code.md (100%) create mode 100644 docs/api/country_code.rst rename docs/{references => api}/domain.md (100%) create mode 100644 docs/api/domain.rst rename docs/{references => api}/email.md (100%) create mode 100644 docs/api/email.rst rename docs/{references => api}/hashes.md (100%) create mode 100644 docs/api/hashes.rst rename docs/{references => api}/hostname.md (100%) create mode 100644 docs/api/hostname.rst rename docs/{references => api}/i18n.md (100%) create mode 100644 docs/api/i18n.rst rename docs/{references => api}/iban.md (100%) create mode 100644 docs/api/iban.rst rename docs/{references => api}/ip_address.md (100%) create mode 100644 docs/api/ip_address.rst rename docs/{references => api}/length.md (100%) create mode 100644 docs/api/length.rst rename docs/{references => api}/mac_address.md (100%) create mode 100644 docs/api/mac_address.rst rename docs/{references => api}/slug.md (100%) create mode 100644 docs/api/slug.rst rename docs/{references => api}/url.md (100%) create mode 100644 docs/api/url.rst rename docs/{references => api}/utils.md (100%) create mode 100644 docs/api/utils.rst rename docs/{references => api}/uuid.md (100%) create mode 100644 docs/api/uuid.rst create mode 100644 docs/index.rst mode change 100644 => 100755 package/roll.ps1 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