FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
validators/src/validators/cron.py at 0.32.0 · python-validators/validators · GitHub
python-validators
validators
Repository navigation
Code
Issues
6
(6)
Pull requests
34
(34)
Discussions
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
validators
/
src
/
validators
/
cron.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
78 lines (62 loc) · 2.23 KB
Breadcrumbs
validators
/
src
/
validators
/
cron.py
Copy path
File metadata and controls
78 lines (62 loc) · 2.23 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
"""Cron."""
# local
from
.
utils
import
validator
def
_validate_cron_component
(
component
:
str
,
min_val
:
int
,
max_val
:
int
):
if
component
==
"*"
:
return
True
if
component
.
isdecimal
():
return
min_val
<=
int
(
component
)
<=
max_val
if
"/"
in
component
:
parts
=
component
.
split
(
"/"
)
if
len
(
parts
)
!=
2
or
not
parts
[
1
].
isdecimal
()
or
int
(
parts
[
1
])
<
1
:
return
False
if
parts
[
0
]
==
"*"
:
return
True
return
parts
[
0
].
isdecimal
()
and
min_val
<=
int
(
parts
[
0
])
<=
max_val
if
"-"
in
component
:
parts
=
component
.
split
(
"-"
)
if
len
(
parts
)
!=
2
or
not
parts
[
0
].
isdecimal
()
or
not
parts
[
1
].
isdecimal
():
return
False
start
,
end
=
int
(
parts
[
0
]),
int
(
parts
[
1
])
return
min_val
<=
start
<=
max_val
and
min_val
<=
end
<=
max_val
and
start
<=
end
if
","
in
component
:
for
item
in
component
.
split
(
","
):
if
not
_validate_cron_component
(
item
,
min_val
,
max_val
):
return
False
return
True
# return all(
# _validate_cron_component(item, min_val, max_val) for item in component.split(",")
# ) # throws type error. why?
return
False
@
validator
def
cron
(
value
:
str
,
/
):
"""Return whether or not given value is a valid cron string.
Examples:
>>> cron('*/5 * * * *')
# Output: True
>>> cron('30-20 * * * *')
# Output: ValidationError(func=cron, ...)
Args:
value:
Cron string to validate.
Returns:
(Literal[True]): If `value` is a valid cron string.
(ValidationError): If `value` is an invalid cron string.
"""
if
not
value
:
return
False
try
:
minutes
,
hours
,
days
,
months
,
weekdays
=
value
.
strip
().
split
()
except
ValueError
as
err
:
raise
ValueError
(
"Badly formatted cron string"
)
from
err
if
not
_validate_cron_component
(
minutes
,
0
,
59
):
return
False
if
not
_validate_cron_component
(
hours
,
0
,
23
):
return
False
if
not
_validate_cron_component
(
days
,
1
,
31
):
return
False
if
not
_validate_cron_component
(
months
,
1
,
12
):
return
False
if
not
_validate_cron_component
(
weekdays
,
0
,
6
):
return
False
return
True
Back
|
FazBrowse Home
|
New Git URL