Ë
    Fêñi4  ã                  óR   — d dl mZ d dlmZmZ d dlmZ d dlZe G d„ d«      «       Zy)é    )Úannotations)Ú	dataclassÚfield)ÚAnyNc                  ó  — e Zd ZU dZdZded<   dZded<   dZded<   dZd	ed
<   dZ	d	ed<   dZ
ded<   ej                  Zded<   dZd	ed<   dZd	ed<   dZded<   dZded<    ed„ ¬«      Zded<   dZded<   dZd ed!<   d"Zded#<   d$Zd%ed&<   d'Zded(<   dZded)<   d*Zded+<   d,Zded-<   d.Zded/<   d,Zded0<   d1Zded2<   d3Zded4<   d5Z d	ed6<   d7Z!ded8<   d9Z"ded:<   dZ#ded;<   d<Z$ded=<   d5Z%d	ed><   d?Z&ded@<   dZ'd	edA<   dBZ(dedC<   dEdD„Z)y)FÚSolutionConfigaŠ  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_DEEPGREEN).
        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[float, float], 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, optional): Path to a JSON file containing data for parking areas.
        line_width (int): Width for visual display, e.g. bounding boxes, keypoints, and 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="yolo26n.pt", region=[(0, 0), (100, 0), (100, 100), (0, 100)])
        >>> cfg.update(show=False, conf=0.3)
        >>> print(cfg.model)
    Nz
str | NoneÚsourceÚmodelzlist[int] | NoneÚclassesTÚboolÚ	show_confÚshow_labelszlist[tuple[int, int]] | NoneÚregionz
int | NoneÚcolormapÚshow_inÚshow_outg      b@ÚfloatÚup_angleéZ   ÚintÚ
down_anglec                 ó
   — g d¢S )N)é   é   é
   © r   ó    ú^/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/ultralytics/solutions/config.pyú<lambda>zSolutionConfig.<lambda>L   s   € ²J€ r   )Údefault_factoryz	list[int]ÚkptsÚlineÚstrÚanalytics_type)gš™™™™™)@gÍÌÌÌÌÌ@ztuple[int, int] | NoneÚfigsizeg      à?Ú
blur_ratio)é   r'   ztuple[int, int]Úvision_pointzcropped-detectionsÚcrop_dirÚ	json_fileé   Ú
line_widthé   Úrecordsg      >@ÚfpsÚmax_histgš™™™™™©?Úmeter_per_pixeléx   Ú	max_speedFÚshowgffffffæ?Úioug      Ð?ÚconfÚdevicei,  Úmax_detÚhalfzbotsort.yamlÚtrackerÚverboseÚimagesÚdatac                óŒ   — |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)ÚselfÚkwargsÚkeyÚvalueÚurls        r   ÚupdatezSolutionConfig.updatec   sW   € à Ÿ,™,›.ò 	W‰JˆC�Ü�t˜SÔ!Ü˜˜c 5Õ)àS�Ü  C 5Ð(OÐPSÈuÐ!UÓVÐVð	Wð ˆr   )rD   r   )*Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   Ú__annotations__r
   r   r   r   r   Úcv2ÚCOLORMAP_DEEPGREENr   r   r   r   r   r   r!   r$   r%   r&   r(   r)   r*   r,   r.   r/   r0   r1   r3   r4   r5   r6   r7   r8   r9   r:   r;   r=   rH   r   r   r   r   r      sh  … ñ2ðh €FˆJÓØ€Eˆ:ÓØ $€GÐÓ$Ø€IˆtÓØ€K�ÓØ+/€FÐ(Ó/Ø×1Ñ1€HˆjÓ1Ø€GˆTÓØ€HˆdÓØ€HˆeÓØ€J�ÓÙÑ,>Ô?€Dˆ)Ó?Ø €N�CÓ Ø&1€GÐ#Ó1Ø€J�ÓØ$,€L�/Ó,Ø(€HˆcÓ(Ø€IˆsÓØ€J�ÓØ€GˆSÓØ€CˆÓØ€HˆcÓØ!€O�UÓ!Ø€IˆsÓØ€Dˆ$ÓØ€CˆÓØ€Dˆ%ÓØ€FˆJÓØ€GˆSÓØ€Dˆ$ÓØ!€GˆSÓ!Ø€GˆTÓØ€Dˆ#Óô	r   r   )	Ú
__future__r   Údataclassesr   r   Útypingr   rN   r   r   r   r   ú<module>rS      s/   ðõ #ç (Ý ã 
ð ÷`ð `ó ñ`r   