
    |h                     R    d dl mZmZ d dlmZmZmZmZ d dlZe G d d             Z	y)    )	dataclassfield)AnyListOptionalTupleNc                   j   e Zd ZU dZdZee   ed<   dZee   ed<   dZ	ee
e      ed<   dZeed<   dZeed<   dZee
eeef         ed	<   ej$                  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<    ed       Ze
e   ed<   dZeed<   dZeeeef      ed<   dZeed<   dZeeef   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/<   dZ*ee   ed0<   d1Z+eed2<   d*Z,eed3<   d4Z-eed5<   dZ.eed6<   d7Z/eed8<   d9e0fd:Z1y);SolutionConfigaj  
    Manages configuration parameters for Ultralytics Vision AI solutions.

    The SolutionConfig class serves as a centralized configuration container for all the
    Ultralytics solution modules: https://docs.ultralytics.com/solutions/#solutions.
    It leverages Python `dataclass` for clear, type-safe, and maintainable parameter definitions.

    Attributes:
        source (str, optional): Path to the input source (video, RTSP, etc.). Only usable with Solutions CLI.
        model (str, optional): Path to the Ultralytics YOLO model to be used for inference.
        classes (List[int], optional): List of class indices to filter detections.
        show_conf (bool): Whether to show confidence scores on the visual output.
        show_labels (bool): Whether to display class labels on visual output.
        region (List[Tuple[int, int]], optional): Polygonal region or line for object counting.
        colormap (int, optional): OpenCV colormap constant for visual overlays (e.g., cv2.COLORMAP_JET).
        show_in (bool): Whether to display count number for objects entering the region.
        show_out (bool): Whether to display count number for objects leaving the region.
        up_angle (float): Upper angle threshold used in pose-based workouts monitoring.
        down_angle (int): Lower angle threshold used in pose-based workouts monitoring.
        kpts (List[int]): Keypoint indices to monitor, e.g., for pose analytics.
        analytics_type (str): Type of analytics to perform ("line", "area", "bar", "pie", etc.).
        figsize (Tuple[int, int], optional): Size of the matplotlib figure used for analytical plots (width, height).
        blur_ratio (float): Ratio used to blur objects in the video frames (0.0 to 1.0).
        vision_point (Tuple[int, int]): Reference point for directional tracking or perspective drawing.
        crop_dir (str): Directory path to save cropped detection images.
        json_file (str): Path to a JSON file containing data for parking areas.
        line_width (int): Width for visual display i.e. bounding boxes, keypoints, counts.
        records (int): Number of detection records to send email alerts.
        fps (float): Frame rate (Frames Per Second) for speed estimation calculation.
        max_hist (int): Maximum number of historical points or states stored per tracked object for speed estimation.
        meter_per_pixel (float): Scale for real-world measurement, used in speed or distance calculations.
        max_speed (int): Maximum speed limit (e.g., km/h or mph) used in visual alerts or constraints.
        show (bool): Whether to display the visual output on screen.
        iou (float): Intersection-over-Union threshold for detection filtering.
        conf (float): Confidence threshold for keeping predictions.
        device (str, optional): Device to run inference on (e.g., 'cpu', '0' for CUDA GPU).
        max_det (int): Maximum number of detections allowed per video frame.
        half (bool): Whether to use FP16 precision (requires a supported CUDA device).
        tracker (str): Path to tracking configuration YAML file (e.g., 'botsort.yaml').
        verbose (bool): Enable verbose logging output for debugging or diagnostics.
        data (str): Path to image directory used for similarity search.

    Methods:
        update: Update the configuration with user-defined keyword arguments and raise error on invalid keys.

    Examples:
        >>> from ultralytics.solutions.config import SolutionConfig
        >>> cfg = SolutionConfig(model="yolo11n.pt", region=[(0, 0), (100, 0), (100, 100), (0, 100)])
        >>> cfg.update(show=False, conf=0.3)
        >>> print(cfg.model)
    NsourcemodelclassesT	show_confshow_labelsregioncolormapshow_inshow_outg      b@up_angleZ   
down_anglec                  
    g dS )N)      
    r       [/var/www/html/test/engine/venv/lib/python3.12/site-packages/ultralytics/solutions/config.py<lambda>zSolutionConfig.<lambda>J   s    J r   )default_factorykptslineanalytics_type)g)@g@figsizeg      ?
blur_ratio)   r%   vision_pointzcropped-detectionscrop_dir	json_file   
line_width   recordsg      >@fpsmax_histg?meter_per_pixelx   	max_speedFshowgffffff?ioug      ?confdevicei,  max_dethalfzbotsort.yamltrackerverboseimagesdatakwargsc                     |j                         D ]0  \  }}t        | |      rt        | ||        d}t        | d|        | S )zNUpdate configuration parameters with new values provided as keyword arguments.z;https://docs.ultralytics.com/solutions/#solutions-argumentsz' is not a valid solution argument, see )itemshasattrsetattr
ValueError)selfr<   keyvalueurls        r   updatezSolutionConfig.updatea   sW     ,,. 	WJCtS!c5)S C5(OPSu!UVV	W r   )2__name__
__module____qualname____doc__r   r   str__annotations__r   r   r   intr   boolr   r   r   cv2COLORMAP_DEEPGREENr   r   r   r   floatr   r   r    r"   r#   r$   r&   r'   r(   r*   r,   r-   r.   r/   r1   r2   r3   r4   r5   r6   r7   r8   r9   r;   r   rF   r   r   r   r
   r
   	   s   2h !FHSM E8C=#'GXd3i 'ItK.2FHT%S/*+2!44Hhsm4GTHdHeJ,>?D$s)? NC )4GXeCHo&4J$,L%S/,(Hc(IsJGSCHc!OU!IsD$CD% FHSM GSD$!GS!GTD#	s 	r   r
   )
dataclassesr   r   typingr   r   r   r   rO   r
   r   r   r   <module>rT      s/    ) - - 
 ` ` `r   