-
Notifications
You must be signed in to change notification settings - Fork 85
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
APIs allow repeated capabilities to access attributes and methods that don't support them #2038
Comments
When we first developed nimi-python, we didn't have metadata stating what driver functions/attributes supported which repeated capabilities. But now we do. A better design would be, in my opinion, to generate a Channel, Pin, MarkerEvent, etc. class with only those functions and attributes that apply. The repeated capabilities "container" would return one of these, rather than a _SessionBase. This is not a trivial change to make though. |
Agreed, this would be a major change. |
FWIW, I think the title of this issue makes the problem seem bigger than it really is. It's true that the Python bindings will allow the client to call into the driver with an invalid set of arguments, but the driver runtime will still catch it and report a helpful error. It's just that we could improve on it and make it impossible to call the driver runtime in such way. |
Changing the repeated capability object types would have more value if you added type hints. :) Then it would affect which properties show up in autocomplete. |
Perhaps, but I' m not sure how else to word it. I did label it as an enhancement, rather than a bug.
Yes, the driver should still error. |
Yes, I think there's at least some overlap with #2019. |
Description of issue
As of nimi-python 1.4.7, the way repeated capabilities work is thus:
_RepeatedCapabilities
object, such asSession.channels
, is accessed, it returns a_SessionBase
object with_SessionBase.repeated_capability
updated, based on what's passed to index operator[]
._SessionBase.repeated_capability
is passed to the method or SetAttribute method._SessionBase is one big collection of properties and methods that support repeated capabilities, with no distinction of which repeated capabilities are supported. As an example, the nifgen API will allow a user to set an attribute that supports the
data_marker
repeated capability with thescript_trigger
repeated capability. Because we allow this, the user may be puzzled when they get back an error.The text was updated successfully, but these errors were encountered: