Skip to content

Commit 110bd2f

Browse files
authored
Merge pull request #343 from yozachar/workshop
feat: conditionally raises `ValidationError`; bump version
2 parents 04cf3d0 + 196e6de commit 110bd2f

File tree

7 files changed

+79
-39
lines changed

7 files changed

+79
-39
lines changed

CHANGES.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,24 @@ Note to self: Breaking changes must increment either
99
1010
-->
1111

12+
## 0.24.0 (2024-03-24)
13+
14+
_**Breaking**_
15+
16+
> No breaking changes were introduced in this version.
17+
18+
_**Features**_
19+
20+
- feat: conditionally raises `ValidationError`; bump version by @yozachar in [#343](https://github.com/python-validators/validators/pull/343)
21+
22+
_**Maintenance**_
23+
24+
- patch: `domain` & `url` modules by @yozachar in [#339](https://github.com/python-validators/validators/pull/339)
25+
- fix: domain name not confirming to rfc_2782 by @yozachar in [#341](https://github.com/python-validators/validators/pull/341)
26+
- maint: update dev dependencies; adds favicon to docs by @yozachar in [#342](https://github.com/python-validators/validators/pull/342)
27+
28+
**Full Changelog**: [`0.23.2...0.24.0`](https://github.com/python-validators/validators/compare/0.23.2...0.24.0)
29+
1230
## 0.23.2 (2024-03-20)
1331

1432
_**Breaking**_

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
| Version | Supported |
66
| ---------- | ------------------ |
7-
| `>=0.23.2` | :white_check_mark: |
7+
| `>=0.24.0` | :white_check_mark: |
88

99
## Reporting a Vulnerability
1010

package/requirements.mkdocs.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,12 @@ griffe==0.42.1 \
109109
idna==3.6 \
110110
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
111111
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
112-
importlib-metadata==7.0.2 \
113-
--hash=sha256:198f568f3230878cb1b44fbd7975f87906c22336dba2e4a7f05278c281fbd792 \
114-
--hash=sha256:f4bc4c0c070c490abf4ce96d715f68e95923320370efb66143df00199bb6c100
115-
importlib-resources==6.3.2 \
116-
--hash=sha256:963eb79649252b0160c1afcfe5a1d3fe3ad66edd0a8b114beacffb70c0674223 \
117-
--hash=sha256:f41f4098b16cd140a97d256137cfd943d958219007990b2afb00439fc623f580
112+
importlib-metadata==7.1.0 \
113+
--hash=sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570 \
114+
--hash=sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2
115+
importlib-resources==6.4.0 \
116+
--hash=sha256:50d10f043df931902d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c \
117+
--hash=sha256:cdb2b453b8046ca4e3798eb1d84f3cce1446a0e8e7b5ef4efb600f19fc398145
118118
jinja2==3.1.3 \
119119
--hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \
120120
--hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90

package/requirements.sphinx.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ idna==3.6 \
100100
imagesize==1.4.1 \
101101
--hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b \
102102
--hash=sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a
103-
importlib-metadata==7.0.2 \
104-
--hash=sha256:198f568f3230878cb1b44fbd7975f87906c22336dba2e4a7f05278c281fbd792 \
105-
--hash=sha256:f4bc4c0c070c490abf4ce96d715f68e95923320370efb66143df00199bb6c100
103+
importlib-metadata==7.1.0 \
104+
--hash=sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570 \
105+
--hash=sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2
106106
jinja2==3.1.3 \
107107
--hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \
108108
--hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90

package/requirements.tooling.txt

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -62,30 +62,30 @@ pypandoc-binary==1.13 \
6262
--hash=sha256:67c0c7af811bcf3cd4f3221be756a4975ec35b2d7df89d8de4313a8caa2cd54f \
6363
--hash=sha256:9455fdd9521cbf4b56d79a56b806afa94c8c22f3c8ef878536e58d941a70f6d6 \
6464
--hash=sha256:946666388eb79b307d7f497b3b33045ef807750f8e5ef3440e0ba3bbab698044
65-
pyright==1.1.354 \
66-
--hash=sha256:b1070dc774ff2e79eb0523fe87f4ba9a90550de7e4b030a2bc9e031864029a1f \
67-
--hash=sha256:f28d61ae8ae035fc52ded1070e8d9e786051a26a4127bbd7a4ba0399b81b37b5
65+
pyright==1.1.355 \
66+
--hash=sha256:bf30b6728fd68ae7d09c98292b67152858dd89738569836896df786e52b5fe48 \
67+
--hash=sha256:dca4104cd53d6484e6b1b50b7a239ad2d16d2ffd20030bcf3111b56f44c263bf
6868
pytest==8.1.1 \
6969
--hash=sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7 \
7070
--hash=sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044
71-
ruff==0.3.3 \
72-
--hash=sha256:0171aab5fecdc54383993389710a3d1227f2da124d76a2784a7098e818f92d61 \
73-
--hash=sha256:0da458989ce0159555ef224d5b7c24d3d2e4bf4c300b85467b08c3261c6bc6a8 \
74-
--hash=sha256:1eca7ff7a47043cf6ce5c7f45f603b09121a7cc047447744b029d1b719278eb5 \
75-
--hash=sha256:2700a804d5336bcffe063fd789ca2c7b02b552d2e323a336700abb8ae9e6a3f8 \
76-
--hash=sha256:352e95ead6964974b234e16ba8a66dad102ec7bf8ac064a23f95371d8b198aab \
77-
--hash=sha256:38671be06f57a2f8aba957d9f701ea889aa5736be806f18c0cd03d6ff0cbca8d \
78-
--hash=sha256:45817af234605525cdf6317005923bf532514e1ea3d9270acf61ca2440691376 \
79-
--hash=sha256:5a6cbf216b69c7090f0fe4669501a27326c34e119068c1494f35aaf4cc683778 \
80-
--hash=sha256:79bca3a03a759cc773fca69e0bdeac8abd1c13c31b798d5bb3c9da4a03144a9f \
81-
--hash=sha256:8d6ab88c81c4040a817aa432484e838aaddf8bfd7ca70e4e615482757acb64f8 \
82-
--hash=sha256:973a0e388b7bc2e9148c7f9be8b8c6ae7471b9be37e1cc732f8f44a6f6d7720d \
83-
--hash=sha256:b24c19e8598916d9c6f5a5437671f55ee93c212a2c4c569605dc3842b6820386 \
84-
--hash=sha256:be90bcae57c24d9f9d023b12d627e958eb55f595428bafcb7fec0791ad25ddfc \
85-
--hash=sha256:cfa60d23269d6e2031129b053fdb4e5a7b0637fc6c9c0586737b962b2f834493 \
86-
--hash=sha256:e7d3f6762217c1da954de24b4a1a70515630d29f71e268ec5000afe81377642d \
87-
--hash=sha256:f2831ec6a580a97f1ea82ea1eda0401c3cdf512cf2045fa3c85e8ef109e87de0 \
88-
--hash=sha256:fd66469f1a18fdb9d32e22b79f486223052ddf057dc56dea0caaf1a47bdfaf4e
71+
ruff==0.3.4 \
72+
--hash=sha256:3f3860057590e810c7ffea75669bdc6927bfd91e29b4baa9258fd48b540a4365 \
73+
--hash=sha256:519cf6a0ebed244dce1dc8aecd3dc99add7a2ee15bb68cf19588bb5bf58e0488 \
74+
--hash=sha256:60c870a7d46efcbc8385d27ec07fe534ac32f3b251e4fc44b3cbfd9e09609ef4 \
75+
--hash=sha256:64abeed785dad51801b423fa51840b1764b35d6c461ea8caef9cf9e5e5ab34d9 \
76+
--hash=sha256:6810563cc08ad0096b57c717bd78aeac888a1bfd38654d9113cb3dc4d3f74232 \
77+
--hash=sha256:6fc14fa742e1d8f24910e1fff0bd5e26d395b0e0e04cc1b15c7c5e5fe5b4af91 \
78+
--hash=sha256:986f2377f7cf12efac1f515fc1a5b753c000ed1e0a6de96747cdf2da20a1b369 \
79+
--hash=sha256:98e98300056445ba2cc27d0b325fd044dc17fcc38e4e4d2c7711585bd0a958ed \
80+
--hash=sha256:af27ac187c0a331e8ef91d84bf1c3c6a5dea97e912a7560ac0cef25c526a4102 \
81+
--hash=sha256:bb0acfb921030d00070539c038cd24bb1df73a2981e9f55942514af8b17be94e \
82+
--hash=sha256:c4fd98e85869603e65f554fdc5cddf0712e352fe6e61d29d5a6fe087ec82b76c \
83+
--hash=sha256:cf133dd744f2470b347f602452a88e70dadfbe0fcfb5fd46e093d55da65f82f7 \
84+
--hash=sha256:cf187a7e7098233d0d0c71175375c5162f880126c4c716fa28a8ac418dcf3378 \
85+
--hash=sha256:d3ee7880f653cc03749a3bfea720cf2a192e4f884925b0cf7eecce82f0ce5854 \
86+
--hash=sha256:de0d5069b165e5a32b3c6ffbb81c350b1e3d3483347196ffdf86dc0ef9e37dd6 \
87+
--hash=sha256:df52972138318bc7546d92348a1ee58449bc3f9eaf0db278906eb511889c4b50 \
88+
--hash=sha256:f0f4484c6541a99862b693e13a151435a279b271cff20e37101116a21e2a1ad1
8989
setuptools==69.2.0 \
9090
--hash=sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e \
9191
--hash=sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c

src/validators/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,4 @@
7979
"validator",
8080
)
8181

82-
__version__ = "0.23.2"
82+
__version__ = "0.24.0"

src/validators/utils.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from functools import wraps
55
from inspect import getfullargspec
66
from itertools import chain
7+
from os import environ
78
from typing import Any, Callable, Dict
89

910

@@ -64,17 +65,38 @@ def validator(func: Callable[..., Any]):
6465
(Callable[..., ValidationError | Literal[True]]):
6566
A decorator which returns either `ValidationError`
6667
or `Literal[True]`.
68+
69+
Raises:
70+
(ValidationError): If `r_ve` or `RAISE_VALIDATION_ERROR` is `True`
6771
"""
6872

6973
@wraps(func)
7074
def wrapper(*args: Any, **kwargs: Any):
75+
raise_validation_error = False
76+
if "r_ve" in kwargs:
77+
raise_validation_error = True
78+
del kwargs["r_ve"]
79+
if environ.get("RAISE_VALIDATION_ERROR", "False") == "True":
80+
raise_validation_error = True
81+
7182
try:
72-
return (
73-
True
74-
if func(*args, **kwargs)
75-
else ValidationError(func, _func_args_as_dict(func, *args, **kwargs))
76-
)
77-
except Exception as exp:
78-
return ValidationError(func, _func_args_as_dict(func, *args, **kwargs), str(exp))
83+
if raise_validation_error:
84+
if func(*args, **kwargs):
85+
return True
86+
else:
87+
raise ValidationError(func, _func_args_as_dict(func, *args, **kwargs))
88+
else:
89+
return (
90+
True
91+
if func(*args, **kwargs)
92+
else ValidationError(func, _func_args_as_dict(func, *args, **kwargs))
93+
)
94+
except (ValueError, TypeError) as exp:
95+
if raise_validation_error:
96+
raise ValidationError(
97+
func, _func_args_as_dict(func, *args, **kwargs), str(exp)
98+
) from exp
99+
else:
100+
return ValidationError(func, _func_args_as_dict(func, *args, **kwargs), str(exp))
79101

80102
return wrapper

0 commit comments

Comments
 (0)