Skip to content

Deprecate OR embrace CheckedSession also updating __dict__ #1185

@gdementen

Description

@gdementen

When working on #1168, I realized that CheckedSession has an oddity: it "forwards" all attribute writes to self.__dict__ (via object.__setattr__) in addition to self._objects, while normal Sessions do not.

When reworking that code, I removed the oddity because that's mostly useless... All our tests passed... Until I realized yesterday by accident that the demo model relied on that (it does not crash but one of their output file is empty 😉). It uses vars(self) to get a dict of variables from a CheckedSession 😱 instead of using .items(). So I will revert the removal of the forwarding from my fix but I still would like to clean that up some day.

Unsure if we can deprecate that cleanly. Does __getattribute__ triggers for accessing __dict__ via vars()?

An alternative to deprecating it would be to embrace that instead and store all objects only in __dict__ (and remove the _objects dict) for both Session and CheckedSession. Unsure what would be the consequences. Would we loose the ability to store invalid python identifiers (unsure it has any value -- maybe to convert any Array to a Session)? Can we still handle _meta?

This is also slightly related to #1171 and should be done at the same time.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions