o
    ,wiU                     @   s   d Z ddlZddlmZmZmZ ddlmZ ddl	Z	G dd de	j
ZG dd dejd	Zd
d ZG dd dejed eZdS )zAPI for objects that want to render in a particular way in Graphviz.

(This module was partly split out to avoid circular imports.)
    N)AnyCallableIterable)configc                   @   s,   e Zd ZdZdedeegef fddZdS )GraphvizRendererApizGAPI of _GraphvizRenderer exposed to CustomGraphvizBuildable subclasses.tagreturnc                 K   s   t  N)NotImplementedError)selfr   kwargs r   _/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/fiddle/_src/graphviz_custom_object.pyr      s   zGraphvizRendererApi.tagN)__name__
__module____qualname____doc__strr   r   r   r   r   r   r   r      s     r   c                   @   s(   e Zd ZdZejdedefddZdS )CustomGraphvizBuildablezMixin class that marks a Buildable has having a custom __render_value__.

  This lets certain special-purpose Buildables customize how they are rendered.
  apir   c                 C   s   dS )z"Renders this Buildable as a value.Nr   r   r   r   r   r   __render_value__(   s    z(CustomGraphvizBuildable.__render_value__N)	r   r   r   r   abcabstractmethodr   r   r   r   r   r   r   r   "   s    r   )	metaclassc                   C   s   t d)z3Helper function for `Trimmed` that raises an error.zmPlease do not call fdl.build() on a config tree with Trimmed() nodes. These nodes are for visualization only.)
ValueErrorr   r   r   r   _raise_error-   s   r   c                       sN   e Zd ZdZ fddZdedefddZede	e d	e
jfd
dZ  ZS )Trimmedz1Represents a configuration that has been trimmed.c                    s   t  t d S r	   )super__init__r   )r   	__class__r   r   r   8   s   zTrimmed.__init__r   r   c                 C   s   | ddS )Niz(trimmed...))r   r   r   r   r   r   ;   s   zTrimmed.__render_value__valuesmetadatac                 C   s   |  S r	   r   )clsr#   r$   r   r   r   __unflatten__>   s   zTrimmed.__unflatten__)r   r   r   r   r   r   r   r   classmethodr   
config_libBuildableTraverserMetadatar&   __classcell__r   r   r    r   r   5   s    r   )r   r   typingr   r   r   fiddle._srcr   r(   typing_extensionsProtocolr   ABCMetar   r   Configtyper   r   r   r   r   <module>   s    