§
    º³Ùg¢*  ã                   óº   — d Z ddlmZmZmZ ddlmZmZ  G d„ de¦  «        Z	 G d„ de¦  «        Z
 G d„ d	e¦  «        Z G d
„ de¦  «        Zdeeef         fd„ZdS )a|  
Stylesheet for timeline drawer.

# TODO merge this docstring with pulse drawer.

The stylesheet `QiskitTimelineStyle` is initialized with the hard-corded default values in
`default_style`.

The `QiskitTimelineStyle` is a wrapper class of python dictionary with
the nested keys written such as `<type>.<group>.<item>` to represent a specific item
from many configuration options. This key representation is imitative of
`rcParams` of `matplotlib`.  However, the `QiskitTimelineStyle` does not need to be compatible
with the `rcParams` because the timeline stylesheet is heavily specialized to the context of
the scheduled circuit visualization.

Type of stylesheet is broadly separated into `formatter`, `generator` and `layout`.
The formatter is a nested dictionary of drawing parameters to control the appearance of
each visualization element. This data structure is similar to the `rcParams` of `matplotlib`.

The generator is a list of callback functions that generates drawings from
a given data source and the formatter. Each item can take multiple functions so that
several drawing data, for example, box, text, etc..., are generated from the single data source.
The layout is a callback function that determines the appearance of the output image.
Because a single stylesheet doesn't generate multiple images with different appearance,
only one layout function can be chosen for each stylesheet.
é    )ÚDictÚAnyÚMapping)Ú
generatorsÚlayoutsc                   óˆ   ‡ — e Zd ZdZˆ fd„Zdeeef         ddfˆ fd„Ze	d„ ¦   «         Z
e	d„ ¦   «         Ze	d	„ ¦   «         Zˆ xZS )
ÚQiskitTimelineStylezStylesheet for pulse drawer.c                 ó˜   •— t          ¦   «                              ¦   «          d | _        |                      t	          ¦   «         ¦  «         d S ©N)ÚsuperÚ__init__Ú
stylesheetÚupdateÚdefault_style)ÚselfÚ	__class__s    €ú^/granary/edev/quantum/lib/python3.11/site-packages/qiskit/visualization/timeline/stylesheet.pyr   zQiskitTimelineStyle.__init__0   s<   ø€ Ý‰Œ×ÒÑÔÐàˆŒØ�Š•M‘O”OÑ$Ô$Ð$Ð$Ð$ó    Ú_QiskitTimelineStyle__mÚreturnNc                 ó¾   •—  t          ¦   «         j        |fi |¤Ž |                     ¦   «         D ]\  }}|                      ||¦  «         Œ|j        j        | _        d S r   )r   r   ÚitemsÚ__setitem__r   Ú__name__r   )r   r   ÚkwargsÚkeyÚvaluer   s        €r   r   zQiskitTimelineStyle.update6   se   ø€ Ø�‰ŒŒ�sÐ%Ð%˜fÐ%Ð%Ð%ØŸ)š)™+œ+ð 	)ð 	)‰JˆC�Ø×Ò˜S %Ñ(Ô(Ð(Ð(Øœ-Ô0ˆŒˆˆr   c                 óÀ   — i }|                       ¦   «         D ]F\  }}|                     d¦  «        }|d         dk    r ||d                     |dd…         ¦  «        <   ŒG|S )z+Return formatter field of style dictionary.ú.r   Ú	formatteré   N©r   ÚsplitÚjoin©r   Úsub_dictr   r   Úsub_keyss        r   r    zQiskitTimelineStyle.formatter<   óf   € ð ˆØŸ*š*™,œ,ð 	9ð 	9‰JˆC�Ø—y’y ‘~”~ˆHØ˜Œ{˜kÒ)Ð)Ø38�˜Ÿš (¨1¨2¨2¤,Ñ/Ô/Ñ0øØˆr   c                 óÀ   — i }|                       ¦   «         D ]F\  }}|                     d¦  «        }|d         dk    r ||d                     |dd…         ¦  «        <   ŒG|S )z+Return generator field of style dictionary.r   r   Ú	generatorr!   Nr"   r%   s        r   r*   zQiskitTimelineStyle.generatorF   r(   r   c                 óÀ   — i }|                       ¦   «         D ]F\  }}|                     d¦  «        }|d         dk    r ||d                     |dd…         ¦  «        <   ŒG|S )z(Return layout field of style dictionary.r   r   Úlayoutr!   Nr"   r%   s        r   r,   zQiskitTimelineStyle.layoutP   sf   € ð ˆØŸ*š*™,œ,ð 	9ð 	9‰JˆC�Ø—y’y ‘~”~ˆHØ˜Œ{˜hÒ&Ð&Ø38�˜Ÿš (¨1¨2¨2¤,Ñ/Ô/Ñ0øØˆr   )r   Ú
__module__Ú__qualname__Ú__doc__r   r   Ústrr   r   Úpropertyr    r*   r,   Ú__classcell__©r   s   @r   r	   r	   -   sÄ   ø€ € € € € Ø&Ð&ð%ð %ð %ð %ð %ð1˜' # s (Ô+ð 1¸$ð 1ð 1ð 1ð 1ð 1ð 1ð ðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xðð ð ð ð r   r	   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚIQXStandardzÑStandard timeline stylesheet.

    - Show time buckets.
    - Show only operand name.
    - Show bit name.
    - Show barriers.
    - Show idle timeline.
    - Show gate link.
    - Remove classical bits.
    c                 óR  •— t          ¦   «                              ¦   «          ddddt          j        t          j        gt          j        t          j        gt          j        gt          j        gt          j
        t          j        dœ
} |j        di |¤Ž |                      |¦  «         d S )NTF©
úformatter.control.show_idleúformatter.control.show_clbitsúformatter.control.show_barriersúformatter.control.show_delaysúgenerator.gatesúgenerator.bitsúgenerator.barriersúgenerator.gate_linksúlayout.bit_arrangeúlayout.time_axis_map© )r   r   r   Úgen_sched_gateÚgen_short_gate_nameÚgen_bit_nameÚgen_timeslotÚgen_barrierÚgen_gate_linkr   Úqreg_creg_ascendingÚtime_map_in_dtr   ©r   r   Ústyler   s      €r   r   zIQXStandard.__init__g   s�   ø€ Ý‰Œ×ÒÑÔÐà+/Ø-2Ø/3Ø-2Ý *Ô 9½:Ô;YÐZÝ)Ô6½
Ô8OÐPÝ#-Ô#9Ð":Ý%/Ô%=Ð$>Ý")Ô"=Ý$+Ô$:ð
ð 
ˆð 	ˆŒÐÐ�vÐÐÐØ�Š�EÑÔÐÐÐr   c                 ó   — dS )NzStandard timeline style sheet.rB   ©r   s    r   Ú__repr__zIQXStandard.__repr__x   s   € Ø/Ð/r   ©r   r-   r.   r/   r   rO   r2   r3   s   @r   r5   r5   [   sQ   ø€ € € € € ð	ð 	ðð ð ð ð ð"0ð 0ð 0ð 0ð 0ð 0ð 0r   r5   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )Ú	IQXSimplezžSimple timeline stylesheet.

    - Show time buckets.
    - Show bit name.
    - Show gate link.
    - Remove idle timeline.
    - Remove classical bits.
    c                 ó<  •— t          ¦   «                              ¦   «          ddddt          j        gt          j        t          j        gt          j        gt          j        gt          j	        t          j
        dœ
} |j        di |¤Ž |                      |¦  «         d S )NFr7   rB   )r   r   r   rC   rE   rF   rG   rH   r   rI   rJ   r   rK   s      €r   r   zIQXSimple.__init__†   s˜   ø€ Ý‰Œ×ÒÑÔÐà+0Ø-2Ø/4Ø-2Ý *Ô 9Ð:Ý)Ô6½
Ô8OÐPÝ#-Ô#9Ð":Ý%/Ô%=Ð$>Ý")Ô"=Ý$+Ô$:ð
ð 
ˆð 	ˆŒÐÐ�vÐÐÐØ�Š�EÑÔÐÐÐr   c                 ó   — dS )Nz Simplified timeline style sheet.rB   rN   s    r   rO   zIQXSimple.__repr__—   s   € Ø1Ð1r   rP   r3   s   @r   rR   rR   |   sQ   ø€ € € € € ðð ðð ð ð ð ð"2ð 2ð 2ð 2ð 2ð 2ð 2r   rR   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚIQXDebuggingzÿTimeline stylesheet for programmers. Show details of instructions.

    - Show time buckets.
    - Show operand name, qubits, and parameters.
    - Show barriers.
    - Show delays.
    - Show idle timeline.
    - Show bit name.
    - Show gate link.
    c                 óR  •— t          ¦   «                              ¦   «          ddddt          j        t          j        gt          j        t          j        gt          j        gt          j        gt          j
        t          j        dœ
} |j        di |¤Ž |                      |¦  «         d S )NTr7   rB   )r   r   r   rC   Úgen_full_gate_namerE   rF   rG   rH   r   rI   rJ   r   rK   s      €r   r   zIQXDebugging.__init__§   s�   ø€ Ý‰Œ×ÒÑÔÐà+/Ø-1Ø/3Ø-1Ý *Ô 9½:Ô;XÐYÝ)Ô6½
Ô8OÐPÝ#-Ô#9Ð":Ý%/Ô%=Ð$>Ý")Ô"=Ý$+Ô$:ð
ð 
ˆð 	ˆŒÐÐ�vÐÐÐØ�Š�EÑÔÐÐÐr   c                 ó   — dS )Nz.Timeline style sheet for timeline programmers.rB   rN   s    r   rO   zIQXDebugging.__repr__¸   s   € Ø?Ð?r   rP   r3   s   @r   rV   rV   ›   sX   ø€ € € € € ð	ð 	ðð ð ð ð ð"@ð @ð @ð @ð @ð @ð @r   rV   r   c                  óL  — i dd“dd“dd“dd“d	d“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“di dd“dd“d d“d!d“d"d#“d$d“d%d“d&d#“d'd#“d(d#“d)d*“d+d*“d,d*“d-d*“d.d*“d/d*“d0d*“d*d*d1d1d1d1d1dd2d2d3œ
¥“d4d1“i d5i dd6“dd7“d d8“d!d9“d"d:“d&d;“d'd<“d(d=“d)d>“d+d?“d,d@“d-dA“d.dB“d/dC“d0dD“d$dE“d%dF“dGdHdIdJdKdLdMdNdOdPd3œ
¥“dQdR“dSdT“dUd“dVdW“dXdY“dZd[“d\d]“d^d]“d_d`“dadb“dcdd“dedf“dgdh“did“djd“dkd[“¥i dld[“dmdY“dndY“dodp“dqdp“drds“dtdu“dvdw“dxdy“dzd{“d|d}“d~d}“dd}“d€d}“d�g “d‚g “dƒg “¥g d„d„d…œ¥S )†z1Define default values of the timeline stylesheet.zformatter.general.fig_widthé   z!formatter.general.fig_unit_heightgš™™™™™é?zformatter.general.dpié–   zformatter.margin.topg      à?zformatter.margin.bottomzformatter.margin.left_percentg{®Gáz”?zformatter.margin.right_percentz&formatter.margin.link_interval_percentg{®Gáz„?z!formatter.margin.minimum_durationé2   zformatter.time_bucket.edge_dté
   zformatter.color.backgroundz#FFFFFFzformatter.color.timeslotz#DDDDDDzformatter.color.gate_namez#000000zformatter.color.bit_namezformatter.color.barrierz#222222zformatter.color.gatesÚu0z#FA74A6Úu1Úu2Úu3Úidz#05BAB6ÚsxÚsxdgÚxÚyÚzÚhz#6FA4FFÚcxÚcyÚczÚswapÚsÚsdgz#BB8BFFz#808080)
ÚdcxÚiswapÚtÚtdgÚrÚrxÚryÚrzÚresetÚmeasurezformatter.color.default_gatezformatter.latex_symbol.gatesz	{\rm U}_0z	{\rm U}_1z	{\rm U}_2z	{\rm U}_3z{\rm Id}z{\rm X}z{\rm Y}z{\rm Z}z{\rm H}z{\rm CX}z{\rm CY}z{\rm CZ}z
{\rm SWAP}z{\rm S}z{\rm S}^\daggeru
   {\rm âˆšX}u   {\rm âˆšX}^\daggerz	{\rm DCX}z{\rm iSWAP}z{\rm T}z{\rm T}^\daggerz{\rm R}z	{\rm R}_xz	{\rm R}_yz	{\rm R}_zz	|0\ranglez{\rm Measure}z#formatter.latex_symbol.frame_changez\circlearrowleftz%formatter.unicode_symbol.frame_changeu   â†ºzformatter.box_height.gatezformatter.box_height.timeslotg333333ã?zformatter.layer.gateé   zformatter.layer.timeslotr   zformatter.layer.gate_nameé   zformatter.layer.bit_namezformatter.layer.frame_changeé   zformatter.layer.barrierr!   zformatter.layer.gate_linké   zformatter.alpha.gateg      ð?zformatter.alpha.timeslotgffffffæ?zformatter.alpha.barrierzformatter.alpha.gate_linkzformatter.line_width.gatezformatter.line_width.timeslotzformatter.line_width.barrierzformatter.line_width.gate_linkzformatter.line_style.barrierú-zformatter.line_style.gate_linkzformatter.text_size.gate_nameé   zformatter.text_size.bit_nameé   z formatter.text_size.frame_changeé   zformatter.text_size.axis_labelé   z#formatter.label_offset.frame_changeg      Ð?r8   Tr9   r:   r;   r<   r=   r>   N)r?   r@   rA   rB   rB   r   r   r   r   ¼   s  € ðoØ% rðoà+¨Sðoð 	  ðoð 	 ð	oð
 	" 3ðoð 	(¨ðoð 	)¨$ðoð 	1°$ðoð 	,¨Rðoð 	(¨ðoð 	% iðoð 	# Iðoð 	$ Yðoð 	# Iðoð 	" 9ðoð  	 ð "
Ø�)ð"
à�)ð"
ð �)ð"
ð �)ð	"
ð
 �)ð"
ð �)ð"
ð �Ið"
ð �ð"
ð �ð"
ð �ð"
ð �ð"
ð �)ð"
ð �)ð"
ð �)ð"
ð �Ið"
ð  �ð!"
ð" �9ð#"
ð$ ØØØØØØØØØ ð7"
ð "
ð "
ð!oðZ 	'¨	ð[oð oð\ 	'ð )
Ø�,ð)
à�,ð)
ð �,ð)
ð �,ð	)
ð
 �+ð)
ð �ð)
ð �ð)
ð �ð)
ð �ð)
ð �+ð)
ð �+ð)
ð �+ð)
ð �Mð)
ð �ð)
ð Ð%ð)
ð  �-ð!)
ð" Ð)ð#)
ð$  Ø#ØØ%ØØØØØ!Ø'ð7)
ð )
ð )
ð]oðV 	.Ð/BðWoðX 	0°ðYoðZ 	$ Sð[oð\ 	(¨ð]oð^ 	 ð_oð` 	# Aðaoðb 	$ Qðcoðd 	# Aðeoðf 	'¨ðgoðh 	" 1ðioðj 	$ Qðkoðl 	 ðmoðn 	# Cðooðp 	" 3ðqoðr 	$ Sðsoðt 	$ Qðuoð oð oðv 	(¨ðwoðx 	'¨ðyoðz 	)¨!ð{oð| 	'¨ð}oð~ 	)¨#ðoð@ 	(¨ðAoðB 	'¨ðCoðD 	+¨BðEoðF 	)¨"ðGoðH 	.¨tðIoðJ 	& tðKoðL 	(¨ðMoðN 	*¨4ðOoðP 	(¨ðQoðR 	˜2ðSoðT 	˜"ðUoðV 	˜bðWoð oðX !#Ø"Ø $ð]oð oð oð or   N)r/   Útypingr   r   r   Úqiskit.visualization.timeliner   r   Údictr	   r5   rR   rV   r0   r   rB   r   r   ú<module>r†      s.  ððð ð6 &Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à =Ð =Ð =Ð =Ð =Ð =Ð =Ð =ð+ð +ð +ð +ð +˜$ñ +ô +ð +ð\0ð 0ð 0ð 0ð 0�$ñ 0ô 0ð 0ðB2ð 2ð 2ð 2ð 2�ñ 2ô 2ð 2ð>@ð @ð @ð @ð @�4ñ @ô @ð @ðBq�t˜C ˜H”~ð qð qð qð qð qð qr   