
    Bh                     J    d dl mZ d dlmZ d dlmZ d dlmZ  G d de      Zy)    )DjangoJSONEncoder)	force_str)Promise)conditional_escapec                   2     e Zd ZefdZ fdZ fdZ xZS )SafeJSONEncoderc                     t        |t              r. t        |       fdt        j                  |      D              S t        |t        t
        f      r t        |       fd|D              S t        |t              r|S 	  t        |       |            S # t        t        f$ r  j                  |      cY S w xY w)Nc              3   V   K   | ]   \  }} |      j                  |      f " y wN_recursive_escape).0kvescselfs      A/home/dcms/DCMS/lib/python3.12/site-packages/cms/utils/encoder.py	<genexpr>z4SafeJSONEncoder._recursive_escape.<locals>.<genexpr>
   s)     [6AqCFD$:$:1$=>[s   &)c              3   @   K   | ]  }j                  |        y wr   r   )r   r   r   s     r   r   z4SafeJSONEncoder._recursive_escape.<locals>.<genexpr>   s     @411!4@s   )

isinstancedicttypeitemslisttuplebool
ValueError	TypeErrordefault)r   or   s   ` `r   r   z!SafeJSONEncoder._recursive_escape   s    a47[TZZXY][[[a$'47@a@@@aH	#473q6?"I& 	#<<?"	#s   B  B>=B>c                 D    | j                  |      }t        | 	  |      S r   )r   superencode)r   r    value	__class__s      r   r#   zSafeJSONEncoder.encode   s"    &&q)w~e$$    c                 X    t        |t              rt        |      S t        |   |      S r   )r   r   r   r"   r   )r   r    r%   s     r   r   zSafeJSONEncoder.default   s&    a!Q<wq!!r&   )__name__
__module____qualname__r   r   r#   r   __classcell__)r%   s   @r   r   r      s    '9 
#%" "r&   r   N)	django.core.serializers.jsonr   django.utils.encodingr   django.utils.functionalr   django.utils.htmlr   r    r&   r   <module>r1      s    : + + 0"' "r&   