-
Notifications
You must be signed in to change notification settings - Fork 113
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
Python nrn.Section.cell() changed from no to weak reference. #905
Conversation
looks ok to me but I will let @ramcdougal to do review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, but note that the original cell name continues to appear in the section name after the cell is deleted.
assert soma.cell() == c | ||
del c | ||
assert soma.cell() == None | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Haven't tested, but from the code it looks like soma.name()
is still "hello.soma"
after the cell is deleted. Is that the "right" behavior?
I'm leaning towards it's the right thing, but I wanted to raise the question.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was perplexed by this case also. It represents an earlier misuse of the cell=...
argument in that the section is supposed to be referenced by the container and destroyed when the container is destroyed. I suppose it would be possible to invalidate the section in the case where the section lives outside the cell but I don't think that is the correct behavior either.
The alternative of removing that part of the name so that it suddenly appears to be a section at the "top level" I think is inappropriate. Augmenting the cell part of the name so that it indicates the cell has been destroyed I don't think is worthwhile. Another possibility is to generate a warning or an error if this "misuse" happens. As the name of a Python Section is not entirely substantive (merely a label for gui display) I tend toward leaving it as is.
Fixes issue #898
A Side effect of this issue is that reasonable error messages are generated if the cell associated with a Section cannot have a weak reference. E.g. the cell cannot be a string.