A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/protocolbuffers/protobuf/commit/e3e56c72a9fafb64fd25853e183fffa2bd12b0b7 below:

Generate .pyi files in py_proto_library (#10366) (#21567) · protocolbuffers/protobuf@e3e56c7 · GitHub

@@ -17,6 +17,13 @@ _PyProtoInfo = provider(

17 17

(depset[File]) Files from the transitive closure implicit proto

18 18

dependencies""",

19 19

"transitive_sources": """(depset[File]) The Python sources.""",

20 +

"direct_pyi_files": """

21 +

(depset[File]) Type definition files (usually `.pyi` files)

22 +

for the Python modules provided by this target.""",

23 +

"transitive_pyi_files": """

24 +

(depset[File]) The transitive set of type definition files

25 +

(usually `.pyi` files) for the Python modules for this target

26 +

and its transitive dependencies.""",

20 27

},

21 28

)

22 29

@@ -61,6 +68,7 @@ def _py_proto_aspect_impl(target, ctx):

61 68

api_deps = [proto_lang_toolchain_info.runtime]

62 69 63 70

generated_sources = []

71 +

generated_stubs = []

64 72

proto_info = target[ProtoInfo]

65 73

proto_root = proto_info.proto_source_root

66 74

if proto_info.direct_sources:

@@ -72,6 +80,14 @@ def _py_proto_aspect_impl(target, ctx):

72 80

name_mapper = lambda name: name.replace("-", "_").replace(".", "/"),

73 81

)

74 82 83 +

# Generate pyi files

84 +

generated_stubs = proto_common.declare_generated_files(

85 +

actions = ctx.actions,

86 +

proto_info = proto_info,

87 +

extension = "_pb2.pyi",

88 +

name_mapper = lambda name: name.replace("-", "_").replace(".", "/"),

89 +

)

90 + 75 91

# Handles multiple repository and virtual import cases

76 92

if proto_root.startswith(ctx.bin_dir.path):

77 93

proto_root = proto_root[len(ctx.bin_dir.path) + 1:]

@@ -84,12 +100,17 @@ def _py_proto_aspect_impl(target, ctx):

84 100

else:

85 101

proto_root = ctx.workspace_name + "/" + proto_root

86 102 103 +

additional_args = ctx.actions.args()

104 +

if generated_stubs:

105 +

additional_args.add(plugin_output, format = "--pyi_out=%s")

106 + 87 107

proto_common.compile(

88 108

actions = ctx.actions,

89 109

proto_info = proto_info,

90 110

proto_lang_toolchain_info = proto_lang_toolchain_info,

91 -

generated_files = generated_sources,

111 +

generated_files = generated_sources + generated_stubs,

92 112

plugin_output = plugin_output,

113 +

additional_args = additional_args,

93 114

)

94 115 95 116

# Generated sources == Python sources

@@ -104,6 +125,13 @@ def _py_proto_aspect_impl(target, ctx):

104 125

direct = python_sources,

105 126

transitive = [dep.transitive_sources for dep in deps],

106 127

)

128 +

direct_pyi_files = depset(

129 +

direct = generated_stubs,

130 +

)

131 +

transitive_pyi_files = depset(

132 +

direct = generated_stubs,

133 +

transitive = [dep.transitive_pyi_files for dep in deps],

134 +

)

107 135 108 136

return [

109 137

_PyProtoInfo(

@@ -119,6 +147,8 @@ def _py_proto_aspect_impl(target, ctx):

119 147

),

120 148

runfiles_from_proto_deps = runfiles_from_proto_deps,

121 149

transitive_sources = transitive_sources,

150 +

direct_pyi_files = direct_pyi_files,

151 +

transitive_pyi_files = transitive_pyi_files,

122 152

),

123 153

]

124 154

@@ -150,6 +180,13 @@ def _py_proto_library_rule(ctx):

150 180

default_outputs = depset(

151 181

transitive = [info.transitive_sources for info in pyproto_infos],

152 182

)

183 +

direct_pyi_files = []

184 +

for info in pyproto_infos:

185 +

direct_pyi_files.extend(info.direct_pyi_files.to_list())

186 +

transitive_pyi_files = depset(

187 +

direct = direct_pyi_files,

188 +

transitive = [info.transitive_pyi_files for info in pyproto_infos],

189 +

)

153 190 154 191

return [

155 192

DefaultInfo(

@@ -166,6 +203,8 @@ def _py_proto_library_rule(ctx):

166 203

PyInfo(

167 204

transitive_sources = default_outputs,

168 205

imports = depset(transitive = [info.imports for info in pyproto_infos]),

206 +

direct_pyi_files = depset(direct = direct_pyi_files),

207 +

transitive_pyi_files = transitive_pyi_files,

169 208

# Proto always produces 2- and 3- compatible source files

170 209

has_py2_only_sources = False,

171 210

has_py3_only_sources = False,


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4