Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pycontribs/enrich
Enrich adds few missing features to the wonderful rich library.
https://github.com/pycontribs/enrich
colorama console pep-621 rich terminal-colors
Last synced: 14 days ago
JSON representation
Enrich adds few missing features to the wonderful rich library.
- Host: GitHub
- URL: https://github.com/pycontribs/enrich
- Owner: pycontribs
- License: mit
- Created: 2020-11-15T12:59:40.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-21T17:05:03.000Z (23 days ago)
- Last Synced: 2024-10-22T06:37:16.296Z (22 days ago)
- Topics: colorama, console, pep-621, rich, terminal-colors
- Language: Python
- Homepage:
- Size: 81.1 KB
- Stars: 32
- Watchers: 7
- Forks: 11
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# enrich
Enriched extends [rich](https://pypi.org/project/rich/) library functionality
with a set of changes that were not accepted to rich itself.## Console with redirect support
Our Console class adds one additional option to rich.Console in order to
redirect `sys.stdout` and `sys.stderr` streams using a FileProxy.```python
from enrich.console import Console
import sysconsole = Console(
redirect=True, # <-- not supported by rich.console.Console
record=True)
sys.write("foo")# this assert would have passed without redirect=True
assert console.export_text() == "foo"
```## Console with implicit soft wrapping
If you want to produce fluid terminal output, one where the client terminal
decides where to wrap the text instead of the application, you can now
tell the Console constructor the soft_wrap preference.```python
from enrich.console import Console
import sysconsole = Console(soft_wrap=True)
console.print(...) # no longer need to pass soft_wrap to each print
```## Console.print can also deal with ANSI escapes
Extends Rich Console to detect if original text already had ANSI escapes and
decodes it before processing it. This solves the case where printing
output captured from other processes that contained ANSI escapes would brake.
[upstream-404](https://github.com/willmcgugan/rich/discussions/404)## Soft-wrapping logger
Rich logger assumes that you always have a fixed width console and it does
wrap logged output according to it. Our alternative logger does exactly the
opposite: it ignores the columns of the current console and prints output
using a Console with soft wrapping enabled.The result are logged lines that can be displayed on any terminal or web
page as they will allow the client to decide when to perform the wrapping.```python
import logging
from enrich.logging import RichHandlerFORMAT = "%(message)s"
logging.basicConfig(
level="NOTSET", format=FORMAT, datefmt="[%X]", handlers=[RichHandler()]
)log = logging.getLogger("rich")
log.info("Text that we do not want pre-wrapped by logger: %s", 100 * "x")
```