GithubHelp home page GithubHelp logo

xyzpw / ansiplus Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 26 KB

A Python package designed to enhance code readability and CLI experience.

Home Page: https://pypi.org/project/ansiplus/

License: MIT License

Python 100.00%
ansi ansi-colors linux-terminal terminal-colors terminal-style

ansiplus's Introduction

ansiplus

Pepy Total Downlods PyPI - Python Version GitHub repo size PyPI - License PyPI - Version

A Python package designed to enhance code readability and CLI experience.

ansiplus-v2_1-preview

Usage

Warning

Not all terminals work perfectly with ANSI codes. Ideally you should use xterm-256color.

Note

Terminal themes can change colors, e.g. magenta might show up as yellow, but it is still using the magenta ANSI code.

Prerequisites

  • Python version >=3.10
  • A terminal emulator that accepts ANSI codes
  • A terminal emulator that uses xterm-256color

Note

ANSi codes are not limited to xterm-256color, but they may still be limited to all features this package provides.

Tested Terminals on Linux

Terminal ($TERM)

  • Konsole (xterm-256color) - no missing features
  • Xterm (xterm) - no missing features
  • Alacritty (alacritty) - blinking text does not work
  • Kitty (xterm-kitty) - blinking text does not work

Colors

This package introduces the ability to print colors via name, id, and rgb with a single function:

>>> from ansiplus import print_color
>>> print_color("my colored text", color=(100, 200, 255), bgcolor=198)
'my colored text'
>>> print_color("red text", color="red")

Colors may also be manually printed:

>>> from ansiplus.ansi.colors import Fore
>>> print(f"{Fore.GREEN}green text{Fore.RESET}")

Rainbow & Random Colors

Text can be colored to resemble a rainbow:

>>> from ansiplus import print_color
>>> print_color("this text is rainbow colored", "rainbow")
'this text is rainbow colored'
>>> print_color("each character will be a random color", "random")
'each character will be a random color'

Warning

Using rainbow or random color option uses a lot of ANSI codes.

User Input

Along with colors, users can be prompted for input which can be colored:

>>> from ansiplus import input_color
>>> txt = input_color("example: ", color="blue")
>>> print(txt)
'my input'

Prompting input can also store history if you assign it to a variable:

>>> from ansiplus import NewPrompt
>>> ui = NewPrompt()
>>> ui.set_color("red")
>>> ui.set_prompt_color("green")
>>> ui.prompt("prompt class example: ")
>>> ui.history
['my text']
>>> ui.latest
'my text'
>>> ui.prompt("prompt class example 2: ", "yellow")
>>> ui.latest
'this text is yellow, but default is red'

Rainbow & Random Colors

Prompt foreground text can also be colored rainbow:

>>> from ansiplus import input_color
>>> input_color("this text is rainbow: ", prompt_color="rainbow")

Clearing Prompt Lines

After receiving user input, the line can be cleared:

from ansiplus import input_color
while True:
    input_color("forever input: ", clearline=True)

The above code sample will ask for input forever, after every input, the line will clear and the input will be prompted again on the same line.

Text Styles

This package includes several several styles that can be used:

>>> from ansiplus import print_style
>>> print_style("underline text", "underline")
'underline text'

Like colors, styles may also be used manually:

>>> from ansiplus.ansi.styles import BOLD, BOLD_RESET
>>> print(f"{BOLD}bold text{BOLD_RESET}")
'bold text'
>>>

More Functions

There are more ANSI codes featured beyond colors and styles, these could be viewed by using help(ansiplus) inside the python interpreter.

Developers

When building the package for testing, it is recommended to use python3 -m build.

Wheels

When building the package for testing, it is recommended to use python3 -m build.

PIP Virtual Environments

Virtual environments should be named ".venv" or ".env", as this is used in the ".gitignore" file.

Contributing

Contributions must not include:

  • breaking code
  • major changes
  • changes to the version number
  • wheel files or egg-info files
  • spaghetti code

ansiplus's People

Contributors

xyzpw avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.