summaryrefslogtreecommitdiff
path: root/python-wasabi.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-wasabi.spec')
-rw-r--r--python-wasabi.spec890
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