HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/pyrsistent/__pycache__/_pclass.cpython-38.pyc
U

g�\�%�@s�ddlZddlmZmZmZmZddlmZmZm	Z	m
Z
mZmZddl
mZdd�ZGdd�de�Ze�Zd	d
�Ze�e�Gdd�de��ZGd
d�de�ZdS)�N)�InvariantException�CheckedType�_restore_pickle�store_invariants)�
set_fields�
check_type�is_field_ignore_extra_complaint�PFIELD_NO_INITIAL�	serialize�check_global_invariants��	transformcCst|�dko|dtkS)N�r)�lenr)�bases�r�4/usr/lib/python3/dist-packages/pyrsistent/_pclass.py�
_is_pclass	srcseZdZ�fdd�Z�ZS)�
PClassMetacsht||dd�t||dd�dtdd�|dD��|d<t|�rR|dd	7<tt|��||||�S)
N�_pclass_fields)�name�_pclass_invariantsZ
__invariant__)�_pclass_frozencss|]
}|VqdS�Nr��.0�keyrrr�	<genexpr>sz%PClassMeta.__new__.<locals>.<genexpr>�	__slots__)�__weakref__)rr�tupler�superr�__new__)ZmcsrrZdct��	__class__rrr"szPClassMeta.__new__)�__name__�
__module__�__qualname__r"�
__classcell__rrr#rr
srcCs<t||||�|�|�\}}|s,|�|�nt|||�dSr)rZ	invariant�append�setattr)�cls�fieldr�value�result�invariant_errorsZis_okZ
error_coderrr�_check_and_set_attrs
r0cs�eZdZdZ�fdd�Zdd�Zed"dd	��Zd#d
d�Zdd
�Z	dd�Z
dd�Zdd�Z�fdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Z�ZS)$�PClassa�
    A PClass is a python class with a fixed set of specified fields. PClasses are declared as python classes inheriting
    from PClass. It is defined the same way that PRecords are and behaves like a PRecord in all aspects except that it
    is not a PMap and hence not a collection but rather a plain Python object.


    More documentation and examples of PClass usage is available at https://github.com/tobgu/pyrsistent
    csRtt|��|�}|�dd�}|�dd�}g}g}|j��D]�\}}||kr�|dksZ||kr�tt||�rz|j|||d�}	q�|�||�}	n||}	t||||	||�||=q:|j	t
k	r�t|j	�r�|�	�n|j	}
t||||
||�q:|jr:|�
d�|j|��q:|�s
|�rtt|�t|�d��|�r<td�d�|�|j���t||j�d|_|S)	N�_factory_fields�ignore_extra)r3z{0}.{1}zField invariant failedz0'{0}' are not among the specified fields for {1}�, T)r!r1r"�popr�itemsr�factoryr0�initialr	�callableZ	mandatoryr)�formatr%rr �AttributeError�joinrrr)r+�kwargsr.�factory_fieldsr3Zmissing_fieldsr/rr,r-r8r#rrr"0sH
��zPClass.__new__cOs`|r|d||d<t|�}|jD](}||kr"t||t�}|tk	r"|||<q"|jfd|i|��S)a
        Set a field in the instance. Returns a new instance with the updated value. The original instance remains
        unmodified. Accepts key-value pairs or single string representing the field name and a value.

        >>> from pyrsistent import PClass, field
        >>> class AClass(PClass):
        ...     x = field()
        ...
        >>> a = AClass(x=1)
        >>> a2 = a.set(x=2)
        >>> a3 = a.set('x', 3)
        >>> a
        AClass(x=1)
        >>> a2
        AClass(x=2)
        >>> a3
        AClass(x=3)
        rrr2)�setr�getattr�_MISSING_VALUEr$)�self�argsr=r>rr-rrrr?Ts

z
PClass.setNFcs:t�|�r�S|r&�fdd�|jD��|f||d����S)a:
        Factory method. Will create a new PClass of the current type and assign the values
        specified in kwargs.

        :param ignore_extra: A boolean which when set to True will ignore any keys which appear in kwargs that are not
                             in the set of fields on the PClass.
        csi|]}|�kr|�|�qSrr)r�k�r=rr�
<dictcomp>�sz!PClass.create.<locals>.<dictcomp>)r2r3)�
isinstancer)r+r=r2r3rrEr�createts
	
z
PClass.createcCs@i}|jD]0}t||t�}|tk	r
t|j|j||�||<q
|S)z�
        Serialize the current PClass using custom serializer functions for fields where
        such have been supplied.
        )rr@rAr
Z
serializer)rBr:r.rr-rrrr
�s
zPClass.serializecGs
t||�S)aT
        Apply transformations to the currency PClass. For more details on transformations see
        the documentation for PMap. Transformations on PClasses do not support key matching
        since the PClass is not a collection. Apart from that the transformations available
        for other persistent types work as expected.
        r)rBZtransformationsrrrr
�szPClass.transformcCs>t||j�r:|jD]"}t||t�t||t�krdSqdStS)NFT)rGr$rr@rA�NotImplemented)rB�otherrrrr�__eq__�s
z
PClass.__eq__cCs
||kSrr)rBrJrrr�__ne__�sz
PClass.__ne__cstt�fdd��jD���S)Nc3s|]}|t�|t�fVqdSr)r@rAr�rBrrr�sz"PClass.__hash__.<locals>.<genexpr>)�hashr rrMrrMr�__hash__�szPClass.__hash__cs2t|dd�rtd�||���tt|��||�dS)NrFz'Can't set attribute, key={0}, value={1})r@r;r:r!r1�__setattr__�rBrr-r#rrrP�szPClass.__setattr__cCstd�|���dS)Nz-Can't delete attribute, key={0}, use remove())r;r:)rBrrrr�__delattr__�szPClass.__delattr__cCs0i}|jD] }t||t�}|tk	r
|||<q
|Sr)rr@rA)rBr.rr-rrr�_to_dict�s

zPClass._to_dictcCs(d�|jjd�dd�|����D���S)Nz{0}({1})r4css"|]\}}d�|t|��VqdS)z{0}={1}N)r:�repr)rrD�vrrrr�sz"PClass.__repr__.<locals>.<genexpr>)r:r$r%r<rSr6rMrrr�__repr__�s
�zPClass.__repr__cs&t�fdd��jD��}t�j|ffS)Nc3s&|]}t�|�r|t�|�fVqdSr)�hasattrr@rrMrrr�s
z$PClass.__reduce__.<locals>.<genexpr>)�dictrrr$)rB�datarrMr�
__reduce__�szPClass.__reduce__cCst||���S)z5
        Returns an evolver for this object.
        )�_PClassEvolverrSrMrrr�evolver�szPClass.evolvercCs|��}||=|��S)z�
        Remove attribute given by name from the current instance. Raises AttributeError if the
        attribute doesn't exist.
        )r\�
persistent)rBrr\rrr�remove�sz
PClass.remove)NF)N)r%r&r'�__doc__r"r?�classmethodrHr
r
rKrLrOrPrRrSrVrZr\r^r(rrr#rr1&s"$ 

	
	r1cs`eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
�fdd�Zdd�Z�Z
S)r[)�_pclass_evolver_original�_pclass_evolver_data�_pclass_evolver_data_is_dirtyr2cCs||_||_d|_t�|_dS)NF)rarbrcr?r2)rBZoriginalZinitial_dictrrr�__init__�sz_PClassEvolver.__init__cCs
|j|Sr)rb�rB�itemrrr�__getitem__�sz_PClassEvolver.__getitem__cCs2|j�|t�|k	r.||j|<|j�|�d|_|S�NT)rb�getrAr2�addrcrQrrrr?�s

z_PClassEvolver.setcCs|�||�dSr)r?rQrrr�__setitem__�sz_PClassEvolver.__setitem__cCs4||jkr(|j|=|j�|�d|_|St|��dSrh)rbr2�discardrcr;rerrrr^�s
z_PClassEvolver.removecCs|�|�dSr)r^rerrr�__delitem__�sz_PClassEvolver.__delitem__cCs&|jr |jjfd|ji|j��S|jS)Nr2)rcrar$r2rbrMrrrr]�s
�z_PClassEvolver.persistentcs.||jkr|�||�ntt|��||�dSr)rr?r!r[rPrQr#rrrPs
z_PClassEvolver.__setattr__cCs||Srrrerrr�__getattr__sz_PClassEvolver.__getattr__)r%r&r'rrdrgr?rkr^rmr]rPrnr(rrr#rr[�s	r[)ZsixZpyrsistent._checked_typesrrrrZpyrsistent._field_commonrrrr	r
rZpyrsistent._transformationsr
r�typer�objectrAr0Z
add_metaclassr1r[rrrr�<module>s 
	1