
    j              	          d dl Z d dlmZmZmZmZmZ d dlZd dl	Z	erd dl
ZddlmZ eegej                  f   Z e	j                   e      ZdZddZdeej                     d	eeef   dd
fdZded	eeef   dee   deej                     fdZdd
d	eeef   dee   deej                     fdZdeej                     d	eeef   defdZded	eeef   dee   deej                     fdZy)    N)ListCallableAnyDictTYPE_CHECKING   )dataset_itemzdThe Python library Pandas is required for this method. You can install it with `pip install pandas`.returnc                  d    t         j                  j                  d      } | t        t              y )Npandas)	importlibutil	find_specImportErrorIMPORT_PANDAS_ERROR)module_specs    |/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/api_objects/dataset/converters.py_raise_if_pandas_is_unavailabler      s-    ..**84K-..     itemskeys_mappingzpd.DataFramec           	         t                dd l}g }| D ]X  }|j                  d      }|j                         D ci c]  \  }}|j	                  ||      | }}}|j                  |       Z  |j                  |      S c c}}w )Nr   T
include_id)r   r   get_contentr   getappend	DataFrame)	r   r   pdnew_item_dictsitemitem_contentkeyvaluenew_item_dicts	            r   	to_pandasr&      s     $%N''4'8@L@R@R@T
@T*#uLS#&-@T 	 
 	m,  2<<''
s   B 	file_pathignore_keysc                    g }t        | dd      5 }|D ]9  }|j                         }|s|j                  t        j                  |             ; 	 d d d        t        j
                  |      }t        |||      S # 1 sw Y   +xY w)Nrzutf-8)encoding)openstripr   jsonloadsdumps	from_json)r'   r   r(   r   filelinejson_objectjson_strs           r   from_jsonl_filer6   ,   sq     E	iw	/4D**,KTZZ45  
0 zz% HX|[99 
0	/s   A;&A;;B	dataframec           	         t                g }|g n|}| j                         D ]`  \  }}|j                         D ci c]  \  }}||vr|j                  ||      | }}}|j	                  t        j                  di |       b |S c c}}w N )r   iterrowsr   r   r   r	   DatasetItem)	r7   r   r(   result_rowr#   r$   item_kwargss	            r   from_pandasrA   :   s    
 $%F#+"K$$&3 "iik
)
U+% S#&-) 	 

 	l..==> ' M
s   !Bc           	          g }| D ]X  }|j                  d      }|j                         D ci c]  \  }}|j                  ||      | }}}|j                  |       Z t	        j
                  |d      }|S c c}}w )NTr      )indent)r   r   r   r   r.   r0   )	r   r   r    r!   r"   r#   r$   r%   r=   s	            r   to_jsonrE   N   s    N''4'8@L@R@R@T
@T*#uLS#&-@T 	 
 	m,  **^A6FM
s   A9r$   c           	         g }t        j                  |       }|D ]]  }|j                         D  ci c]  \  }} ||vr|j                  ||      |  }}} |j	                  t        j                  di |       _ |S c c} }w r9   )r.   r/   r   r   r   r	   r<   )r$   r   r(   r=   
item_dicts	item_dictr#   r@   s           r   r1   r1   \   s     F'+zz%'8J	 (oo/
/
U+% S#&-/ 	 

 	l..==>   M
s   !A<)r
   N)r.   typingr   r   r   r   r   importlib.utilr   loggingr   r    r	   r<   ItemConstructor	getLogger__name__LOGGERr   r   strr&   r6   rA   rE   r1   r:   r   r   <module>rR      si    ; ;   C5,":"::; 
		8	$| /((()(9=c3h((&::"&sCx.:?CCy:	,
"
"#:sCx. c 
,
"
"#	(4001 c3h TW "38n;?9	,
"
"#r   