
    u.j4                        d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZmZ d dlmZ ddZddZdddZedk    r e e                      dS )    )annotationsN)Path)Any)DEFAULT_READ_ONLY_GUARD)CopyResearchPaths
day_stringensure_runtime_dirs)_extract_asset_positionsrun_shadow_engine_oncesummarize_shadow_run)write_shadow_resultpathr   returnlist[dict[str, Any]]c                    |                                  sg S d |                     d                                          D             S )Nc                ^    g | ]*}|                                 t          j        |          +S  )stripjsonloads).0lines     R/home/agent/projects/CryptoTradingBot/Crypto_Agent/src/ctb_copy/run_shadow_once.py
<listcomp>z._load_wallet_snapshot_rows.<locals>.<listcomp>   s4    gggZ^ZdZdZfZfgDJtggg    zutf-8)encoding)exists	read_text
splitlines)r   s    r   _load_wallet_snapshot_rowsr       sE    ;;== 	gg)I)I)T)T)V)Vggggr   8tuple[list[dict[str, Any]], list[dict[str, Any]]] | Nonec                   t          |           }i }|D ]y}t          |                    d          p|                    d          pd          }|s>|                    |                                g                               |           zg }g }|                                D ]K}t          |          dk    r6|                    |d                    |                    |d                    L|s|sd S ||fS )Nwallet_address	leader_id    )r    strget
setdefaultlowerappendvalueslen)r   rows	by_walletrowwalletpreviouscurrentwallet_rowss           r   _latest_comparable_wallet_rowsr7      s   %d++D13I = =SWW-..L#''+2F2FL"MM 	V\\^^R0077<<<<%'H$&G '')) , ,{q  OOKO,,,NN;r?+++ G tWr   argvlist[str] | Noneintc                   t          j        d          }|                    dt          t	                      j                             |                    dd            |                    |           }t          j                     t	          t          |j
                            }|j        pt                      }t          ||           |                    d|          }t          |          }||                                sdnd}t#          |g ||	          }t%          ||                    |                     t)          t+          j        |                                d
d                     dS d |d         D             }	d |d         D             }
|	sp|
snt#          |g |d	          }t%          ||                    |                     t)          t+          j        |                                d
d                     dS t1          |	|
||          }t)          t+          j        |                                d
d                     dS )Nz.Run one read-only shadow position engine pass.)descriptionz--runtime-dir)defaultz--daywalletsok_no_wallet_snapshotsok_no_position_deltas)statusr&   T)indent	sort_keysr   c                6    g | ]}t          |          D ]}|S r   r
   r   r2   positions      r   r   zmain.<locals>.<listcomp>:   s/    dddsF^_bFcFcdd((ddddr   c                6    g | ]}t          |          D ]}|S r   rE   rF   s      r   r   zmain.<locals>.<listcomp>;   s/    ccccE]^aEbEbccccccr      )day)argparseArgumentParseradd_argumentr)   r   root
parse_argsr   assert_safer   runtime_dirrJ   r   r	   snapshot_filer7   r   r   r   shadow_result_fileprintr   dumpsto_json_dictr   )r8   parserargspathsrJ   wallet_snapshot_pathr0   rA   summaryprevious_positionscurrent_positionss              r   mainr^   '   sL   $1abbbF
5F5H5H5M1N1NOOO
...T""D')))d4#34455E
(
"jllCs### ..y#>>)*>??D|1E1L1L1N1Nk))Tk&sBfEEEGU%=%=c%B%BCCCdj--//TJJJKKKqddd1gdddccT!Wccc &7 &sB>UVVVGU%=%=c%B%BCCCdj--//TJJJKKKq$%79JEWZ[[[G	$*W))++A
F
F
FGGG1r   __main__)r   r   r   r   )r   r   r   r!   )N)r8   r9   r   r:   )
__future__r   rK   r   pathlibr   typingr   src.ctb_copy.read_only_guardr   src.ctb_copy.runtime_pathsr   r   r	   #src.ctb_copy.shadow.position_enginer
   r   r   $src.ctb_copy.shadow.position_journalr   r    r7   r^   __name__
SystemExitr   r   r   <module>ri      s   " " " " " "               @ @ @ @ @ @ Y Y Y Y Y Y Y Y Y Y v v v v v v v v v v D D D D D Dh h h h   &    @ z
*TTVV

 r   