Viewing File: /opt/imunify360/venv/lib/python3.11/site-packages/pyrsistent/__pycache__/_immutable.cpython-311.pyc
]j d dl Z ddZdS ) N ImmutableFc t t r( dd fd}d d D }d ||rd|z nd | | }|rt
| d
dlm} t |d
} t || n5# t $ r(}t t | dz |z |d}~ww xY w|| S )a
Produces a class that either can be used standalone or as a base class for persistent classes.
This is a thin wrapper around a named tuple.
Constructing a type and using it to instantiate objects:
>>> Point = immutable('x, y', name='Point')
>>> p = Point(1, 2)
>>> p2 = p.set(x=3)
>>> p
Point(x=1, y=2)
>>> p2
Point(x=3, y=2)
Inheriting from a constructed type. In this case no type name needs to be supplied:
>>> class PositivePoint(immutable('x, y')):
... __slots__ = tuple()
... def __new__(cls, x, y):
... if x > 0 and y > 0:
... return super(PositivePoint, cls).__new__(cls, x, y)
... raise Exception('Coordinates must be positive!')
...
>>> p = PositivePoint(1, 2)
>>> p.set(x=3)
PositivePoint(x=3, y=2)
>>> p.set(y=-3)
Traceback (most recent call last):
Exception: Coordinates must be positive!
The persistent class also supports the notion of frozen members. The value of a frozen member
cannot be updated. For example it could be used to implement an ID that should remain the same
over time. A frozen member is denoted by a trailing underscore.
>>> Point = immutable('x, y, id_', name='Point')
>>> p = Point(1, 2, id_=17)
>>> p.set(x=3)
Point(x=3, y=2, id_=17)
>>> p.set(id_=18)
Traceback (most recent call last):
AttributeError: Cannot set frozen members id_
, c v d D } | r)d d | S dS )Nc B g | ]}| d d|z S )_'%s')endswith).0fs u/builddir/build/BUILD/imunify360-venv-2.6.3/opt/imunify360/venv/lib/python3.11/site-packages/pyrsistent/_immutable.py
<listcomp>z9immutable.<locals>.frozen_member_test.<locals>.<listcomp>5 s+ IIICI&1*III z
frozen_fields = fields_to_modify & set([{frozen_members}])
if frozen_fields:
raise AttributeError('Cannot set frozen members %s' % ', '.join(frozen_fields))
, )frozen_membersr )formatjoin)r memberss r frozen_member_testz%immutable.<locals>.frozen_member_test4 sN IIgIII A dii&?&?@@
A rr r c 3 K | ] }d |z V
dS )r N )r
ms r <genexpr>zimmutable.<locals>.<genexpr>? s&