danielgtaylor / python-betterproto

Clean, modern, Python 3.6+ code generator & library for Protobuf 3 and async gRPC
MIT License
1.47k stars 205 forks source link

Merging v2? #256

Open boukeversteegh opened 3 years ago

boukeversteegh commented 3 years ago

Hi all!

Hope you are all doing great @nat-n @danielgtaylor @abn

I see v2 is still in beta and not merged to master... are we not going to merge this? I think at some point it must be considered that if we don't merge that branch, it will become stale and abandoned. A lot of work was put in it, by me and others, and many recurring issues were fixed in v2, it would be a shame to let it go to waste.

I'm not up to date with current issues, and unfortunately I don't have time to get back on board, but unless there are strong reasons to maintain 2 parallel versions (where v1 is primary and v2 unsupported), I would recommend a merge. V1 can still be accessible if users are missing it.

Cheers, Bouke

nat-n commented 3 years ago

Hi @boukeversteegh,

As far as branches are concerned, 2.x follows master, and all development effort has gone towards 2.x, so I think we're alright there.

That said, there hasn't been a lot of maintainer bandwidth available in the last few months since the v2.0.0b3 release :(

It would be nice to have a proper release of 2.0.0 at some point; in my mind there are still a few breaking changes that would be good to get in before that, particularly:

Unfortunately I don't know when I'll next have time to contribute much, so maybe it would be best to create a 2.0.0 release sooner (ideally with a few bug fixes, concerning newer features e.g. #245 #240 #235), accepting that more major version changes will be required in future.

terax6669 commented 2 years ago

Been using V2 for a while and it's... almost ready in my opinion.

The only 2 problems I'm having are:

  1. Forced case conversion during protoc compilation, but I believe that's also the case in v1?
  2. I have an example of proto that is not parsing correctly. When attempting to save as bytes one of the fields flips from 9 to 1. Due to the nature of the project I cannot share any details online, but when the maintainers are gonna get to finalizing v2 release I'm willing to share the data privately.
Gobot1234 commented 2 years ago

Been using V2 for a while and it's... almost ready in my opinion.

The only 2 problems I'm having are:

  1. Forced case conversion during protoc compilation, but I believe that's also the case in v1?

  2. I have an example of proto that is not parsing correctly. When attempting to save as bytes one of the fields flips from 9 to 1. Due to the nature of the project I cannot share any details online, but when the maintainers are gonna get to finalizing v2 release I'm willing to share the data privately.

Could you create a code snippet that can show this behaviour (it doesn't need to include the details of the stuff you can't show) and submit a issue?

fundthmcalculus commented 2 years ago

Hi @nat-n I'm currently using V2 for work with my company Trinsic.id. I'd love to help maintain the package.

lazytype commented 2 years ago

@kalzoo @Gobot1234 could a v2.0.0b4 be tagged and released to PyPI? It would help immediately unblock the ability to use Python 3.10

fundthmcalculus commented 2 years ago

@lazytype in theory you can pip install from the source on github, but that doesn't fix the underlying problem. @danielgtaylor thoughts?

Gobot1234 commented 2 years ago

@lazytype I've setup https://github.com/danielgtaylor/python-betterproto/pull/307 for the next release.

efokschaner commented 2 years ago

If I made a pr for https://github.com/danielgtaylor/python-betterproto/issues/287 is there a chance it could make it in to 2.0 ?

Gobot1234 commented 2 years ago

If I made a pr for https://github.com/danielgtaylor/python-betterproto/issues/287 is there a chance it could make it in to 2.0 ?

Absolutely

FHTMitchell commented 2 years ago

Is there any update on when we think 2.0 will be released? I'm excited to use servers and #287

terax6669 commented 1 year ago

Could you create a code snippet that can show this behaviour (it doesn't need to include the details of the stuff you can't show) and submit a issue?

Still a problem with 2.0.0b5

with open('example_raw.proto', 'rb') as f:
    tmp = Example().parse(f.read())
with open('example_parsed.proto', 'wb') as f:
    f.write(bytes(tmp))

example.zip

MichaelTiemannOSC commented 1 year ago

Watching to see how this progresses. Hope to see 2.0.0 break through soon!

FHTMitchell commented 1 year ago

@Gobot1234 What are the current blockers on this? Anything you need help with? Seems like this has been stuck in limbo for a nearly 2 years and I (and others it seems) are very keen for it!

Gobot1234 commented 1 year ago

@Gobot1234 What are the current blockers on this? Anything you need help with? Seems like this has been stuck in limbo for a nearly 2 years and I (and others it seems) are very keen for it!

I think this still stands https://github.com/danielgtaylor/python-betterproto/issues/256#issuecomment-882070414

terax6669 commented 1 year ago

@Gobot1234 What are the current blockers on this? Anything you need help with? Seems like this has been stuck in limbo for a nearly 2 years and I (and others it seems) are very keen for it!

Parser and/or exporter is broken, see my comment: https://github.com/danielgtaylor/python-betterproto/issues/256#issuecomment-1221420708

redbmk commented 1 year ago

If the latest beta seems stable enough, would there be any opposition to publishing a v2 soon, and pushing any other breaking changes into v3?

@terax6669 would a fix for the issue you're seeing be considered a breaking change or would it just be a bugfix? e.g. it could ship in v2.0.1 or something?

fazpu commented 11 months ago

buf is blocking the use of v2.0.0b6 with an argument they are waiting for a stable release - https://github.com/bufbuild/plugins/issues/95#issuecomment-1602976667.

lukasbindreiter commented 7 months ago

Is there any update on a stable v2.0.0 release? Any issues in particular that are blocking right now, where contributors may be able to help out on?

cetanu commented 7 months ago

See this milestone here

https://github.com/danielgtaylor/python-betterproto/milestone/4

I would be particularly interested in assistance for the following issue

https://github.com/danielgtaylor/python-betterproto/issues/212

I'm pretty low on time at the moment

terax6669 commented 7 months ago

@lukasbindreiter

Could you create a code snippet that can show this behaviour (it doesn't need to include the details of the stuff you can't show) and submit a issue?

Still a problem with 2.0.0b5

with open('example_raw.proto', 'rb') as f:
  tmp = Example().parse(f.read())
with open('example_parsed.proto', 'wb') as f:
  f.write(bytes(tmp))

example.zip

IMO a big issue for certain use cases

lukasbindreiter commented 7 months ago

@cetanu Thanks for the pointers, maybe I'll take a look at the issue you mentioned when I find some time. Would be happy to help out and contribute here if possible.

@terax6669 I'm not quite sure I'm following your example. I'm assuming a roundtrip of parsing and then serializing a Example message produces a different output then the original parsed bytes? Afaik the wire format explicitly states:

Implications

Is this whats going on here or something else?

could you maybe share the Example message definition you are referencing above, otherwise it's kinda hard to reproduce / check in more detail.

terax6669 commented 7 months ago

@lukasbindreiter Order can change, but the data shouldn't.

image

That being said, I can no longer reproduce this issue - so looks like it was fixed in the meantime! 👍