+
    4Ej!                     ^   ^ RI HtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H	t	 ]
! ]]4      '       g   ]P                  ! ]4       R tR tR t]	! ]]	]]]]]]]]/4      t/ t ! R	 R
]4      t ! R R]4      tRR/R ltRR ltR t]	! ]	]]]]]/4      t/ tR t] U u. uF  q NK  	  up ] U u. uF  q NK  	  up ,           t R t!]]]3t"RR lt#]#PH                  ]PH                  ]PH                  ]PH                  ]PH                  ]PH                  ]PH                  3t%AAA	AAAAR# u up i u up i )    )MutableMappingMutableSequence
MutableSet)Enum)MappingProxyType)array
frozendictc                     ^ RI Hp \        WP                  4      ;'       d/    \        V \        4      '       * ;'       d    \        V R4      '       * # )r   abcisalpha)collectionsr   
isinstanceIterable
memoryviewhasattror   s   & /lib/python3.14/site-packages/frozendict/cool.pyisIterableNotStringr      sF     	1ll# 	" 	"q*%%	" 	"Ay!!    c                     ^ RI Hp \        WP                  4      '       g   \	        R4      h\        WP
                  4      '       d   \        P                  # \        # )r   r   zobject must be an iterable)	r   r   r   r   	TypeErrorMappingdictitems	enumerater   s   & r   getItemsr      s?    a&&455![[!!zzr   c                     V # N xs   &r   nilr%   &   s    Hr   c                       ] tR t^5tRtR# )FreezeErrorr"   N__name__
__module____qualname____firstlineno____static_attributes__r"   r   r   r'   r'   5       r   r'   c                       ] tR t^9tRtR# )FreezeWarningr"   Nr(   r"   r   r   r0   r0   9   r.   r   r0   inverseFc                  \        \        V 4      \        4      '       g   \        RV  R24      h VP                   T'       d   \        4       pM
\        4       pY9   d(   ^ RIpTP                  T P                   R2\        4       T'       d   \        pM\        pYT &   R#   \         d    \        RT 2R,           4      hi ; i)a  
Adds a `converter` for a type `to_convert`. `converter`
must be callable. The new converter will be used by `deepfreeze()`
and has precedence over any previous converter.

If `to_covert` has already a converter, a FreezeWarning is raised.

If `inverse` is True, the conversion is considered from an immutable 
type to a mutable one. This make it possible to convert mutable
objects nested in the registered immutable one.
z'`to_convert` parameter must be a type, z foundz*`converter` parameter must be a callable, foundNz! is already in the conversion map)
issubclasstype
ValueError__call__AttributeErrorgetFreezeConversionInverseMapgetFreezeConversionMapwarningswarnr)   r0   %_freeze_conversion_inverse_map_custom_freeze_conversion_map_custom)
to_convert	converterr1   freeze_conversion_mapr;   s   &&$  r   registerrB   =   s     d:&--5j\H
 	

  = ? 6 8*""##DE	

  E =(1*%1  
8D
 	

s   B! !!Cc                    V'       d   \         pM\        p W  R#   \         d    \        T P                   R24      hi ; i)z
Unregister a type from custom conversion. If `inverse` is `True`,
the unregistered conversion is an inverse conversion
(see `register()`).
z is not registeredN)r=   r>   KeyErrorr'   r)   )r5   r1   rA   s   && r   
unregisterrE   l   sG      E =@!' @T]]O+=>??@s    $?c                  $    \         \        ,          # r!   )_freeze_conversion_mapr>   r"   r   r   r:   r:   ~   s    !$AAAr   c                  $    \         \        ,          # r!   )_freeze_conversion_inverse_mapr=   r"   r   r   r9   r9      s    &-	.r   c                      \        \        \         U u. uF  q NK  	  up ,           \         U u. uF  q NK  	  up ,           4      # u up i u up i r!   )tuple_freeze_typesr>   r=   r#   s    r   getFreezeTypesrM      sJ    121q12	39:9q9:	; 2:s
   
A

A	
Nc                   ^ RI H p Vf   V! 4       pVf   V! 4       pVP                  4        FF  w  rE\        \        V4      \        4      '       g   \	        V R2R,           4      h VP
                   KH  	  VP                  4        FF  w  rE\        \        V4      \        4      '       g   \	        V R2R	,           4      h VP
                   KH  	  \        V 4      p\        VP                  4       4      \        4       ,           pRpV F  p	\        W	4      '       g   K  T	p M	  Vf     V P                   V! V P                  4      # \        4       pW,          pV\         9   d   W,          ! V 4      # \#        V 4      '       g   W,          ! V 4      # \%        4       pVV,          pW9   pV'       d   W,          ! V 4      p ^ RIHp V! V 4      p\)        V4      ! V4       F  w  pp\+        VVVR7      VV&   K  	   W,          pT! T4      #   \         d    \	        RT R2R,           4      hi ; i  \         d    \	        RT R
2R,           4      hi ; i  \         d     Mi ; i \        T 4       T #   \         d     Mi ; iRP                  R T 4       4      p
RT R2RT
 2,           p\        T4      h  \,         d    T'       d   Tp Lh i ; i)a  
Converts the object and all the objects nested in it in its
immutable counterparts.

The conversion map is in getFreezeConversionMap().

You can register a new conversion using `register()` You can also
pass a map of custom converters with `custom_converters` and a map
of custom inverse converters with `custom_inverse_converters`,
without using `register()`.

By default, if the type is not registered and has a `__dict__`
attribute, it's converted to the `frozendict` of that `__dict__`.

This function assumes that hashable == immutable (that is not
always true).

This function uses recursion, with all the limits of recursions in
Python.

Where is a good old tail call when you need it?
r	   Nz+ in `custom_converters` parameter is not a r5   zconverter for z in `custom_converters` zparameter is not a callablez* in `custom_inverse_converters` parameter zis not a typez in  z6`custom_inverse_converters`parameter is not a callablez, c              3   8   "   T F  qP                   x  K  	  R # 5ir!   )r)   ).0r$   s   & r   	<genexpr>deepfreeze.<locals>.<genexpr>  s     $FAZZs   ztype z& is not hashable or is not equal or a z!subclass of the supported types: )copy)custom_converterscustom_inverse_converters)r
   r   r4   r5   r6   r7   r8   rK   keysrM   r   __dict__hashr   joinr:   _freeze_types_plainr   r9   rS   r   
deepfreezerD   )r   rT   rU   r
   type_ir@   type_ofreeze_typesbase_type_ofreeze_typesupported_typeserrrA   freeze_conversion_inverse_mapfrozen_typerS   o_copykvfreezes   &&&                 r   r[   r[      s   8 & &L ($.L!.446$v,--(EF 
	 7 7<<>$v,--(DE  
	 ? !WF*//12^5EELK#a%%%K $
 	*JJ ajj))( 341E))$1!44q!!$1!44$A$C! 	&!	" "
 >K)6q9!WF (1 1(A
q	 )&3 &>K  	 (@A-. 	  	 .HI 	,  		
	G H  		 ))$F$FG F8AB//@AB 	
 nJ  F	sT   'H	H.)I 9J6 	"H+."II! I!%I2 2J ?J 6K	KK)F)NN)&collections.abcr   r   r   enumr   typesr   r   r
   r4   rB   r   r   r%   	bytearraybytesrK   	frozensetrG   r>   	Exceptionr'   UserWarningr0   rE   r:   r   listrI   r=   r9   rL   rM   rZ   r[   r)   __all__r#   s   0r   <module>rs      s   G G  "  !
 %))U#	 $JuU	#%   !# 	) 		K 	,2 ,2^@$B ",d	4- "  )+ % ''&1Q&'./.1Q./0  "9e4 Rl ##!** 	k (/s   
D%-
D*