Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
y
z
Enumerations
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
z
Classes
Class List
Class Hierarchy
Class Members
All
:
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
[
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
y
Enumerations
a
b
c
d
e
f
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
z
Properties
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Related Functions
:
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
z
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
grpc
tools
buildgen
plugins
check_attrs.py
Go to the documentation of this file.
1
# Copyright 2019 gRPC authors.
2
#
3
# Licensed under the Apache License, Version 2.0 (the "License");
4
# you may not use this file except in compliance with the License.
5
# You may obtain a copy of the License at
6
#
7
# http://www.apache.org/licenses/LICENSE-2.0
8
#
9
# Unless required by applicable law or agreed to in writing, software
10
# distributed under the License is distributed on an "AS IS" BASIS,
11
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
# See the License for the specific language governing permissions and
13
# limitations under the License.
14
"""Buildgen attribute validation plugin."""
15
16
17
def
anything
():
18
return
lambda
v:
None
19
20
21
def
one_of
(values):
22
return
lambda
v: (
'{0} is not in [{1}]'
.
format
(v, values)
23
if
v
not
in
values
else
None
)
24
25
26
def
subset_of
(values):
27
return
lambda
v: (
'{0} is not subset of [{1}]'
.
format
(v, values)
28
if
not
all
(e
in
values
for
e
in
v)
else
None
)
29
30
31
VALID_ATTRIBUTE_KEYS_MAP = {
32
'filegroup'
: {
33
'deps'
:
anything
(),
34
'headers'
:
anything
(),
35
'plugin'
:
anything
(),
36
'public_headers'
:
anything
(),
37
'src'
:
anything
(),
38
'uses'
:
anything
(),
39
},
40
'lib'
: {
41
'asm_src'
:
anything
(),
42
'baselib'
:
anything
(),
43
'boringssl'
:
one_of
((
True
,)),
44
'build_system'
:
anything
(),
45
'build'
:
anything
(),
46
'cmake_target'
:
anything
(),
47
'defaults'
:
anything
(),
48
'deps_linkage'
:
one_of
((
'static'
,)),
49
'deps'
:
anything
(),
50
'dll'
:
one_of
((
True
,
'only'
)),
51
'filegroups'
:
anything
(),
52
'generate_plugin_registry'
:
anything
(),
53
'headers'
:
anything
(),
54
'language'
:
one_of
((
'c'
,
'c++'
,
'csharp'
)),
55
'LDFLAGS'
:
anything
(),
56
'platforms'
:
subset_of
((
'linux'
,
'mac'
,
'posix'
,
'windows'
)),
57
'public_headers'
:
anything
(),
58
'secure'
:
one_of
((
'check'
,
True
,
False
)),
59
'src'
:
anything
(),
60
'vs_proj_dir'
:
anything
(),
61
'zlib'
:
one_of
((
True
,)),
62
},
63
'target'
: {
64
'args'
:
anything
(),
65
'benchmark'
:
anything
(),
66
'boringssl'
:
one_of
((
True
,)),
67
'build'
:
anything
(),
68
'ci_platforms'
:
anything
(),
69
'corpus_dirs'
:
anything
(),
70
'cpu_cost'
:
anything
(),
71
'defaults'
:
anything
(),
72
'deps'
:
anything
(),
73
'dict'
:
anything
(),
74
'exclude_configs'
:
anything
(),
75
'exclude_iomgrs'
:
anything
(),
76
'excluded_poll_engines'
:
anything
(),
77
'filegroups'
:
anything
(),
78
'flaky'
:
one_of
((
True
,
False
)),
79
'gtest'
:
one_of
((
True
,
False
)),
80
'headers'
:
anything
(),
81
'language'
:
one_of
((
'c'
,
'c89'
,
'c++'
,
'csharp'
)),
82
'maxlen'
:
anything
(),
83
'platforms'
:
subset_of
((
'linux'
,
'mac'
,
'posix'
,
'windows'
)),
84
'run'
:
one_of
((
True
,
False
)),
85
'secure'
:
one_of
((
'check'
,
True
,
False
)),
86
'src'
:
anything
(),
87
'timeout_seconds'
:
anything
(),
88
'uses_polling'
:
anything
(),
89
'vs_proj_dir'
:
anything
(),
90
'zlib'
:
one_of
((
True
,)),
91
},
92
'external_proto_library'
: {
93
'destination'
:
anything
(),
94
'proto_prefix'
:
anything
(),
95
'urls'
:
anything
(),
96
'hash'
:
anything
(),
97
'strip_prefix'
:
anything
(),
98
}
99
}
100
101
102
def
check_attributes
(entity, kind, errors):
103
attributes = VALID_ATTRIBUTE_KEYS_MAP[kind]
104
name = entity.get(
'name'
,
anything
())
105
for
key, value
in
list(entity.items()):
106
if
key ==
'name'
:
107
continue
108
validator = attributes.get(key)
109
if
validator:
110
error =
validator
(value)
111
if
error:
112
errors.append(
113
"{0}({1}) has an invalid value for '{2}': {3}"
.
format
(
114
name, kind, key, error))
115
else
:
116
errors.append(
"{0}({1}) has an invalid attribute '{2}'"
.
format
(
117
name, kind, key))
118
119
120
def
mako_plugin
(dictionary):
121
"""The exported plugin code for check_attr.
122
123
This validates that filegroups, libs, and target can have only valid
124
attributes. This is mainly for preventing build.yaml from having
125
unnecessary and misleading attributes accidentally.
126
"""
127
128
errors = []
129
for
filegroup
in
dictionary.get(
'filegroups'
, {}):
130
check_attributes
(filegroup,
'filegroup'
, errors)
131
for
lib
in
dictionary.get(
'libs'
, {}):
132
check_attributes
(lib,
'lib'
, errors)
133
for
target
in
dictionary.get(
'targets'
, {}):
134
check_attributes
(target,
'target'
, errors)
135
for
target
in
dictionary.get(
'external_proto_libraries'
, {}):
136
check_attributes
(target,
'external_proto_library'
, errors)
137
if
errors:
138
raise
Exception(
'\n'
.join(errors))
test_group_name.all
all
Definition:
test_group_name.py:241
http2_test_server.format
format
Definition:
http2_test_server.py:118
check_attrs.subset_of
def subset_of(values)
Definition:
check_attrs.py:26
check_attrs.mako_plugin
def mako_plugin(dictionary)
Definition:
check_attrs.py:120
check_attrs.anything
def anything()
Definition:
check_attrs.py:17
check_include_guards.validator
validator
Definition:
check_include_guards.py:206
check_attrs.check_attributes
def check_attributes(entity, kind, errors)
Definition:
check_attrs.py:102
check_attrs.one_of
def one_of(values)
Definition:
check_attrs.py:21
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:44