:PROPERTIES: :ID: 6cc56ee4-6d42-4d50-beb3-bb22a98298dd :mtime: 20220814131534 :ctime: 20220130153624 :END: #+title: textual #+filetags: :Python:UI: * Introduction Framework de création d'IHM inspiré par le developpement web moderne (CSS) basé sur Rich. Rich est une librairie Python permettant de : * Appliquer des styles à la sortie sur le terminal, * Afficher des tables et du contenu markdown, * Appliquer une coloration synthaxique. * Howto ** Pour inspecter un objet (/rich.inspect method) #+BEGIN_SRC python :results output from rich import inspect class Dummy: def __init__(self): self.a = 'A' self.b = 123 inspect(vars) inspect(Dummy()) #+END_SRC #+RESULTS: : ╭────────────────── ──────────────────╮ : │ def vars(...) │ : │ │ : │ vars([object]) -> dictionary │ : │ │ : │ 29 attribute(s) not shown. Run inspect(inspect) for options. │ : ╰──────────────────────────────────────────────────────────────╯ : ╭────────── ───────────╮ : │ ╭───────────────────────────────────────────╮ │ : │ │ <__main__.Dummy object at 0x7f55d6d2d7c0> │ │ : │ ╰───────────────────────────────────────────╯ │ : │ │ : │ a = 'A' │ : │ b = 123 │ : ╰───────────────────────────────────────────────╯ ** Formatter les logs #+BEGIN_SRC python :results output import logging from rich.logging import RichHandler FORMAT = "%(message)s" logging.basicConfig( level="NOTSET", format=FORMAT, datefmt="[%X]", handlers=[RichHandler(rich_tracebacks=True)]) log = logging.getLogger("rich") log.info("Logging set up.") def division(a, b): log.debug(f"Dividing {a} by {b}.") try: return a / b except ZeroDivisionError: log.exception("Oh noes!") division(3, 2) division(5, 0) #+END_SRC #+RESULTS: * Projets ** [[https://github.com/Traumatism/ToastCord][ToastCord - Github]] ** [[https://github.com/kraanzu/dooit][Dooit - Github]] * Références * [[https://github.com/Textualize/textual][Textual - Github]] * [[https://github.com/Textualize/rich][Rich - Github]] * [[https://rich.readthedocs.io/en/latest/introduction.html][Rich - ReadTheDocs]]