I guess it would not be a big deal to include this code, since Python won't
load it until it is explicitly imported anyway.  Can someone file a bug to
have plugin_pb2.py included in the base installation for the next release?

On Sat, Oct 9, 2010 at 11:50 AM, Gregory Szorc <gregory.sz...@gmail.com>wrote:

>  I agree with Louis-Marie: I would like the compiler file(s) included in
> the Python package.
>
> Every protoc plugin written in Python will need to import the
> google.protobuf.compiler.plugin_pb2 module. This means that any user
> wishing to use that plugin (it isn't limited to plugin developers
> themselves) will be out of luck with a default Python protobuf install,
> which omits this file.
>
> There are a couple of workarounds (non-exhaustive list):
>
> 1) compiler plugin packages can copy generated code from plugin_pb2.py to
> their project/module and distribute it themselves.
> 2) Python plugins can tell end-users to manually compile and
> install plugin_pb2.py.
> 3) Don't use Python for the compiler plugin.
>
> So, these workarounds require me to feel dirty that I'm copying code
> instead of using a library verbatim (1), take a risk that the produced
> plugin_pb2.py file won't change with a future release (1), force all users
> of my plugin to jump through extra steps (2), and/or write my compiler
> plugin in a language in which I'm not as proficient (3).
>
> While it is true that the majority of installations will likely never
> utilize the compiler plugin module, for those that do, the barrier to
> entry can be increased and resolving the issue can be extremely frustrating,
> especially if compiler plugins don't have the documentation telling users
> how to resolve the import failure. Since it doesn't "just work," the
> experience tarnishes the image of the plugin and of protocol buffers itself.
>
>  The only argument against inclusion so far is package bloat. On my
> system, plugin_pb2.py and plugin_pb2.pyc are 6247 and 4750 bytes,
> respectively. The current uncompressed egg weighs in around 500K. Are we
> really objecting over a 11k/2% size increase? That seems trivial to me,
> especially since the added file(s) won't conflict with any existing ones and
> thus there is little risk to adding it.
>
> While I would prefer that the Python installer be updated to include
> compiler.plugin_pb2, at the least could the documentation be updated to
> reflect a preferred workaround? (And I don't think forcing the use of a
> program packager like PyInstaller is the correct route either.)
>
> Greg
>
>  *From:* Jason Hsueh <jas...@google.com>
> *Sent:* Thursday, October 07, 2010 1:55 PM
> *To:* Louis-Marie <lm.mou...@gmail.com>
> *Cc:* Kenton Varda <ken...@google.com> ; protobuf@googlegroups.com
> *Subject:* Re: [protobuf] Python installation does not build plugin_pb2
>
> As Kenton said, including plugin.proto would bloat the core library. Only
> people implementing proto compilers such as yourself need to use it.
>
> On the C++ side, you would typically just build a statically linked binary
> that has all of the plugin generated code linked in. It's not included in
> the C++ core library either. There are various mechanisms to package python
> programs, e.g. http://www.pyinstaller.org/, that would allow you to give
> users a functioning plugin program without requiring that they install the
> generated modules for plugin.proto.
>
>
>   On Wed, Oct 6, 2010 at 12:42 AM, Louis-Marie <lm.mou...@gmail.com>wrote:
>
>> Thanks for your answer.
>>
>> To give you a little bit more information, here's what I'm trying to
>> do. I want to deliver a tool using a custom protoc plugin implemented
>> in python, so that end user can generate code from its own proto
>> files.
>>
>> There would be nothing special to do before using this plugin, but
>> since it depends on plugin_pb2, I need to find the plugin.proto file
>> (using pkg-config), compile it, and put it in some appropriate
>> location.
>>
>> Also, I can't put it in its "natural" parent python package
>> (google.protobuf) which is already provided by protobuf installation.
>> On the other side, the c++ code is generated (and I guess, compiled
>> into the shared library), which makes it a little bit more
>> straightforward to write c++ plugins.
>>
>> What would be the best way to achieve what I'm trying to do? If the
>> python library size increase is not acceptable there, couldn't the
>> plugin_pb2 file be generated in an independent location, so that one
>> could still rely on it being present on any protobuf install?
>>
>> Thanks for your advices,
>>
>> Louis-Marie
>>
>>
>> 2010/10/6 Kenton Varda <ken...@google.com>:
>>  > It's not generated because none of the python implementation actually
>> uses
>> > it.  So, generating it and including it in the egg would just increase
>> the
>> > library size for everyone, when most people don't need it.
>> > What makes you feel uncomfortable about generating it yourself?
>> >
>> > On Fri, Oct 1, 2010 at 6:01 AM, Louis-Marie <lm.mou...@gmail.com>
>> wrote:
>> >>
>> >> Hi all,
>> >>
>> >> It looks like python installation of protocol buffers does not
>> >> generate the google.protobuf.compiler.plugin_pb2 python file, while
>> >> google.protobuf.descriptor_pb2 is explicitly generated by
>> >> protobuf/python/setup.py
>> >>
>> >>  generate_proto("../src/google/protobuf/descriptor.proto")
>> >>
>> >> Shouldn't the plugin.proto file be compiled and installed the same
>> >> way? Maybe I am missing something there, be I feel very uncomfortable
>> >> recompiling it when I need to write a plugin.
>> >>
>> >> Thanks,
>> >>
>> >> Louis-Marie
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> Groups
>> >> "Protocol Buffers" group.
>> >> To post to this group, send email to proto...@googlegroups.com.
>> >> To unsubscribe from this group, send email to
>> >> protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
>> .
>> >> For more options, visit this group at
>> >> http://groups.google.com/group/protobuf?hl=en.
>> >>
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> Groups
>> > "Protocol Buffers" group.
>> > To post to this group, send email to proto...@googlegroups.com.
>> > To unsubscribe from this group, send email to
>> > protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
>> .
>> > For more options, visit this group at
>> > http://groups.google.com/group/protobuf?hl=en.
>> >
>>
>> --
>>  You received this message because you are subscribed to the Google
>> Groups "Protocol Buffers" group.
>> To post to this group, send email to proto...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/protobuf?hl=en.
>>
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To post to this group, send email to proto...@googlegroups.com.
> To unsubscribe from this group, send email to
> protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/protobuf?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to proto...@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to