
    )'h8                        d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	m
Z
mZmZmZ ddlmZmZ ddlmZ d Z e       \  ZZZdd	d
eeedZ ej0                  ddj3                  e      z        Z ej0                  d      Z ej0                  d      Z ej0                  d      Z ej0                  d      Z ej0                  d      ZdZ  ej0                  de z  ejB                  ejD                  z  ejF                  z        Z$ ed       ed       ed       ed       ed       ed       ed       ed       ed      d	Z%dZ& G d  d!e'      Z( G d" d#e'      Z) G d$ d%e'      Z*y)&zImplementation of JSONDecoder
    )absolute_importN   )fromhexu	text_typebinary_typePY2unichrascii)AttributedDictAttributedList)Errorc                      t        d      } t        j                  dk7  r| d d d d d   | dd  d d d   z   } t        j                  d|       \  }}||| fS )N 7FF80000000000007FF0000000000000big   dd)r   sys	byteorderstructunpack)_BYTESnaninfs      W/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/dirtyjson/loader.py_floatconstantsr      se    78F }}DbD!F12Jtt$44}}T6*HCcT>    TF)nulltruefalsez	-InfinityInfinityNaNz(%s)|z0(-?(?:0x[\da-fA-F]+|\d+))(\.\d+)?([eE][-+]?\d+)?z[0-9.+\-]*[()[0-9+\-*/eEx&|]+z(.*?)(["\\\x00-\x1f])z(.*?)(['\\\x00-\x1f])z([\w_$]+[\w\d_$]*)z 	
z[%s]*"'\/
	)	r%   r&   r'   r(   bfnrtzutf-8c                       e Zd Zd Zd Zy)Positionc                      || _         || _        y Nlinecolumn)selfr8   r9   s      r   __init__zPosition.__init__1   s    	r   c                     | j                   |j                   kD  ry| j                   |j                   k  xs | j                  |j                  k  S )NFr7   )r:   others     r   __lt__zPosition.__lt__5   s:    99uzz!yy5::%Cu||)CCr   N)__name__
__module____qualname__r;   r>    r   r   r4   r4   0   s    Dr   r4   c                       e Zd Zd Zy)KeyValuePositionc                      || _         || _        y r6   )keyvalue)r:   key_positionvalue_positions      r   r;   zKeyValuePosition.__init__<   s    #
r   N)r?   r@   rA   r;   rB   r   r   rD   rD   ;   s    $r   rD   c                       e Zd ZdZ	 	 ddZd Zd Zd Zd ZddZ	d	 Z
e ed
      j                  eej                   fdZd Zd ZddZy)DirtyJSONLoadera"  JSON decoder that can handle muck in the file

    Performs the following translations in decoding by default:

    +---------------+-------------------+
    | JSON          | Python            |
    +===============+===================+
    | object        | AttributedDict    |
    +---------------+-------------------+
    | array         | list              |
    +---------------+-------------------+
    | string        | unicode           |
    +---------------+-------------------+
    | number (int)  | int, long         |
    +---------------+-------------------+
    | number (real) | float             |
    +---------------+-------------------+
    | true          | True              |
    +---------------+-------------------+
    | false         | False             |
    +---------------+-------------------+
    | null          | None              |
    +---------------+-------------------+

    It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as
    their corresponding ``float`` values, which is outside the JSON spec.

    Nc           	         |xs t         | _        |xs t        | _        |xs t        | _        |xs t        j                  | _        i | _	        t        s&t        |t              r|j                         | _        n|| _        | j                  t         k7  r| j                  j                  | j                  d      j                         }| j                  |k7  r_t!        | j                        D ]G  \  }}|||   k7  st#        dj%                  | j                  t'        |            | j                  |       t)        | j                        | _        d| _        d| _        d| _        d| _        y )NignorezNon-{} character {}r   r   Expecting value)DEFAULT_ENCODINGencodingfloatparse_floatint	parse_int
_CONSTANTS__getitem__parse_constantmemor	   
isinstancer   decodecontentencode	enumerater   formatr   lenendlinenocurrent_line_pospos	expecting)	r:   r[   rP   rR   rT   rW   fixedindex	characters	            r   r;   zDirtyJSONLoader.__init___   s)    4$4&/%")c,F
0F0F	z';7">>+DL"DL==,,LL''x@GGIE||u$(1$,,(? x$E9 E%L0#$9$@$@PUV_P`$acgcocoqvwwx t||$ !*r   c                     	 | j                   | j                     }| xj                  dz  c_        |S # t        $ r, t        | j                  | j                   | j                        w xY wNr   )r[   rc   
IndexErrorr   rd   r:   nextchars     r   _next_characterzDirtyJSONLoader._next_characterv   sX    	@||DHH-HHHMHO 	@dhh??	@s	   /2 5A'c                     	 | j                   | j                     }|t        v r)| j                          | j                   | j                     }| xj                  dz  c_        |S # t        $ r Y yw xY w)Nr    )r[   rc   WHITESPACE_STR_skip_whitespacerj   rk   s     r    _next_character_after_whitespacez0DirtyJSONLoader._next_character_after_whitespace~   sc    	||DHH-H>)%%'<<1HHMHO 		s   A A# #	A/.A/c                    	 | j                  t        j                  | j                  | j                        j                                | j                  | j
                  dz
  kD  ry | j                  | j                  | j                  dz    }|dk(  s|dk(  rn|dk(  rdnd}| j                  j                  || j                        }|dk\  r| j                  |t        |      z          n| j                  | j
                         y y )N   z//z/*r+   z*/r   )_skip_forward_to
WHITESPACEmatchr[   rc   r`   rf   r_   )r:   	two_chars
terminatorlfs       r   rq   z DirtyJSONLoader._skip_whitespace   s    !!*"2"24<<"J"N"N"PQxx$((Q,&TXXdhhl;ID I$5%.$%6TD
\\''
DHH=7))"s:*>?))$((3 r   c                    || j                   k7  rw| j                  j                  d| j                   |      }|rF| xj                  |z  c_        | j                  j	                  d| j                   |      }|dz   | _        || _         y y )Nr+   r   )rc   r[   countra   rfindrb   )r:   r`   	linefeedsrposs       r   ru   z DirtyJSONLoader._skip_forward_to   sn    $((?**43?Iy(||))$#>(,q%DH r   c                 h    t        | j                  | j                  | j                  z
  dz   |z         S ri   )r4   ra   rc   rb   )r:   offsets     r   _current_positionz!DirtyJSONLoader._current_position   s,    TXX0E0E%E%IF%RSSr   c                    d| _         | j                         }|dk(  s|dk(  r| j                  |      S |dk(  r| j                         S |dk(  r| j	                         S | xj
                  dz  c_        t        j                  | j                  | j
                        }|r7|j                         | _        | j                  |j                         d         S t        j                  | j                  | j
                        }|r|j                         t        | j                        k(  s| j                  |j                            dvrk|j                         \  }}}|s|r | j                  ||xs d	z   |xs d	z         }n	 | j                  t!        |d            }|j                         | _        |S t$        j                  | j                  | j
                        }|rH	 t'        |j(                  |j
                  |j                                }|j                         | _        |S t/        | j                   | j                  | j
                        # t"        $ r0 |d   d
k(  r$d|dd  z   }| j                  t!        |d            }n Y w xY w# t*        t,        f$ r" t/        d| j                  | j
                        w xY w)NrN   r%   r&   {[r   r   z+-/*()ro   00ozCannot evaluate expression)rd   rm   parse_stringparse_objectparse_arrayrc   CONSTANT_RErw   r[   r`   rW   groups	NUMBER_REr_   rR   rT   rS   
ValueErrorEQUATION_REevalstringSyntaxError	NameErrorr   )r:   rl   mintegerfracexpress          r   scanzDirtyJSONLoader.scan   sI   *'')s?h#o$$X..s?$$&&s?##%%AdllDHH5uuwDH&&qxxz!}55OODLL$((3!%%'S..$,,quuw2Gx2W!"GT3s&&w$*"'='KL..Wa9C uuwDHJdllDHH5R188AEE!%%'23 uuwDHJDNNDLL$((;;! " qzS("&"4"nnS!_=   + R8$,,QQRs   ?I 0J 6J	J	1J=ro   c                 t   |dk(  rt         j                  nt        j                  }g }|j                  }| j                  dz
  }		  || j
                  | j                        }
|
t        d| j
                  |	      |
j                         | _        |
j                         \  }}|r0|r&t        |t              st        || j                        } ||       ||k(  rn|dk7  r	 ||       	 | j
                  | j                     }|dk7  r	 ||   }| xj                  dz  c_        nPd}| j
                  | j                  dz   | j                  dz    }|dd	 }t        |      d
k7  s
|dk(  s|dk(  r$t        || j
                  | j                  dz
        	 t        |d      }| xj                  dz  c_        |dkD  r|dz  dk(  r| j
                  | j                  | j                  d	z    dk(  r| j
                  | j                  d	z   | j                  dz    }|dd	 }t        |      d
k(  rE|dk(  s@|dk(  s;	 t        |d      }|dz  dk(  r&d|dz
  dz  |dz
  z  z   }| xj                  dz  c_        t#        |      } ||       ; ||      S # t        $ r t        d| j
                  |	      w xY w# t        $ r$ d}t        || j
                  | j                        w xY w# t         $ r% t        || j
                  | j                  dz
        w xY w# t         $ r" t        || j
                  | j                        w xY w)ax  Scan the string for a JSON string. End is the index of the
        character in string after the quote that started the JSON string.
        Unescapes all valid JSON string escape sequences and raises ValueError
        on attempt to decode an invalid string.

        Returns a tuple of the decoded string and the index of the character in
        string after the end quote.r%   r   zUnterminated string starting atr'   r   zInvalid \X escape sequence %rzInvalid \uXXXX escape sequence   rt      xX   i  i   i   z\u   i   i   
   )STRINGCHUNK_DOUBLEQUOTErw   STRINGCHUNK_SINGLEQUOTEappendrc   r[   r   r`   r   rY   r   rP   rj   KeyErrorr_   rS   r   r
   )r:   terminating_character_b_join_py2_maxunicode_mchunks_appendbeginchunkr[   ry   esccharmsgesc_xuniesc2uni2s                       r   r   zDirtyJSONLoader.parse_string   s7    /Ds.J$**PgPmPm--1t||TXX.E}5t||UL Lyy{DH"',,.GZ
7I >'?G  22t#
#Lll488,
 cz=c7D A 8ll488a<1=Aas8q=ESLESLT\\488a<@@Ac2,C A &3<6+AdllSWS[S[\`\d\dgh\hFimrFr<<1TXX\BD 1IE4yA~u|u|E#&tR=D  &=F2")sV|.B.2Vm.= #>C HHMHc{DM{ | V}S  L5t||UL LL   =:CT\\488<<= " AT\\488a<@@A  * E"'T\\488"DDEs0   *J 	J+ K 0L !J(+-K.L	+L7c                    | j                   j                  }t               }| j                         }	 |dk(  r	 |S | j	                  t        |             }|dk(  s|dk(  r| j                  |      }nxt        j                  | j                  | j                  dz
        }|!t        d| j                  | j                        |j                         | _
        |j                         d   } |||      }| j                         dk7  r!t        d| j                  | j                        | j                          t        || j	                               }| j!                         }|j#                  |||       | j                         }|dk(  r	 |S |d	k7  r-t        d
| j                  | j                  t        |      z
        | j                         })N}r%   r&   r   zExpecting property namer   :zExpecting ':' delimiter,zExpecting ',' delimiter or '}')rX   
setdefaultr   rr   r   r_   r   UNQUOTED_KEYNAMErw   r[   rc   r   r`   r   rq   rD   r   add_with_attributes)	r:   memo_getobjrl   key_posrF   r   key_value_posrG   s	            r   r   zDirtyJSONLoader.parse_object  s   99'' 88:3@ 
? ,,c(m^<G3(c/''1(..t||TXX\J=1dhh0 0 !99;llnQ'3$C 446#=5t||TXXNN!!#,Wd6L6L6NOMIIKE##C><<>H3 
 S<dllDHHWZ[cWdLdee<<>HA r   c                    t               }| j                         }|dk(  r|S |dk(  r!t        d| j                  | j                        	 |dk(  r	 |S | xj                  t        |      z  c_        | j                         }| j                         }|j                  ||       | j                         }|dk(  r	 |S |dk7  r-t        d| j                  | j                  t        |      z
        | j                         })N]ro   zExpecting value or ']'r   zExpecting ',' delimiter or ']')	r   rr   r   r[   rc   r_   r   r   r   )r:   valuesrl   	value_posrG   s        r   r   zDirtyJSONLoader.parse_arrayK  s    !88:s?M^0$,,II3  HHH%H..0IIIKEMM%+<<>H3  S<dllDHHWZ[cWdLdee<<>H r   c                    |r| j                  |       |r| j                  j                  d| j                        }| j                  j                  d| j                        }||cxkD  r| j                  k\  sn |dk  r|}|| j                  k\  r| j                  |       | j	                          | j                         }|S )zyReturn the Python representation of ``s`` (a ``str`` or ``unicode``
        instance containing a JSON document)
        r   r   r   )ru   r[   findrc   rq   r   )r:   search_for_first_objectstart_indexior   s         r   rZ   zDirtyJSONLoader.decoded  s     !!+."!!#txx0A!!#txx0A1  AEDHH}%%a(iik
r   )NNNN)r   )Fr   )r?   r@   rA   __doc__r;   rm   rr   rq   ru   r   r   	BACKSLASHr   joinr	   r   
maxunicoder   r   r   rZ   rB   r   r   rK   rK   A   sf    : LP $+.@	"T)<X "23>>L\*X2r   rK   )+r   
__future__r   rer   r   compatr   r   r   r   r	   r
   r   dirtyjson.attributed_containersr   r   errorr   r   r#   PosInfNegInfrU   compiler   r   r   r   r   r   r   rp   VERBOSE	MULTILINEDOTALLrv   r   rO   objectr4   rD   rK   rB   r   r   <module>r      sq   & 	 
  J J J J  &' VV 
 bjj#((:"667BJJJK	bjj9:$"**%=> $"**%=> 2::34 RZZ.0"**r||2Kbii2WX
 
3qwak#	
4qwQtW1T74	  Dv D$v $tf tr   