o 7]h@s8ddlmZmZmZddlmZmZmZmZm Z m Z m Z m Z m Z ddlmZmZddlmZmZddlmZddlmZmZddlmZdd lmZdd lmZdd lm Z m!Z!dd l"m#Z#dd l$m%Z%ddl&m'Z'm(Z(ddl)m*Z*m+Z+erddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2eGdddZ3eGdddZ4Gddde Z5GdddeZ6e7dkrddl8m-Z-ddl9m:Z:ddl;m6Z6ddle>j?d#d$d%d&d'e>j?d(d)d*e>j?d+d!d,d-e>@d.d/d0e>@d1d2d3e>j@d4d5d6d7d&d8e>@d9d:d;dfd?d@ZBe-Z,e:ZCeBdAe,jDe>dBdCd&e>_EeBdDe,De>dEe>_FeBdFe,jDe>dBdCd>e>_FdGe>_EdHdIge>_GeBdJe,jDe>dBdCd>e>_FdGe>_EdHdIge>_Gde>_HeBdKe,jDe>dBdCd>e>_FdGe>_EdHdIge>_Gd&e>_Ide>_HeBdLe,jDe>dBdCWd>d>S1swYd>Sd>S)M) dataclassfieldreplace) TYPE_CHECKINGDictIterableList NamedTupleOptionalSequenceTupleUnion)boxerrors)loop_first_last loop_last) pick_bool)ratio_distribute ratio_reduce)VerticalAlignMethod) JupyterMixin) Measurement)PaddingPaddingDimensions) is_renderable)Segment)Style StyleType)TextTextType)ConsoleConsoleOptions JustifyMethodOverflowMethodRenderableType RenderResultc@s.eZdZUdZdZded< dZded< dZeed< dZ eed< dZ eed< d Z d ed < d Z d ed< dZ ded< dZeeed< dZeeed< dZeeed< dZeeed< dZeed< dZeed< eedZeded<d$ddZededfd d!Zedefd"d#ZdS)%ColumnzDefines a column in a table.r%headerfooter header_style footer_stylestyleleftr#justifytoprverticalellipsisr$overflowNwidth min_width max_widthratioFno_wrapr_index)default_factory_cellsreturncCs t|gdS)zReturn a copy of this Column.r;)rselfr@8/usr/lib/python3/dist-packages/pip/_vendor/rich/table.pycopyVs z Column.copyccs|jEdHdS)z2Get all cells in the column, not including header.Nr=r>r@r@rAcellsZsz Column.cellscCs |jduS)z!Check if this column is flexible.N)r7r>r@r@rAflexible_ zColumn.flexible)r<r') __name__ __module__ __qualname____doc__r)__annotations__r*r+rr,r-r/r1r3r4r intr5r6r7r8boolr9rlistr;rrBpropertyrrCrDr@r@r@rAr'&sH            r'c@s0eZdZUdZdZeeed< dZe ed<dS)RowzInformation regarding a row.Nr-F end_section) rFrGrHrIr-r rrJrPrLr@r@r@rArOes  rOc@s.eZdZUdZeed< ded< eed<dS)_CellzA single cell in a table.r-r% renderabler1N)rFrGrHrIrrJrr@r@r@rArQps rQc7@sjeZdZUdZeeed<eeed<ddddej ddddddddddd dd d dddd d dd de ee fde e de e de ede ede ejde ededededededededededede eed e ed!e ed"e ed#e ed$e ed%d&d'd&d(ed)df6d*d+Zeddddd,de ee fdedededed)df d-d.Zed)efd/d0Zejded)dfd1d0Zed)efd2d3Zed)efd4d5Zd6d7d8ed)efd9d:Zd6d7d;dZed)eeeeeffd?d@Z e jded)dfdAd@Z B BdlddddCdDdEddddddF dGdHdIdHd e ed!e ede edJd&dKdLdMdNde ede edOe edPe edQed)dfdRdSZ!dddTdUe dHde edVed)dfdWdXZ" 6 7 ; < ) YdmdZd[Z#d6d7d;dr@r@rAr^sz Table.expandcCs ||_dS)z Set expand.N)rn)r?r^r@r@rAr^rEcCs4d}|jr |jr |d7}|jr|t|jd7}|S)z'Get extra width to add to cell content.rr)rrarsrT)r?r4r@r@rA _extra_width s  zTable._extra_widthcCs t|jS)zGet the current number of rows.)rsrUr>r@r@rA row_countrEzTable.row_countconsoler!indexcCsRt}|jr|||j|t|j7}|j|j}|dur'|||7}|S)zGet the current row style.N)rnullrd get_stylersrUr-)r?r{r|r- row_styler@r@rA get_row_styles zTable.get_row_styleoptionsr"csj|jdur |jdkrtddS|j}t|||jfdd|jD}tdd|D|}|jdurOtdd|D|n|j}t||}| |j }|S)Nrcsg|] }|qSr@) update_width.0column_measure_columnr{r6rr@rA 4sz*Table.__rich_measure__..cs|]}|jVqdSN)minimumr measurementr@r@rA 9z)Table.__rich_measure__..csrrmaximumrr@r@rAr<r) r6r4rrysum_calculate_column_widthsrrrTclampr5)r?r{r extra_width measurements minimum_width maximum_widthrr@rrA__rich_measure__#s0     zTable.__rich_measure__cCs|jS)zGet cell padding.)rmr>r@r@rAr[Dsz Table.paddingcCst||_|S)zSet cell padding.)rrlrm)r?r[r@r@rAr[Is r(r.r0r2) r+r,r-r/r1r3r4r5r6r7r8r)r%r*r/r1rr3r$r6r7r8c CsFtt|j|||p d|p d|pd|||| | | | | d}|j|dS)aAdd a column to the table. Args: header (RenderableType, optional): Text or renderable for the header. Defaults to "". footer (RenderableType, optional): Text or renderable for the footer. Defaults to "". header_style (Union[str, Style], optional): Style for the header, or None for default. Defaults to None. footer_style (Union[str, Style], optional): Style for the footer, or None for default. Defaults to None. style (Union[str, Style], optional): Style for the column cells, or None for default. Defaults to None. justify (JustifyMethod, optional): Alignment for cells. Defaults to "left". vertical (VerticalAlignMethod, optional): Vertical alignment, one of "top", "middle", or "bottom". Defaults to "top". overflow (OverflowMethod): Overflow method: "crop", "fold", "ellipsis". Defaults to "ellipsis". width (int, optional): Desired width of column in characters, or None to fit to contents. Defaults to None. min_width (Optional[int], optional): Minimum width of column, or ``None`` for no minimum. Defaults to None. max_width (Optional[int], optional): Maximum width of column, or ``None`` for no maximum. Defaults to None. ratio (int, optional): Flexible ratio for the column (requires ``Table.expand`` or ``Table.width``). Defaults to None. no_wrap (bool, optional): Set to ``True`` to disable wrapping of this column. r()r9r)r*r+r,r-r/r1r3r4r5r6r7r8N)r'rsrTro)r?r)r*r+r,r-r/r1r3r4r5r6r7r8rr@r@rArrOs"%zTable.add_columnr-rP renderablesrPc Gsdtddddfdd}t|}|j}t|t|kr)g|dgt|t|}t|D]F\}}|t|krPt|d} |jD] } || td q?|j| n||} |dur^|| d q-t|rh|| |q-t d t |j d |jt ||d dS) aAdd a row of renderables. Args: *renderables (None or renderable): Each cell in a row must be a renderable object (including str), or ``None`` for a blank cell. style (StyleType, optional): An optional style to apply to the entire row. Defaults to None. end_section (bool, optional): End a section and draw a line. Defaults to False. Raises: errors.NotRenderableError: If you add something that can't be rendered. rrRr%r<NcSs|j|dSr)r;ro)rrRr@r@rAadd_cellszTable.add_row..add_cell)r9r(zunable to render z1; a string or other renderable object is requiredr)r'rMrTrs enumeraterUrrorrNotRenderableErrortyperFrO) r?r-rPrrcell_renderablesrTr|rRr_r@r@rAadd_rows0     z Table.add_rowr&c #s|js tdVdS|j}|jdur|j}|j}||||}t||}|j||j dd ddt dt dddd ffd d }|j rY||j t |jd |jd EdH||EdH|jry||jt |jd|jd EdHdSdS)N )r4rjheightrWtextr-r/r#r<r&cs4t|tr j||ddn|}j|j|ddS)NF)r-rjr/)r)rprq render_strrenderupdate)rr-r/ render_textr{render_optionsr@rArender_annotations z1Table.__rich_console__..render_annotationz table.title)r-r/z table.caption)rW)rTrr6r4ryrrrrrjr rrXr pick_firstrfrh_renderrYrgri)r?r{rr6rwidths table_widthrr@rrA__rich_console__sN       zTable.__rich_console__csj}j}fdd|D}dd|D}jj}jredd|D}t|reddt||D} fdd|D} |t| } t| || } t | } t |D]\}}|j rd| |t | ||<qSt|}||kr |dd|D|}t|}||kr||}t|dgt|||}t|}fd dt||D}d d|D}||krjsjd ur|j|kr݈jd ur|ntj||}t|||}d dt||D}|S) zNCalculate the widths of each column, including padding, not including borders.csg|] }|qSr@)rrr{rr?r@rArsz2Table._calculate_column_widths..cSg|]}|jpdqSrrr_ranger@r@rArcSsg|] }|jr|jp dqSr)rDr7)rcolr@r@rArscSs g|] \}}|jr dn|jqSr)rDr)rrrr@r@rArscs&g|]}|jr|jp d|jqSr)rDr4r9r)get_padding_widthr@rArs cSsg|] }|jduo |j qSr)r4r8rr@r@rArsrcs$g|]\}}||qSr@)rr)rr4rrr@rArcSrrrrr@r@rArrNcSsg|]\}}||qSr@r@)r_widthpadr@r@rAr!s)r6rT_get_padding_widthryr^anyziprriterrrDnext_collapse_widthsrrsr5min)r?r{rr6rT width_rangesrrratios fixed_widths flex_minimumflexible_width flex_widthsiter_flex_widthsr|rr excess_width _max_width pad_widthsr@)r{rrr?rArsb     zTable._calculate_column_widthsrwrapablec st|}||}t|rd|rd|dkrdtddt||Dtfddt||D}|}fddt||D}t|rB|sE |St||gt|} t||| |}t|}||}|rd|dks|S)aMReduce widths so that the total is under max_width. Args: widths (List[int]): List of widths. wrapable (List[bool]): List of booleans that indicate if a column may shrink. max_width (int): Maximum width to reduce to. Returns: List[int]: A new list of widths. rcss|] \}}|r|VqdSrr@rr4 allow_wrapr@r@rAr7s  z)Table._collapse_widths..c3s(|]\}}|r|kr|ndVqdS)rNr@r max_columnr@rAr:s  cs$g|]\}}|kr|rdndqS)rrr@rrr@rAr?rz*Table._collapse_widths..)rrmaxrrrsr) rvrrr6 total_widthrsecond_max_columncolumn_differencer max_reducer@rrAr%s.     zTable._collapse_widths column_indexrc #sr|j|j|jt}|dk|t|jdkidtdtdtttttfffdd }g}|j }|j }|j rS||j pEd||j } || |j f||jpXd} |jD]} || | fq]|jr|||jpnd||j} || |jf|rt} t|D]\}}\}}t|| ||||t|d d p|jVqd S|D]\}}t||t|d d p|jVqd S) z3Get all the cells with padding and optional header.rr first_rowlast_rowr<cs||f}|r |S\}}}}r%std||}|s%td||}s7r+d}r/d}|r3d}|r7d}||||f}|||f<|S)Nr)getr)rrcachedr0rightbottomr.rm_padding_cacher\ first_column last_columnr]r[r@rA get_padding[s*   z%Table._get_cells..get_paddingr(r1N)r\r]r[rrsrTrLr rKror~r_r+r)r-rCr`r,r*rrrQgetattrr1)r?r{rr any_paddingr raw_cells_appendr~r+ cell_stylecellr,_Paddingfirstlastr-rRr@rrA _get_cellsLsR0  zTable._get_cellscCs2|j\}}}}|jr|dkrtd||}||S)zGet extra width from padding.r)r[r\r)r?rr pad_rightpad_leftr@r@rArs zTable._get_padding_widthcCs|j}|dkr tddS||j}|jdur%t|j||j||Sg}g}|j}|j} tj} |||j|D]} | ||| j \} } || | | q:t|rUt |nd|r\t |n||}| |j durkdn|j ||jduryd}|S|j|}|S)z0Get the minimum and maximum width of the column.rrN) r6rrr9r4 with_maximumrorrrRrrr5)r?r{rrr6 padding_width min_widths max_widths append_min append_maxget_render_widthr_min_maxrr@r@rArsB     zTable._measure_columnc% #s jpd}| jpd} fddt jD}tt|} jr6 jj|t j j dnd}t } j} j } j} j} j} j}t |r|j||j||j|f|j||j||j|f|j||j||j|fg}| r|||V| Vng} j}jtt|D]\}\}}}|o| |o| ss j|| nd}dg}sƈrt n || r|dn|t||| D],\}}}|j!||j"|j#|j$dd}j%|j&||jd}t't(||)|qt'dd|Dd t*t*t d d d t+d tdt*t*t f fdd fddt|||| D|dd<|r|r^| r^|j,|d| d|V| V||rddn|ridnd\}}}|j-.rw|n |j-j/|j} t0D])}!| r|Vt1|D]\}"}#|#|!EdH|"s| Vq| r|V| Vqnt0D]}!|D] }#|#|!EdHq| Vq|r|r| r|j,|d| d|V| V|o|j2}$|r(|s|s|$r(|s(| r|t(|dks(| rs(|r|j,|d| d||Vn |j,|d| d|V| Vq|r=| r?|3||V| VdSdSdS)Nr(c3s"|] \}}||VqdSr)r)rrr)r{r?r@rArs  z Table._render..)safer)r4r/r8r3rr-css|]}t|VqdSr)rs)rrr@r@rArsrr1rr4r-r<csRrd}nr d}|dkr|||S|dkr!|||S|||S)Nrr0middle) align_top align_middle align_bottom)rr1r4r-)_Segment footer_row header_row row_heightr@rA align_cell sz!Table._render..align_cellc s8g|]\}}}}||j||j|qSr@) set_shaper1r-)rr4_cellrr)rrr~ max_heightrr@rAr1s  z!Table._render..foot)edgerrxheadmidrow)4r~r-rerrTrMrr substituterrZrliner_r`rarbrc head_left head_right head_vertical foot_left foot_right foot_verticalmid_left mid_right mid_verticalget_toprrrUrr}rr/r8r3 render_linesrRrrsrorrKget_rowrstripbackground_stylerangerrP get_bottom)%r?r{rr table_stylere _column_cells row_cells_boxnew_linerTr_r`rarbrc box_segmentsrr|rrrow_cellr rCr4rrrlinesr.r_dividerdividerline_no last_cell rendered_cellrPr@) rrr{rr~rrrrr?rArs&                   "       z Table._render)r(r()r{r!rr"r<r&)+rFrGrHrIrr'rJrOr HEAVY_HEADr rqr r rKBoxrLrrrru classmethodrwrNr^setterryrzrrrr r[rrrrrrrQrrrrr@r@r@rArS{s           A      !      : / 0 @ & I (rS__main__)r!)ReprHighlighter)rS)timerz Table renderzStar Wars MovieszRich example tabler)rXrYriReleased bright_cyancyanT)r+r-r8Titlemagentarz Box Officegreen)r/r-z Dec 20, 2019z Star Wars: The Rise of Skywalkerz $952,110,690z May 25, 2018zSolo: A Star Wars Storyz $393,151,347z Dec 15, 2017z!Star Wars Ep. V111: The Last Jediz$1,332,539,889zon blackrz Dec 16, 2016zRogue One: A Star Wars Storyz$1,332,439,889rr<NcCs"ttt|tdSr)r{printrulerj)rr@r@rAr)s r)z Example TablerWrz expand=True2zwidth=50FdimrVzrow_styles=['dim', 'none']z%leading=1, row_styles=['dim', 'none']z+show_lines=True, row_styles=['dim', 'none'])J dataclassesrrrtypingrrrrr r r r r r(rr_looprr_pickr_ratiorralignrjupyterrmeasurerr[rrprotocolrsegmentrr-rrrrr r{r!r"r#r$r%r&r'rOrQrSrFpip._vendor.rich.consolepip._vendor.rich.highlighterr2pip._vendor.rich.table_timerr3tablerrrrqr)rjr:r^r4rdrcrbr@r@r@rAs,         >            $