TomWhitwell / SlowMovie

MIT License
349 stars 69 forks source link

Python Libs Update #80

Closed robweber closed 3 years ago

robweber commented 3 years ago

When running the install.sh file Python lib dependencies are not updated. It appears as though when installing from a git URL using pip it will not honor version updates in a setup.py or setup.cfg file.

The fix for this is to use the -U flag to force updates of all dependencies to the latest version. This works great but one question before merging I have is if we want to start specifying specific versions within the requirements.txt file? Our requirements for these libraries are pretty minimal so it's unlikely updates will break things; however by specifying known working versions we are covering our bases as well. For Git URLs you can specify a tagged revision so for libs like omni-epd we can add @v0.2.3 as part of the URL string.

Of course the downside to this is that we'll need a lot more hand-holding to the requiements.txt file as versions of the libraries change. Any thoughts on this?

missionfloyd commented 3 years ago

Makes sense, we know it works with at least the current versions.

Should waveshare-epd stay in requirements.txt? We're not using it directly anymore.

robweber commented 3 years ago

I can pull out the waveshare libs since omni-epd will pull them in. Either way they'll get installed so shouldn't be a big deal. I'll update the requirements file with the most current versions numbers as well of the libs we do have in there.

I also believe this will satisfy #70 when it's merged in. The -U option should always pull in Git URLs so that fix that issue too.

robweber commented 3 years ago

One weird quirk to removing the waveshare git URL from the requirements.txt file has surfaced. It appears that when pip install -U is used with the -r option it will download and rebuild dependencies from URLs, ie the git sourced libraries. This does not happen when git URLs are sourced in a setup.py or setup.cfg file as they are done in the omni-epd library.

I even went so far in testing as to specify specific commits on the waveshare repo and these are ignored as well, even using -U. Documentation I've found states that pip will not respect git tags or commit hashes as part of a versioning scheme. This seemingly makes it impossible to ensure the waveshare libs are updated since waveshare doesn't submit to PyPi or use versioning on their repo.

Seems the only surefire way to make sure it always gets updated is to include it in the requirements.txt file.

missionfloyd commented 3 years ago

Might as well leave it then.

robweber commented 3 years ago

Added the waveshare repo back in to requirements.txt. Tested it and when using pip3 install -U it will download and rebuild the library each time now. I did use the tagged version of the omni-epd repo as part of the URL so we can specify specific versions of that like we can with PyPi packages. It will rebuild each time as well since it's a repo URL but it will go to that specific tag.

robweber commented 3 years ago

Going to merge this in - any issues with documentation can be cleaned up later if needed. This way we can get the library re-building during updates.