ó
—Àv]c
@ s* d Z d d l Z d d l Z d d l m Z m Z d d d d g Z e j d e j ƒ Z e j d
ƒ Z
d d d
d d d h Z d d d d d d d d d d h
Z e j
e
j
e d „ Z d „ Z d d d d „ Z d d d d „ Z d e f d „ ƒ YZ e j d! „ e j Dƒ ƒ Z d" „ Z d S(# sD Quote strings to be valid DOT identifiers, assemble attribute lists.iÿÿÿÿNi ( t _compatt toolst quotet
quote_edget a_listt attr_lists <.*>$s/ ([a-zA-Z_][a-zA-Z0-9_]*|-?(\.\d+|\d+(\.\d*)?))$t nodet edget grapht digrapht subgrapht strictt nt net et set st swt wt nwt ct _c C sV | | ƒ r t | t ƒ r n3 | | ƒ s> | j ƒ | k rR d | j d d ƒ S| S( sB Return DOT identifier from string, quote if needed.
>>> quote('')
'""'
>>> quote('spam')
'spam'
>>> quote('spam spam')
'"spam spam"'
>>> quote('-4.2')
'-4.2'
>>> quote('.42')
'.42'
>>> quote('<spam>')
'<spam>'
>>> quote(nohtml('<>'))
'"<>"'
s "%s"t "s \"( t
isinstancet NoHtmlt lowert replace( t
identifiert htmlt valid_idt dot_keywords( ( s1 /tmp/pip-install-Qvdv_2/graphviz/graphviz/lang.pyR s
c C s~ | j d ƒ \ } } } t | ƒ g } | rq | j d ƒ \ } } } | j t | ƒ ƒ | rq | j | ƒ qq n d j | ƒ S( sé Return DOT edge statement node_id from string, quote if needed.
>>> quote_edge('spam')
'spam'
>>> quote_edge('spam spam:eggs eggs')
'"spam spam":"eggs eggs"'
>>> quote_edge('spam:eggs:s')
'spam:eggs:s'
t :( t partitionR t appendt join( R R R t restt partst portt compass( ( s1 /tmp/pip-install-Qvdv_2/graphviz/graphviz/lang.pyR 7 s c C s
| d k r d t | ƒ g n g } | r… g t j | ƒ D]4 \ } } | d k r; d t | ƒ t | ƒ f ^ q; } | j | ƒ n | rý t | d ƒ r¬ t j | ƒ } n g | D]4 \ } } | d k r³ d t | ƒ t | ƒ f ^ q³ } | j | ƒ n d j | ƒ S( s• Return assembled DOT a_list string.
>>> a_list('spam', {'spam': None, 'ham': 'ham ham', 'eggs': ''})
'label=spam eggs="" ham="ham ham"'
s label=%ss %s=%st itemst N( t NoneR R t
mapping_itemst extendt hasattrR" ( t labelt kwargst
attributest resultt kt vR' ( ( s1 /tmp/pip-install-Qvdv_2/graphviz/graphviz/lang.pyR M s %G>c C s$ t | | | ƒ } | s d Sd | S( s£ Return assembled DOT attribute list string.
Sorts ``kwargs`` and ``attributes`` if they are plain dicts (to avoid
unpredictable order from hash randomization in Python 3 versions).
>>> attr_list()
''
>>> attr_list('spam spam', kwargs={'eggs': 'eggs', 'ham': 'ham ham'})
' [label="spam spam" eggs=eggs ham="ham ham"]'
>>> attr_list(kwargs={'spam': None, 'eggs': ''})
' [eggs=""]'
t s [%s]( R ( R- R. R/ t content( ( s1 /tmp/pip-install-Qvdv_2/graphviz/graphviz/lang.pyR a s R c B s) e Z d Z d Z d Z e d „ ƒ Z RS( sB Mixin for string subclasses disabling fall-through of ``'<...>'``.s? %s subclass that does not treat ``'<...>'`` as DOT HTML string.c C sI d | j | j f } | | f } i | j | j d 6} t | | | ƒ S( Ns %s_%st __doc__( t __name__t _doct type( t clst othert namet basest ns( ( s1 /tmp/pip-install-Qvdv_2/graphviz/graphviz/lang.pyt _subcls} s ( ( R6 t
__module__R5 t __slots__R7 t classmethodR> ( ( ( s1 /tmp/pip-install-Qvdv_2/graphviz/graphviz/lang.pyR v s c c s$ | ] } | t j | ƒ f Vq d S( N( R R> ( t .0R ( ( s1 /tmp/pip-install-Qvdv_2/graphviz/graphviz/lang.pys … s c C sN y t t | ƒ } Wn- t k
rC t d | t t ƒ f ƒ ‚ n X| | ƒ S( s‡ Return copy of ``s`` that will not treat ``'<...>'`` as DOT HTML string in quoting.
Args:
s: String in which leading ``'<'`` and trailing ``'>'`` should be treated as literal.
Raises:
TypeError: If ``s`` is not a ``str`` on Python 3, or a ``str``/``unicode`` on Python 2.
>>> quote('<>-*-<>')
'<>-*-<>'
>>> quote(nohtml('<>-*-<>'))
'"<>-*-<>"'
s. %r does not have one of the required types: %r( t NOHTMLR8 t KeyErrort TypeErrort list( R t subcls( ( s1 /tmp/pip-install-Qvdv_2/graphviz/graphviz/lang.pyt nohtmlˆ s
( R5 t ret collectionsR3 R R t __all__t compilet DOTALLt HTML_STRINGt IDt KEYWORDSt COMPASSt matchR R R) R R t objectR t OrderedDictt string_classesRC RH ( ( ( s1 /tmp/pip-install-Qvdv_2/graphviz/graphviz/lang.pyt s $