{"id":37956073,"url":"https://github.com/kevink1103/pyprnt","last_synced_at":"2026-01-16T18:00:58.431Z","repository":{"id":62582697,"uuid":"208235214","full_name":"kevink1103/pyprnt","owner":"kevink1103","description":"A Modern Python Pretty Printer","archived":false,"fork":false,"pushed_at":"2020-09-02T14:00:54.000Z","size":187,"stargazers_count":72,"open_issues_count":0,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-29T07:00:46.575Z","etag":null,"topics":["pretty","print","printer","python"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/pyprnt/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kevink1103.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-13T09:37:06.000Z","updated_at":"2024-12-26T02:31:14.000Z","dependencies_parsed_at":"2022-11-03T22:01:31.376Z","dependency_job_id":null,"html_url":"https://github.com/kevink1103/pyprnt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kevink1103/pyprnt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevink1103%2Fpyprnt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevink1103%2Fpyprnt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevink1103%2Fpyprnt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevink1103%2Fpyprnt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kevink1103","download_url":"https://codeload.github.com/kevink1103/pyprnt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kevink1103%2Fpyprnt/sbom","scorecard":{"id":557146,"data":{"date":"2025-08-11","repo":{"name":"github.com/kevink1103/pyprnt","commit":"8f9f1d950ec068f49c77d96c5525a5657aab465d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 2/27 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":7,"reason":"binaries present in source code","details":["Warn: binary detected: dist/pyprnt-1.0.0-py3-none-any.whl:1","Warn: binary detected: dist/pyprnt-2.5.0-py3-none-any.whl:1","Warn: binary detected: dist/pyprnt-2.5.1-py3-none-any.whl:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 5 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T12:40:26.844Z","repository_id":62582697,"created_at":"2025-08-20T12:40:26.844Z","updated_at":"2025-08-20T12:40:26.844Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28480513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pretty","print","printer","python"],"created_at":"2026-01-16T18:00:31.524Z","updated_at":"2026-01-16T18:00:58.396Z","avatar_url":"https://github.com/kevink1103.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyPrnt\n\n[![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/pyprnt)](https://pypi.org/project/pyprnt/)\n[![MIT LICENSE](https://img.shields.io/pypi/l/pyprnt)](https://github.com/kevink1103/pyprnt/blob/master/LICENSE)  \n[![PyPI version](https://badge.fury.io/py/pyprnt.svg)](https://badge.fury.io/py/pyprnt)\n[![Weekly Downloads](https://pepy.tech/badge/pyprnt/week)](https://pepy.tech/project/pyprnt/week)\n[![Monthly Downloads](https://pepy.tech/badge/pyprnt/month)](https://pepy.tech/project/pyprnt/month)\n[![Total Downloads](https://pepy.tech/badge/pyprnt)](https://pepy.tech/project/pyprnt)  \n[![Build Status](https://travis-ci.com/kevink1103/pyprnt.svg?branch=master)](https://travis-ci.com/kevink1103/pyprnt)\n\nPyPrnt helps you to print a list (sequence container) or a dictionary (mapping object) in an organized table form.  \nJust try it out!  \nDon't use `print()` anymore. Use `prnt()` for the rest of your life :)\n\n## How to install\n\n```bash\n# If you have both Python 2 and 3,\npip3 install pyprnt\n# If you only have Python 3,\npip install pyprnt\n```\n\n## How to use\n\n```python\nfrom pyprnt import prnt\n\ncreation = [\"Adam\", \"Eve\"]\nmenu = {\n    \"Kimchi\": 5000,\n    \"Ice Cream\": 100\n}\nprint(creation)\nprnt(creation) # Magic!\nprint(menu)\nprnt(menu) # Magic!\nprnt(\"Eat apple.\") # Magic ignored for types other than list \u0026 dict\n```\n\nYou should see this...\n\n```text\n['Adam', 'Eve']\n┌─┬────┐\n│0│Adam│\n│1│Eve │\n└─┴────┘\n{'Kimchi': 5000, 'Ice Cream': 100}\n┌─────────┬────┐\n│Kimchi   │5000│\n│Ice Cream│100 │\n└─────────┴────┘\nEat apple.\n```\n\nWanna see more?  \nCheck out the content of a block with ease.\n\n```python\nblock = {'index':1,'transaction':[{\"sender\":\"Block_Reward\",\"receipient\":\"30819f300d06092a864886f70d010101050003818d0030818902818100b9cadf2ca51ca6714cf645f015652a80b9b8fc7e1aafc888334ac6f4f7dc177465595ef713765b027ab97ca7929820d1afb54b64a03cb971f0f46582d5266568f78746d30c4a651b0a0cf14dacdd619f034b330f4c14f253c72496778ff921a1b907aa0e6201369bffb2bd2e0a059d034e711ef004a3100a8998c2786349579f0203010001\",\"value\":\"5.0\"},{\"sender\":\"30819f300d06092a864886f70d010101050003818d0030818902818100b9cadf2ca51ca6714cf645f015652a80b9b8fc7e1aafc888334ac6f4f7dc177465595ef713765b027ab97ca7929820d1afb54b64a03cb971f0f46582d5266568f78746d30c4a651b0a0cf14dacdd619f034b330f4c14f253c72496778ff921a1b907aa0e6201369bffb2bd2e0a059d034e711ef004a3100a8998c2786349579f0203010001\",\"receipient\":\"30819f300d06092a864886f70d010101050003818d0030818902818100ab65b338fc66d9fc4870b7319f3c21aaf5a0082bce02caf9e3de6dc159c9df91477786028e7380be451d2fb94ed83070e85b588b4ed9d540461d3256bd2aafd3ae0fefa92f82799064414d0ed9e667bc18ad0f48505a2ae9b790a4363fcbef4b526453f91e9572835feabb25aebe2ff38c9abff32b6140c39cb71f8cf0491b850203010001\",\"value\":5.0,\"signature\":\"a3da555fe4afe5fc957d466161dbae8b7fbb02c22780cae6fd5a4bbdc3ad7b8753361f74948db662086209c4272ebdadf5b7a14216c18be7f1c3b86ddb3aa43267792f3edc99cc7294fa89bc95f90cfb0ecd2df73b0dde8520499836f86b57af79d837b3c3dc806a37d067ca4a55caee7883bec035fed0b2df40c910cdde99a2\"}],'timestamp':'09/23/2019,16:08:19','previous_hash':'This_Is_Genesis_Block','hash':'00e63fb0a8474d78df37e0ba99816d526ba110fc16098ecae65358890975a645','nonce':222}\n\n# print(block) - don't use this!\nprnt(block, truncate=True) # Magic!\n```\n\n```text\n┌─────────────┬──────────────────────────────────┐\n│index        │1                                 │\n│transaction  │┌─┬──────────────────────────────┐│\n│             ││0│┌──────────┬─────────────────┐││\n│             ││ ││sender    │Block_Reward     │││\n│             ││ ││receipient│30819f300d0609...│││\n│             ││ ││value     │5.0              │││\n│             ││ │└──────────┴─────────────────┘││\n│             ││1│┌──────────┬─────────────────┐││\n│             ││ ││sender    │30819f300d0609...│││\n│             ││ ││receipient│30819f300d0609...│││\n│             ││ ││value     │5.0              │││\n│             ││ ││signature │a3da555fe4afe5...│││\n│             ││ │└──────────┴─────────────────┘││\n│             │└─┴──────────────────────────────┘│\n│timestamp    │09/23/2019,16:08:19               │\n│previous_hash│This_Is_Genesis_Block             │\n│hash         │00e63fb0a8474d78df37e0ba99816d5...│\n│nonce        │222                               │\n└─────────────┴──────────────────────────────────┘\n```\n\nIsn't this amazing? **Learn how to use this with a few more options**\n\n## Options\n\n\u003e prnt(obj, enable=True, both=False, truncate=False, depth=-1, output=False, width=get_terminal_size(), sep=' ', end='\\n', file=sys.stdout, flush=False)\n\n### enable: bool (default: True)\n\nEnable `prnt()` form.\n\n```python\nprnt(creation, enable=False)\n```\n\n```text\n['Adam', 'Eve']\n```\n\n### both: bool (default: False)\n\nPrint in both original `print()` form and `prnt()` form.\n\n```python\nprnt(creation, both=True)\n```\n\n```text\n['Adam', 'Eve']\n┌─┬────┐\n│0│Adam│\n│1│Eve │\n└─┴────┘\n```\n\n### truncate: bool (default: False)\n\nTruncate output values if they exceed the maximum width of Terminal.  \nThe maximum width of Terminal is 50 in this example.\n\n```python\n# truncate = False\nprnt([\"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\", 12345678910])\n# truncate = True\nprnt([\"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\", 12345678910], truncate=True)\n```\n\n```text\n┌─┬──────────────────────────────────────────────┐\n│0│abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst│\n│ │uvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn│\n│ │opqrstuvwxyz                                  │\n│1│12345678910                                   │\n└─┴──────────────────────────────────────────────┘\n┌─┬──────────────────────────────────────────────┐\n│0│abcdefghijklmnopqrstuvwxyzabcdefghijklmnopq...│\n│1│12345678910                                   │\n└─┴──────────────────────────────────────────────┘\n```\n\n### depth: int (default: -1 no limit)\n\nSet the depth of recursive `prnt()`.  \nDepth should be either -1 or bigger than 0.  \nThe contents beyond the depth will be printed as string.\n\n```python\nprnt(block, depth=2)\n```\n\n```text\n┌─────────────┬──────────────────────────────────┐\n│index        │1                                 │\n│transaction  │┌─┬──────────────────────────────┐│\n│             ││0│{'sender': 'Block_Reward', ...││\n│             ││1│{'sender': '30819f300d06092...││\n│             │└─┴──────────────────────────────┘│\n│timestamp    │09/23/2019,16:08:19               │\n│previous_hash│This_Is_Genesis_Block             │\n│hash         │00e63fb0a8474d78df37e0ba99816d5...│\n│nonce        │222                               │\n└─────────────┴──────────────────────────────────┘\n```\n\n### width: int (default: current Terminal width or 50)\n\nSet the maximum width of Terminal.  \nWidth should be bigger than 20.\n\n```python\nprnt([\"Kevin Kim is a developer.\"], width=20)\n```\n\n```text\n┌─┬────────────────┐\n│0│Kevin Kim is a d│\n│ │eveloper.       │\n└─┴────────────────┘\n```\n\n### output: bool (default: False)\n\nGet a return string for the printed content from `prnt()`.  \n`prnt()` will not print anything.\n\n```python\noutput_data = prnt(creation, output=True)\nprint(repr(output_data))\nprint(output_data)\n```\n\n```text\n'┌─┬────┐\\n│0│Adam│\\n│1│Eve │\\n└─┴────┘'\n┌─┬────┐\n│0│Adam│\n│1│Eve │\n└─┴────┘\n```\n\n### sep: str (default: ' ')\n\nDefault `print()` parameter.  \nPut a separator between each input.\n\n```python\nprnt(\"010\", \"8282\", \"8282\", sep=\"-\")\n```\n\n```text\n010-8282-8282\n```\n\n### end: str (default: '\\n')\n\nDefault `print()` parameter.  \nPut at the end of an output.\n\n```python\nprnt(creation, end=\"\")\nprnt(\"The force is with me\")\n```\n\n```text\n┌─┬────┐\n│0│Adam│\n│1│Eve │\n└─┴────┘The force is with me\n```\n\n### file: object with a write method (default: sys.stdout)\n\nDefault `print()` parameter.  \n\n### flush: bool (default: False)\n\nDefault `print()` parameter.  \nSpecify if the output is flushed (True) or buffered (False).\n\n## Caution\n\nIf the length of label part (index for list, key for dict) goes beyond the half size of your width,  \nthe label will be truncated to the half size of your width in order to secure enough space for displaying values.\n\nFor example,\n\n```python\ndisease = {\n    \"pneumonoultramicroscopicsilicovolcanoconiosis\": \"an invented long word said to mean a lung disease caused by inhaling very fine ash and sand dust.\"\n}\nprnt(disease)\n```\n\n```text\n┌────────────────────────┬───────────────────────┐\n│pneumonoultramicrosco...│an invented long word s│\n│                        │aid to mean a lung dise│\n│                        │ase caused by inhaling │\n│                        │very fine ash and sand │\n│                        │dust.                  │\n└────────────────────────┴───────────────────────┘\n```\n\n## Author\n\nCopyright (c) 2019 Kevin Kim  \n[Website](https://kevink1103.github.io/) \n[GitHub](https://github.com/kevink1103) \n[LinkedIn](https://www.linkedin.com/in/kimsungbum/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevink1103%2Fpyprnt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkevink1103%2Fpyprnt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkevink1103%2Fpyprnt/lists"}