Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pratik

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pratik

A library of various functions and classes helping to program more efficiently and more intuitively

  • 1.2.2
  • PyPI
  • Socket score

Maintainers
1

Pratik for Python

LassaInora - Pratik GitHub tag stars - Pratik forks - Pratik

PyPI version Supported Versions


Overview

Pratik is a library of various functions and classes helping to program more efficiently and more intuitively.

Summary

Table of Contents

How to use

Installation

By PyPI:

python -m pip install pratik

Libraries

Package functions

Menu
>> from pratik.functions import Menu
>> menu = Menu("to be", "not to be", title="Question", description="That is the question", back_button="to death", description_center=True, colored=True)
>> print(menu)
     ╔══════════╗     
╔════╣ Question ╠════╗
║    ╚══════════╝    ║
║     That is the    ║
║      question      ║
╟────────────────────╢
║ ┌───┐┌───────────┐ ║
║ │ 1 ├┤ to be     │ ║
║ └───┘└───────────┘ ║
║ ┌───┐┌───────────┐ ║
║ │ 2 ├┤ not to be │ ║
║ └───┘└───────────┘ ║
╟────────────────────╢
║ ╔═══╗╔═══════════╗ ║ 
║ ║ 0 ╠╣ to death  ║ ║ # This button is in red color
║ ╚═══╝╚═══════════╝ ║
╚════════════════════╝
>> menu.select()
     ╔══════════╗     
╔════╣ Question ╠════╗
║    ╚══════════╝    ║
║     That is the    ║
║      question      ║
╟────────────────────╢
║ ┌───┐┌───────────┐ ║
║ │ 1 ├┤ to be     │ ║
║ └───┘└───────────┘ ║
║ ┌───┐┌───────────┐ ║
║ │ 2 ├┤ not to be │ ║
║ └───┘└───────────┘ ║
╟────────────────────╢
║ ╔═══╗╔═══════════╗ ║ 
║ ║ 0 ╠╣ to death  ║ ║ # This button is in red color
║ ╚═══╝╚═══════════╝ ║
╚════════════════════╝
?> 2
>> menu.select(printed=False)
?> 1
>> print(menu)
     ╔══════════╗     
╔════╣ Question ╠════╗
║    ╚══════════╝    ║
║     That is the    ║
║      question      ║
╟────────────────────╢
║ ╔═══╗╔═══════════╗ ║
║ ║ 1 ╠╣ to be     ║ ║ # This button is in red color
║ ╚═══╝╚═══════════╝ ║
║ ┌───┐┌───────────┐ ║
║ │ 2 ├┤ not to be │ ║
║ └───┘└───────────┘ ║
╟────────────────────╢
║ ┌───┐┌───────────┐ ║
║ │ 0 ├┤ to death  │ ║
║ └───┘└───────────┘ ║
╚════════════════════╝
>> menu.selected = 2
>> print(menu)
     ╔══════════╗     
╔════╣ Question ╠════╗
║    ╚══════════╝    ║
║     That is the    ║
║      question      ║
╟────────────────────╢
║ ┌───┐┌───────────┐ ║
║ │ 1 ├┤ to be     │ ║
║ └───┘└───────────┘ ║
║ ╔═══╗╔═══════════╗ ║
║ ║ 2 ╠╣ not to be ║ ║ # This button is in red color
║ ╚═══╝╚═══════════╝ ║
╟────────────────────╢
║ ┌───┐┌───────────┐ ║
║ │ 0 ├┤ to death  │ ║
║ └───┘└───────────┘ ║
╚════════════════════╝
>> menu = Menu("to be", "not to be", title="Question", description="That is the question", back_button="to death")
>> print(menu)
     ╔══════════╗     
╔════╣ Question ╠════╗
║    ╚══════════╝    ║
║ That is the        ║
║ question           ║
╟────────────────────╢
║ ┌───┐┌───────────┐ ║
║ │ 1 ├┤ to be     │ ║
║ └───┘└───────────┘ ║
║ ┌───┐┌───────────┐ ║
║ │ 2 ├┤ not to be │ ║
║ └───┘└───────────┘ ║
╟────────────────────╢
║ ╔═══╗╔═══════════╗ ║
║ ║ 0 ╠╣ to death  ║ ║ # This button is in red color
║ ╚═══╝╚═══════════╝ ║
╚════════════════════╝
>> menu = Menu("to be", "not to be", title="Question", back_button="to death")
>> print(menu)
     ╔══════════╗     
╔════╣ Question ╠════╗
║    ╚══════════╝    ║
║ ┌───┐┌───────────┐ ║
║ │ 1 ├┤ to be     │ ║
║ └───┘└───────────┘ ║
║ ┌───┐┌───────────┐ ║
║ │ 2 ├┤ not to be │ ║
║ └───┘└───────────┘ ║
╟────────────────────╢
║ ╔═══╗╔═══════════╗ ║
║ ║ 0 ╠╣ to death  ║ ║ # This button is in red color
║ ╚═══╝╚═══════════╝ ║
╚════════════════════╝
>> menu = Menu("to be", "not to be", title="Question", back_button="to death", colored=False)
>> print(menu)
     ╔══════════╗     
╔════╣ Question ╠════╗
║    ╚══════════╝    ║
║ ┌───┐┌───────────┐ ║
║ │ 1 ├┤ to be     │ ║
║ └───┘└───────────┘ ║
║ ┌───┐┌───────────┐ ║
║ │ 2 ├┤ not to be │ ║
║ └───┘└───────────┘ ║
╟────────────────────╢
║ ┌───┐┌───────────┐ ║
║ │ 0 ├┤ to death  │ ║ # This button is not in red color
║ └───┘└───────────┘ ║
╚════════════════════╝
>> menu = Menu("to be", "not to be", title="Question")
>> print(menu)
     ╔══════════╗     
╔════╣ Question ╠════╗
║    ╚══════════╝    ║
║ ┌───┐┌───────────┐ ║
║ │ 1 ├┤ to be     │ ║
║ └───┘└───────────┘ ║
║ ┌───┐┌───────────┐ ║
║ │ 2 ├┤ not to be │ ║
║ └───┘└───────────┘ ║
╚════════════════════╝
>> menu = Menu("to be", "not to be")
>> print(menu)
╔════════════════════╗
║ ┌───┐┌───────────┐ ║
║ │ 1 ├┤ to be     │ ║
║ └───┘└───────────┘ ║
║ ┌───┐┌───────────┐ ║
║ │ 2 ├┤ not to be │ ║
║ └───┘└───────────┘ ║
╚════════════════════╝
>> menu = Menu()
>> print(menu)
The menu is empty.
>> menu = Menu("maybe")
>> print(menu)
╔════════════════════╗
║ ┌───┐┌───────────┐ ║
║ │ 1 ├┤ maybe     │ ║
║ └───┘└───────────┘ ║
╚════════════════════╝
>> menu.select()
>> print(menu)
╔════════════════════╗
║ ╔═══╗╔═══════════╗ ║
║ ║ 1 ╠╣ maybe     ║ ║
║ ╚═══╝╚═══════════╝ ║
╚════════════════════╝
>> menu = Menu(back_button="to death")
>> print(menu)
>> The menu is empty.
>> print(menu.select())
0

This class simply manages a menu of choice.

enter(__prompt='', __type=int)
>> from pratik.functions import enter
>> enter("Your number here: ") # default -> int
?> Your number here: 42
42
>> enter()
?> 5
5
>> enter("Result: ", list)
?> Result: FRANCE
['F', 'R', 'A', 'N', 'C', 'E']
>> ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'][enter("Where: ", slice)]
?> Where: 2:6:2
['C', 'E']

This function is inspired by the input() function by adding the type of a class in which to return the value.

humanize_number(__number, __fill_char='.')
>> from pratik.functions import humanize_number
>> print(humanize_number(1234567))
1.234.567
>> print(humanize_number(1234567, ' '))
1 234 567

This function helps to display numbers in a way that is easier for a human to read.

gcd(a, b)
>> from pratik.functions import gcd
>> print(gcd(1234567890, 9876543210))
90
>> print(humanize_number(48, 18))
6

This function allows you to retrieve the GCD of two numbers.

progress_bar(x, n, *, width=100)
>> from pratik.functions import progress_bar
>> print(progress_bar(67, 100))
067/100 | ███████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  67%
>> print(progress_bar(13, 50, width=50))
13/50 | █████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  26%

This function allows you to display a loading bar to have a visual of the execution of a task.

clear(*, return_line=False)
>> from pratik.functions import clear
>> clear()
<deletion character>
>> clear(return_line=True)
<deletion character>

>> 

This function allows you to clear the current terminal, a parameter allows you to return to the line after the deletion character.

Package singleton

Singleton
from pratik.singleton import Singleton

class Foo(Singleton):
    def singleton_init(self, var1, var2):
        self.var1 = var1
        self.var2 = var2

    @property
    def var(self):
        return self.var1 + self.var2
>> f1 = Foo(2, 5)
>> print(f1.var1)
2
>> f2 = Foo()
>> print(f2.var1)
2
>> f3 = Foo(3, 8)
>> print(f1.var1)
3
>> print(f2.var1)
3
>> print(f3.var1)
3

Singleton is a class allowing the easy creation of a singleton.
To instantiate it like a regular class you can overwrite the singleton_init(self, *args, **kwargs) method.

Package text

Color
from pratik.text import Color

print(f"{Color.GREEN}Is good!{Color.STOP}")
print(f"{Color.LIGHT_RED}Is Bad!{Color.STOP}")
print(f"{Color.get_rgb(42, 128, 200)}I don't know!{Color.STOP}")
print(f"{Color.get_hex('#ACAB42')}Meh !{Color.STOP}")

To color text

  • get_rgb(red, green, blue)

    • Get the ANSI escape sequence for an RGB color.
  • get_hex(hexadecimal)

    • Get the ANSI escape sequence for an RGB color.
Highlight
from pratik.text import Highlight

print(f"{Highlight.GREEN}Is good!{Highlight.STOP}")
print(f"{Highlight.LIGHT_RED}Is Bad!{Highlight.STOP}")
print(f"{Highlight.get_rgb(42, 128, 200)}I don't know!{Highlight.STOP}")
print(f"{Highlight.get_hex('#ACAB42')}Meh !{Highlight.STOP}")

To highlight text

  • get_rgb(red, green, blue)

    • Get the ANSI escape sequence for an RGB color.
  • get_hex(hexadecimal)

    • Get the ANSI escape sequence for an RGB color.
Style

To stylize text (Bold, Italic, ...).

generate(*code)
from pratik.text import generate

print(f"{generate(31, 45)}It's too much!{generate(0)}")

For concatenating too many codes.

information()

All ANSI code in table

STOP

Reset the ANSI sequence with \033[0m character.

Package time

TimeRemaining
import time
from pratik.time import TimeRemaining

if __name__ == '__main__':
    how_many_objects = 100
    
    tr = TimeRemaining(how_many_objects)
    for i in range(how_many_objects):
        time.sleep(0.1)
        tr.add()
        tr.progress_bar()
>> 017/100 | ████░░░░░░░░░░░░░░░░░░░░░  17% 0:00:08
>> 053/100 | █████████████░░░░░░░░░░░░  53% 0:00:04
>> 079/100 | ████████████████████░░░░░  79% 0:00:02
>> 100/100 | █████████████████████████ 100% 0:00:00

This class is close to progress bar in terms of operation. It adds to the latter an estimate of the remaining time using a simple rule of three ((time spent * total number of elements / number of elements passed) - time spent).

Contributors

Licence

This library is licensed under the GNU GENERAL PUBLIC LICENSE.

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc