
    ̺iX                         S SK JrJr  SSKJrJrJrJrJr  S r	S r
S rS rS rS	 rS
 rS rS r\
\\\\\\\\\\\	\\S.rS rS rg)    )IntegralReal   )MAX_PITCHWHEELMAX_SONGPOSMIN_PITCHWHEELMIN_SONGPOSSPEC_BY_TYPEc                 6    U [         ;  a  [        SU < 35      eg )Nzinvalid message type )r
   
ValueError)type_s    S/var/www/piano.thomer.com/venv/lib/python3.13/site-packages/mido/messages/checks.py
check_typer      s"    L 0	:;; !    c                 x    [        U [        5      (       d  [        S5      eSU s=::  a  S::  d  O  [        S5      eg )Nzchannel must be intr      zchannel must be in range 0..15
isinstancer   	TypeErrorr   )channels    r   check_channelr      s9    gx((-..'R9::  r   c                     [        U [        5      (       d  [        S5      e[        U s=::  a
  [        ::  d%  O  [        SR                  [        [        5      5      eg )Nzsong pos must be intz song pos must be in range {}..{})r   r   r   r	   r   r   format)poss    r   	check_posr      sM    c8$$.//C.;.;BB$k3 4 	4 /r   c                     [        U [        5      (       d  [        S5      e[        U s=::  a
  [        ::  d%  O  [        SR                  [        [        5      5      eg )Nzpichwheel value must be intz(pitchwheel value must be in range {}..{})r   r   r   r   r   r   r   )pitchs    r   check_pitchr   $   sM    eX&&566u66CJJ'9 : 	: 7r   c                 ,    U  H  n[        U5        M     g N)check_data_byte)
data_bytesbytes     r   
check_datar$   ,   s     r   c                 x    [        U [        5      (       d  [        S5      eSU s=::  a  S::  d  O  [        S5      eg )Nzframe_type must be intr      z frame_type must be in range 0..7r   values    r   check_frame_typer)   1   s7    eX&&011%_1_;<< r   c                 x    [        U [        5      (       d  [        S5      eSU s=::  a  S::  d  O  [        S5      eg )Nzframe_value must be intr   r   z"frame_value must be in range 0..15r   r'   s    r   check_frame_valuer+   8   s9    eX&&122%2=>> r   c                 x    [        U [        5      (       d  [        S5      eSU s=::  a  S::  d  O  [        S5      eg )Nzdata byte must be intr      z!data byte must be in range 0..127r   r'   s    r   r!   r!   ?   s9    eX&&/00%3<== r   c                 D    [        U [        5      (       d  [        S5      eg )Nztime must be int or float)r   r   r   )times    r   
check_timer0   F   s     dD!!344 "r   )r   controldata
frame_typeframe_valuenoter   r   programsongr/   typer(   velocityc                 "    [         U    " U5        g r    )_CHECKS)namer(   s     r   check_valuer=   ]   s    DM%r   c                 
   [         R                  " U S   5      nUc  [        SR                  U S   5      5      eU R	                  5        H6  u  p#X!S   ;  a  [        SR                  US   U5      5      e[        X#5        M8     g )Nr8   zunknown message type {!r}attribute_namesz{} message has no attribute {})r
   getr   r   itemsr=   )msgdictspecr<   r(   s       r   check_msgdictrD   a   s    GFO,D|4;;GFOLMM}}-..077VdKM M 	D  'r   N)numbersr   r   specsr   r   r   r	   r
   r   r   r   r   r$   r)   r+   r!   r0   r;   r=   rD    r   r   <module>rH      s~   
 # <
;4:
=?>5 "$$
!r   