Spaces:
Runtime error
Runtime error
# `gradio_log` | |
<a href="https://pypi.org/project/gradio_log/" target="_blank"><img alt="PyPI - Version" src="https://img.shields.io/pypi/v/gradio_log"></a> | |
A Log component for Gradio which can easily show some log file in the interface. | |
## Installation | |
```bash | |
pip install gradio_log | |
``` | |
## Usage | |
```python | |
import gradio as gr | |
from gradio_log import Log | |
import os | |
with open("./test.log", "wb") as f: | |
# write some random log to f, with colored and uncolored text | |
f.write(b"[INFO] Everything is fine.\n") | |
f.write(b"\x1b[34m[DEBUG] Debugging information.\x1b[0m\n") | |
f.write(b"\x1b[32m[SUCCESS] Task completed successfully.\x1b[0m\n") | |
f.write(b"\x1b[33m[WARNING] Something is not right.\x1b[0m\n") | |
f.write(b"\x1b[31m[ERROR] Unexpected error occured.\x1b[0m\n") | |
with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
with gr.Row(): | |
with gr.Column(scale=1): | |
Log("./test.log") | |
with gr.Column(scale=1): | |
Log( | |
"./test.log", | |
dark=True, | |
tail=4, | |
label="dark mode, read from last 4 lines of log", | |
) | |
if __name__ == "__main__": | |
demo.launch() | |
``` | |
## `Log` | |
### Initialization | |
<table> | |
<thead> | |
<tr> | |
<th align="left">name</th> | |
<th align="left" style="width: 25%;">type</th> | |
<th align="left">default</th> | |
<th align="left">description</th> | |
</tr> | |
</thead> | |
<tbody> | |
<tr> | |
<td align="left"><code>log_file</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
str | |
``` | |
</td> | |
<td align="left"><code>None</code></td> | |
<td align="left">the log file path to read from.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>tail</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
int | |
``` | |
</td> | |
<td align="left"><code>100</code></td> | |
<td align="left">from the end of the file, the number of lines to start read from.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>dark</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
bool | |
``` | |
</td> | |
<td align="left"><code>False</code></td> | |
<td align="left">if True, will render the component in dark mode.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>label</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
str | None | |
``` | |
</td> | |
<td align="left"><code>None</code></td> | |
<td align="left">The label for this component. Appears above the component and is also used as the header if there are a table of examples for this component. If None and used in a `gr.Interface`, the label will be the name of the parameter this component is assigned to.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>info</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
str | None | |
``` | |
</td> | |
<td align="left"><code>None</code></td> | |
<td align="left">additional component description.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>every</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
float | |
``` | |
</td> | |
<td align="left"><code>0.3</code></td> | |
<td align="left">New log pulling interval.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>show_label</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
bool | None | |
``` | |
</td> | |
<td align="left"><code>None</code></td> | |
<td align="left">if True, will display label.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>container</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
bool | |
``` | |
</td> | |
<td align="left"><code>True</code></td> | |
<td align="left">If True, will place the component in a container - providing some extra padding around the border.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>scale</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
int | None | |
``` | |
</td> | |
<td align="left"><code>None</code></td> | |
<td align="left">relative size compared to adjacent Components. For example if Components A and B are in a Row, and A has scale=2, and B has scale=1, A will be twice as wide as B. Should be an integer. scale applies in Rows, and to top-level Components in Blocks where fill_height=True.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>min_width</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
int | |
``` | |
</td> | |
<td align="left"><code>160</code></td> | |
<td align="left">minimum pixel width, will wrap if not sufficient screen space to satisfy this value. If a certain scale value results in this Component being narrower than min_width, the min_width parameter will be respected first.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>interactive</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
bool | None | |
``` | |
</td> | |
<td align="left"><code>None</code></td> | |
<td align="left">if True, will be rendered as an editable textbox; if False, editing will be disabled. If not provided, this is inferred based on whether the component is used as an input or output.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>visible</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
bool | |
``` | |
</td> | |
<td align="left"><code>True</code></td> | |
<td align="left">If False, component will be hidden.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>elem_id</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
str | None | |
``` | |
</td> | |
<td align="left"><code>None</code></td> | |
<td align="left">An optional string that is assigned as the id of this component in the HTML DOM. Can be used for targeting CSS styles.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>elem_classes</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
list[str] | str | None | |
``` | |
</td> | |
<td align="left"><code>None</code></td> | |
<td align="left">An optional list of strings that are assigned as the classes of this component in the HTML DOM. Can be used for targeting CSS styles.</td> | |
</tr> | |
<tr> | |
<td align="left"><code>render</code></td> | |
<td align="left" style="width: 25%;"> | |
```python | |
bool | |
``` | |
</td> | |
<td align="left"><code>True</code></td> | |
<td align="left">If False, component will not render be rendered in the Blocks context. Should be used if the intention is to assign event listeners now but render the component later.</td> | |
</tr> | |
</tbody></table> | |
### Events | |
| name | description | | |
|:-----|:------------| | |
| `load` | This listener is triggered when the Log initially loads in the browser. | | |
### User function | |
The impact on the users predict function varies depending on whether the component is used as an input or output for an event (or both). | |
- When used as an Input, the component only impacts the input signature of the user function. | |
- When used as an output, the component only impacts the return signature of the user function. | |
The code snippet below is accurate in cases where the component is used as both an input and an output. | |
- **As output:** Is passed, the preprocessed input data sent to the user's function in the backend. | |
```python | |
def predict( | |
value: typing.Any | |
) -> Unknown: | |
return value | |
``` | |