
    gju	                       d dl mZ d dlZd dlZd dlZd dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ ddZdd	Zddd
ZddZddZddZ ed       G d d             Zdd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)    )annotationsN)	dataclassfield)datetimetimezone)Path)
Connection)Anyc                 d    t        j                  t        j                        j	                         S N)r   nowr   utc	isoformat     {/home/agent/.hermes/worktrees/FinanceManager-sprint14-twr-xirr-performance-attribution/src/jarvis_finance/imports/common.pyutc_nowr      s    <<%//11r   c                    dj                  d |D              }t        j                  |j                  d            j	                         d d }|  d| S )N|c              3  r   K   | ]/  }t        |xs d       j                         j                          1 yw) Nstrstriplower).0ps     r   	<genexpr>zstable_id.<locals>.<genexpr>   s*     Cs17|))+113Cs   57zutf-8   _)joinhashlibsha256encode	hexdigest)prefixpartspayloaddigests       r   	stable_idr*      sN    hhCUCCG^^GNN734>>@"EFXQvhr   c                    | t        |       j                         dk(  r|rdS dS t        |       j                         j                         dv rdS dS )Nr      r   >   1yjayestruer   )valuedefaults     r   
parse_boolr4      sR    }E
((*b0q""E
  "((*.MM1TSTTr   c                <    t        | xs d      j                         S )Nr   )r   r   )r2   s    r   cleanr6      s    u{!!##r   c                b    t        | j                  |            }|st        d| d| d      |S )Nzline z: z is required)r6   get
ValueError)rowr   liner2   s       r   require_textr<   !   s6    #''%.!E5b|<==Lr   c                z    t        |       j                         }t        j                  |      j	                         S r   )r   
read_bytesr"   r#   r%   )pathdatas     r   source_hashrA   (   s,    :  "D>>$))++r   T)frozenc                  p    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<    ee
      Zded<   y)ImportResultr   import_session_idimport_typestatusint
rows_totalrows_newrows_existingrows_failed)default_factory	list[str]errorsN)__name__
__module____qualname____annotations__r   listrO   r   r   r   rD   rD   -   s8    KOMd3FI3r   rD   )notesc       	            t        t        j                               }
t               }| j	                  d|
|||||||||t        j                  |d      |	f       | j                          |
S )Na  
        INSERT INTO import_sessions(
            import_session_id, import_type, source_filename, source_hash, started_at,
            finished_at, status, rows_total, rows_imported, rows_failed, errors_json, notes
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        F)ensure_ascii)r   uuiduuid4r   executejsondumpscommit)connrF   source_filename	file_hashrG   rI   rows_importedrL   rO   rU   
session_idr   s               r   create_import_sessionrc   9   ss     TZZ\"J
)CLL	 JJvE2	
, 	KKMr   )returnr   )r&   r   r'   objectrd   r   )F)r2   re   r3   boolrd   rH   )r2   re   rd   r   )r:   zdict[str, Any]r   r   r;   rH   rd   r   )r?   z
str | Pathrd   r   )r^   r	   rF   r   r_   r   r`   
str | NonerG   r   rI   rH   ra   rH   rL   rH   rO   rN   rU   rg   rd   r   )
__future__r   r"   r[   rX   dataclassesr   r   r   r   pathlibr   sqlite3r	   typingr
   r   r*   r4   r6   r<   rA   rD   rc   r   r   r   <module>rm      s    "    ( '   2 U$,
 $4 4 4, &
& & 	&
 & & & & & & & 	&r   