{"id":23183503,"url":"https://github.com/anas-shakeel/pinsy","last_synced_at":"2026-02-13T12:51:25.899Z","repository":{"id":263189323,"uuid":"872648398","full_name":"Anas-Shakeel/pinsy","owner":"Anas-Shakeel","description":"A Python Package to speed up the workflow of creating command-line applications.","archived":false,"fork":false,"pushed_at":"2024-11-30T18:53:45.000Z","size":1590,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-30T19:32:31.392Z","etag":null,"topics":["cli","pinsy","python-library","python3","terminal-ui"],"latest_commit_sha":null,"homepage":"","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/Anas-Shakeel.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-14T20:12:02.000Z","updated_at":"2024-11-30T18:53:48.000Z","dependencies_parsed_at":"2024-11-20T12:48:28.422Z","dependency_job_id":null,"html_url":"https://github.com/Anas-Shakeel/pinsy","commit_stats":null,"previous_names":["anas-shakeel/pinsy"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anas-Shakeel%2Fpinsy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anas-Shakeel%2Fpinsy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anas-Shakeel%2Fpinsy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anas-Shakeel%2Fpinsy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Anas-Shakeel","download_url":"https://codeload.github.com/Anas-Shakeel/pinsy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230245334,"owners_count":18196134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cli","pinsy","python-library","python3","terminal-ui"],"created_at":"2024-12-18T09:13:28.424Z","updated_at":"2026-02-13T12:51:20.875Z","avatar_url":"https://github.com/Anas-Shakeel.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241106_012559_output.jpg\" /\u003e\n\u003c/p\u003e\n\n[![GitHub Repository](https://img.shields.io/badge/-GitHub-%230D0D0D?logo=github\u0026labelColor=gray)](https://github.com/anas-shakeel/pinsy)\n[![Latest PyPi version](https://img.shields.io/pypi/v/pinsy.svg?color=slateblue)](https://pypi.python.org/pypi/pinsy)\n[![supported Python versions](https://img.shields.io/pypi/pyversions/pinsy)](https://pypi.python.org/pypi/pinsy)\n[![Project licence](https://img.shields.io/pypi/l/pinsy?color=blue)](LICENSE)\n[![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](black) \n[![Automated testing results](https://img.shields.io/github/actions/workflow/status/anas-shakeel/pinsy/.github/workflows/test.yml?branch=main)](https://github.com/anas-shakeel/pinsy/actions/workflows/test.yml?query=branch%3Amain) \n[![PyPi downloads](https://img.shields.io/pypi/dm/pinsy.svg)](https://pypi.python.org/pypi/pinsy)\n\n`pinsy` (pronounced **pin-si**) _formerly `pins`_, is a powerful lightweight python package that helps speed up the workflow of creating visually apealing command-line applications.\n\n## Table of contents\n\n-   [Features](#features)\n-   [Dependencies](#dependencies)\n-   [Installation](#installation)\n-   [Basic Usage](#basic-usage)\n    -   [how to color text](#how-to-color-text)\n    -   [how to color a regex match](#how-to-color-a-regex-match)\n    -   [how to print status messages](#how-to-print-status-messages)\n    -   [how to align text](#how-to-align-text)\n    -   [how to indent text](#how-to-indent-text)\n    -   [how to wrap text](#how-to-wrap-text)\n    -   [how to create lists](#how-to-create-lists)\n    -   [how to take inputs of various types](#how-to-take-inputs-of-various-types)\n    -   [how to create hrs (horizontal rules)](#how-to-create-hrs-horizontal-rules)\n    -   [how to create box around text](#how-to-create-box-around-text)\n    -   [how to create a calendar](#how-to-create-a-calendar)\n    -   [how to pretty-print json](#how-to-pretty-print-json)\n    -   [how to print lengthy text for user to read easily](#how-to-print-lengthy-text-for-user-to-read-easily)\n    -   [how to print multiline text as pages](#how-to-print-multiline-text-as-pages)\n    -   [how to print info about your program](#how-to-print-info-about-your-program)\n    -   [how to print text with typewriter effect](#how-to-print-text-with-typewriter-effect)\n    -   [how to print text with reveal effect](#how-to-print-text-with-reveal-effect)\n-   [Pinsy CLI](#pinsy-cli)\n\n## Features\n\n-   Ability to create a **box** around text\n-   Ability to print colorful calendars\n-   Ability **align**, **indent** and **wrap** text\n-   Ability to create nested **ordered** and **unordered** lists\n-   Ability to create dynamic **HRs** (_Horizontal Rules_)\n-   Syntax Highlight for **Json**\n-   Text effects like _typewriter_ and _reveal text_ effect.\n-   Text coloring and styling\n-   Supports 3 color modes (`4-bit`, `8-bit`, `24-bit`)\n-   Prompting and validation\n-   Basic cursor manipulation functions using `ansi sequences`\n-   Highly optimized\n-   And much more!\n-   And pretty lightweight\\* too (under `160kb`)\n\n## Dependencies\n\n`pinsy` has four small dependencies.\n\n-   `colorama` (_to fix windows console for color output_)\n-   `cursor` (to show/hide cursor in terminal)\n-   `ansy` (_which i wrote specifically for `pinsy` for color support)_\n-   `readchar` (_to read keystrokes)_\n\n\n## Installation\n\nOpen terminal and run below command:\n\n```python\npip install pinsy\n```\n\n## Basic Usage\n\nThere is a `class` in _pinsy_ which is the heart of it, called `Pins`. Most of the time, you'll be using this class for all sorts of stuff. Rest of the package is just built around it or to extend it.\n\n```py\nfrom pinsy import Pins\n\n# Create an instance of Pins and pins is ready to be used or abused.\npins = Pins()\n```\n\n### How to color text\n\nUse `pins.colorize()` method to color text using any of the three color modes.\n\n```py\ntext = \"Color this text\"\nred_text = pins.colorize(text, fgcolor=\"red\")\nyellow_text = pins.colorize(text, fgcolor=\"yellow\")\nblue_text = pins.colorize(text, fgcolor=\"blue\")\n\nprint(red_text)\nprint(yellow_text)\nprint(blue_text)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_172244_colored_text.png\" /\u003e\n\u003c/p\u003e\n\n### How to color a regex match\n\nYou can color only specific parts of text that match a regular expression, using `pins.colorize_regex()`.\n\n```py\ntext = \"Thi5 t3xt c0ntain5 a l0t 0f number5.\"\nhighlights = pins.colorize_regex(text, pattern=\"\\d\", fgcolor=\"red\")\nprint(highlights)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_172238_highlights.png\" /\u003e\n\u003c/p\u003e\n\n`pattern` can also be a `re` compiled pattern.\n\n```py\npattern = re.compile(r\"\\d\")\npins.colorize_regex(text, pattern=pattern, fgcolor=\"red\")\n```\n\n### How to print status messages\n\nStatus messages include **info**, **warning**, **success**, and **error** messages. There are four built-in methods for printing these messages.\n\n```py\npins.print_info(\"This is an info message.\")\npins.print_warning(\"This is a warning message.\")\npins.print_success(\"This is a success message.\")\npins.print_error(\"This is an error message.\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_172215_status_messages.png\" /\u003e\n\u003c/p\u003e\n\nColors are set by default for these built-in messages. But you can also create custom status messages for more control, using `pins.create_status()`.\n\n```py\nmessage = \"This is a hint message\"\nhint = pins.create_status(\"Hint\", message, label_fg=\"green\", text_fg=\"blue\")\nprint(hint)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_172159_hint.png\" /\u003e\n\u003c/p\u003e\n\n### How to align text\n\nYou can easily align text in the terminal using `pins.textalign_x()` (_for horizontal alignment_) or `pins.textalign_y` (_for vertical alignment_).\n\n```py\n# Horizontal Alignment\ntext = \"Align this text\"\nprint(pins.textalign_x(text, align=\"left\"))\nprint(pins.textalign_x(text, align=\"center\"))\nprint(pins.textalign_x(text, align=\"right\"))\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_172028_align_x.png\" /\u003e\n\u003c/p\u003e\n\n### How to indent text\n\nUse `pins.indent_text()` to indent text, **Duh!**\n\n```py\ntext = \"Indent this 4 spaces\"\nprint(\"|\", pins.indent_text(text, indent=4))\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_172019_indent.png\" /\u003e\n\u003c/p\u003e\n\n### How to wrap text\n\nYou can wrap text using `pins.wrap_text()`. This method is merely a wrapper around the `fill()` method from `textwrap` module.\n\n```py\ntext = \"Wrap this text if it exceeds 15 characters.\"\nprint(pins.wrap_text(text, 15))\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_172013_wrap.png\" /\u003e\n\u003c/p\u003e\n\n### How to create lists\n\nThere are two types of lists that you can create, **ordered** and **unordered**, using `pins.create_list_ordered()` and `pins.create_list_unordered()` respectively.\n\n```py\n# Ordered List\nitems = [\"Assembly\", \"C\", \"Python\", [\"CPython\", \"PyPy\"], \"Javascript\"]\nordered_list = pins.create_list_ordered(items, num_color=\"green\", item_color=\"blue\")\nprint(ordered_list)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_172003_ordered.png\" /\u003e\n\u003c/p\u003e\n\n```py\n# Unordered List\nitems = [\"Assembly\", \"C\", \"Python\", [\"CPython\", \"PyPy\"], \"Javascript\"]\nunordered_list = pins.create_list_unordered(items, bullet_color=\"green\", item_color=\"blue\")\nprint(unordered_list)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_171953_unordered.png\" /\u003e\n\u003c/p\u003e\n\nYou can further tweak these lists using other arguments of both of these methods.\n\n### How to take inputs of various types\n\nThere are 13 input methods that can be used take all sorts of inputs from users. almost all of them support colors.\n\n```python\n# Taking integer input\nnumber = pins.input_int(prompt=\"Enter a number: \",\n                        prompt_color=\"dark_grey\",\n                        input_color=\"magenta\")\nprint(f\"You entered {number}\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_205758_input_int.gif\" /\u003e\n\u003c/p\u003e\n\n```python\n# Taking y/n (yes or no)\nanswer = pins.input_question(prompt=\"Accept terms \u0026 conditions? (y/N) \", prompt_color=\"light_green\")\nif answer:\n    print(\"Good boy. You may use Windows now.\")\nelse:\n    print(\"No? create Windows yourself then.\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_212352_input_question.gif\" /\u003e\n\u003c/p\u003e\n\nThere are other similar input functions for **floats**, **strings**, **ip addresses**, **emails**, **passwords**, **urls**, **filepaths**, and **directory paths**.\n\nYou can also use `pins.inputc()` to create your own input functions similar to the ones `pinsy` provides.\n\n```python\nname = pins.inputc(\"Enter your name: \",\n                   prompt_fg=\"dark_grey\",\n                   input_fg=\"light_green\",\n                   input_attrs=[\"italic\"])\nprint(\"Your name in %s\" % name)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_232755_inputc.gif\" /\u003e\n\u003c/p\u003e\n\nYou can also take multiline input using `pins.input_multiline()`.\n\n```python\ntext = pins.input_multiline(prompt=\"Tell me about yourself: \", input_fg=\"green\")\nprint(text)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_234448_input_multiline.gif\" /\u003e\n\u003c/p\u003e\n\nPressing `enter` twice submits the input.\n\nThere is another input function `pins.input_menu()`, which prints a menu in the terminal and lets user choose an option with up/down arrow keys.\n\n```python\nmenu = [\"Login\", \"Signup\", \"Exit\"]\nchoice = pins.input_menu(menu, bullet=\"■\", bullet_fg=\"light_green\",\n                         selected_fg=\"green\", normal_fg=\"dark_grey\")\n\nprint(\"\\nYou chose option %d\" % choice)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241106_000000_menu.gif\" /\u003e\n\u003c/p\u003e\n\nIt returns the index of choice that was selected. _(starting from 1)_\n\n### How to create HRs _(horizontal rules)_\n\nUse `pins.create_hr()` to create a horizontal line, or `pins.print_hr()` to create and then print the line.\n\n```py\nline = pins.create_hr(width=50, color=\"yellow\")\nprint(line)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_164513_line.png\" /\u003e\n\u003c/p\u003e\n\nYou can also use `pins.print_hr()` to just print the line, it takes the same arguments as `pins.create_hr()`.\n\n```python\npins.print_hr(width=50, color=\"magenta\", fill_char=\"▼\")\npins.print_hr(width=50, color=\"blue\", fill_char=\"▒\")\npins.print_hr(width=50, color=\"green\", fill_char=\"▲\")\n\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_165522_lines.png\" /\u003e\n\u003c/p\u003e\n\n### How to create box around text\n\nYou can easily create a box around text using `pins.boxify().`\n\n```python\ntext = \"Create a box around me\"\nprint(pins.boxify(text, width=50))\nprint(pins.boxify(text, width=50, x_align=\"center\", charset=\"ascii\", text_color=\"blue\"))\nprint(pins.boxify(text, width=50, x_align=\"right\", charset=\"box\", border_color=\"red\"))\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_170508_boxes.png\" /\u003e\n\u003c/p\u003e\n\nThis method use the `Box` class under the hood. You can use it too.\n\n```python\nfrom pinsy import Box\n\nbox = Box(width=50, x_align=\"center\", y_align=\"center\",\n              charset=\"box_round\", pad_y=1,\n              border_color=\"dark_grey\", text_color=\"yellow\")\n\nprint(box.create(\"Create a box\\naround this\\nmultiline text.\"))\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_171935_box.png\" /\u003e\n\u003c/p\u003e\n\n### How to create a calendar\n\nUse `pins.get_calendar()` to get a calendar of any month of any year.\n\n```python\nprint(pins.get_calendar())\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_173318_calendar.png\" /\u003e\n\u003c/p\u003e\n\nYou can also use `pins.print_calendar()` to print the calendar.\n\n```py\npins.print_calendar(month_color=\"red\", date_color=\"blue\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_173737_calendar_colored.png\" /\u003e\n\u003c/p\u003e\n\nIt's November 05, 2024 today.\n\n### How to pretty-print json\n\nYou can use `pins.print_json()` to pretty-print json.\n\n```python\nimport json\n\nwith open(\"person.json\") as jfile:\n    data = json.load(jfile)\n\npins.print_json(data)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_175903_json.png\" /\u003e\n\u003c/p\u003e\n\nThis method uses `JsonHighlight` class under the hood. and so can you!\n\n```python\nfrom pinsy import JsonHighlight\n\ndata = {\n        \"name\": \"anas\",\n        \"age\": \"22\",\n        \"hobbies\": \"coding, programming, writing code etc.\"\n}\n\njsh = JsonHighlight(quotes=False,\n                    str_color=\"light_green\",\n                    number_color=\"light_yellow\",\n                    key_color=\"red\",\n                    symbol_color=\"dark_grey\")\n\nprint(jsh.highlight(data))\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_180420_json_colored.png\" /\u003e\n\u003c/p\u003e\n\nThere's a similar method called `print_markdown`, which highlights markdown syntax.\n\n### How to print lengthy text for user to read easily\n\nYou can use `pins.print_more()` to print a lengthy multiline text in the terminal.\n\n```python\nwith open(\"temp.md\") as md:\n    text = md.read()\n\npins.print_more(text, prompt_fg=\"magenta\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_190612_more.gif\" /\u003e\n\u003c/p\u003e\n\nIt let's user read the text easily.\n\n### How to print multiline text as pages\n\nUse `pins.print_pages()` to print a length multiline text as pages. somewhat similar to paginations in websites.\n\n```python\nwith open(\"temp.md\") as md:\n    text = md.read()\n\npins.print_pages(text, lines_per_page=16, statusbar_fg=\"yellow\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_191925_pages.gif\" /\u003e\n\u003c/p\u003e\n\n### How to print info about your program\n\nSimilar to softwares and webapps, you can print info about your program/application using `pins.print_about()`.\n\n```python\npins.print_about(name=\"pinsy\",\n                 version=\"1.0\",\n                 author=\"Anas Shakeel\",\n                 source_url=\"https://github.com/anas-shakeel/pinsy\",\n                 license=\"MIT\",\n                 platforms=[\"Windows\", \"Mac\", \"Linux\"],\n                 border_color=\"dark_grey\",\n                 heading_fg=\"dark_grey\",\n                 heading_bg=\"light_blue\",\n                 heading_attrs=[\"dark\", \"reverse\"],\n                 keys_color=\"dark_grey\",\n                 values_color=\"light_blue\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_225940_about.png\" /\u003e\n\u003c/p\u003e\n\nA bit verbose i know.\n\n### How to print text with typewriter effect\n\nYou can use the typewriter effect in two ways: using `pins.typewrite()` or using `Typewrite` class (which `pins.typewrite`() uses under the hood).\n\n```python\n# Using pins.typewrite\ntext = \"Print this text with the typewriter effect.\"\npins.typewrite(text, interval=0.04, hide_cursor=False)\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_194030_typewrite.gif\" /\u003e\n\u003c/p\u003e\n\n```python\n# Using Typewrite class\nwriter = Typewriter(0.04)\nwriter.write(text)\n```\n\nOutput is exactly the same.\n\n### How to print text with reveal effect\n\nYou can use the `pins.reveal_text()` or `RevealText` class to print text with reveal effect.\n\n```python\n# Using pins.reveal_text\ntext = \"Print this text with the reveal-text effect.\"\npins.reveal_text(text, initial_color=\"black\", final_color=\"blue\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_200951_reveal.gif\" /\u003e\n\u003c/p\u003e\n\n```python\n# Using RevealText class\nrevealer = RevealText(initial_color=\"black\", final_color=\"blue\")\nrevealer.reveal(text)\n```\n\nOutput will be somewhat similar to previous output. \"somewhat\" because there is randomness added to the effect. each time it outputs a slightly different result.\n\nThis is not a True-Reveal Effect. It's just an illusion _(sort of)_. let's see this effect in slow-motion with a different `initial_color`.\n\n```python\npins.reveal_text(text, interval=0.1, max_seconds=3, initial_color=\"red\", final_color=\"blue\")\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Anas-Shakeel/pinsy/main/assets/20241105_202116_reveal_slowmo.gif\" /\u003e\n\u003c/p\u003e\n\nIt scrambles the text and then solves each letter using bruteforce method. `max_seconds` is the number of maximum seconds to let this effect run, and prints the original text afterwards.\n\nAnd there's much more that you can do...\n\n## Compatibility\n\n`pinsy` has been well-tested on **Windows**, **Mac**, and **Linux** _(ubuntu)_ with python version `3.9` upto `3.13`.\n\n\n## Pinsy CLI\n\n#### Coming soon!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanas-shakeel%2Fpinsy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanas-shakeel%2Fpinsy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanas-shakeel%2Fpinsy/lists"}