<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"># borrowed from jaraco.util.dictlib
class NonDataProperty(object):
	"""Much like the property builtin, but only implements __get__,
	making it a non-data property, and can be subsequently reset.

	See http://users.rcn.com/python/download/Descriptor.htm for more
	information.

	&gt;&gt;&gt; class X(object):
	...   @NonDataProperty
	...   def foo(self):
	...     return 3
	&gt;&gt;&gt; x = X()
	&gt;&gt;&gt; x.foo
	3
	&gt;&gt;&gt; x.foo = 4
	&gt;&gt;&gt; x.foo
	4
	"""

	def __init__(self, fget):
		assert fget is not None, "fget cannot be none"
		assert callable(fget), "fget must be callable"
		self.fget = fget

	def __get__(self, obj, objtype=None):
		if obj is None:
			return self
		return self.fget(obj)
</pre></body></html>