Esempio n. 1
0
def test_shortcuts():
    assert Align.left("foo").align == "left"
    assert Align.left("foo").renderable == "foo"
    assert Align.right("foo").align == "right"
    assert Align.right("foo").renderable == "foo"
    assert Align.center("foo").align == "center"
    assert Align.center("foo").renderable == "foo"
def make_sponsor_message() -> Panel:
    """Some example content."""
    sponsor_message = Table.grid(padding=1)
    sponsor_message.add_column(style="green", justify="right")
    sponsor_message.add_column(no_wrap=True)
    sponsor_message.add_row(
        "✔ GitHub 🤓 ",
        "[u blue link=https://github.com/jiaulislam]https://github.com/jiaulislam",
    )

    intro_message = Text.from_markup(
        """Consider supporting my work via Github 🤘 🤘 🤘. - Jiaul Islam"""
    )

    message = Table.grid(padding=1)
    message.add_column()
    message.add_column(no_wrap=True)
    message.add_row(intro_message, sponsor_message)

    message_panel = Panel(
        Align.center(
            RenderGroup(intro_message, "\n", Align.center(sponsor_message)),
            vertical="middle",
        ),
        box=box.ROUNDED,
        padding=(1, 2),
        title="[b red]Thanks for using my application!",
        border_style="bright_blue",
    )
    return message_panel
Esempio n. 3
0
 def merge_layout(cls, progress, table) -> None:
     cls._layout["progress"].update(
         Panel(Align.center(progress, vertical="middle"),
               border_style="green",
               title="Overall Status"))
     cls._layout["tables"].update(
         Panel(Align.center(table, vertical="middle"),
               border_style="cyan",
               title="Details"))
Esempio n. 4
0
 def setup_layout(self):
     self.layout.split(Layout(name='A'), Layout(name='B'))
     self.layout['A'].size = 10
     self.layout['A'].update(self.build_stats_panel())
     self.layout['B'].split_row(Layout(name='C'), Layout(name='D'))
     self.layout['C'].split(Layout(name='E'), Layout(name='F'))
     self.layout['E'].update(Align.center(self.build_ps_histogram()))
     self.layout['D'].update(Align.center(self.build_top_offenders_panel()))
     self.layout['F'].update(Align.center(self.build_vuln_table()))
     #self.layout['AA'].update(self.build_stats_panel())
     self.console.print(self.layout)
     return
Esempio n. 5
0
    def __init__(
        self,
        numRepos: int,
        follower: int = 0,
        following: int = 0,
        numStat: int = 5,
    ) -> None:

        self.numStat = numStat
        self.numRepos = numRepos
        self._profileText = Text(
            f"{follower:03d} Follower\n{following:03d} Following\n{numRepos:03d} Public Repositories"
        )

        self.progressTable = Table.grid(expand=True)
        self.progressTotal = Progress(
            "{task.description}",
            SpinnerColumn(),
            BarColumn(),
            TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
        )

        self.progressTable.add_row(
            Panel(
                Align.center(Text(
                    """Placeholder""",
                    justify="center",
                )),
                title="[b]Info",
                border_style="red",
                padding=(1, 1),
            ),
            Panel(
                Align.center(self._profileText),
                title="[b]Profile Info",
                border_style="yellow",
                padding=(1, 1),
            ),
            Panel(
                self.progressTotal,  # type:ignore
                title="[b]Total Progress",
                border_style="green",
                padding=(1, 2),
            ),
        )

        self.taskTotal = self.progressTotal.add_task(description="Progress",
                                                     total=numStat * numRepos)
        self.taskRepo = self.progressTotal.add_task(
            description="Repository [bold yellow]#", total=numRepos)
        self.taskStat = self.progressTotal.add_task(
            description="Stat [bold violet]#", total=numStat)
Esempio n. 6
0
def show_toolbox_apps(toolbox: ToolBox) -> Dict[str, list[str]]:
    apps = toolbox.apps()

    columns = {"available": [], "unavailable": []}

    for app, path in apps.items():
        if any(map(lambda x: app.lower().startswith(x.lower()), working)):
            columns["available"].append(app)
        else:
            columns["unavailable"].append(app)

    panel = Text()

    for i, available in enumerate(columns["available"], start=1):
        left = (f"{i}. ", "bold gray")
        right = (f"{available}\n", "green")

        panel.append(Text.assemble(left, right))

    for unavailable in columns["unavailable"]:
        panel.append(Text(f"   {unavailable}\n", style="red"))

    console.print(Align.center(Panel.fit(panel, title="Available IDEs")))

    return columns
Esempio n. 7
0
    def get_top_layout() -> Panel:
        _memory: Tuple[str] = get_memory_info()
        _platform: str = get_platform()
        _pyversion: str = get_python_version()

        _total_memory: str = _memory[0]
        _available_memory: str = _memory[1]
        _used_percentage: str = _memory[2]
        _used_memory: str = _memory[3]
        _free_memory: str = _memory[4]

        table = Table.grid(expand=True)

        table.add_row("Total Memory: ",
                      Text(_total_memory, style="yellow", justify="right"))
        table.add_row("Available Memory: ",
                      Text(_available_memory, style="green", justify="right"))
        table.add_row("Used Memory: ",
                      Text(_used_memory, style="red", justify="right"))
        table.add_row("Free Memory: ",
                      Text(_free_memory, style="green", justify="right"))
        table.add_row("Used Percentage: ",
                      Text(_used_percentage, style="magenta", justify="right"))
        table.add_row("OS: ", Text(_platform, style="blue", justify="right"))
        table.add_row("Python Version: ",
                      Text(_pyversion, style="blue", justify="right"))
        return Panel(
            Align.center(table, vertical="middle", pad=False),
            title="System Info",
            border_style="white",
        )
def print_progress(console, progress):

    is_first = progress['episode_number'] == 1

    table = Table(show_header=is_first, header_style='bold #2070b2')

    table_centered = Align.center(table)

    with Live(table_centered,
              console=console,
              screen=False,
              refresh_per_second=20):

        table.add_column('Episode', justify='center')
        table.add_column('Acc. Reward', justify='center')
        table.add_column('Rol. Reward', justify='center')
        table.add_column('Record', justify='center')
        table.add_column('Epsilon', justify='center')
        table.add_column('Loss', justify='center')

        table.add_row("{: >5d}".format(progress['episode_number']),
                      "{:+.2f}".format(progress['reward']),
                      "{:+.2f}".format(progress['rolling_reward']),
                      "{:+.2f}".format(progress['record']),
                      "{:+.4f}".format(progress['epsilon']),
                      "{:+.3f}".format(progress['loss']))
Esempio n. 9
0
def search(query: str, amount: int, ignore_errors: bool, min_views, max_views, game) -> None:
    channels = API.search(query, live=True, amount=amount)
    table = Table()
    table_centerd = Align.center(table)

    table.add_column("channel")
    table.add_column("views")
    table.add_column("game")
    table.add_column("title")
    table.title = f"search results for [bold]{query}[/bold]"

    with Live(table_centerd, console=Console, refresh_per_second=20):
        for channel in channels:
            try:
                stream = API.get_stream_info(channel)
            except Exception as e:
                if not ignore_errors:
                    table.add_row(f"www.twitch.tv/{channel}", "[bold red]E[/bold red]", "[bold red]Error[/bold red]", f"[bold red]{e}[/bold red]")
            else:
                if max_views is not None and stream.views > max_views:
                    continue
                if min_views is not None and stream.views < min_views:
                    continue
                if game is not None and stream.game != game:
                    continue
                table.add_row(f"www.twitch.tv/{stream.channel}", str(stream.views), str(stream.game), str(stream.title))
def get_table_panel(table: Table) -> Panel:
    table_panel = Panel(
        Align.center(
            table,
            vertical="middle"
        ), title="Task Details", border_style="yellow", padding=(1, 0), expand=True
    )
    return table_panel
Esempio n. 11
0
    def render(self) -> RenderableType:
        """Get renderable for widget.

        Returns:
            RenderableType: Any renderable
        """
        return Panel(Align.center(Pretty(self), vertical="middle"),
                     title=self.__class__.__name__)
Esempio n. 12
0
def generate_table(count):
    '''make a new table'''
    table = Table(title="keypress frequency")
    table.add_column('Key')
    table.add_column('Frequency')
    temp_dict = dict(itertools.islice(total_keystrokes.items(), count))
    for key, val in temp_dict.items():
        table.add_row(key, str(val))
    return Align.center(table)
Esempio n. 13
0
 def render(self) -> RenderableType:
     return Panel(
         Align.center(self.pretty_text, vertical="middle"),
         # title=self.name,
         border_style="green" if self.mouse_over else "blue",
         box=box.HEAVY if self.has_focus else box.ROUNDED,
         style=self.style,
         height=self.height,
     )
Esempio n. 14
0
    def __rich_console__(self, console: Console,
                         options: ConsoleOptions) -> RenderResult:
        width = options.max_width
        height = options.height or 1

        yield Align.center(self.label,
                           vertical="middle",
                           style=self.style,
                           width=width,
                           height=height)
Esempio n. 15
0
 def render(self) -> RenderableType:
     return Panel(
         Align.center(Pretty(self, no_wrap=True, overflow="ellipsis"),
                      vertical="middle"),
         title="Department",
         border_style="green" if self.mouse_over else "blue",
         box=box.HEAVY if self.has_focus else box.ROUNDED,
         style=self.style,
         height=self.height,
     )
def present_hyperparameters(console, hyperparameters):

    assert isinstance(hyperparameters,
                      dict), "Hyperparameters must be a dictionary"

    table = Table(show_header=True, header_style="bold green")
    table.add_column("Hyperparameter Name",
                     style="dim",
                     width=25,
                     justify="center")
    table.add_column("Value", justify="center", width=15)
    table.width = Measurement.get(console, table, console.width).maximum

    Align.center(table)

    for key in hyperparameters:

        table.add_row('[red]' + key + '[/red]', str(hyperparameters[key]))

    console.print(table)
Esempio n. 17
0
def get_panel(title, width, zone, render_secs, render_ms, color):
    return Panel(
        Align.center(
            get_time_string(zone=zone, render_secs=render_secs, render_ms=render_ms, color=color),
            #vertical="middle",
        ),
        title=title,
        #width=width,
        height=8,
        highlight=True,
        style=Style(color=color))
Esempio n. 18
0
def make_stack_panel(debugger) -> Panel:
    stack_table = stackdump(debugger.executor.vm_context._stack.values)

    stack_panel = Panel(
        Align.center(stack_table),
        box=box.ROUNDED,
        padding=(1, 1),
        title="[b red]Stack",
        border_style="bright_blue",
    )
    return stack_panel
Esempio n. 19
0
def make_sponsor_message() -> Panel:
    """Some example content."""
    sponsor_message = Table.grid(padding=1)
    sponsor_message.add_column(style="green", justify="right")
    sponsor_message.add_column(no_wrap=True)
    sponsor_message.add_row(
        "Sponsor me",
        "[u blue link=https://github.com/sponsors/willmcgugan]https://github.com/sponsors/willmcgugan",
    )
    sponsor_message.add_row(
        "Buy me a :coffee:",
        "[u blue link=https://ko-fi.com/willmcgugan]https://ko-fi.com/willmcgugan",
    )
    sponsor_message.add_row(
        "Twitter",
        "[u blue link=https://twitter.com/willmcgugan]https://twitter.com/willmcgugan",
    )
    sponsor_message.add_row(
        "Blog", "[u blue link=https://www.willmcgugan.com]https://www.willmcgugan.com"
    )

    intro_message = Text.from_markup(
        """Consider supporting my work via Github Sponsors (ask your company / organization), or buy me a coffee to say thanks. - Will McGugan"""
    )

    message = Table.grid(padding=1)
    message.add_column()
    message.add_column(no_wrap=True)
    message.add_row(intro_message, sponsor_message)

    message_panel = Panel(
        Align.center(
            RenderGroup(intro_message, "\n", Align.center(sponsor_message)),
            vertical="middle",
        ),
        box=box.ROUNDED,
        padding=(1, 2),
        title="[b red]Thanks for trying out Rich!",
        border_style="bright_blue",
    )
    return message_panel
Esempio n. 20
0
def make_memory_panel(debugger) -> Panel:
    addr = 0
    mem_bytes = debugger.executor.vm_context.memory_read_bytes(0, 16*8)
    byte = ''.join(['%02X' % b for b in mem_bytes])
    res = hexdump(byte, start=int(addr), to_list=True)
    mem_table = Table.grid(padding=0)
    
    for i in res:
        mem_table.add_row(i)

    memory_panel = Panel(
        Align.center(
            Group('', "\n", Align.center(mem_table)),
            vertical="top",
        ),
        box=box.ROUNDED,
        padding=(0, 1),
        title="[b red]Memory",
        border_style="bright_blue",
    )
    return memory_panel
Esempio n. 21
0
def make_message():
    message = Table.grid(padding=1)
    message.add_column(style="green", justify="right")
    message.add_column(no_wrap=True)

    intro_message = Text.from_markup("""Thanks for trying out!""")
    message.add_row("Check the Repository on GitHub",
                    ("[u blue link=https://github.com/samborba/rich-terminal]"
                     "https://github.com/samborba/rich-terminal"))

    message_panel = Panel(
        Align.center(
            RenderGroup(intro_message, "\n", Align.center(message)),
            vertical="middle",
        ),
        box=box.ROUNDED,
        title="[b white]RICH TERMINAL",
        border_style="bright_blue",
    )

    return message_panel
Esempio n. 22
0
def make_layout(portfolio):
    layout = Layout(name="Tinkoff")
    layout.split(
        Layout(name="header", size=3),
        Layout(name="main"),
    )
    layout['main'].split(
        Layout(name='table', ratio=5),
        Layout(name='currencies', ratio=1.5),
        direction="horizontal",
    )
    layout['header'].update(Header())
    layout['table'].update(Align.center(PortfolioTable(portfolio), ))
    layout['currencies'].update(CurrenciesTable())
    return layout
Esempio n. 23
0
    def __rich_console__(self, console: Console,
                         options: ConsoleOptions) -> RenderResult:

        items = []
        color_id = 0
        for endpoint_name, endpoint_data in self.endpoint.items():
            color = RICH_BACKEND_COLORS[color_id]
            color_id += 1
            item = Panel.fit(
                Endpoint(endpoint_data),
                title=f"[{color}]{endpoint_name}[/]",
                # box=box.SIMPLE,
            )
            items.append(item)

        yield Align.center(Columns(items), vertical="middle")
Esempio n. 24
0
def print_calendar(year):
    """Print a calendar for a given year."""

    today = datetime.today()
    year = int(year)
    cal = calendar.Calendar()
    today_tuple = today.day, today.month, today.year

    tables = []

    for month in range(1, 13):
        table = Table(
            title=f"{calendar.month_name[month]} {year}",
            style="green",
            box=box.SIMPLE_HEAVY,
            padding=0,
        )

        for week_day in cal.iterweekdays():
            table.add_column("{:.3}".format(calendar.day_name[week_day]),
                             justify="right")

        month_days = cal.monthdayscalendar(year, month)
        for weekdays in month_days:
            days = []
            for index, day in enumerate(weekdays):
                day_label = Text(str(day or ""), style="magenta")
                if index in (5, 6):
                    day_label.stylize("blue")
                if day and (day, month, year) == today_tuple:
                    day_label.stylize("white on dark_red")
                days.append(day_label)
            table.add_row(*days)

        tables.append(Align.center(table))

    console = Console()
    columns = Columns(tables, padding=1, expand=True)
    console.rule(str(year))
    console.print()
    console.print(columns)
    console.rule(str(year))
Esempio n. 25
0
def table(info):
    table = Table.grid(expand=False)

    table.add_column("Hardware", justify="left", style="cyan")
    table.add_column("product", justify="right", style="magenta")
    table.add_column("Status", justify="left", style="green")
    table.add_column("Num", justify="right", style="magenta", width=3)
    for i, cpu in enumerate(info['cpus']):
        usage = str(cpu.get('usage', '0')) + '%'
        table.add_row("CPU", Padding(cpu.get('name', ''), (0, 1)), usage,
                      str(i))

    for i, gpu in enumerate(info['gpus']):
        usage = str(gpu.get('usage', '0')) + '%'
        memory = str(gpu.get('men_used', '0')) + '/' + str(
            gpu.get('men_total', '0'))
        temp = str(gpu.get('temp', '0')) + '°'
        table.add_row("GPU", Padding(gpu.get('name', ''), (0, 1)), usage,
                      str(i))
        table.add_row("GPU", "", memory, str(i))
        table.add_row("GPU", "", temp, str(i))

    for i, disk in enumerate(info['disk']):
        usage = int(disk.get('used', 0) / disk.get('total', 1) * 100)
        usage = str(usage) + '%'
        table.add_row("DISK", Padding("disk " + str(i), (0, 1)), usage, "")

    ram_usage = int(info['mem'].get('used', 0) / info['mem'].get('total', 1) *
                    100)
    ram_usage = str(ram_usage) + '%'
    table.add_row("RAM", Padding("ram", (0, 1)), ram_usage, "")

    table.add_row("NET", Padding("received", (0, 1)),
                  str(info['net'].get('in', '0')) + "MB", "")
    table.add_row("NET", Padding("sent", (0, 1)),
                  str(info['net'].get('out', '0')) + "MB", "")

    return Panel(
        Align.center(table),
        box=box.ROUNDED,
        border_style="bright_blue",
    )
Esempio n. 26
0
    def updateSuper(self, details):
        table = Table(box=box.SIMPLE)
        table.add_column("Map")
        table.add_column("Requirement")
        for row in range(self.height):
            output = ""
            for col in range(self.width):
                if self.map[row][col] == 1:
                    output += "#"
                elif self.map[row][col] == 0:
                    output += " "

            if row < len(details):
                for i in range(0, len(details)):
                    if (row == i):
                        table.add_row(output, details[i])

            else:
                table.add_row(output, "")

        table.add_row(Padding("\n", 1))
        return Align.center(table)
Esempio n. 27
0
 def column(renderable):
     """Constrain width and align to center to create a column."""
     return Align.center(renderable, width=LAYOUT_WIDTH, pad=False)
Esempio n. 28
0
 def render(self) -> Panel:
     return Panel(
         Align.center(FigletText(self._text), vertical="middle"),
         style=("on red" if self.mouse_over else ""),
     )
Esempio n. 29
0
"""
Demonstration of Console.screen() 
"""

from time import sleep

from rich.align import Align
from rich.console import Console
from rich.panel import Panel

console = Console()

with console.screen(style="bold white on red") as screen:
    text = Align.center("[blink]Don't Panic![/blink]", vertical="middle")
    screen.update(Panel(text))
    sleep(5)
Esempio n. 30
0
    Layout(name="header", size=1),
    Layout(ratio=1, name="main"),
    Layout(size=10, name="footer"),
)

layout["main"].split(Layout(name="side"),
                     Layout(name="body", ratio=2),
                     direction="horizontal")

layout["side"].split(Layout(), Layout())

layout["body"].update(
    Align.center(
        Text(
            """This is a demonstration of rich.Layout\n\nHit Ctrl+C to exit""",
            justify="center",
        ),
        vertical="middle",
    ))


class Clock:
    """Renders the time in the center of the screen."""
    def __rich__(self) -> Text:
        return Text(datetime.now().ctime(),
                    style="bold magenta",
                    justify="center")


layout["header"].update(Clock())