Open marcomontevechi1 opened 1 year ago
This was intentional as we do not want to have a hard requirement on a particular epics implementation (or any at all!) at the project metadata level (we also have an optional dependency on Matplotlib) because this is much harder to remove at a packaging (e.g. conda) level. On the other hand it is very easy for packaging ecosystems to add extra dependencies.
We also have the idea of supporting other control systems (e.g. https://github.com/bluesky/ophyd-tango) and in those use cases they should be able to depend on ophyd without picking up a transient dependency on another control system.
I am inclined to continue to not have a hard dependency, however I think adding extra groups for [caproto]
and [pyepics]
would be reasonable.
I agree with not adding a hard dependency, however I do think there should be a user-facing warning in the case the dummy layer is used, as it (as shown) can create issues that are not immediately obvious as to what the cause is (maybe adding an explanation to the NotImplementedError
raised would be the best place for that).
We can not warn because we do not know we need to warn the user until we hit the error. We do not want to warn users who will never need epics.
(maybe adding an explanation to the NotImplementedError raised would be the best place for that).
I agree that is the best place for this!
When installing ophyd via pip i noticed simdetector and similar devices break:
This does not happen when installing via conda-forge. @flowln noticed that here there is a fallback to "dummy" in case neither caproto nor pyepics are installed. The error doesnt happen in conda-forge installations since they come with pyepics and caproto. Maybe adding these as dependencies in setup.py would fix this?