-
Notifications
You must be signed in to change notification settings - Fork 10
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
Add dependency on omero-py 5.8+ #45
Conversation
Remove unnecessary PyYAML dependency which should be declared transitively
I don't have any objections, but this isn't strictly necessary, right? It's still valid to use omero-cli-render with omero-py<5.8, no? |
This effectively makes the dependencies of omero-py part of the OMERO.py API. For instance if we were to strip out all the old Python 2 compatibility code from OMERO.py it wouldn't need If this is something we want can we document it in the OMERO.py docs, e.g. is it all dependencies, just YAML/future, does bumping a major version of an OMERO.py dependency count as a breaking OMERO.py release, etc. |
Sorry, my description was way incomplete - updated now. The dependency cleanup is a by-product of this PR - happy to revert it. The primary motivation was to consume the changes in ome/omero-py@dcde6b2 and reduce the warnings thrown on every invocation of the commands. |
Understood, but assuming there were a bug in 5.8 this would make it difficult for users to rollback, no?
I'm not sure I follow. It seems like only the case where omero-py didn't have a library specified, would require changes to this downstream repo:
I'm not saying there won't be situations where we will need to force a hard bump, but this isn't one of them, correct? |
It affects future maintainance of OMERO.py and all dependent projects. For example if we remove Since this is one of our own plugins we should follow whatever our "best practice" is, which we need to agree on- is it OK to rely on transitive dependencies, or should plugins explicitly require their immediate dependencies? |
If I'm following you, then we need to differentiate between internal and public or "API" requirements. Everything I've said is for the former. i.e. if the downstream product happens to also use pyyaml, so be it, but it should then import it (redundantly). In the case of public requirements that are used in method signatures, I agree with you. |
Man, this was meant to be a minimal change and it looks like I have opened a thread about dependency expectations. Sane albeit painful.
I think so. There is nothing in the plugin that requires the OMERO.py 5.8 API, it is mostly consuming a bug fix which improves the UX. Thinking more about it, I can certainly accept this is not
Would be useful to look at various guidelines. Looking at https://semver.org/#what-should-i-do-if-i-update-my-own-dependencies-without-changing-the-public-api for instance, " Software that explicitly depends on the same dependencies as your package should have their own dependency specifications and the author will notice any conflicts. ". In general it seems that semver differentiates the public API contract from the dependency bill/contract. |
On the question of the OMERO.py requirement I think it's fine to bump the minimal version to 5.8.0 even if there's no absolute requirement:
|
I agree that in this case it's likely fine, but I don't agree that it's a good general practice, but sounds like Seb wants us to have that conversation somewhere else ;) |
From https://packaging.python.org/guides/distributing-packages-using-setuptools/#install-requires, |
Coming back to this, I can't see a compelling argument to bump the minimal required version of Closing and we can continue the discussion about managing Python dependencies e.g. in ome/design#103 |
The primary motivation is to get rid of the
DeprecationWarning
thrown on every invocation ofomero render set Object:id file.yml
fixed in ome/omero-py@dcde6b2.Also remove unnecessary PyYAML dependency which should be declared transitively
Proposed tag
0.6.2