OwlCyberSecurity - MANAGER
Edit File: _pclass.cpython-37.opt-1.pyc
B �������[�$������������������@���s����d�dl�Z�d�dlmZmZmZmZ�d�dlmZmZm Z m Z mZ�d�dlm Z �dd��ZG�dd��de�Ze��Zd d ��Ze��e�G�dd��de��ZG�d d��de�ZdS�)�����N)�InvariantException�CheckedType�_restore_pickle�store_invariants)� set_fields� check_type�PFIELD_NO_INITIAL� serialize�check_global_invariants)� transformc�������������C���s���t�|��dko|�d�tkS�)N����r���)�lenr���)�bases��r����E/opt/alt/python37/lib64/python3.7/site-packages/pyrsistent/_pclass.py� _is_pclass���s����r���c�������������������s���e�Zd�Z��fdd�Z���ZS�)� PClassMetac����������������sh���t�||dd��t||dd��dtdd��|d�D����|d<�t|�rR|d��d 7��<�tt|���|�|||�S�) N�_pclass_fields)�name�_pclass_invariantsZ __invariant__)�_pclass_frozenc�������������s���s���|�] }|V��qd�S�)Nr���)�.0�keyr���r���r���� <genexpr>���s����z%PClassMeta.__new__.<locals>.<genexpr>� __slots__)�__weakref__)r���r����tupler����superr����__new__)Zmcsr���r����dct)� __class__r���r���r������s����zPClassMeta.__new__)�__name__� __module__�__qualname__r���� __classcell__r���r���)r ���r���r������s���r���c�������������C���s<���t�|�|||��|�|�\}}|s,|�|��nt|||��d�S�)N)r���Z invariant�append�setattr)�cls�fieldr����value�result�invariant_errorsZis_okZ error_coder���r���r����_check_and_set_attr���s ����r,���c�������������������s����e�Zd�ZdZ��fdd�Zdd��Zed"dd ��Zd#d d�Zdd ��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 c������� ���������s&��t�t|���|��}|�dd��}g�}g�}x�|�j���D�]�\}}||kr�|d�ksP||kr`|�||��}n||�}t|�|||||��||=�q0|jt k r�t |j�r�|���n|j} t|�||| ||��q0|jr0|�d� |�j|���q0W�|s�|r�tt|�t|�d��|�rtd� d�|�|�j���t||�j��d|_|S�)N�_factory_fieldsz{0}.{1}zField invariant failedz0'{0}' are not among the specified fields for {1}z, T)r���r-���r����popr����items�factoryr,����initialr����callableZ mandatoryr%����formatr!���r���r����AttributeError�joinr ���r���r���) r'����kwargsr*����factory_fieldsZmissing_fieldsr+���r���r(���r)���r2���)r ���r���r���r���.���s2���� zPClass.__new__c�������������O���sd���|r|d�||d�<�t�|�}x2|�jD�](}||kr$t|�|t�}|tk r$|||<�q$W�|�jf�d|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) r���r���r.���)�setr����getattr�_MISSING_VALUEr ���)�self�argsr7���r8���r���r)���r���r���r���r9���N���s����z PClass.setNFc����������������s8���t���|��r��S�|r&��fdd�|�jD����|�f�d|i����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. c����������������s���i�|�]}|��kr��|�|�qS�r���r���)r����k)r7���r���r���� <dictcomp>{���s����z!PClass.create.<locals>.<dictcomp>r.���)� isinstancer���)r'���r7���r.���Zignore_extrar���)r7���r����createn���s ���� z PClass.createc�������������C���sD���i�}x:|�j�D�]0}t|�|t�}|tk rt|�j�|�j||�||<�qW�|S�)z� Serialize the current PClass using custom serializer functions for fields where such have been supplied. )r���r:���r;���r ���Z serializer)r<���r4���r*���r���r)���r���r���r���r ������s����zPClass.serializec�������������G���s ���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���)r<���Ztransformationsr���r���r���r�������s����zPClass.transformc�������������C���s@���t�||�j�r<x*|�jD�] }t|�|t�t||t�krdS�qW�dS�tS�)NFT)r@���r ���r���r:���r;����NotImplemented)r<����otherr���r���r���r����__eq__����s����z PClass.__eq__c�������������C���s ���|�|k�S�)Nr���)r<���rC���r���r���r����__ne__����s����z PClass.__ne__c����������������s���t�t��fdd���jD����S�)Nc�������������3���s���|�]}|t���|t�fV��qd�S�)N)r:���r;���)r���r���)r<���r���r���r�������s����z"PClass.__hash__.<locals>.<genexpr>)�hashr���r���)r<���r���)r<���r����__hash__����s����zPClass.__hash__c����������������s2���t�|�dd�rtd�||���tt|���||��d�S�)Nr���Fz'Can't set attribute, key={0}, value={1})r:���r5���r4���r���r-����__setattr__)r<���r���r)���)r ���r���r���rH�������s����zPClass.__setattr__c�������������C���s���t�d�|���d�S�)Nz-Can't delete attribute, key={0}, use remove())r5���r4���)r<���r���r���r���r����__delattr__����s����zPClass.__delattr__c�������������C���s4���i�}x*|�j�D�] }t|�|t�}|tk r|||<�qW�|S�)N)r���r:���r;���)r<���r*���r���r)���r���r���r����_to_dict����s����zPClass._to_dictc�������������C���s(���d��|�jjd�dd��|�������D����S�)Nz{0}({1})z, c�������������s���s"���|�]\}}d���|t|��V��qdS�)z{0}={1}N)r4����repr)r���r>����vr���r���r���r�������s����z"PClass.__repr__.<locals>.<genexpr>)r4���r ���r!���r6���rJ���r0���)r<���r���r���r����__repr__����s���� zPClass.__repr__c����������������s&���t���fdd���jD���}t��j|ffS�)Nc�������������3���s&���|�]}t���|�r|t��|�fV��qd�S�)N)�hasattrr:���)r���r���)r<���r���r���r�������s����z$PClass.__reduce__.<locals>.<genexpr>)�dictr���r���r ���)r<����datar���)r<���r���� __reduce__����s����zPClass.__reduce__c�������������C���s���t�|�|�����S�)z5 Returns an evolver for this object. )�_PClassEvolverrJ���)r<���r���r���r����evolver����s����zPClass.evolverc�������������C���s���|�����}||=�|���S�)z� Remove attribute given by name from the current instance. Raises AttributeError if the attribute doesn't exist. )rS���� persistent)r<���r���rS���r���r���r����remove����s����z PClass.remove)NF)N)r!���r"���r#����__doc__r���r9����classmethodrA���r ���r���rD���rE���rG���rH���rI���rJ���rM���rQ���rS���rU���r$���r���r���)r ���r���r-���$���s"��� r-���c�������������������s`���e�Zd�ZdZdd��Zdd��Zdd��Zdd ��Zd d��Zdd ��Z dd��Z ��fdd�Zdd��Z���Z S�)rR���)�_pclass_evolver_original�_pclass_evolver_data�_pclass_evolver_data_is_dirtyr.���c�������������C���s���||�_�||�_d|�_t��|�_d�S�)NF)rX���rY���rZ���r9���r.���)r<���ZoriginalZinitial_dictr���r���r����__init__����s����z_PClassEvolver.__init__c�������������C���s ���|�j�|�S�)N)rY���)r<����itemr���r���r����__getitem__����s����z_PClassEvolver.__getitem__c�������������C���s2���|�j��|t�|k r.||�j�|<�|�j�|��d|�_|�S�)NT)rY����getr;���r.����addrZ���)r<���r���r)���r���r���r���r9�������s ���� z_PClassEvolver.setc�������������C���s���|���||��d�S�)N)r9���)r<���r���r)���r���r���r����__setitem__����s����z_PClassEvolver.__setitem__c�������������C���s4���||�j�kr(|�j�|=�|�j�|��d|�_|�S�t|��d�S�)NT)rY���r.����discardrZ���r5���)r<���r\���r���r���r���rU�������s���� z_PClassEvolver.removec�������������C���s���|���|��d�S�)N)rU���)r<���r\���r���r���r����__delitem__����s����z_PClassEvolver.__delitem__c�������������C���s&���|�j�r |�jjf�d|�ji|�j��S�|�jS�)Nr.���)rZ���rX���r ���r.���rY���)r<���r���r���r���rT�������s���� z_PClassEvolver.persistentc����������������s.���||�j�kr|��||��ntt|���||��d�S�)N)r���r9���r���rR���rH���)r<���r���r)���)r ���r���r���rH�������s���� z_PClassEvolver.__setattr__c�������������C���s���|�|�S�)Nr���)r<���r\���r���r���r����__getattr__��s����z_PClassEvolver.__getattr__)r!���r"���r#���r���r[���r]���r9���r`���rU���rb���rT���rH���rc���r$���r���r���)r ���r���rR�������s��� rR���)ZsixZpyrsistent._checked_typesr���r���r���r���Zpyrsistent._field_commonr���r���r���r ���r ���Zpyrsistent._transformationsr���r����typer����objectr;���r,���Z add_metaclassr-���rR���r���r���r���r����<module>���s��� �-