Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Requirements too strict #24

Open
schmiph2 opened this issue Jul 13, 2023 · 6 comments
Open

Requirements too strict #24

schmiph2 opened this issue Jul 13, 2023 · 6 comments

Comments

@schmiph2
Copy link

Hi everyone

Thanks for the great package. Its working really good. One thing that's blocking me are the strict requirements (all versions set by == and not >). Could you fix this? I assume the versions could be quite flexible. The requirement thats hurting me the most is protobuf==3.20.1 as this is conflicting with my Tensorflow requirements (obviously, these could be installed in separate venvs, but its making my workflow much more complicated).

Thanks for your help!

@timreyes
Copy link

@schmiph2 Thanks for the feedback! I'll send this over to our software team for review.

@huffman
Copy link
Contributor

huffman commented Jul 14, 2023

Hi @schmiph2,

How are you pulling in the package? If you install via pypi/pip, the requirements are much more flexible. The requirements can by found in the pyproject.toml file: https://github.com/saleae/logic2-automation/blob/develop/python/pyproject.toml

I do see 3.20.1 in the requirements.txt file. I'll need to see if we depend on that anywhere, and possibly remove it.

@schmiph2
Copy link
Author

I installed via pip on a venv on a Linux machine. When I pip-compile the requirements

logic2-automation
tensorflow==2.9.3

I get a compatible configuration (with protobuf==3.19.6). But when I install this configuration and try to from saleae import automation I get the following error

Python 3.10.6 (main, Aug  2 2022, 15:11:28) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from saleae import automation
There was an error that occurred while importing grpc/pb modules.
This can be caused by pb files that were generated using an incompatible version of protobuf.
You can regenerate these files by reinstalling logic2-automation:

     pip install logic2-automation --force-reinstall

 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/mypath/venv/lib/python3.10/site-packages/saleae/automation/__init__.py", line 12, in <module>
    raise exc from None
  File /mypath/venv/lib/python3.10/site-packages/saleae/automation/__init__.py", line 2, in <module>
    from saleae.grpc import saleae_pb2, saleae_pb2_grpc
  File "/mypath/venv/lib/python3.10/site-packages/saleae/grpc/saleae_pb2.py", line 5, in <module>
    from google.protobuf.internal import builder as _builder
ImportError: cannot import name 'builder' from 'google.protobuf.internal' (/mypath/venv/lib/python3.10/site-packages/google/protobuf/internal/__init__.py)
>>>

I do really know nothing about protobuf, so I'm a bit lost here

@huffman
Copy link
Contributor

huffman commented Jul 21, 2023

Hi @schmiph2,

I can reproduce this locally. The core issue is that the latest version of grpcio_tools is being used to build the python protobuf files, which will be incompatible with 3.19.6. Unfortunately you can't also pin grpcio_tools to an older version - I think this is a new issue related to moving grpcio_tools to be a build-time only dependency.

A workaround is to pin the versions in logic2-automation. This isn't a fix we can merge, but you can try installing this package:

logic2_automation-1.0.7a1.tar.gz

You can put that next to your requirements.txt and update requirements.txt to ./logic2_automation-1.0.7a1.tar.gz

--

I'll need to do more testing on this. I don't think we will get a proper fix published soon, but I will update here when we do.

Please let me know if that works for you,

Ryan

@schmiph2
Copy link
Author

schmiph2 commented Aug 4, 2023

Hi Ryan

Sorry for the late reply and thank you for the fix. It works with the archive you've attached. But unfortunately this doesn't solve my problem, as I want to use logic2-automation in a bigger repo where such "hacks" as placing the code just next to the requirements.txt is not possible. Do you think I could use logic2-automation==1.0.5 and pin the grpcio_tools version?

@schmiph2
Copy link
Author

schmiph2 commented Aug 4, 2023

Just tested it, it doesn't work with logic2-automation==1.0.5 and pin the grpcio_tools. It obviously works only when I set the --no-build-isolation flag during installation. But thats also something we don't want.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants