a
    +h                     @   s   U d dl mZ d dlmZmZ d dlmZ eG dd deZG dd dZ	G dd	 d	e	Z
G d
d de	ZG dd de	Ze
eegZeee	  ed< dS )    )	dataclass)ListType)protocolc                   @   s>   e Zd ZU eed< eed< dZeed< dZeed< dd Zd	S )
VersionMatchingErrorline_numberlinez&Please fix the version matching error.
how_to_fixz.There is a version matching error in the file.descriptionc              	   C   s&   d| j  d| j d| j d| j d	S )NzKVersion matching error found in the file when parsing in strict mode.
Line z: z
Line content: z
How to fix: 
)r   r
   r   r	   self r   P/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/m3u8/version_matching_rules.py__str__   s    zVersionMatchingError.__str__N)	__name__
__module____qualname__int__annotations__strr	   r
   r   r   r   r   r   r      s
   
r   c                   @   sb   e Zd ZU dZeed< dZeed< eed< eed< eed< eeeddd	d
Z	dd Z
dd ZdS )VersionMatchRuleBase r
   r	   versionr   r   N)r   r   r   returnc                 C   s   || _ || _|| _d S N)r   r   r   )r   r   r   r   r   r   r   __init__   s    zVersionMatchRuleBase.__init__c                 C   s   t d S r   )NotImplementedErrorr   r   r   r   validate$   s    zVersionMatchRuleBase.validatec                 C   s   t | j| j| j| jdS )N)r   r   r
   r	   )r   r   r   r
   r	   r   r   r   r   	get_error'   s    zVersionMatchRuleBase.get_error)r   r   r   r
   r   r   r	   floatr   r   r   r   r   r   r   r   r      s   
r   c                   @   s   e Zd ZdZdZdd ZdS )ValidIVInEXTXKEYzEYou must use at least protocol version 2 if you have IV in EXT-X-KEY.z+Change the protocol version to 2 or higher.c                 C   s(   t j| jvrdS d| jv r$| jdkS dS )NTZIV   )r   Z	ext_x_keyr   r   r   r   r   r   r   6   s
    

zValidIVInEXTXKEY.validateNr   r   r   r
   r	   r   r   r   r   r   r!   0   s   r!   c                   @   s   e Zd ZdZdZdd ZdS )ValidFloatingPointEXTINFz[You must use at least protocol version 3 if you have floating point EXTINF duration values.z+Change the protocol version to 3 or higher.c                    sn   t j| jvrdS | jt jd ddd}|d }tddd	 td fd
d}||rf| jdkS  |S )NT:r   ,   r   valuec                 S   s(   zt |  W dS  ty"   Y dS 0 d S )NTF)r    
ValueErrorr(   r   r   r   	is_numberK   s
    z4ValidFloatingPointEXTINF.validate.<locals>.is_numberc                    s    | od| v S )N.r   r(   r+   r   r   is_floating_numberR   s    z=ValidFloatingPointEXTINF.validate.<locals>.is_floating_number   )r   Zextinfr   replacesplitr   r   )r   chunksdurationr.   r   r-   r   r   D   s    
z!ValidFloatingPointEXTINF.validateNr#   r   r   r   r   r$   @   s   r$   c                   @   s   e Zd ZdZdZdd ZdS )#ValidEXTXBYTERANGEOrEXTXIFRAMESONLYzZYou must use at least protocol version 4 if you have EXT-X-BYTERANGE or EXT-X-IFRAME-ONLY.z+Change the protocol version to 4 or higher.c                 C   s&   t j| jvrt j| jvrdS | jdkS )NT   )r   Zext_x_byteranger   Zext_i_frames_onlyr   r   r   r   r   r   _   s    

z,ValidEXTXBYTERANGEOrEXTXIFRAMESONLY.validateNr#   r   r   r   r   r4   [   s   r4   available_rulesN)Zdataclassesr   typingr   r   Zm3u8r   	Exceptionr   r   r!   r$   r4   r6   r   r   r   r   r   <module>   s   