
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
A library of various functions and classes helping to program more efficiently and more intuitively
By PyPI:
python -m pip install pratik
>> 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.
>> 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.
>> 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.
>> 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.
>> 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.
>> 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.
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.
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_hex(hexadecimal)
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_hex(hexadecimal)
To stylize text (Bold, Italic, ...).
from pratik.text import generate
print(f"{generate(31, 45)}It's too much!{generate(0)}")
For concatenating too many codes.
All ANSI code in table
Reset the ANSI sequence with \033[0m character.
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).
This library is licensed under the GNU GENERAL PUBLIC LICENSE.
FAQs
A library of various functions and classes helping to program more efficiently and more intuitively
We found that pratik demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.