diff --git a/.github/workflows/pycqa.yaml b/.github/workflows/pycqa.yaml index 1251f103..3b34a53f 100644 --- a/.github/workflows/pycqa.yaml +++ b/.github/workflows/pycqa.yaml @@ -16,10 +16,10 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 # set up specific python version - - name: Set up Python v3.8 + - name: Set up Python v3.9 uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.9" # tooling - name: Install 'tooling' dependencies run: pip install -r package/requirements.tooling.txt @@ -33,7 +33,7 @@ jobs: fail-fast: true matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] runs-on: ${{ matrix.os }} steps: # checkout repository again! diff --git a/.gitignore b/.gitignore index 072cd391..cdb7d68f 100644 --- a/.gitignore +++ b/.gitignore @@ -172,6 +172,7 @@ cython_debug/ # rtx/mise .rtx.toml .mise.toml +mise.toml # ruff .ruff_cache diff --git a/LICENSE.txt b/LICENSE.txt index d21a342b..0fba9fb0 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013 - 2024 Konsta Vesterinen +Copyright (c) 2013 - 2025 Konsta Vesterinen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/README.md b/README.md index 260532f4..926ac79f 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Then, ```python >>> import validators ->>> +>>> >>> validators.email('someone@example.com') True ``` @@ -36,7 +36,7 @@ True --- -> **_Python 3.8 [reaches EOL in](https://endoflife.date/python) October 2024._** +> **_Python 3.9 [reaches EOL in](https://endoflife.date/python) October 2025._** [sast-badge]: https://github.com/python-validators/validators/actions/workflows/sast.yaml/badge.svg diff --git a/SECURITY.md b/SECURITY.md index d666628a..0f632259 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,7 +4,7 @@ | Version | Supported | | ---------- | ------------------ | -| `>=0.33.0` | :white_check_mark: | +| `>=0.35.0` | :white_check_mark: | ## Reporting a Vulnerability diff --git a/docs/api/card.md b/docs/api/card.md index c45cd8ad..0749e60e 100644 --- a/docs/api/card.md +++ b/docs/api/card.md @@ -6,5 +6,6 @@ ::: validators.card.discover ::: validators.card.jcb ::: validators.card.mastercard +::: validators.card.mir ::: validators.card.unionpay ::: validators.card.visa diff --git a/docs/api/card.rst b/docs/api/card.rst index eb9eff7c..efd429c7 100644 --- a/docs/api/card.rst +++ b/docs/api/card.rst @@ -8,5 +8,6 @@ card .. autofunction:: discover .. autofunction:: jcb .. autofunction:: mastercard +.. autofunction:: mir .. autofunction:: unionpay .. autofunction:: visa diff --git a/docs/api/i18n.md b/docs/api/i18n.md index 6999f33f..13aa96a5 100644 --- a/docs/api/i18n.md +++ b/docs/api/i18n.md @@ -10,3 +10,4 @@ ::: validators.i18n.fr_ssn ::: validators.i18n.ind_aadhar ::: validators.i18n.ind_pan +::: validators.i18n.ru_inn diff --git a/docs/api/i18n.rst b/docs/api/i18n.rst index 1284b302..8ab882df 100644 --- a/docs/api/i18n.rst +++ b/docs/api/i18n.rst @@ -12,3 +12,4 @@ i18n .. autofunction:: fr_ssn .. autofunction:: ind_aadhar .. autofunction:: ind_pan +.. autofunction:: ru_inn diff --git a/docs/index.md b/docs/index.md index 3d7f58a4..926ac79f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,9 +9,15 @@ 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. +```shell +pip install validators +``` + +Then, + ```python >>> import validators ->>> +>>> >>> validators.email('someone@example.com') True ``` @@ -30,7 +36,7 @@ True --- -> **_Python 3.8 [reaches EOL in](https://endoflife.date/python) October 2024._** +> **_Python 3.9 [reaches EOL in](https://endoflife.date/python) October 2025._** [sast-badge]: https://github.com/python-validators/validators/actions/workflows/sast.yaml/badge.svg diff --git a/docs/index.rst b/docs/index.rst index 4d24aba4..4553ec5d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -12,10 +12,16 @@ 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:: shell + + pip install validators + +Then, + .. code:: python >>> import validators - >>> + >>> >>> validators.email('someone@example.com') True @@ -41,8 +47,8 @@ Resources -------------- - **Python 3.8** `reaches EOL in `__ - **October 2024.** + **Python 3.9** `reaches EOL in `__ + **October 2025.** .. raw:: html diff --git a/mkdocs.yaml b/mkdocs.yaml index b7b84f94..cf93965a 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -63,7 +63,7 @@ extra: provider: mike default: stable -copyright: Copyright © 2013 - 2024 Konsta Vesterinen +copyright: Copyright © 2013 - 2025 Konsta Vesterinen nav: - Home: index.md diff --git a/package/requirements.sphinx.txt b/package/requirements.sphinx.txt index ff2b1bb4..a1729207 100644 --- a/package/requirements.sphinx.txt +++ b/package/requirements.sphinx.txt @@ -215,9 +215,6 @@ pypandoc-binary==1.13 \ --hash=sha256:67c0c7af811bcf3cd4f3221be756a4975ec35b2d7df89d8de4313a8caa2cd54f \ --hash=sha256:9455fdd9521cbf4b56d79a56b806afa94c8c22f3c8ef878536e58d941a70f6d6 \ --hash=sha256:946666388eb79b307d7f497b3b33045ef807750f8e5ef3440e0ba3bbab698044 -pytz==2024.1 \ - --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ - --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 pyyaml==6.0.1 \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ diff --git a/pdm.lock b/pdm.lock index 3aaccd5d..bcba0e6e 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,10 +5,10 @@ groups = ["default", "crypto-eth-addresses", "docs-offline", "docs-online", "package", "runner", "sast", "testing", "tooling"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:9a263017221313e1b5274495ab0aefdf59efc3c2a91d686e2e2b03ce87d6c621" +content_hash = "sha256:826f262f5a1e71d775a4860e4cbef5884724bb1e1d2d26b3603879a1acf4d19b" [[metadata.targets]] -requires_python = ">=3.8" +requires_python = ">=3.9" [[package]] name = "alabaster" @@ -21,21 +21,6 @@ files = [ {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, ] -[[package]] -name = "astunparse" -version = "1.6.3" -summary = "An AST unparser for Python" -groups = ["docs-online"] -marker = "python_version < \"3.9\"" -dependencies = [ - "six<2.0,>=1.6.1", - "wheel<1.0,>=0.23.0", -] -files = [ - {file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"}, - {file = "astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872"}, -] - [[package]] name = "babel" version = "2.15.0" @@ -1046,7 +1031,7 @@ files = [ name = "pytz" version = "2024.1" summary = "World timezone definitions, modern and historical" -groups = ["docs-offline", "docs-online"] +groups = ["docs-online"] files = [ {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, @@ -1469,7 +1454,7 @@ name = "typing-extensions" version = "4.12.2" requires_python = ">=3.8" summary = "Backported and Experimental Type Hints for Python 3.8+" -groups = ["docs-online", "sast"] +groups = ["docs-online"] marker = "python_version < \"3.10\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, @@ -1555,18 +1540,6 @@ files = [ {file = "watchdog-4.0.1.tar.gz", hash = "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44"}, ] -[[package]] -name = "wheel" -version = "0.43.0" -requires_python = ">=3.8" -summary = "A built-package format for Python" -groups = ["docs-online"] -marker = "python_version < \"3.9\"" -files = [ - {file = "wheel-0.43.0-py3-none-any.whl", hash = "sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81"}, - {file = "wheel-0.43.0.tar.gz", hash = "sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85"}, -] - [[package]] name = "zipp" version = "3.19.2" diff --git a/pyproject.toml b/pyproject.toml index 48e04bfc..9c1566bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ classifiers = [ "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Libraries :: Python Modules", ] -requires-python = ">=3.8" +requires-python = ">=3.9" dynamic = ["version"] dependencies = [] @@ -116,7 +116,7 @@ exclude = [ ".venv.dev/", "site/", ] -pythonVersion = "3.8" +pythonVersion = "3.9" pythonPlatform = "All" typeCheckingMode = "strict" @@ -144,7 +144,7 @@ lint.select = [ "D", ] line-length = 100 -target-version = "py38" +target-version = "py39" extend-exclude = ["**/__pycache__", ".pytest_cache", "site"] [tool.ruff.lint.isort] @@ -163,7 +163,7 @@ legacy_tox_ini = """ [tox] requires = tox>=4 -env_list = lint, type, format, sast, py{38,39,310,311,312} +env_list = lint, type, format, sast, py{39,310,311,312,313} [testenv:lint] description = ruff linter diff --git a/src/validators/__init__.py b/src/validators/__init__.py index daa31f21..c4701d66 100644 --- a/src/validators/__init__.py +++ b/src/validators/__init__.py @@ -112,4 +112,4 @@ "validator", ) -__version__ = "0.34.0" +__version__ = "0.35.0"