Skip to content
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

Merged
merged 4 commits into from
Jan 10, 2021

Conversation

nrnhines
Copy link
Member

@nrnhines nrnhines commented Jan 9, 2021

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.

@pramodk
Copy link
Member

pramodk commented Jan 9, 2021

looks ok to me but I will let @ramcdougal to do review.

Copy link
Member

@ramcdougal ramcdougal left a 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

Copy link
Member

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.

Copy link
Member Author

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.

@nrnhines nrnhines merged commit 8024ddc into master Jan 10, 2021
@alexsavulescu alexsavulescu deleted the section-cell-weakref branch May 4, 2021 14:56
olupton pushed a commit that referenced this pull request Dec 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants