diff options
Diffstat (limited to 'python-wasabi.spec')
-rw-r--r-- | python-wasabi.spec | 890 |
1 files changed, 890 insertions, 0 deletions
diff --git a/python-wasabi.spec b/python-wasabi.spec new file mode 100644 index 0000000..89a7e74 --- /dev/null +++ b/python-wasabi.spec @@ -0,0 +1,890 @@ +%global _empty_manifest_terminate_build 0 +Name: python-wasabi +Version: 1.1.1 +Release: 1 +Summary: A lightweight console printing and formatting toolkit +License: MIT +URL: https://github.com/explosion/wasabi +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/8d/d3/abe7d7d745657e43af711bdc58d4c9016f63546795ec9b5b62b2d9b89fa6/wasabi-1.1.1.tar.gz +BuildArch: noarch + +Requires: python3-typing-extensions +Requires: python3-colorama + +%description + a1 a2 a3 + b1 b2 b3 +``` +| Argument | Type | Description | Default | +| ----------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `data` | iterable / dict | The data to render. Either a list of lists (one per row) or a dict for two-column tables. | | +| `header` | iterable | Optional header columns. | `None` | +| `footer` | iterable | Optional footer columns. | `None` | +| `divider` | bool | Show a divider line between header/footer and body. | `False` | +| `widths` | iterable / `"auto"` | Column widths in order. If `"auto"`, widths will be calculated automatically based on the largest value. | `"auto"` | +| `max_col` | int | Maximum column width. | `30` | +| `spacing` | int | Number of spaces between columns. | `3` | +| `aligns` | iterable / unicode | Columns alignments in order. `"l"` (left, default), `"r"` (right) or `"c"` (center). If If a string, value is used for all columns. | `None` | +| `multiline` | bool | If a cell value is a list of a tuple, render it on multiple lines, with one value per line. | `False` | +| `env_prefix` | unicode | Prefix for environment variables, e.g. WASABI_LOG_FRIENDLY. | `"WASABI"` | +| `color_values` | dict | Add or overwrite color values, name mapped to value. | `None` | +| `fg_colors` | iterable | Foreground colors, one per column. None can be specified for individual columns to retain the default background color. | `None` | +| `bg_colors` | iterable | Background colors, one per column. None can be specified for individual columns to retain the default background color. | `None` | +| **RETURNS** | str | The formatted table. | | +#### <kbd>function</kbd> `row` +```python +from wasabi import row +data = ("a1", "a2", "a3") +formatted = row(data) +``` +``` +a1 a2 a3 +``` +| Argument | Type | Description | Default | +| ----------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `data` | iterable | The individual columns to format. | | +| `widths` | list / int / `"auto"` | Column widths, either one integer for all columns or an iterable of values. If "auto", widths will be calculated automatically based on the largest value. | `"auto"` | +| `spacing` | int | Number of spaces between columns. | `3` | +| `aligns` | list | Columns alignments in order. `"l"` (left), `"r"` (right) or `"c"` (center). | `None` | +| `env_prefix` | unicode | Prefix for environment variables, e.g. WASABI_LOG_FRIENDLY. | `"WASABI"` | +| `fg_colors` | list | Foreground colors for the columns, in order. None can be specified for individual columns to retain the default foreground color. | `None` | +| `bg_colors` | list | Background colors for the columns, in order. None can be specified for individual columns to retain the default background color. | `None` | +| **RETURNS** | str | The formatted row. | | +### <kbd>class</kbd> `TracebackPrinter` +Helper to output custom formatted tracebacks and error messages. Currently used +in [Thinc](https://github.com/explosion/thinc). +#### <kbd>method</kbd> `TracebackPrinter.__init__` +Initialize a traceback printer. +```python +from wasabi import TracebackPrinter +tb = TracebackPrinter(tb_base="thinc", tb_exclude=("check.py",)) +``` +| Argument | Type | Description | Default | +| ----------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- | +| `color_error` | str / int | Color name or code for errors (passed to `color` helper). | `"red"` | +| `color_tb` | str / int | Color name or code for traceback headline (passed to `color` helper). | `"blue"` | +| `color_highlight` | str / int | Color name or code for highlighted text (passed to `color` helper). | `"yellow"` | +| `indent` | int | Number of spaces to use for indentation. | `2` | +| `tb_base` | str | Name of directory to use to show relative paths. For example, `"thinc"` will look for the last occurence of `"/thinc/"` in a path and only show path to the right of it. | `None` | +| `tb_exclude` | tuple | List of filenames to exclude from traceback. | `tuple()` | +| **RETURNS** | `TracebackPrinter` | The traceback printer. | | +#### <kbd>method</kbd> `TracebackPrinter.__call__` +Output custom formatted tracebacks and errors. +```python +from wasabi import TracebackPrinter +import traceback +tb = TracebackPrinter(tb_base="thinc", tb_exclude=("check.py",)) +error = tb("Some error", "Error description", highlight="kwargs", tb=traceback.extract_stack()) +raise ValueError(error) +``` +``` + Some error + Some error description + Traceback: + ├─ <lambda> [61] in .env/lib/python3.6/site-packages/pluggy/manager.py + ├─── _multicall [187] in .env/lib/python3.6/site-packages/pluggy/callers.py + └───── pytest_fixture_setup [969] in .env/lib/python3.6/site-packages/_pytest/fixtures.py + >>> result = call_fixture_func(fixturefunc, request, kwargs) +``` +| Argument | Type | Description | Default | +| ----------- | -------- | ------------------------------------------------------------------------------------------ | ------- | +| `title` | str | The message title. | | +| `*texts` | str | Optional texts to print (one per line). | | +| `highlight` | str | Optional sequence to highlight in the traceback, e.g. the bad value that caused the error. | `False` | +| `tb` | iterable | The traceback, e.g. generated by `traceback.extract_stack()`. | `None` | +| **RETURNS** | str | The formatted traceback. Can be printed or raised by custom exception. | | +### <kbd>class</kbd> `MarkdownRenderer` +Helper to create Markdown-formatted content. Will store the blocks added to the Markdown document in order. +```python +from wasabi import MarkdownRenderer +md = MarkdownRenderer() +md.add(md.title(1, "Hello world")) +md.add("This is a paragraph") +print(md.text) +``` +### <kbd>method</kbd> `MarkdownRenderer.__init__` +Initialize a Markdown renderer. +```python +from wasabi import MarkdownRenderer +md = MarkdownRenderer() +``` +| Argument | Type | Description | Default | +| ----------- | ------------------ | ------------------------------ | ------- | +| `no_emoji` | bool | Don't include emoji in titles. | `False` | +| **RETURNS** | `MarkdownRenderer` | The renderer. | +### <kbd>method</kbd> `MarkdownRenderer.add` +Add a block to the Markdown document. +```python +from wasabi import MarkdownRenderer +md = MarkdownRenderer() +md.add("This is a paragraph") +``` +| Argument | Type | Description | Default | +| -------- | ---- | ------------------- | ------- | +| `text` | str | The content to add. | | +### <kbd>property</kbd> `MarkdownRenderer.text` +The rendered Markdown document. +```python +md = MarkdownRenderer() +md.add("This is a paragraph") +print(md.text) +``` +| Argument | Type | Description | Default | +| ----------- | ---- | -------------------------------- | ------- | +| **RETURNS** | str | The document as a single string. | | +### <kbd>method</kbd> `MarkdownRenderer.table` +Create a Markdown-formatted table. +```python +md = MarkdownRenderer() +table = md.table([("a", "b"), ("c", "d")], ["Column 1", "Column 2"]) +md.add(table) +``` +<!-- prettier-ignore --> +```markdown +| Column 1 | Column 2 | +| --- | --- | +| a | b | +| c | d | +``` +| Argument | Type | Description | Default | +| ----------- | ----------------------- | ------------------------------------------------------------------------------------ | ------- | +| `data` | Iterable[Iterable[str]] | The body, one iterable per row, containig an interable of column contents. | | +| `header` | Iterable[str] | The column names. | | +| `aligns` | Iterable[str] | Columns alignments in order. `"l"` (left, default), `"r"` (right) or `"c"` (center). | `None` | +| **RETURNS** | str | The table. | | +### <kbd>method</kbd> `MarkdownRenderer.title` +Create a Markdown-formatted heading. +```python +md = MarkdownRenderer() +md.add(md.title(1, "Hello world")) +md.add(md.title(2, "Subheading", "💖")) +``` +```markdown +# Hello world +## 💖 Subheading +``` +| Argument | Type | Description | Default | +| ----------- | ---- | -------------------------------------- | ------- | +| `level` | int | The heading level, e.g. `3` for `###`. | | +| `text` | str | The heading text. | | +| `emoji` | str | Optional emoji to show before heading. | `None` | +| **RETURNS** | str | The rendered title. | | +### <kbd>method</kbd> `MarkdownRenderer.list` +Create a Markdown-formatted non-nested list. +```python +md = MarkdownRenderer() +md.add(md.list(["item", "other item"])) +md.add(md.list(["first item", "second item"], numbered=True)) +``` +```markdown +- item +- other item +1. first item +2. second item +``` +| Argument | Type | Description | Default | +| ----------- | ------------- | ------------------------------- | ------- | +| `items` | Iterable[str] | The list items. | | +| `numbered` | bool | Whether to use a numbered list. | `False` | +| **RETURNS** | str | The rendered list. | | +### <kbd>method</kbd> `MarkdownRenderer.link` +Create a Markdown-formatted link. +```python +md = MarkdownRenderer() +md.add(md.link("Google", "https://google.com")) +``` +```markdown +[Google](https://google.com) +``` +| Argument | Type | Description | Default | +| ----------- | ---- | ------------------ | ------- | +| `text` | str | The link text. | | +| `url` | str | The link URL. | | +| **RETURNS** | str | The rendered link. | | +### <kbd>method</kbd> `MarkdownRenderer.code_block` +Create a Markdown-formatted code block. +```python +md = MarkdownRenderer() +md.add(md.code_block("import spacy", "python")) +``` +````markdown +```python +import spacy +``` +```` +| Argument | Type | Description | Default | +| ----------- | ---- | ------------------------ | ------- | +| `text` | str | The code text. | | +| `lang` | str | Optional code language. | `""` | +| **RETURNS** | str | The rendered code block. | | +### <kbd>method</kbd> `MarkdownRenderer.code`, `MarkdownRenderer.bold`, `MarkdownRenderer.italic` +Create a Markdown-formatted text. +```python +md = MarkdownRenderer() +md.add(md.code("import spacy")) +md.add(md.bold("Hello!")) +md.add(md.italic("Emphasis")) +``` +```markdown +`import spacy` +**Hello!** +_Emphasis_ +``` +### Utilities +#### <kbd>function</kbd> `color` +```python +from wasabi import color +formatted = color("This is a text", fg="white", bg="green", bold=True) +``` +| Argument | Type | Description | Default | +| ----------- | --------- | --------------------------------------------- | ------- | +| `text` | str | The text to be formatted. | - | +| `fg` | str / int | Foreground color. String name or `0` - `256`. | `None` | +| `bg` | str / int | Background color. String name or `0` - `256`. | `None` | +| `bold` | bool | Format the text in bold. | `False` | +| `underline` | bool | Format the text by underlining. | `False` | +| **RETURNS** | str | The formatted string. | | +#### <kbd>function</kbd> `wrap` +```python +from wasabi import wrap +wrapped = wrap("Hello world, this is a text.", indent=2) +``` +| Argument | Type | Description | Default | +| ----------- | ---- | ------------------------------------------ | ------- | +| `text` | str | The text to wrap. | - | +| `wrap_max` | int | Maximum line width, including indentation. | `80` | +| `indent` | int | Number of spaces used for indentation. | `4` | +| **RETURNS** | str | The wrapped text with line breaks. | | +#### <kbd>function</kbd> `diff_strings` +```python +from wasabi import diff_strings +diff = diff_strings("hello world!", "helloo world") +``` +| Argument | Type | Description | Default | +| ----------- | --------- | ---------------------------------------------------------------------------- | ------------------ | +| `a` | str | The first string to diff. | +| `b` | str | The second string to diff. | +| `fg` | str / int | Foreground color. String name or `0` - `256`. | `"black"` | +| `bg` | tuple | Background colors as `(insert, delete)` tuple of string name or `0` - `256`. | `("green", "red")` | +| **RETURNS** | str | The formatted diff. | | +### Environment variables +Wasabi also respects the following environment variables. The prefix can be +customised on the `Printer` via the `env_prefix` argument. For example, setting +`env_prefix="SPACY"` will expect the environment variable `SPACY_LOG_FRIENDLY`. +| Name | Description | +| ---------------------- | ------------------------------------------------------ | +| `ANSI_COLORS_DISABLED` | Disable colors. | +| `WASABI_LOG_FRIENDLY` | Make output nicer for logs (no colors, no animations). | +| `WASABI_NO_PRETTY` | Disable pretty printing, e.g. colors and icons. | +## 🔔 Run tests +Fork or clone the repo, make sure you have `pytest` installed and then run it on +the package directory. The tests are located in +[`/wasabi/tests`](/wasabi/tests). +```bash +pip install pytest +cd wasabi +python -m pytest wasabi +``` + +%package -n python3-wasabi +Summary: A lightweight console printing and formatting toolkit +Provides: python-wasabi +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-wasabi + a1 a2 a3 + b1 b2 b3 +``` +| Argument | Type | Description | Default | +| ----------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `data` | iterable / dict | The data to render. Either a list of lists (one per row) or a dict for two-column tables. | | +| `header` | iterable | Optional header columns. | `None` | +| `footer` | iterable | Optional footer columns. | `None` | +| `divider` | bool | Show a divider line between header/footer and body. | `False` | +| `widths` | iterable / `"auto"` | Column widths in order. If `"auto"`, widths will be calculated automatically based on the largest value. | `"auto"` | +| `max_col` | int | Maximum column width. | `30` | +| `spacing` | int | Number of spaces between columns. | `3` | +| `aligns` | iterable / unicode | Columns alignments in order. `"l"` (left, default), `"r"` (right) or `"c"` (center). If If a string, value is used for all columns. | `None` | +| `multiline` | bool | If a cell value is a list of a tuple, render it on multiple lines, with one value per line. | `False` | +| `env_prefix` | unicode | Prefix for environment variables, e.g. WASABI_LOG_FRIENDLY. | `"WASABI"` | +| `color_values` | dict | Add or overwrite color values, name mapped to value. | `None` | +| `fg_colors` | iterable | Foreground colors, one per column. None can be specified for individual columns to retain the default background color. | `None` | +| `bg_colors` | iterable | Background colors, one per column. None can be specified for individual columns to retain the default background color. | `None` | +| **RETURNS** | str | The formatted table. | | +#### <kbd>function</kbd> `row` +```python +from wasabi import row +data = ("a1", "a2", "a3") +formatted = row(data) +``` +``` +a1 a2 a3 +``` +| Argument | Type | Description | Default | +| ----------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `data` | iterable | The individual columns to format. | | +| `widths` | list / int / `"auto"` | Column widths, either one integer for all columns or an iterable of values. If "auto", widths will be calculated automatically based on the largest value. | `"auto"` | +| `spacing` | int | Number of spaces between columns. | `3` | +| `aligns` | list | Columns alignments in order. `"l"` (left), `"r"` (right) or `"c"` (center). | `None` | +| `env_prefix` | unicode | Prefix for environment variables, e.g. WASABI_LOG_FRIENDLY. | `"WASABI"` | +| `fg_colors` | list | Foreground colors for the columns, in order. None can be specified for individual columns to retain the default foreground color. | `None` | +| `bg_colors` | list | Background colors for the columns, in order. None can be specified for individual columns to retain the default background color. | `None` | +| **RETURNS** | str | The formatted row. | | +### <kbd>class</kbd> `TracebackPrinter` +Helper to output custom formatted tracebacks and error messages. Currently used +in [Thinc](https://github.com/explosion/thinc). +#### <kbd>method</kbd> `TracebackPrinter.__init__` +Initialize a traceback printer. +```python +from wasabi import TracebackPrinter +tb = TracebackPrinter(tb_base="thinc", tb_exclude=("check.py",)) +``` +| Argument | Type | Description | Default | +| ----------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- | +| `color_error` | str / int | Color name or code for errors (passed to `color` helper). | `"red"` | +| `color_tb` | str / int | Color name or code for traceback headline (passed to `color` helper). | `"blue"` | +| `color_highlight` | str / int | Color name or code for highlighted text (passed to `color` helper). | `"yellow"` | +| `indent` | int | Number of spaces to use for indentation. | `2` | +| `tb_base` | str | Name of directory to use to show relative paths. For example, `"thinc"` will look for the last occurence of `"/thinc/"` in a path and only show path to the right of it. | `None` | +| `tb_exclude` | tuple | List of filenames to exclude from traceback. | `tuple()` | +| **RETURNS** | `TracebackPrinter` | The traceback printer. | | +#### <kbd>method</kbd> `TracebackPrinter.__call__` +Output custom formatted tracebacks and errors. +```python +from wasabi import TracebackPrinter +import traceback +tb = TracebackPrinter(tb_base="thinc", tb_exclude=("check.py",)) +error = tb("Some error", "Error description", highlight="kwargs", tb=traceback.extract_stack()) +raise ValueError(error) +``` +``` + Some error + Some error description + Traceback: + ├─ <lambda> [61] in .env/lib/python3.6/site-packages/pluggy/manager.py + ├─── _multicall [187] in .env/lib/python3.6/site-packages/pluggy/callers.py + └───── pytest_fixture_setup [969] in .env/lib/python3.6/site-packages/_pytest/fixtures.py + >>> result = call_fixture_func(fixturefunc, request, kwargs) +``` +| Argument | Type | Description | Default | +| ----------- | -------- | ------------------------------------------------------------------------------------------ | ------- | +| `title` | str | The message title. | | +| `*texts` | str | Optional texts to print (one per line). | | +| `highlight` | str | Optional sequence to highlight in the traceback, e.g. the bad value that caused the error. | `False` | +| `tb` | iterable | The traceback, e.g. generated by `traceback.extract_stack()`. | `None` | +| **RETURNS** | str | The formatted traceback. Can be printed or raised by custom exception. | | +### <kbd>class</kbd> `MarkdownRenderer` +Helper to create Markdown-formatted content. Will store the blocks added to the Markdown document in order. +```python +from wasabi import MarkdownRenderer +md = MarkdownRenderer() +md.add(md.title(1, "Hello world")) +md.add("This is a paragraph") +print(md.text) +``` +### <kbd>method</kbd> `MarkdownRenderer.__init__` +Initialize a Markdown renderer. +```python +from wasabi import MarkdownRenderer +md = MarkdownRenderer() +``` +| Argument | Type | Description | Default | +| ----------- | ------------------ | ------------------------------ | ------- | +| `no_emoji` | bool | Don't include emoji in titles. | `False` | +| **RETURNS** | `MarkdownRenderer` | The renderer. | +### <kbd>method</kbd> `MarkdownRenderer.add` +Add a block to the Markdown document. +```python +from wasabi import MarkdownRenderer +md = MarkdownRenderer() +md.add("This is a paragraph") +``` +| Argument | Type | Description | Default | +| -------- | ---- | ------------------- | ------- | +| `text` | str | The content to add. | | +### <kbd>property</kbd> `MarkdownRenderer.text` +The rendered Markdown document. +```python +md = MarkdownRenderer() +md.add("This is a paragraph") +print(md.text) +``` +| Argument | Type | Description | Default | +| ----------- | ---- | -------------------------------- | ------- | +| **RETURNS** | str | The document as a single string. | | +### <kbd>method</kbd> `MarkdownRenderer.table` +Create a Markdown-formatted table. +```python +md = MarkdownRenderer() +table = md.table([("a", "b"), ("c", "d")], ["Column 1", "Column 2"]) +md.add(table) +``` +<!-- prettier-ignore --> +```markdown +| Column 1 | Column 2 | +| --- | --- | +| a | b | +| c | d | +``` +| Argument | Type | Description | Default | +| ----------- | ----------------------- | ------------------------------------------------------------------------------------ | ------- | +| `data` | Iterable[Iterable[str]] | The body, one iterable per row, containig an interable of column contents. | | +| `header` | Iterable[str] | The column names. | | +| `aligns` | Iterable[str] | Columns alignments in order. `"l"` (left, default), `"r"` (right) or `"c"` (center). | `None` | +| **RETURNS** | str | The table. | | +### <kbd>method</kbd> `MarkdownRenderer.title` +Create a Markdown-formatted heading. +```python +md = MarkdownRenderer() +md.add(md.title(1, "Hello world")) +md.add(md.title(2, "Subheading", "💖")) +``` +```markdown +# Hello world +## 💖 Subheading +``` +| Argument | Type | Description | Default | +| ----------- | ---- | -------------------------------------- | ------- | +| `level` | int | The heading level, e.g. `3` for `###`. | | +| `text` | str | The heading text. | | +| `emoji` | str | Optional emoji to show before heading. | `None` | +| **RETURNS** | str | The rendered title. | | +### <kbd>method</kbd> `MarkdownRenderer.list` +Create a Markdown-formatted non-nested list. +```python +md = MarkdownRenderer() +md.add(md.list(["item", "other item"])) +md.add(md.list(["first item", "second item"], numbered=True)) +``` +```markdown +- item +- other item +1. first item +2. second item +``` +| Argument | Type | Description | Default | +| ----------- | ------------- | ------------------------------- | ------- | +| `items` | Iterable[str] | The list items. | | +| `numbered` | bool | Whether to use a numbered list. | `False` | +| **RETURNS** | str | The rendered list. | | +### <kbd>method</kbd> `MarkdownRenderer.link` +Create a Markdown-formatted link. +```python +md = MarkdownRenderer() +md.add(md.link("Google", "https://google.com")) +``` +```markdown +[Google](https://google.com) +``` +| Argument | Type | Description | Default | +| ----------- | ---- | ------------------ | ------- | +| `text` | str | The link text. | | +| `url` | str | The link URL. | | +| **RETURNS** | str | The rendered link. | | +### <kbd>method</kbd> `MarkdownRenderer.code_block` +Create a Markdown-formatted code block. +```python +md = MarkdownRenderer() +md.add(md.code_block("import spacy", "python")) +``` +````markdown +```python +import spacy +``` +```` +| Argument | Type | Description | Default | +| ----------- | ---- | ------------------------ | ------- | +| `text` | str | The code text. | | +| `lang` | str | Optional code language. | `""` | +| **RETURNS** | str | The rendered code block. | | +### <kbd>method</kbd> `MarkdownRenderer.code`, `MarkdownRenderer.bold`, `MarkdownRenderer.italic` +Create a Markdown-formatted text. +```python +md = MarkdownRenderer() +md.add(md.code("import spacy")) +md.add(md.bold("Hello!")) +md.add(md.italic("Emphasis")) +``` +```markdown +`import spacy` +**Hello!** +_Emphasis_ +``` +### Utilities +#### <kbd>function</kbd> `color` +```python +from wasabi import color +formatted = color("This is a text", fg="white", bg="green", bold=True) +``` +| Argument | Type | Description | Default | +| ----------- | --------- | --------------------------------------------- | ------- | +| `text` | str | The text to be formatted. | - | +| `fg` | str / int | Foreground color. String name or `0` - `256`. | `None` | +| `bg` | str / int | Background color. String name or `0` - `256`. | `None` | +| `bold` | bool | Format the text in bold. | `False` | +| `underline` | bool | Format the text by underlining. | `False` | +| **RETURNS** | str | The formatted string. | | +#### <kbd>function</kbd> `wrap` +```python +from wasabi import wrap +wrapped = wrap("Hello world, this is a text.", indent=2) +``` +| Argument | Type | Description | Default | +| ----------- | ---- | ------------------------------------------ | ------- | +| `text` | str | The text to wrap. | - | +| `wrap_max` | int | Maximum line width, including indentation. | `80` | +| `indent` | int | Number of spaces used for indentation. | `4` | +| **RETURNS** | str | The wrapped text with line breaks. | | +#### <kbd>function</kbd> `diff_strings` +```python +from wasabi import diff_strings +diff = diff_strings("hello world!", "helloo world") +``` +| Argument | Type | Description | Default | +| ----------- | --------- | ---------------------------------------------------------------------------- | ------------------ | +| `a` | str | The first string to diff. | +| `b` | str | The second string to diff. | +| `fg` | str / int | Foreground color. String name or `0` - `256`. | `"black"` | +| `bg` | tuple | Background colors as `(insert, delete)` tuple of string name or `0` - `256`. | `("green", "red")` | +| **RETURNS** | str | The formatted diff. | | +### Environment variables +Wasabi also respects the following environment variables. The prefix can be +customised on the `Printer` via the `env_prefix` argument. For example, setting +`env_prefix="SPACY"` will expect the environment variable `SPACY_LOG_FRIENDLY`. +| Name | Description | +| ---------------------- | ------------------------------------------------------ | +| `ANSI_COLORS_DISABLED` | Disable colors. | +| `WASABI_LOG_FRIENDLY` | Make output nicer for logs (no colors, no animations). | +| `WASABI_NO_PRETTY` | Disable pretty printing, e.g. colors and icons. | +## 🔔 Run tests +Fork or clone the repo, make sure you have `pytest` installed and then run it on +the package directory. The tests are located in +[`/wasabi/tests`](/wasabi/tests). +```bash +pip install pytest +cd wasabi +python -m pytest wasabi +``` + +%package help +Summary: Development documents and examples for wasabi +Provides: python3-wasabi-doc +%description help + a1 a2 a3 + b1 b2 b3 +``` +| Argument | Type | Description | Default | +| ----------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `data` | iterable / dict | The data to render. Either a list of lists (one per row) or a dict for two-column tables. | | +| `header` | iterable | Optional header columns. | `None` | +| `footer` | iterable | Optional footer columns. | `None` | +| `divider` | bool | Show a divider line between header/footer and body. | `False` | +| `widths` | iterable / `"auto"` | Column widths in order. If `"auto"`, widths will be calculated automatically based on the largest value. | `"auto"` | +| `max_col` | int | Maximum column width. | `30` | +| `spacing` | int | Number of spaces between columns. | `3` | +| `aligns` | iterable / unicode | Columns alignments in order. `"l"` (left, default), `"r"` (right) or `"c"` (center). If If a string, value is used for all columns. | `None` | +| `multiline` | bool | If a cell value is a list of a tuple, render it on multiple lines, with one value per line. | `False` | +| `env_prefix` | unicode | Prefix for environment variables, e.g. WASABI_LOG_FRIENDLY. | `"WASABI"` | +| `color_values` | dict | Add or overwrite color values, name mapped to value. | `None` | +| `fg_colors` | iterable | Foreground colors, one per column. None can be specified for individual columns to retain the default background color. | `None` | +| `bg_colors` | iterable | Background colors, one per column. None can be specified for individual columns to retain the default background color. | `None` | +| **RETURNS** | str | The formatted table. | | +#### <kbd>function</kbd> `row` +```python +from wasabi import row +data = ("a1", "a2", "a3") +formatted = row(data) +``` +``` +a1 a2 a3 +``` +| Argument | Type | Description | Default | +| ----------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| `data` | iterable | The individual columns to format. | | +| `widths` | list / int / `"auto"` | Column widths, either one integer for all columns or an iterable of values. If "auto", widths will be calculated automatically based on the largest value. | `"auto"` | +| `spacing` | int | Number of spaces between columns. | `3` | +| `aligns` | list | Columns alignments in order. `"l"` (left), `"r"` (right) or `"c"` (center). | `None` | +| `env_prefix` | unicode | Prefix for environment variables, e.g. WASABI_LOG_FRIENDLY. | `"WASABI"` | +| `fg_colors` | list | Foreground colors for the columns, in order. None can be specified for individual columns to retain the default foreground color. | `None` | +| `bg_colors` | list | Background colors for the columns, in order. None can be specified for individual columns to retain the default background color. | `None` | +| **RETURNS** | str | The formatted row. | | +### <kbd>class</kbd> `TracebackPrinter` +Helper to output custom formatted tracebacks and error messages. Currently used +in [Thinc](https://github.com/explosion/thinc). +#### <kbd>method</kbd> `TracebackPrinter.__init__` +Initialize a traceback printer. +```python +from wasabi import TracebackPrinter +tb = TracebackPrinter(tb_base="thinc", tb_exclude=("check.py",)) +``` +| Argument | Type | Description | Default | +| ----------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- | +| `color_error` | str / int | Color name or code for errors (passed to `color` helper). | `"red"` | +| `color_tb` | str / int | Color name or code for traceback headline (passed to `color` helper). | `"blue"` | +| `color_highlight` | str / int | Color name or code for highlighted text (passed to `color` helper). | `"yellow"` | +| `indent` | int | Number of spaces to use for indentation. | `2` | +| `tb_base` | str | Name of directory to use to show relative paths. For example, `"thinc"` will look for the last occurence of `"/thinc/"` in a path and only show path to the right of it. | `None` | +| `tb_exclude` | tuple | List of filenames to exclude from traceback. | `tuple()` | +| **RETURNS** | `TracebackPrinter` | The traceback printer. | | +#### <kbd>method</kbd> `TracebackPrinter.__call__` +Output custom formatted tracebacks and errors. +```python +from wasabi import TracebackPrinter +import traceback +tb = TracebackPrinter(tb_base="thinc", tb_exclude=("check.py",)) +error = tb("Some error", "Error description", highlight="kwargs", tb=traceback.extract_stack()) +raise ValueError(error) +``` +``` + Some error + Some error description + Traceback: + ├─ <lambda> [61] in .env/lib/python3.6/site-packages/pluggy/manager.py + ├─── _multicall [187] in .env/lib/python3.6/site-packages/pluggy/callers.py + └───── pytest_fixture_setup [969] in .env/lib/python3.6/site-packages/_pytest/fixtures.py + >>> result = call_fixture_func(fixturefunc, request, kwargs) +``` +| Argument | Type | Description | Default | +| ----------- | -------- | ------------------------------------------------------------------------------------------ | ------- | +| `title` | str | The message title. | | +| `*texts` | str | Optional texts to print (one per line). | | +| `highlight` | str | Optional sequence to highlight in the traceback, e.g. the bad value that caused the error. | `False` | +| `tb` | iterable | The traceback, e.g. generated by `traceback.extract_stack()`. | `None` | +| **RETURNS** | str | The formatted traceback. Can be printed or raised by custom exception. | | +### <kbd>class</kbd> `MarkdownRenderer` +Helper to create Markdown-formatted content. Will store the blocks added to the Markdown document in order. +```python +from wasabi import MarkdownRenderer +md = MarkdownRenderer() +md.add(md.title(1, "Hello world")) +md.add("This is a paragraph") +print(md.text) +``` +### <kbd>method</kbd> `MarkdownRenderer.__init__` +Initialize a Markdown renderer. +```python +from wasabi import MarkdownRenderer +md = MarkdownRenderer() +``` +| Argument | Type | Description | Default | +| ----------- | ------------------ | ------------------------------ | ------- | +| `no_emoji` | bool | Don't include emoji in titles. | `False` | +| **RETURNS** | `MarkdownRenderer` | The renderer. | +### <kbd>method</kbd> `MarkdownRenderer.add` +Add a block to the Markdown document. +```python +from wasabi import MarkdownRenderer +md = MarkdownRenderer() +md.add("This is a paragraph") +``` +| Argument | Type | Description | Default | +| -------- | ---- | ------------------- | ------- | +| `text` | str | The content to add. | | +### <kbd>property</kbd> `MarkdownRenderer.text` +The rendered Markdown document. +```python +md = MarkdownRenderer() +md.add("This is a paragraph") +print(md.text) +``` +| Argument | Type | Description | Default | +| ----------- | ---- | -------------------------------- | ------- | +| **RETURNS** | str | The document as a single string. | | +### <kbd>method</kbd> `MarkdownRenderer.table` +Create a Markdown-formatted table. +```python +md = MarkdownRenderer() +table = md.table([("a", "b"), ("c", "d")], ["Column 1", "Column 2"]) +md.add(table) +``` +<!-- prettier-ignore --> +```markdown +| Column 1 | Column 2 | +| --- | --- | +| a | b | +| c | d | +``` +| Argument | Type | Description | Default | +| ----------- | ----------------------- | ------------------------------------------------------------------------------------ | ------- | +| `data` | Iterable[Iterable[str]] | The body, one iterable per row, containig an interable of column contents. | | +| `header` | Iterable[str] | The column names. | | +| `aligns` | Iterable[str] | Columns alignments in order. `"l"` (left, default), `"r"` (right) or `"c"` (center). | `None` | +| **RETURNS** | str | The table. | | +### <kbd>method</kbd> `MarkdownRenderer.title` +Create a Markdown-formatted heading. +```python +md = MarkdownRenderer() +md.add(md.title(1, "Hello world")) +md.add(md.title(2, "Subheading", "💖")) +``` +```markdown +# Hello world +## 💖 Subheading +``` +| Argument | Type | Description | Default | +| ----------- | ---- | -------------------------------------- | ------- | +| `level` | int | The heading level, e.g. `3` for `###`. | | +| `text` | str | The heading text. | | +| `emoji` | str | Optional emoji to show before heading. | `None` | +| **RETURNS** | str | The rendered title. | | +### <kbd>method</kbd> `MarkdownRenderer.list` +Create a Markdown-formatted non-nested list. +```python +md = MarkdownRenderer() +md.add(md.list(["item", "other item"])) +md.add(md.list(["first item", "second item"], numbered=True)) +``` +```markdown +- item +- other item +1. first item +2. second item +``` +| Argument | Type | Description | Default | +| ----------- | ------------- | ------------------------------- | ------- | +| `items` | Iterable[str] | The list items. | | +| `numbered` | bool | Whether to use a numbered list. | `False` | +| **RETURNS** | str | The rendered list. | | +### <kbd>method</kbd> `MarkdownRenderer.link` +Create a Markdown-formatted link. +```python +md = MarkdownRenderer() +md.add(md.link("Google", "https://google.com")) +``` +```markdown +[Google](https://google.com) +``` +| Argument | Type | Description | Default | +| ----------- | ---- | ------------------ | ------- | +| `text` | str | The link text. | | +| `url` | str | The link URL. | | +| **RETURNS** | str | The rendered link. | | +### <kbd>method</kbd> `MarkdownRenderer.code_block` +Create a Markdown-formatted code block. +```python +md = MarkdownRenderer() +md.add(md.code_block("import spacy", "python")) +``` +````markdown +```python +import spacy +``` +```` +| Argument | Type | Description | Default | +| ----------- | ---- | ------------------------ | ------- | +| `text` | str | The code text. | | +| `lang` | str | Optional code language. | `""` | +| **RETURNS** | str | The rendered code block. | | +### <kbd>method</kbd> `MarkdownRenderer.code`, `MarkdownRenderer.bold`, `MarkdownRenderer.italic` +Create a Markdown-formatted text. +```python +md = MarkdownRenderer() +md.add(md.code("import spacy")) +md.add(md.bold("Hello!")) +md.add(md.italic("Emphasis")) +``` +```markdown +`import spacy` +**Hello!** +_Emphasis_ +``` +### Utilities +#### <kbd>function</kbd> `color` +```python +from wasabi import color +formatted = color("This is a text", fg="white", bg="green", bold=True) +``` +| Argument | Type | Description | Default | +| ----------- | --------- | --------------------------------------------- | ------- | +| `text` | str | The text to be formatted. | - | +| `fg` | str / int | Foreground color. String name or `0` - `256`. | `None` | +| `bg` | str / int | Background color. String name or `0` - `256`. | `None` | +| `bold` | bool | Format the text in bold. | `False` | +| `underline` | bool | Format the text by underlining. | `False` | +| **RETURNS** | str | The formatted string. | | +#### <kbd>function</kbd> `wrap` +```python +from wasabi import wrap +wrapped = wrap("Hello world, this is a text.", indent=2) +``` +| Argument | Type | Description | Default | +| ----------- | ---- | ------------------------------------------ | ------- | +| `text` | str | The text to wrap. | - | +| `wrap_max` | int | Maximum line width, including indentation. | `80` | +| `indent` | int | Number of spaces used for indentation. | `4` | +| **RETURNS** | str | The wrapped text with line breaks. | | +#### <kbd>function</kbd> `diff_strings` +```python +from wasabi import diff_strings +diff = diff_strings("hello world!", "helloo world") +``` +| Argument | Type | Description | Default | +| ----------- | --------- | ---------------------------------------------------------------------------- | ------------------ | +| `a` | str | The first string to diff. | +| `b` | str | The second string to diff. | +| `fg` | str / int | Foreground color. String name or `0` - `256`. | `"black"` | +| `bg` | tuple | Background colors as `(insert, delete)` tuple of string name or `0` - `256`. | `("green", "red")` | +| **RETURNS** | str | The formatted diff. | | +### Environment variables +Wasabi also respects the following environment variables. The prefix can be +customised on the `Printer` via the `env_prefix` argument. For example, setting +`env_prefix="SPACY"` will expect the environment variable `SPACY_LOG_FRIENDLY`. +| Name | Description | +| ---------------------- | ------------------------------------------------------ | +| `ANSI_COLORS_DISABLED` | Disable colors. | +| `WASABI_LOG_FRIENDLY` | Make output nicer for logs (no colors, no animations). | +| `WASABI_NO_PRETTY` | Disable pretty printing, e.g. colors and icons. | +## 🔔 Run tests +Fork or clone the repo, make sure you have `pytest` installed and then run it on +the package directory. The tests are located in +[`/wasabi/tests`](/wasabi/tests). +```bash +pip install pytest +cd wasabi +python -m pytest wasabi +``` + +%prep +%autosetup -n wasabi-1.1.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-wasabi -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 1.1.1-1 +- Package Spec generated |