Name | prettyformatter JSON |
Version |
2.0.13
JSON |
| download |
home_page | |
Summary | Pretty formatter enables pretty formatting using hanging indents, dataclasses, ellipses, and simple customizability by registering formatters. |
upload_time | 2023-05-14 00:29:13 |
maintainer | |
docs_url | None |
author | |
requires_python | >=3.5 |
license | mit |
keywords |
pretty
print
format
indent
dataclass
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# prettyformatter
Pretty formatter enables pretty formatting using aligned and hanging
indents for JSON, dataclasses, named tuples, and any custom formatted
object such as Numpy arrays.
For the full documentation, see
[here](https://simpleart.github.io/prettyformatter/).
## Installation
Windows:
```
py -m pip install prettyformatter
```
Unix/MacOS:
```
python3 -m pip install prettyformatter
```
## Imports
```python
from prettyformatter import PrettyClass, PrettyDataclass
from prettyformatter import pprint, pformat, register
```
## JSON Data
`prettyformatter` works with JSON data.
```python
batters = [
{"id": "1001", "type": "Regular"},
{"id": "1002", "type": "Chocolate"},
{"id": "1003", "type": "Blueberry"},
{"id": "1004", "type": "Devil's Food"},
]
toppings = [
{"id": "5001", "type": None},
{"id": "5002", "type": "Glazed"},
{"id": "5005", "type": "Sugar"},
{"id": "5007", "type": "Powdered Sugar"},
{"id": "5006", "type": "Chocolate with Sprinkles"},
{"id": "5003", "type": "Chocolate"},
{"id": "5004", "type": "Maple"},
]
data = {"id": "0001", "type": "donut", "name": "Cake", "ppu": 0.55, "batters": batters, "topping": toppings}
```
## `pprint`:
`prettyformatter` attempts to compromise between alignment,
readability, and horizontal/vertical compactness.
Support for JSON data is also as easy as `pprint(json=True)`.
```python
from prettyformatter import pprint
pprint(data, json=True)
"""
{
"id" : "0001",
"type" : "donut",
"name" : "Cake",
"ppu" : 0.55,
"batters":
[
{"id": "1001", "type": "Regular"},
{"id": "1002", "type": "Chocolate"},
{"id": "1003", "type": "Blueberry"},
{"id": "1004", "type": "Devil's Food"}
],
"topping":
[
{"id": "5001", "type": None},
{"id": "5002", "type": "Glazed"},
{"id": "5005", "type": "Sugar"},
{"id": "5007", "type": "Powdered Sugar"},
{"id": "5006", "type": "Chocolate with Sprinkles"},
{"id": "5003", "type": "Chocolate"},
{"id": "5004", "type": "Maple"}
]
}
"""
```
`pprint` supports the same parameters as `print`, meaning saving to
files is as easy as `file=file`.
```python
from prettyformatter import pprint
with open("cake.json", mode="w") as file:
pprint(data, json=True, file=file)
```
## `PrettyDataclass`
`prettyformatter` supports dataclasses easily.
```python
@dataclass
class Person(PrettyDataclass):
name: str
birthday: str
phone_number: str
address: str
print(Person("Jane Doe", "2001-01-01", "012-345-6789", "123 Sample St."))
"""
Person(
name=
"Jane Doe",
birthday=
"2001-01-01",
phone_number=
"012-345-6789",
address=
"123 Sample St.",
)
"""
```
## `register`
Custom formatters for existing classes can be registered.
```python
import numpy as np
@register(np.ndarray)
def pformat_ndarray(obj, specifier, depth, indent, shorten, json):
if json:
return pformat(obj.tolist(), specifier, depth, indent, shorten, json)
with np.printoptions(formatter=dict(all=lambda x: format(x, specifier))):
return repr(obj).replace("\n", "\n" + " " * depth)
pprint(dict.fromkeys("ABC", np.arange(9).reshape(3, 3)))
"""
{
"A":
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]),
"B":
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]),
"C":
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]]),
}
"""
pprint(dict.fromkeys("ABC", np.arange(9).reshape(3, 3)), json=True)
"""
{
"A" : [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
"B" : [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
"C" : [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
}
"""
```
Raw data
{
"_id": null,
"home_page": "",
"name": "prettyformatter",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.5",
"maintainer_email": "",
"keywords": "pretty,print,format,indent,dataclass",
"author": "",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/52/35/bd496971bbfb3f203c074ad0b6ac85cb4bd8eef5502148c76cb692323c99/prettyformatter-2.0.13.tar.gz",
"platform": null,
"description": "# prettyformatter\n\nPretty formatter enables pretty formatting using aligned and hanging\nindents for JSON, dataclasses, named tuples, and any custom formatted\nobject such as Numpy arrays.\n\nFor the full documentation, see\n[here](https://simpleart.github.io/prettyformatter/).\n\n## Installation\n\nWindows:\n\n```\npy -m pip install prettyformatter\n```\n\nUnix/MacOS:\n\n```\npython3 -m pip install prettyformatter\n```\n\n## Imports\n\n```python\nfrom prettyformatter import PrettyClass, PrettyDataclass\nfrom prettyformatter import pprint, pformat, register\n```\n\n## JSON Data\n\n`prettyformatter` works with JSON data.\n\n```python\nbatters = [\n {\"id\": \"1001\", \"type\": \"Regular\"},\n {\"id\": \"1002\", \"type\": \"Chocolate\"},\n {\"id\": \"1003\", \"type\": \"Blueberry\"},\n {\"id\": \"1004\", \"type\": \"Devil's Food\"},\n]\n\ntoppings = [\n {\"id\": \"5001\", \"type\": None},\n {\"id\": \"5002\", \"type\": \"Glazed\"},\n {\"id\": \"5005\", \"type\": \"Sugar\"},\n {\"id\": \"5007\", \"type\": \"Powdered Sugar\"},\n {\"id\": \"5006\", \"type\": \"Chocolate with Sprinkles\"},\n {\"id\": \"5003\", \"type\": \"Chocolate\"},\n {\"id\": \"5004\", \"type\": \"Maple\"},\n]\n\ndata = {\"id\": \"0001\", \"type\": \"donut\", \"name\": \"Cake\", \"ppu\": 0.55, \"batters\": batters, \"topping\": toppings}\n```\n\n## `pprint`:\n\n`prettyformatter` attempts to compromise between alignment,\nreadability, and horizontal/vertical compactness.\n\nSupport for JSON data is also as easy as `pprint(json=True)`.\n\n```python\nfrom prettyformatter import pprint\n\npprint(data, json=True)\n\"\"\"\n{\n \"id\" : \"0001\",\n \"type\" : \"donut\",\n \"name\" : \"Cake\",\n \"ppu\" : 0.55,\n \"batters\":\n [\n {\"id\": \"1001\", \"type\": \"Regular\"},\n {\"id\": \"1002\", \"type\": \"Chocolate\"},\n {\"id\": \"1003\", \"type\": \"Blueberry\"},\n {\"id\": \"1004\", \"type\": \"Devil's Food\"}\n ],\n \"topping\":\n [\n {\"id\": \"5001\", \"type\": None},\n {\"id\": \"5002\", \"type\": \"Glazed\"},\n {\"id\": \"5005\", \"type\": \"Sugar\"},\n {\"id\": \"5007\", \"type\": \"Powdered Sugar\"},\n {\"id\": \"5006\", \"type\": \"Chocolate with Sprinkles\"},\n {\"id\": \"5003\", \"type\": \"Chocolate\"},\n {\"id\": \"5004\", \"type\": \"Maple\"}\n ]\n}\n\"\"\"\n```\n\n`pprint` supports the same parameters as `print`, meaning saving to\nfiles is as easy as `file=file`.\n\n```python\nfrom prettyformatter import pprint\n\nwith open(\"cake.json\", mode=\"w\") as file:\n pprint(data, json=True, file=file)\n```\n\n## `PrettyDataclass`\n\n`prettyformatter` supports dataclasses easily.\n\n```python\n@dataclass\nclass Person(PrettyDataclass):\n name: str\n birthday: str\n phone_number: str\n address: str\n\n\nprint(Person(\"Jane Doe\", \"2001-01-01\", \"012-345-6789\", \"123 Sample St.\"))\n\"\"\"\nPerson(\n name=\n \"Jane Doe\",\n birthday=\n \"2001-01-01\",\n phone_number=\n \"012-345-6789\",\n address=\n \"123 Sample St.\",\n)\n\"\"\"\n```\n\n## `register`\n\nCustom formatters for existing classes can be registered.\n\n```python\nimport numpy as np\n\n@register(np.ndarray)\ndef pformat_ndarray(obj, specifier, depth, indent, shorten, json):\n if json:\n return pformat(obj.tolist(), specifier, depth, indent, shorten, json)\n with np.printoptions(formatter=dict(all=lambda x: format(x, specifier))):\n return repr(obj).replace(\"\\n\", \"\\n\" + \" \" * depth)\n\npprint(dict.fromkeys(\"ABC\", np.arange(9).reshape(3, 3)))\n\"\"\"\n{\n \"A\":\n array([[0, 1, 2],\n [3, 4, 5],\n [6, 7, 8]]),\n \"B\":\n array([[0, 1, 2],\n [3, 4, 5],\n [6, 7, 8]]),\n \"C\":\n array([[0, 1, 2],\n [3, 4, 5],\n [6, 7, 8]]),\n}\n\"\"\"\n\npprint(dict.fromkeys(\"ABC\", np.arange(9).reshape(3, 3)), json=True)\n\"\"\"\n{\n \"A\" : [[0, 1, 2], [3, 4, 5], [6, 7, 8]],\n \"B\" : [[0, 1, 2], [3, 4, 5], [6, 7, 8]],\n \"C\" : [[0, 1, 2], [3, 4, 5], [6, 7, 8]]\n}\n\"\"\"\n```\n",
"bugtrack_url": null,
"license": "mit",
"summary": "Pretty formatter enables pretty formatting using hanging indents, dataclasses, ellipses, and simple customizability by registering formatters.",
"version": "2.0.13",
"project_urls": {
"Bug Tracker": "https://github.com/SimpleArt/prettyformatter/issues",
"Documentation": "https://simpleart.github.io/prettyformatter/",
"Homepage": "https://simpleart.github.io/prettyformatter/",
"Repository": "https://github.com/SimpleArt/prettyformatter"
},
"split_keywords": [
"pretty",
"print",
"format",
"indent",
"dataclass"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "747e05789d89503ac31466b543915a73cc27a8367b21f37fed547252396943d5",
"md5": "d886972a2397eef20a4d044e18b0091f",
"sha256": "a719caca66590ca266fb8418bdc2a54e29666c73d4f7609bddd110167c7d45b3"
},
"downloads": -1,
"filename": "prettyformatter-2.0.13-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d886972a2397eef20a4d044e18b0091f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.5",
"size": 15134,
"upload_time": "2023-05-14T00:29:10",
"upload_time_iso_8601": "2023-05-14T00:29:10.317904Z",
"url": "https://files.pythonhosted.org/packages/74/7e/05789d89503ac31466b543915a73cc27a8367b21f37fed547252396943d5/prettyformatter-2.0.13-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5235bd496971bbfb3f203c074ad0b6ac85cb4bd8eef5502148c76cb692323c99",
"md5": "b788fbfd6ec9ed444354a2c9798978d0",
"sha256": "ff6e20da06667a6c07394a82908fb46f747e6d933bfeeaa7532334e19b38c9ab"
},
"downloads": -1,
"filename": "prettyformatter-2.0.13.tar.gz",
"has_sig": false,
"md5_digest": "b788fbfd6ec9ed444354a2c9798978d0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.5",
"size": 14065,
"upload_time": "2023-05-14T00:29:13",
"upload_time_iso_8601": "2023-05-14T00:29:13.019863Z",
"url": "https://files.pythonhosted.org/packages/52/35/bd496971bbfb3f203c074ad0b6ac85cb4bd8eef5502148c76cb692323c99/prettyformatter-2.0.13.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-14 00:29:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "SimpleArt",
"github_project": "prettyformatter",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "prettyformatter"
}