docs/versions/6.5.0/rules/lib/ProtoInfo.mdx
Encapsulates information provided by <a href="/versions/6.5.0/reference/be/protocol-buffer#proto_library">proto_library.</a><p>Please consider using load("@rules_proto//proto:defs.bzl", "ProtoInfo") to load this symbol from <a href="https://github.com/bazelbuild/rules_proto">rules_proto</a>.</p>
<h2 id="check_deps_sources">check_deps_sources</h2>
<p><pre class="rule-signature"><a class="anchor" href="depset.html">depset</a> ProtoInfo.check_deps_sources</pre></p>
Proto sources from the 'srcs' attribute. If the library is a proxy library that has no sources, it contains the check_deps_sources from this library's direct deps.
<h2 id="direct_descriptor_set">direct_descriptor_set</h2>
<p><pre class="rule-signature"><a class="anchor" href="File.html">File</a> ProtoInfo.direct_descriptor_set</pre></p>
The <a href="https://github.com/google/protobuf/search?q=%22message+FileDescriptorSet%22+path%3A%2Fsrc">FileDescriptorSet</a> of the direct sources. If no srcs, contains an empty file.
<h2 id="direct_sources">direct_sources</h2>
<p><pre class="rule-signature"><a class="anchor" href="list.html">list</a> ProtoInfo.direct_sources</pre></p>
Proto sources from the 'srcs' attribute.
<h2 id="proto_source_root">proto_source_root</h2>
<p><pre class="rule-signature"><a class="anchor" href="string.html">string</a> ProtoInfo.proto_source_root</pre></p>
The directory relative to which the .proto files defined in the proto_library are defined. For example, if this is 'a/b' and the rule has the file 'a/b/c/d.proto' as a source, that source file would be imported as 'import c/d.proto'
<h2 id="to_json">to_json</h2>
<p><pre class="rule-signature"><a class="anchor" href="string.html">string</a> ProtoInfo.to_json()</pre></p>
<b>Deprecated</b>. This API is deprecated and will be removed soon. Please do not depend on it. It is <i>disabled</i> with <code>---incompatible_struct_has_no_methods</code>. Use this flag to verify your code is compatible with its imminent removal.
Creates a JSON string from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs, a list of these types or a dictionary with string keys and values of these types. Quotes and new lines in strings are escaped. Examples:
<pre class=language-python>struct(key=123).to_json() # {"key":123} struct(key=True).to_json() # {"key":true} struct(key=[1, 2, 3]).to_json() # {"key":[1,2,3]} struct(key='text').to_json() # {"key":"text"} struct(key=struct(inner_key='text')).to_json() # {"key":{"inner_key":"text"}} struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_json() # {"key":[{"inner_key":1},{"inner_key":2}]} struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_json() # {"key":{"inner_key":{"inner_inner_key":"text"}}} </pre>.<p>Deprecated: instead, use json.encode(x) or json.encode_indent(x), which work for values other than structs and do not pollute the struct field namespace. <h2 id="to_proto">to_proto</h2>
<p><pre class="rule-signature"><a class="anchor" href="string.html">string</a> ProtoInfo.to_proto()</pre></p>
<b>Deprecated</b>. This API is deprecated and will be removed soon. Please do not depend on it. It is <i>disabled</i> with <code>---incompatible_struct_has_no_methods</code>. Use this flag to verify your code is compatible with its imminent removal.
Creates a text message from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs or dicts or lists of these types. Quotes and new lines in strings are escaped. Struct keys are iterated in the sorted order. Examples:
<pre class=language-python>struct(key=123).to_proto() # key: 123 struct(key=True).to_proto() # key: true struct(key=[1, 2, 3]).to_proto() # key: 1 # key: 2 # key: 3 struct(key='text').to_proto() # key: "text" struct(key=struct(inner_key='text')).to_proto() # key { # inner_key: "text" # } struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_proto() # key { # inner_key: 1 # } # key { # inner_key: 2 # } struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_proto() # key { # inner_key { # inner_inner_key: "text" # } # } struct(foo={4: 3, 2: 1}).to_proto() # foo: { # key: 4 # value: 3 # } # foo: { # key: 2 # value: 1 # } </pre><p>Deprecated: use proto.encode_text(x) instead. <h2 id="transitive_descriptor_sets">transitive_descriptor_sets</h2>
<p><pre class="rule-signature"><a class="anchor" href="depset.html">depset</a> ProtoInfo.transitive_descriptor_sets</pre></p>
A set of <a href="https://github.com/google/protobuf/search?q=%22message+FileDescriptorSet%22+path%3A%2Fsrc">FileDescriptorSet</a> files of all dependent proto_library rules, and this one's. This is not the same as passing --include_imports to proto-compiler. Will be empty if no dependencies.
<h2 id="transitive_imports">transitive_imports</h2>
<p><pre class="rule-signature"><a class="anchor" href="depset.html">depset</a> ProtoInfo.transitive_imports</pre></p>
Transitive imports including weak dependencies.
<h2 id="transitive_proto_path">transitive_proto_path</h2>
<p><pre class="rule-signature"><a class="anchor" href="depset.html">depset</a> ProtoInfo.transitive_proto_path</pre></p>
A set of proto source roots collected from the transitive closure of this rule.
<h2 id="transitive_sources">transitive_sources</h2>
<p><pre class="rule-signature"><a class="anchor" href="depset.html">depset</a> ProtoInfo.transitive_sources</pre></p>
Proto sources for this rule and all its dependent protocol buffer rules.