
    ̺ic	                         S SK Jr  S SKJrJr   " S S5      r " S S\\5      r " S S\\5      r " S	 S
\\5      rS r	S r
S rg)   )Message)MetaMessageUnknownMetaMessagec                        \ rS rSrS rS rSrg)Frozen	   c                     [        S5      e)Nzfrozen message is immutable)
ValueError)self_s     J/var/www/piano.thomer.com/venv/lib/python3.13/site-packages/mido/frozen.py__setattr__Frozen.__setattr__
   s    677    c           	      j    [        [        [        [        U 5      R	                  5       5      5      5      $ )N)hashtuplesortedvarsitemsr   s    r   __hash__Frozen.__hash__   s$    E&d!1!1!34566r    N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r   r   r   r   r   	   s    87r   r   c                       \ rS rSrSrg)FrozenMessage   r   Nr   r   r   r   r   r   r   r   r!   r!          r   r!   c                       \ rS rSrSrg)FrozenMetaMessage   r   Nr#   r   r   r   r&   r&      r$   r   r&   c                       \ rS rSrS rSrg)FrozenUnknownMetaMessage   c                 4    S[         R                  " U 5      -   $ )Nr   )r   __repr__r   s    r   r,   !FrozenUnknownMetaMessage.__repr__   s    ,55d;;;r   r   N)r   r   r   r   r,   r   r   r   r   r)   r)      s    <r   r)   c                 "    [        U [        5      $ )z2Return True if message is frozen, otherwise False.)
isinstancer   )msgs    r   	is_frozenr1      s    c6""r   c                 b   [        U [        5      (       a  U $ [        U [        5      (       a  [        nOG[        U [        5      (       a  [
        nO+[        U [        5      (       a  [        nOU c  g[        S5      eUR                  U5      n[        U5      R                  [        U 5      5        U$ )zFreeze message.

Returns a frozen version of the message. Frozen messages are
immutable, hashable and can be used as dictionary keys.

Will return None if called with None. This allows you to do things
like::

    msg = freeze_message(port.poll())
N(first argument must be a message or None)r/   r   r   r!   r   r)   r   r&   r
   __new__r   update)r0   class_frozens      r   freeze_messager8   &   s     #v
	C	!	!	C+	,	,)	C	%	%"	CDD^^F#FLS	"Mr   c                 ~   [        U [        5      (       d  U R                  5       $ [        U [        5      (       a  [        nOG[        U [
        5      (       a  [        nO+[        U [        5      (       a  [        nOU c  g[        S5      eUR                  U5      n[        U5      R                  [        U 5      5        U$ )zeThaw message.

Returns a mutable version of a frozen message.

Will return None if called with None.
Nr3   )r/   r   copyr!   r   r)   r   r&   r   r
   r4   r   r5   )r0   r6   thaweds      r   thaw_messager<   D   s     c6""xxz	C	'	'	C1	2	2#	C*	+	+	CDD^^F#FLS	"Mr   N)messagesr   	midifilesr   r   r   r!   r&   r)   r1   r8   r<   r   r   r   <module>r?      sQ   
  67 7	FG 		 	<v'9 <
#<r   