https://github.com/olsonpm/py_pretty-simple-namespace
https://github.com/olsonpm/py_pretty-simple-namespace
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/olsonpm/py_pretty-simple-namespace
- Owner: olsonpm
- License: other
- Created: 2019-01-21T21:13:52.000Z (over 7 years ago)
- Default Branch: dev
- Last Pushed: 2019-05-19T20:45:52.000Z (about 7 years ago)
- Last Synced: 2025-01-20T23:45:26.175Z (over 1 year ago)
- Language: Python
- Homepage:
- Size: 179 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Pretty SimpleNamespace
**Table of Contents**
- [What is it?](#what-is-it)
- [Why create it?](#why-create-it)
- [Simple usage](#simple-usage)
- [Features](#features)
- [Limitations](#limitations)
- [Related projects](#related-projects)
- [Api](#api)
- [Test](#test)
### What is it?
- A stringifier and formatter for SimpleNamespace which attempts to make the
data as readable as possible.
### Why create it?
- I use SimpleNamespace often to hold state and needed a way to print it out for
debugging purposes.
### Simple usage
```py
from pretty_simple_namespace import pprint
from types import SimpleNamespace as o
joe = o(
name={"first": "joe", "last": "schmo"},
age=30,
favoriteFoods=["apples", "steak"],
)
pprint(joe)
# prints
# {
# name: {
# first: 'joe'
# last: 'schmo'
# }
# age: 30
# favoriteFoods: [
# 'apples'
# 'steak'
# ]
# }
```
### Features
- handles recursive structures by tracking and printing references nicely
- recurses into types `list`, `dict` and `SimpleNamespace` for now
- has special-case printing for types `bool`, `str`, `callable` and `None`
- booleans and None are printed lowercase
- strings are wrapped in single quotes
- callable appends `()` e.g. `myMethod()`. Arguments aren't represented
- all other types are printed by wrapping it in `str` e.g. `str(userDefinedType)`
### Limitations
- multi-line strings look ugly
- doesn't have a way to recurse into structures other than what's listed above
### Related projects
- [tedent](https://github.com/olsonpm/py_tedent)
### Api
#### format(something, indent=2) => str
- formats `something` to a string as seen in [Simple usage](#simple-usage)
#### pprint(something, indent=2) => None
- just prints the formated `something`
#### wrapWith(\*, indent) => [Wrapped module](#wrapped-module)
- use this when you want to call `format` or `pprint` with a different default
indent value so you don't have to pass it manually all the time.
e.g.
```py
from pretty_simple_namespace import wrapWith
pprint = wrapWith(indent=4).pprint
pprint(o(tabbed4spaces=True))
# {
# tabbed4spaces: true
# }
```
#### Wrapped module
- just an instance of SimpleNamespace with two attributes `format` and `pprint`.
### Test
```sh
#
# you must have poetry installed
#
$ poetry shell
$ poetry install
$ python runTests.py
```