U a#@sddlZddlmZmZmZmZddlmZddlZddlm Z m Z ddl m Z m Z mZmZejdddGd d d eZdd d ZeZdddZedddZdeedddZdedddZdedddZdS)N)AnyOptionalTypeTypeVar) is_dataclass)NOTHING resolve_types)get_args get_origin is_genericadapted_fieldsT)slotsfrozenc@s>eZdZUejddZeeed<ejddZ ee ed<dS)AttributeOverrideN)defaultomit_if_defaultrename) __name__ __module__ __qualname__attribrrbool__annotations__rstrrr/Users/jalaguru/Documents/Proserv/artifacts/aws_dms_cdk_automation/aws-dms-cdk-automation/venv/lib/python3.8/site-packages/cattr/gen.pyr s rcCs t||dS)Nrr)rrrrroverridesrFcKs|j}d|}i}g}g}t|} |d|d|d| D]r} | j} || t} | jdkrh| n| j} | j}| jdk r|j | j}n|j }||j k}|sd| }|||<|d| d}n d | }|t jk r|r| jd k s| jrd | }t|t jrf|j||<|jr6|d | d |dn|d | d |d|d| d|n6|||<|d | d |d|d| d|qB|d| d|dqB|d||dg}ttd|dd|||}|S)zFGenerate a specialized dict unstructuring function for an attrs class.Z unstructure_def z(i):z res = {NZ__cattr_unstruct_handler_z(i.)zi.FZ __cattr_def_z if i.z != z():z res[''] = :z '': , } return res exec)rr appendnamepop_neutralrrtype_unstructure_funcdispatch unstructure_unstructure_identityrrr isinstanceFactoryfactoryZ takes_selfevalcompilejoin)cl converterrkwargscl_namefn_nameglobslines post_linesattrsa attr_namerkndhandlerZ is_identityZunstruct_handler_nameZinvokeZdef_name total_linesfnrrrmake_dict_unstructure_fns^           rJ)r:cCshi}tt|jt|D]\}}t|tr,q|||j<q|s@|Stjddd| Ddd}|f|S)NZGenericMappingcSsi|]}|tqSr)rattrib).0xrrr isz$generate_mapping..T)r) zipr __parameters__r r4rrrZ make_classkeys)r:Z old_mappingmappingptclsrrrgenerate_mapping]s  rV)r:_cattrs_forbid_extra_keysc Ksd}t|r"t|}t||}|}t|ddD](}t|r.t|ds.t||}qXq.t|trpt||j|}|j}d|}t|ddD]<}t||j} t| dt| } t dd | } |d | 7}q|j ||d } g} g} t |}t |}td d |Dr t|| d |d| d|D]}|j}||t}|j}t|trbt||j|}|dk rz|j|}n|j }d|}|| |<|s|dd kr|n |dd}|jdkr|n|j}|| d|<|jtkr | d|d|d|d|d n6| d|d| d|d|d|d|d q*| d|rdd |D}|| d!<| d"d#d$d%|d&g7} | | d'g}ttd(|d)d*| | |S)+zDGenerate a specialized dict structuring function for an attrs class.N__orig_bases__rztyping.GenericZ structure_rPrz [\[\.\] ,]_)Z__c_sZ__clZ__mcss|]}t|jtVqdS)N)r4r/rrLrCrrr sz)make_dict_structure_fn..r z(o, *_):z res = {Z__cattr_struct_handler_rr Z__c_t_z 'r$z(o['z '], __c_t_z),z if 'z' in o:z res['r"r!r&cSsh|] }|jqSr)r,rZrrr sz)make_dict_structure_fn..Z__c_az( unknown_fields = set(o.keys()) - __c_az if unknown_fields:z raise Exception(z' 'Extra fields in constructor for z$: ' + ', '.join(unknown_fields) )z return __cl(**res)r(r)r*)r r rVgetattrr startswithr4rrresubZ structurer ranyrr+r,r-r.r/Z_structure_funcr1rrrr7r8r9)r:r;rWr<rRbaser=r>rSZ name_baser,r?r@rArBZis_dcrCZanrr/rGZstruct_handler_nameZianrEZallowed_fieldsrHrrrmake_dict_structure_fnps|          $   rcc Cs|j}d}t|dddk r2t|d}|j|}|p8||d}g}|d|d|d|d g}ttd |d d |||} | S) zZtype_argr?r@rHrIrrrmake_iterable_unstructure_fns    rfcCs(|j}|j}d}t|dddk r|t|}t|dkr>|\}}n |t}}|j|}||jkrbd}|j|}||jkr|d}|p|||d} |dk r| d|dk r| d|dk rdnd } |dk rd nd } g} | d |d | d| d| d| dg} t t d | dd| | |}|S)z:Generate a specialized unstructure function for a mapping.Zunstructure_mappingrdN)Z__cattr_mapping_cl __cattr_k_u __cattr_v_urhriz__cattr_k_u(k)kz__cattr_v_u(v)vr z (mapping):z res = __cattr_mapping_cl((z, z) for k, v in mapping.items())r'r(r)r*) r2r]r lenrr0r1r3r+r7r8r9)r:r;reZ key_handlerZ val_handlerr>argsZkey_argZval_argr?Zk_uZv_ur@rHrIrrrmake_mapping_unstructure_fnsB        rn)NN)F)F)N)N)r_typingrrrrZ dataclassesrrrrZ_compatr r r r sobjectrrr.rJrVrrcrfrnrrrrs$    E \