
    Xh
                    V    d Z ddlmZ ddlmZ ddlmZ  G d de      Z G d d	      Z	y
)z"An event schema registry.    )annotations)Any   )EventSchemac                      e Zd ZdZy)SchemaRegistryExceptionz:Exception class for Jupyter Events Schema Registry Errors.N)__name__
__module____qualname____doc__     R/var/www/html/myenv/lib/python3.12/site-packages/jupyter_events/schema_registry.pyr   r   	   s    Dr   r   c                  d    e Zd ZdZdddZddZddZddZedd       Z	ddZ
dd	Zdd
ZddZy)SchemaRegistryz>A convenient API for storing and searching a group of schemas.Nc                    |xs i | _         y)zInitialize the registry.N_schemas)selfschemass     r   __init__zSchemaRegistry.__init__   s    072r   c                    || j                   v S )z:Syntax sugar to check if a schema is found in the registryr   )r   keys     r   __contains__zSchemaRegistry.__contains__   s    dmm##r   c                    dj                  | j                  j                         D cg c]  }t        |       c}      S c c}w )zThe str repr of the registry.z,
)joinr   valuesstr)r   ss     r   __repr__zSchemaRegistry.__repr__   s0    zz4==+?+?+ABa3q6BCCBs   Ac                    |j                   | j                  v rd|j                    d}t        |      || j                  |j                   <   y )NzThe schema, zB, is already registered. Try removing it and registering it again.)idr   r   )r   
schema_objmsgs      r   _addzSchemaRegistry._add   sM    ==DMM)z}}o .H H  *#..'1jmm$r   c                H    t        | j                  j                               S N)listr   keys)r   s    r   
schema_idszSchemaRegistry.schema_ids%   s    DMM&&())r   c                ^    t        |t              st        |      }| j                  |       |S )zAdd a valid schema to the registry.

        All schemas are validated against the Jupyter Events meta-schema
        found here:
        )
isinstancer   r%   )r   schemas     r   registerzSchemaRegistry.register)   s)     &+. (F		&r   c                `    	 | j                   |   S # t        $ r d| d}t        |      dw xY w)z^Fetch a given schema. If the schema is not found,
        this will raise a KeyError.
        The requested schema, R, was not found in the schema registry. Are you sure it was previously registered?Nr   KeyErrorr   id_r$   s      r   getzSchemaRegistry.get4   sK    	*==%% 	*( .N N  3-T)	*s    -c                ^    	 | j                   |= y# t        $ r d| d}t        |      dw xY w)z_Remove a given schema. If the schema is not found,
        this will raise a KeyError.
        r0   r1   Nr2   r4   s      r   removezSchemaRegistry.removeA   sH    	*c" 	*( .N N  3-T)	*s    ,c                H    | j                  |      }|j                  |       y)zIValidate an event against a schema within this
        registry.
        N)r6   validate)r   r5   datar-   s       r   validate_eventzSchemaRegistry.validate_eventN   s     #r   r'   )r   zdict[str, EventSchema] | None)r   r   returnbool)r=   r   )r#   r   r=   None)r=   z	list[str])r-   z$dict[str, Any] | (str | EventSchema)r=   r   )r5   r   r=   r   )r5   r   r=   r?   )r5   r   r;   zdict[str, Any]r=   r?   )r	   r
   r   r   r   r   r    r%   propertyr*   r.   r6   r8   r<   r   r   r   r   r      sB    H>$D2 * *	**r   r   N)
r   
__future__r   typingr   r-   r   	Exceptionr   r   r   r   r   <module>rD      s+      "  Ei EF Fr   