Python library to simplify building of tree output with command-line interfaces.
Project description
tree_output
===========
[![Build Status](https://travis-ci.org/ewiger/tree_output.svg?branch=master)](https://travis-ci.org/ewiger/tree_output)
Python library to simplify building of tree output with command-line interfaces.
Supported output format options are:
- json
- ascii
- ansi
- null
examples
--------
```python
tree_output = HierarchicalOutput.factory('ansi')
import colorama
tree_output.emit('foo')
tree_output.add_level()
tree_output.emit('foO')
tree_output.add_level()
tree_output.emit('bar')
tree_output.add_level()
for num in range(10):
tree_output.emit(num)
tree_output.emit(10, closed=True)
tree_output.remove_level()
tree_output.emit('baz', closed=True)
tree_output.emit('foo2')
```
this will draw a colorful ANSI output like this
```
.
├── foo
│ ├── foO
│ │ ├── bar
│ │ │ ├── 0
│ │ │ ├── 1
│ │ │ ├── 2
│ │ │ ├── 3
│ │ │ ├── 4
│ │ │ ├── 5
│ │ │ ├── 6
│ │ │ ├── 7
│ │ │ ├── 8
│ │ │ ├── 9
│ │ │ └── 10
│ └── baz
├── foo2
```
logging
-------
Another option is to integrate with logging and pass hierarchical meta instructions via optional **extra** argument, e.g.
```python
houtput = HierarchicalOutput.factory(format='json')
#houtput = HierarchicalOutput.factory(format='ansi')
handler = HierarchicalOutputHandler(houtput=houtput)
logger = logging.getLogger('foo')
logging.root.addHandler(handler)
# Emission.
logger.info('foo')
logger.info('bar', extra={'add_hlevel': True})
logger.info('foo2')
logger.info('bar', extra={'add_hlevel': True})
logger.info('foo2')
logger.info('Numbers', extra={'add_hlevel': True})
for num in range(10):
logger.warn(num)
logger.warn('end of numbers', extra={'hclosed': True})
logger.debug('level up', extra={'remove_hclosed': True})
```
produces
```json
["foo", [
"bar", "foo2", ["
bar", "foo2", [
"Numbers",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"end of numbers"
],
"level up"]
]
]
```
tests
-----
For tests we use *nose*, i.e. usage would be:
```bash
cd tests && nosetests
```
===========
[![Build Status](https://travis-ci.org/ewiger/tree_output.svg?branch=master)](https://travis-ci.org/ewiger/tree_output)
Python library to simplify building of tree output with command-line interfaces.
Supported output format options are:
- json
- ascii
- ansi
- null
examples
--------
```python
tree_output = HierarchicalOutput.factory('ansi')
import colorama
tree_output.emit('foo')
tree_output.add_level()
tree_output.emit('foO')
tree_output.add_level()
tree_output.emit('bar')
tree_output.add_level()
for num in range(10):
tree_output.emit(num)
tree_output.emit(10, closed=True)
tree_output.remove_level()
tree_output.emit('baz', closed=True)
tree_output.emit('foo2')
```
this will draw a colorful ANSI output like this
```
.
├── foo
│ ├── foO
│ │ ├── bar
│ │ │ ├── 0
│ │ │ ├── 1
│ │ │ ├── 2
│ │ │ ├── 3
│ │ │ ├── 4
│ │ │ ├── 5
│ │ │ ├── 6
│ │ │ ├── 7
│ │ │ ├── 8
│ │ │ ├── 9
│ │ │ └── 10
│ └── baz
├── foo2
```
logging
-------
Another option is to integrate with logging and pass hierarchical meta instructions via optional **extra** argument, e.g.
```python
houtput = HierarchicalOutput.factory(format='json')
#houtput = HierarchicalOutput.factory(format='ansi')
handler = HierarchicalOutputHandler(houtput=houtput)
logger = logging.getLogger('foo')
logging.root.addHandler(handler)
# Emission.
logger.info('foo')
logger.info('bar', extra={'add_hlevel': True})
logger.info('foo2')
logger.info('bar', extra={'add_hlevel': True})
logger.info('foo2')
logger.info('Numbers', extra={'add_hlevel': True})
for num in range(10):
logger.warn(num)
logger.warn('end of numbers', extra={'hclosed': True})
logger.debug('level up', extra={'remove_hclosed': True})
```
produces
```json
["foo", [
"bar", "foo2", ["
bar", "foo2", [
"Numbers",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"end of numbers"
],
"level up"]
]
]
```
tests
-----
For tests we use *nose*, i.e. usage would be:
```bash
cd tests && nosetests
```
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tree_output-0.1.4.tar.gz
(4.4 kB
view details)
File details
Details for the file tree_output-0.1.4.tar.gz
.
File metadata
- Download URL: tree_output-0.1.4.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | af7e43811a1f3b577ec43adc75720a5fb9bad05b76b97eecf583cc4a51aba0e7 |
|
MD5 | 825cbf00e9a7a0b7d02a44e85dfb21c7 |
|
BLAKE2b-256 | af5f9fe4327b99796f12e5a418e6698b301a1eae8c2c28dbeff41827419ef5ec |