Ir al contenido

Barra de cambios

ui.EditsBar es un componente que lista los archivos que cambió un agente: 3 archivos cambiados con las líneas añadidas y quitadas, Rechazar todo y Conservar todo. Un clic en el título despliega una fila por archivo con su resumen de cambios y botones para rechazar o conservar solo ese archivo; un clic en el nombre de un archivo llega a on_open. files son diccionarios u objetos con path y, opcionales, las líneas añadidas (added) y quitadas (removed). Los eventos de un archivo (on_keep_file, on_reject_file, on_open) llevan la ruta en event.value.

ui.EditsBar · Categoría: Agentes de IA · Referencia completa →

Barra de cambiosBarra de cambios
  • Bajo el chat de un agente, cuando ya editó archivos, para que el usuario los revise antes de conservarlos.
import pyzed as pz
from pyzed import ui
class Review(pz.App):
def __init__(self):
self.files = [{"path": "app/storage.py", "added": 12, "removed": 3}]
def keep(self, path=None): # None: every file
self.files = [f for f in self.files if path is not None and f["path"] != path]
def view(self):
return ui.EditsBar(files=self.files, on_keep=lambda e: self.keep(),
on_keep_file=lambda e: self.keep(e.value), on_open=lambda e: self.open(e.value))

Las desplegadas se dibujan como quedan tras un clic en la cabecera.

Barra de cambios: PlegadaBarra de cambios: Plegada
Plegada
Código
pz.container(ui.EditsBar(files=[{"path": "app.py", "added": 12, "removed": 3},
{"path": "ui/form.py", "added": 40, "removed": 0}]),
width=440)
Barra de cambios: DesplegadaBarra de cambios: Desplegada
Desplegada
Código
pz.container(ui.EditsBar(files=[{"path": "app.py", "added": 12, "removed": 3},
{"path": "ui/form.py", "added": 40, "removed": 0}]),
width=440)
Barra de cambios: Un archivoBarra de cambios: Un archivo
Un archivo
Código
pz.container(ui.EditsBar(files=[{"path": "app.py", "added": 2, "removed": 2}]), width=440)
Barra de cambios: Sin cifras de líneasBarra de cambios: Sin cifras de líneas
Sin cifras de líneas
Código
pz.container(ui.EditsBar(files=[{"path": "app.py"}, {"path": "README.md"}]), width=440)

Barra de cambios tiene 5 eventos propios, en la tabla de abajo. Como todo widget, también tiene los 18 eventos comunes (click, double_click, right_click, mouse_enter, drag, key_down, resize…), que se conectan con .on(...): mira Eventos y Eventos de cada componente.

Es un pz.Component, así que también lanza on_mount y on_unmount, y sus handlers reciben un pz.Event cuyo value trae el dato.

Evento El handler recibe Cuándo
on_keep (event) Conservar todo.
on_reject (event) Rechazar todo.
on_keep_file (event) Conservar en un archivo (event.value es su ruta).
on_reject_file (event) Rechazar en un archivo.
on_open (event) Se hizo clic en un archivo.

El handler recibe es lo que Pyzed le pasa a tu función: () es nada. Cualquier handler también puede ser un mensaje (un valor que no se puede llamar), que va a update().

Los mismos eventos escritos de tres formas. Imperativa: métodos de la app que cambian self. Declarativa: los handlers producen mensajes y un único update() decide. Funcional: una función pura dibuja un estado inmutable y pide cambios con set_state(...). Mira Imperativo, declarativo y funcional.

class Review(pz.App):
def __init__(self):
self.files = [{"path": "app/storage.py", "added": 12, "removed": 3},
{"path": "tests/test_storage.py", "added": 8, "removed": 0}]
def drop(self, path=None): # None: every file
self.files = [f for f in self.files if path is not None and f["path"] != path]
def view(self): # event.value is the file's path
return ui.EditsBar(files=self.files,
on_keep=lambda e: self.drop(), on_reject=lambda e: self.drop(),
on_keep_file=lambda e: self.drop(e.value),
on_reject_file=lambda e: self.drop(e.value),
on_open=lambda e: print("open", e.value))
class EditsBar

Un componente con los archivos que cambió un agente, como la barra de cambios de Zed: 3 archivos cambiados con Rechazar todo y Conservar todo, que se despliega en una fila por archivo con sus líneas, Rechazar y Conservar.

Propiedad Por defecto Descripción
files None Dicts u objetos con path y, opcionalmente, added y removed (líneas).
theme None Tema.

Eventos: on_keep, on_reject, on_keep_file, on_reject_file, on_open (eventos).

Referencia completa →