You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Unfortunately this currently requires using private pyrsistent APIs. It would be good to have a public API for finding this information. As a first pass it seems that adding this as extra methods to the classes themselves is problematic, insofar as it means subclasses get extra methods they weren't expecting. So maybe there should be a set of public external functions that extract information from the private implementation details.
The text was updated successfully, but these errors were encountered:
I'm thinking along the lines of a public function (introspect?) taking the class as argument and calling a private method (introspect?) that does the actual introspection. It would return a dict/pmap with information about the class. Eg:
class Foo(PRecord):
__invariant__ = lambda r: (r.y >= r.x, 'Blam!')
x = field(type=int)
y = field(type=int)
>>> introspect(Foo)
pmap({'__invariant__': ..., 'fields': pmap({'x': pmap({'type': (int,), ...}), ...})})
That's pretty much how I interpret your thoughts. Am I right?
We're about to add some code that introspects pyrsistent classes - in particular PRecord/PClass and the checked data structures - in order to detect changes to our pyrsistent-based configuration model. You can see a sketch of this code here: https://github.com/ClusterHQ/flocker/pull/1836/files#diff-c03885f8c4e64651ea9a499e99090a83R28
Unfortunately this currently requires using private pyrsistent APIs. It would be good to have a public API for finding this information. As a first pass it seems that adding this as extra methods to the classes themselves is problematic, insofar as it means subclasses get extra methods they weren't expecting. So maybe there should be a set of public external functions that extract information from the private implementation details.
The text was updated successfully, but these errors were encountered: