Ë
    Ìi	  ã                   ó^   — d Z ddlmZmZ  edg d¢«      Z G d„ d«      Z G d„ de«      Zd	„ Zy
)zs
This module contains a generic parser for fixed-width files. It operates
similar to Python's built-in CSV reader.
é    )ÚOrderedDictÚ
namedtupleÚField)ÚnameÚstartÚlengthc                   ó2   — e Zd ZdZd„ Zd„ Zd„ Zed„ «       Zy)ÚReaderah  
    Reads a fixed-width file using a column schema in CSV format.

    This works almost exactly like Python's built-in CSV reader.

    Schemas must be in the "ffs" format, with :code:`column`, :code:`start`,
    and :code:`length` columns. There is a repository of such schemas
    maintained at `wireservice/ffs <https://github.com/wireservice/ffs>`_.
    c                 ó  — ddl m} || _        g | _        |j	                  |«      }t        |«      }|g d¢k7  rt        d«      ‚|D ]C  }| j                  j                  t        |d   t        |d   «      t        |d   «      «      «       ŒE y )Nr   )Úcsv)Úcolumnr   r   zKSchema must contain exactly three columns: "column", "start", and "length".é   é   )
Úagater   ÚfileÚfieldsÚreaderÚnextÚ
ValueErrorÚappendr   Úint)ÚselfÚfÚschema_fr   r   ÚheaderÚrows          úL/var/www/html/strategist-ai/venv/lib/python3.12/site-packages/agate/fixed.pyÚ__init__zReader.__init__   s   € ÝàˆŒ	ØˆŒà—‘˜HÓ%ˆÜ�f“ˆàÒ2Ò2ÜÐjÓkÐkàò 	HˆCØ�K‰K×Ñœu S¨¡V¬S°°Q±«[¼#¸cÀ!¹f»+ÓFÕGñ	Hó    c                 ó   — | S ©N© )r   s    r   Ú__iter__zReader.__iter__$   s   € Øˆr   c                 óÜ   — t        | j                  «      }g }| j                  D ]E  }|j                  ||j                  |j                  |j
                  z    j                  «       «       ŒG |S r!   )r   r   r   r   r   r   Ústrip©r   ÚlineÚvaluesÚfields       r   Ú__next__zReader.__next__'   s]   € Ü�D—I‘I‹ˆàˆà—[‘[ò 	PˆEØ�M‰M˜$˜uŸ{™{¨5¯;©;¸¿¹Ñ+EÐF×LÑLÓNÕOð	Pð ˆr   c                 óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w )z@
        The names of the columns read from the schema.
        )r   r   )r   r)   s     r   Ú
fieldnameszReader.fieldnames1   s    € ð
 )-¯©Ö4˜u�—
“
Ò4Ð4ùÒ4s   �%N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r#   r*   Úpropertyr,   r"   r   r   r
   r
      s+   „ ñòHòòð ñ5ó ñ5r   r
   c                   ó   — e Zd ZdZd„ Zy)Ú
DictReaderzd
    A fixed-width reader that returns :class:`collections.OrderedDict` rather
    than a list.
    c                 óè   — t        | j                  «      }t        «       }| j                  D ]C  }||j                  |j                  |j
                  z    j                  «       ||j                  <   ŒE |S r!   )r   r   r   r   r   r   r%   r   r&   s       r   r*   zDictReader.__next__>   sa   € Ü�D—I‘I‹ˆÜ“ˆà—[‘[ò 	VˆEØ!% e§k¡k°%·+±+ÀÇÁÑ2LÐ!M×!SÑ!SÓ!UˆF�5—:‘:Òð	Vð ˆr   N)r-   r.   r/   r0   r*   r"   r   r   r3   r3   9   s   „ ñór   r3   c                  ó   — t        | i |¤ŽS )zu
    A wrapper around :class:`.fixed.Reader`, so that it can be used in the same
    way as a normal CSV reader.
    )r
   )ÚargsÚkwargss     r   r   r   H   s   € ô
 �4Ð"˜6Ñ"Ð"r   N)r0   Úcollectionsr   r   r   r
   r3   r   r"   r   r   ú<module>r9      s8   ðñ÷
 0á�7Ò7Ó8€÷+5ñ +5ô\�ô ó#r   