
    R1iV                     L    d Z ddlZd Zd Zd Z ej
                  d      Zd Zy)u   Parsing routines for JPL text PCK files.

For an (incomplete) summary of the file format, look for the heading
“NAIF Text Kernel Format” in the “PCK Required Reading”:

https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/req/pck.html

    Nc                     t        |       D ]m  \  }}}|dk(  rt        |      dk(  r	|d   ||<   #|||<   )|dk(  s/|j                  |      }|g x}||<   nt        |t              s|g}|j                  |       o y)z@Load PCK text kernel names and values into a ``variables`` dict.   =   r      +=N)parselenget
isinstancelistextend)lines	variablesnameequalsvaluesolds         Z/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/skyfield/data/text_pck.pyloadr      s     %effT>6{a"()	$"(	$u_--%C{(**ioT*eJJv !-    c              #   :  K   t        t        |             }|D ]~  }|j                  d      }t        |      }|dvrt	        d|z        t        |      }|dk(  r+g }|D ]#  }|dk(  r n)|j                  t        |             % nt        |      g}|||f  yw)uN  Yield ``(name, equals, values)`` bytestrings from a PCK text kernel.

    This merely reads raw assignment statements; it doesn’t combine
    multiple ``+=`` assignments to create single values.  The byte
    string ``equals`` will be either ``b'='`` or ``b'+='``.  Scalars are
    returned as a ``values`` list one item long.

    ascii)r   r   z#an equals sign is expected after %r   (   )N)iter_parse_tokensdecodenext
ValueErrorappend	_evaluate)r   tokenstokenr   r   r   s         r   r   r      s      -&'F||G$f&BTIJJVD=FD=i./  
  &'FFF"" s   BBc                     | dd j                  d      r| dd j                  d      S | j                         rt        |       S | j                  d      rt	        d      | j                  dd	      } t        |       S )
zAReturn a string, integer, or float parsed from a PCK text kernel.r   r      'r      @z4TODO: need parser for dates, like @01-MAY-1991/16:25   D   E)
startswithr   isdigitintNotImplementedErrorreplacefloat)r"   s    r   r    r    6   sz    QqzT"Qr{!!'**}}5z! #= > 	>MM$%E<r   s'   [A-Za-z]\w+|=|\+=|\(|\)|'[^']*'|[^), ]+c              #      K   t        |       } | D ]Y  }d|vr|j                         }|dk7  r| D ]7  }|j                         }|dk(  r :t        j                  |      D ]  }|  9 [ yw)zAYield all the tokens inside the data segments of a PCK text file.s
   \begindatas
   \begintextN)r   strip	_token_refindall)r   liner"   s      r   r   r   D   st     KE%zz|>!D::<D~%"**40 1	  s   A+A-)__doc__rer   r   r    compiler1   r    r   r   <module>r8      s6    
 #4
 BJJEF	r   