-
Notifications
You must be signed in to change notification settings - Fork 109
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
where are the compas.geometry.trimesh* dependencies defined? #1334
Comments
(almost) all of these functions receive their implementation from plugins. |
that said, the pluggable/plugin mechanism is in this case certainly not as useful as for example in the case of Brep and Nurbs... |
right, and there is a neat docstring with no body... what I find hard to grasp where
from .trimesh_geodistance_numpy import trimesh_geodesic_distances_numpy
if method == "exact":
raise NotImplementedError
return trimesh_geodesic_distances_numpy(M, [source])
|
the plugins have nothing to do with see here for an example: https://github.com/compas-dev/compas_cgal/blob/dd9f32aade7e81e8c9f941885545dc4042bbec45/src/compas_cgal/slicer.py#L11 i noticed a few broken code paths indeed. have already fixed them and will send a PR. the explicit registration of plugins for pluggables has been discussed on several occasions in the past. we can start the discussion again based on this thread... in addition to the explicit registration of the (known) plugins for each pluggable, the goal is to have a default implementation for all of them (ideally in pure Python) that might be slow or less robust but is always available. |
One of the main reasons why we don't register known plugins in core is licensing. Adding an explicit registration would put in us in a grey zone in terms of how the plugin's license affects core's license. This is particularly the case with stuff like cgal and igl that have strong copyleft licenses (sometimes paired with a more liberal one in a dual licensing model). Besides that, I find that from a software architecture point of view, registering a dependency on the "parent's side" creates an ugly circular dependency situation that is not clean to manage. |
Thanks for the reference to the example @tomvanmele , that's insightful. I'm curious to have your thoughts on conditional |
gotcha
I'm not contesting the usefulness of a plugin mechanism. [1] any reference to |
While |
indeed, it's partially inspired by it |
(pip)
(conda)
See here for the selectors -- so many architectures, except for our "beloved" (conda+pip) Still, deferring to |
Ah sorry, I used the wrong term. I didn't mean So, I thought we were referring to the possibility of doing something like Creating an environment file definitely allows to fallback to pip, but it doesn't solve the problem because 1) it's not the same as a conda recipe, e.g. we lose the It's technically possible to provide an env file and instruct people to do One alternatively would be to create bundle packages, much like ROS does, we could have |
aha, yes I think so too...
by no means I'm challenging I don't follow your comment: for please see the earlier comment wrt |
i don't think the conditional requirements help in this case. in the case of if you want perhaps the solution is to simply reference the plugins from the docs, clearly stating that their installation and related licensing is the responsibility of the user, and add an environment file to the |
+1 |
sorry for all the technicalities, yes that is the point, to have a path that in |
while
compas
is in an overall terrific state and a mature library,compas.geomtry.trimesh*
is a glaring exception.can we consider whether to move it out of the
core
lib into a module of its own?The text was updated successfully, but these errors were encountered: