o
    Fg                     @   sb   d dl Z d dlmZmZmZ d dlZd dlmZ d dlm	Z	 d dl
mZ G dd deZe ZdS )    N)CallableDictOptional)find_dotenv)computed_field)BaseSettingsc                   @   sx  e Zd ZU dZee ed< dZeed< dZ	eed< dZ
eed< d	Zeed
< dZeed< d	Zeed< dZeed< dZeed< dZeed< dZeed< dZeed< ejejejeZeed< ejeddZeed< edefddZdZee ed< dZeed< d Z eed!< d"Z!eed#< d$Z"e#ed%< d&Z$e#ed'< e%d(e& Z'eed)< d*Z(eed+< d,Z)e#ed-< dZ*eed.< d/Z+eed0< d1Z,e#ed2< d&Z-e#ed3< d4Z.eed5< d6Z/eed7< d8Z0eed9< d:Z1eed;< d<Z2eed=< dZ3ee ed>< d?d@dAZ4e5edB< ejedCejedDejedDejedDdEZ6e5eef edF< dGZ7eedH< dIZ8eedJ< dKZ9eedL< dZ:eedM< dNZ;eedO< dPdPdAZ<e5edQ< dRdRdAZ=e5edS< dTdTdAZ>e5edU< dZ?ee edV< dWZ@eedX< d8ZAeedY< dZBeedZ< d[ZCeed\< d]ZDeed^< dPdPdAZEe5ed_< d`ZFeeda< dZGee edb< dcZHeedd< dZIeede< dfZJeedg< dhZKeedi< djdjdAZLe5edk< dPZMeedl< dZNee edm< dZOeedn< doZPeedp< dZQee edq< dZReedr< dZSee eds< dZTeedt< edefdudvZUedefdwdxZVedefdydzZWedefd{d|ZXedefd}d~ZYedefddZZede[j\fddZ]ede^fddZ_G dd dZ`dS )SettingsNTORCH_DEVICE`   	IMAGE_DPI   IMAGE_DPI_HIGHRESFIN_STREAMLITTENABLE_EFFICIENT_ATTENTIONENABLE_CUDNN_ATTENTIONFLATTEN_PDFDISABLE_TQDMzhttps://models.datalab.toS3_BASE_URL
   PARALLEL_DOWNLOAD_WORKERSdataDATA_DIRresults
RESULT_DIRBASE_DIRstaticfontsFONT_DIRreturnc                 C   s`   | j d ur| j S tj rdS tjj rdS zdd l}t| dkr'W dS W dS    Y dS )Ncudampsr   xlacpu)	r	   torchr   is_availablebackendsr    	torch_xlalendevices)selfr&    r*   h/var/www/eduai.edurigo.com/doc_train/edurigo_ai/Puru/venv/lib/python3.10/site-packages/surya/settings.pyTORCH_DEVICE_MODEL   s   

zSettings.TORCH_DEVICE_MODELDETECTOR_BATCH_SIZEzs3://text_detection/2025_02_28DETECTOR_MODEL_CHECKPOINTzvikp/doclaynet_benchDETECTOR_BENCH_DATASET_NAMEix  DETECTOR_IMAGE_CHUNK_HEIGHTg333333?DETECTOR_TEXT_THRESHOLDgffffff?DETECTOR_BLANK_THRESHOLD   #DETECTOR_POSTPROCESSING_CPU_WORKERS   DETECTOR_MIN_PARALLEL_THRESHg?DETECTOR_BOX_Y_EXPAND_MARGINCOMPILE_DETECTORz%s3://inline_math_detection/2025_02_24INLINE_MATH_MODEL_CHECKPOINTg?INLINE_MATH_THRESHOLDINLINE_MATH_BLANK_THRESHOLDz!datalab-to/inline_detection_benchINLINE_MATH_BENCH_DATASET_NAME   INLINE_MATH_TEXT_BLANK_PXd   INLINE_MATH_MIN_AREAz s3://text_recognition/2025_02_18RECOGNITION_MODEL_CHECKPOINT   RECOGNITION_MAX_TOKENSRECOGNITION_BATCH_SIZE   i  )heightwidthRECOGNITION_IMAGE_SIZEzGoNotoCurrent-Regular.ttfzGoNotoCJKCore.ttf)allzhjakoRECOGNITION_RENDER_FONTSzBhttps://github.com/satbyy/go-noto-universal/releases/download/v7.0RECOGNITION_FONT_DL_BASEzvikp/rec_benchRECOGNITION_BENCH_DATASET_NAME   RECOGNITION_PAD_VALUECOMPILE_RECOGNITIONzs3://layout/2025_02_18LAYOUT_MODEL_CHECKPOINTi   LAYOUT_IMAGE_SIZEi  LAYOUT_SLICE_MINi  LAYOUT_SLICE_SIZELAYOUT_BATCH_SIZEzvikp/publaynet_benchLAYOUT_BENCH_DATASET_NAMELAYOUT_MAX_BOXESCOMPILE_LAYOUTzvikp/order_benchORDER_BENCH_DATASET_NAMEz!s3://table_recognition/2025_02_18TABLE_REC_MODEL_CHECKPOINTTABLE_REC_IMAGE_SIZE   TABLE_REC_MAX_BOXESTABLE_REC_BATCH_SIZEzdatalab-to/fintabnet_benchTABLE_REC_BENCH_DATASET_NAMECOMPILE_TABLE_RECzs3://texify/2025_02_18TEXIFY_MODEL_CHECKPOINTzdatalab-to/texify_benchTEXIFY_BENCHMARK_DATASETi  TEXIFY_IMAGE_SIZETEXIFY_MAX_TOKENSTEXIFY_BATCH_SIZECOMPILE_TEXIFYz#s3://ocr_error_detection/2025_02_18OCR_ERROR_MODEL_CHECKPOINTOCR_ERROR_BATCH_SIZECOMPILE_OCR_ERRORTESSDATA_PREFIXCOMPILE_ALLc                 C      | j p
| jp
| jdkS Nr!   )rm   r8   r,   r)   r*   r*   r+   DETECTOR_STATIC_CACHEz      zSettings.DETECTOR_STATIC_CACHEc                 C   rn   ro   )rm   rR   r,   rp   r*   r*   r+   RECOGNITION_STATIC_CACHE~   rr   z!Settings.RECOGNITION_STATIC_CACHEc                 C   rn   ro   )rm   rZ   r,   rp   r*   r*   r+   LAYOUT_STATIC_CACHE   rr   zSettings.LAYOUT_STATIC_CACHEc                 C   rn   ro   )rm   rb   r,   rp   r*   r*   r+   TABLE_REC_STATIC_CACHE   rr   zSettings.TABLE_REC_STATIC_CACHEc                 C   rn   ro   )rm   rk   r,   rp   r*   r*   r+   OCR_ERROR_STATIC_CACHE   rr   zSettings.OCR_ERROR_STATIC_CACHEc                 C   rn   ro   )rm   rh   r,   rp   r*   r*   r+   TEXIFY_STATIC_CACHE   rr   zSettings.TEXIFY_STATIC_CACHEc                 C   s&   | j dkrtjS | j dkrtjS tjS )Nr"   r!   )r,   r#   float32bfloat16float16rp   r*   r*   r+   MODEL_DTYPE   s
   

zSettings.MODEL_DTYPEc                 C   s   | j dkrtjS tjS ro   )r,   r#   no_gradinference_moderp   r*   r*   r+   INFERENCE_MODE   s   
zSettings.INFERENCE_MODEc                   @   s   e Zd ZedZdZdS )zSettings.Configz	local.envignoreN)__name__
__module____qualname__r   env_fileextrar*   r*   r*   r+   Config   s    r   )ar   r   r   r	   r   str__annotations__r   intr   r   boolr   r   r   r   r   r   r   r   ospathdirnameabspath__file__r   joinr   r   r,   r-   r.   r/   r0   r1   floatr2   min	cpu_countr4   r6   r7   r8   r9   r:   r;   r<   r>   r@   rA   rC   rD   rH   r   rM   rN   rO   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rq   rs   rt   ru   rv   rw   r#   dtyper{   r   r~   r   r*   r*   r*   r+   r   
   s   
 $r   )r   typingr   r   r   r#   dotenvr   pydanticr   pydantic_settingsr   r   settingsr*   r*   r*   r+   <module>   s     
