
    <j                         d Z dZddlmZmZmZ ddlZ G d de      Z G d de      Z	 G d	 d
e
      Zdddedee   fdZy)z*Provides a container for DescriptorProtos.z"matthewtoia@google.com (Matt Toia)    )DictIteratorOptionalNc                       e Zd Zy)ErrorN)__name__
__module____qualname__     Z/opt/lfcs-signon/.venv/lib/python3.12/site-packages/google/protobuf/descriptor_database.pyr   r      s    r   r   c                       e Zd ZdZy),DescriptorDatabaseConflictingDefinitionErrorzGRaised when a proto is added with the same name & different descriptor.N)r   r	   r
   __doc__r   r   r   r   r      s    Or   r   c                       e Zd ZdZddZddZdeddfd	Zd
eddfdZdede	de
d   fdZdedee	   fdZdeddddfdZy)DescriptorDatabasezEA container accepting FileDescriptorProtos and maps DescriptorProtos.returnNc                      i | _         i | _        y N)_file_desc_protos_by_file_file_desc_protos_by_symbol)selfs    r   __init__zDescriptorDatabase.__init__   s     	 	"
 	 	$r   file_desc_proto"descriptor_pb2.FileDescriptorProtoc                 t   |j                   }|| j                  vr|| j                  |<   n!| j                  |   |k7  rt        d|z        y|j                  }|j                  D ]%  }t        ||      D ]  }| j                  ||        ' |j                  D ]  }| j                  |rdj                  ||j                   f      n|j                   |       |j                  D ]:  }|| j                  |rdj                  ||j                   f      n|j                   <   <  |j                  D ]=  }| j                  |rdj                  ||j                   f      n|j                   |       ? |j                  D ]=  }	| j                  |rdj                  ||	j                   f      n|	j                   |       ? y)aM  Adds the FileDescriptorProto and its types to this database.

    Args:
      file_desc_proto: The FileDescriptorProto to add.

    Raises:
      DescriptorDatabaseConflictingDefinitionError: if an attempt is made to
        add a proto with the same name but different definition than an
        existing proto in the database.
    z0%s already added, but with different descriptor.N.)namer   r   packagemessage_type_ExtractSymbols
_AddSymbol	enum_typejoinvaluer   	extensionservice)
r   r   
proto_namer   messager   enum
enum_valuer&   r'   s
             r   AddzDescriptorDatabase.Add"   s    !%%J7773Bd$$Z0		'	'
	3	F8
<z
I   %%G"// /!'73 /$o.//  )) 
oo-4388Wdii()$))
 

 *  	((4;CHHgz/0	
 %.. 	
oo29388Winn-.y~~

 #** 
oo07388Wgll+,W\\
r   r   c                      | j                   |   S )a  Finds the file descriptor proto by file name.

    Typically the file name is a relative path ending to a .proto file. The
    proto with the given name will have to have been added to this database
    using the Add method or else an error will be raised.

    Args:
      name: The file name to find.

    Returns:
      The file descriptor proto matching the name.

    Raises:
      KeyError if no file by the given name was added.
    )r   )r   r   s     r   FindFileByNamez!DescriptorDatabase.FindFileByNameP   s    " ))$//r   symbolc                     |j                  d      }	 | j                  |   S # t        $ r@ |j                  d      \  }}}	 | j                  |   cY S # t        $ r t        |      w xY ww xY w)a  Finds the file descriptor proto containing the specified symbol.

    The symbol should be a fully qualified name including the file descriptor's
    package and any containing messages. Some examples:

    'some.package.name.Message'
    'some.package.name.Message.NestedEnum'
    'some.package.name.Message.some_field'

    The file descriptor proto containing the specified symbol must be added to
    this database using the Add method or else an error will be raised.

    Args:
      symbol: The fully qualified symbol name.

    Returns:
      The file descriptor proto containing the symbol.

    Raises:
      KeyError if no file contains the specified symbol.
    r   )lstripr   KeyError
rpartition)r   r/   	top_level_s       r   FindFileContainingSymbolz+DescriptorDatabase.FindFileContainingSymbolc   s    0 ]]3F--f55  ))#.oiA//	:: vs!   " A+AA+A''A+extendee_nameextension_numberc                      y r   r   )r   r7   r8   s      r   FindFileContainingExtensionz.DescriptorDatabase.FindFileContainingExtension   s     r   c                     g S r   r   )r   r7   s     r   FindAllExtensionNumbersz*DescriptorDatabase.FindAllExtensionNumbers   s    Ir   c                     || j                   v rOd|j                  z   dz   |z   dz   | j                   |   j                  z   dz   }t        j                  |t               || j                   |<   y )NzConflict register for file "z": z is already defined in file "")r   r   warningswarnRuntimeWarning)r   r   r   warn_msgs       r   r"   zDescriptorDatabase._AddSymbol   s     t///
(  !  ,	,
 ,,T2778   mmHn--<D$$T*r   )r   N)r   r   r   N)r   r	   r
   r   r   r,   strr.   r6   intr   r:   listr<   r"   r   r   r   r   r      s    M,\0 0)M 0&&&+&P  45	3 49 ==(L==r   r   
desc_protozdescriptor_pb2.DescriptorProtor   r   c              #      K   |r|dz   | j                   z   n| j                   }| | j                  D ]  }t        ||      D ]  }|   | j                  D ]!  }dj	                  ||j                   f       # yw)zPulls out all the symbols from a descriptor proto.

  Args:
    desc_proto: The proto to extract symbols from.
    package: The package containing the descriptor type.

  Yields:
    The fully qualified name found in the descriptor.
  r   N)r   nested_typer!   r#   r$   )rF   r   message_namerH   r/   r#   s         r   r!   r!      s      5<30,++ k!+|< l '' 3i
((L)..1
223s   A<A>)r   
__author__typingr   r   r   r?   	Exceptionr   r   objectr   rC   r!   r   r   r   <module>rN      sb    11
 + + I P5 PN= N=b303;>3c]3r   