%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. | | #### function `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. | | ### class `TracebackPrinter` Helper to output custom formatted tracebacks and error messages. Currently used in [Thinc](https://github.com/explosion/thinc). #### method `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. | | #### method `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: ├─ [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. | | ### class `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) ``` ### method `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. | ### method `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. | | ### property `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. | | ### method `MarkdownRenderer.table` Create a Markdown-formatted table. ```python md = MarkdownRenderer() table = md.table([("a", "b"), ("c", "d")], ["Column 1", "Column 2"]) md.add(table) ``` ```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. | | ### method `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. | | ### method `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. | | ### method `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. | | ### method `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. | | ### method `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 #### function `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. | | #### function `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. | | #### function `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. | | #### function `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. | | ### class `TracebackPrinter` Helper to output custom formatted tracebacks and error messages. Currently used in [Thinc](https://github.com/explosion/thinc). #### method `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. | | #### method `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: ├─ [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. | | ### class `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) ``` ### method `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. | ### method `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. | | ### property `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. | | ### method `MarkdownRenderer.table` Create a Markdown-formatted table. ```python md = MarkdownRenderer() table = md.table([("a", "b"), ("c", "d")], ["Column 1", "Column 2"]) md.add(table) ``` ```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. | | ### method `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. | | ### method `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. | | ### method `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. | | ### method `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. | | ### method `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 #### function `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. | | #### function `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. | | #### function `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. | | #### function `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. | | ### class `TracebackPrinter` Helper to output custom formatted tracebacks and error messages. Currently used in [Thinc](https://github.com/explosion/thinc). #### method `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. | | #### method `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: ├─ [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. | | ### class `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) ``` ### method `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. | ### method `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. | | ### property `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. | | ### method `MarkdownRenderer.table` Create a Markdown-formatted table. ```python md = MarkdownRenderer() table = md.table([("a", "b"), ("c", "d")], ["Column 1", "Column 2"]) md.add(table) ``` ```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. | | ### method `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. | | ### method `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. | | ### method `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. | | ### method `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. | | ### method `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 #### function `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. | | #### function `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. | | #### function `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 - 1.1.1-1 - Package Spec generated