last update :
PACKAGE = 2026-01-05 17:48 UTC+1(Paris) ;
README = 2026-01-05 17:48 UTC+1(Paris)

epitech_console is a Python library designed to help you create enhanced terminal interfaces. Itβs improving the appearance and readability of your command-line interface with lightweight animations, colorful text, and neat formatting. If you want to make your terminal programs more readable and visually structured, this library is for you!
To begin , install epitech_console:
Make sure you have Python 3.11 or newer installed on your computer.
You can check your Python version by opening a terminal and typing python --version.
Open your terminal and run this command:
pip install epitech_console
This will automatically download and install the library from PyPI.
If you want the latest version directly from the source, you can install it using git:
git clone -b latest https://github.com/Jarjarbin06/epitech_console.git
make -C epitech_console install
This downloads the code, then the install script handles the installation.
These commands install the epitech_console package and its dependencies (datetime).
Here are some examples demonstrating how to use epitech_console:
from epitech_console.Text import Text
from epitech_console.ANSI import Color
from epitech_console import init, quit
init()
epitech_color = Color.epitech_fg() + Color.rgb_bg(0, 0 ,0)
reset = Color.color(Color.C_RESET)
my_text = epitech_color + Text("hi").bold() + reset
print(my_text)
quit(delete_log=True)
from epitech_console.Animation import Animation, BasePack
from epitech_console.System import Console
from epitech_console import init, quit
init()
my_animation = Animation(BasePack.P_FILL_R)
for i in range(5):
Console.print(my_animation.render(delete=True), sleep=0.5)
my_animation.update()
quit(delete_log=True)
from epitech_console.Animation import Animation
from epitech_console.System import Console
from epitech_console import init, quit
init()
my_animation = Animation(['Frame 1', 'Frame 2', 'Frame 3'])
for i in range(5):
Console.print(my_animation.render(delete=True), sleep=0.5)
my_animation.update()
quit(delete_log=True)
from epitech_console.Animation import ProgressBar, Spinner
from epitech_console.System import Console
from epitech_console import init, quit
init()
my_spinner = Spinner.stick()
my_progress_bar = ProgressBar(length=20, percent_style="mix", spinner=my_spinner)
for i in range(101):
my_progress_bar.update(percent=i, update_spinner=(i % 5 == 0))
Console.print(my_progress_bar.render(delete=True), sleep=0.05)
quit(delete_log=True)
from epitech_console.Animation import ProgressBar, Style
from epitech_console.ANSI import Line
from epitech_console.System import Console
from epitech_console import init, quit
init()
style : Style = Style(on="=", off=" ", border_left="[", border_right="]")
bar : ProgressBar
for i in range(1001):
bar = ProgressBar(len(Console) - 15, percent_style="mix", style=style)
bar.update(i/10)
Console.print(bar.render(delete=True), sleep=0.01, cut=True)
quit(delete_log=True)
from time import sleep
from epitech_console.System import StopWatch
from epitech_console import init, quit
init()
my_stopwatch = StopWatch(start=True)
sleep(2)
my_stopwatch.stop()
print(f"Elapsed time: {my_stopwatch.elapsed()}")
quit(delete_log=True)
from epitech_console.System import Config
from epitech_console import init, quit
init()
my_path = "."
if not Config.exist(my_path):
my_config = Config(my_path, {
"GENERALE" : {"theme": "dark", "language": "en"},
"USER" : {"username": "guest", "email": "my_email@email.com"}
}, file_name="my_config.ini")
quit(delete_log=True)
This will check and create a config.ini file if it doesnβt exist.
REPO/
βββ .github/
β βββ workflows/
β β βββ codeql.yml
β β βββ test-package.yml
βββ epitech_console/
β βββ Animation/
β β βββ __init__.py
β β βββ animation.py
β β βββ basepack.py
β β βββ progressbar.py
β β βββ spinner.py
β β βββ style.py
β βββ ANSI/
β β βββ __init__.py
β β βββ ansi.py
β β βββ basepack.py
β β βββ color.py
β β βββ cursor.py
β β βββ line.py
β βββ Error/
β β βββ __init__.py
β β βββ error.py
β βββ log/
β βββ System/
β β βββ __init__.py
β β βββ action.py
β β βββ config.py
β β βββ console.py
β β βββ log.py
β β βββ setting.py
β β βββ stopwatch.py
β β βββ time.py
β βββ Text/
β β βββ __init__.py
β β βββ format.py
β β βββ text.py
β βββ __init__.py
β βββ config.ini
βββ script/
β βββ auto-reload-package
β βββ check-package
β βββ install-package
β βββ test-package
β βββ uninstall-package
βββ source/
β βββ epitech_console_logo.png
β βββ epitech_logo.png
βββ tests/
β βββ tests Animation/
β β βββ test_animation_animation.py
β β βββ test_animation_basepack.py
β β βββ test_animation_progressbar.py
β β βββ test_animation_spinner.py
β β βββ test_animation_style.py
β βββ tests ANSI/
β β βββ test_ansi_ansi.py
β β βββ test_ansi_basepack.py
β β βββ test_ansi_color.py
β β βββ test_ansi_cursor.py
β β βββ test_ansi_line.py
β βββ tests Error/
β β βββ test_error_error.py
β βββ tests System/
β β βββ test_system_action.py
β β βββ test_system_config.py
β β βββ test_system_console.py
β β βββ test_system_stopwatch.py
β β βββ test_system_time.py
β βββ tests Text/
β β βββ test_text_format.py
β β βββ test_text_text.py
βββ .gitignore
βββ LICENSE
βββ Makefile
βββ MANIFEST.in
βββ pyproject.toml
βββ README.md
. = function ; + = class constructor ; _ = class method ; @ = static method ; # = class variable
.init(): Initializes the module, BasePacks and Setting classes and the log file (if activated in the config file)..quit(show: bool = False, delete_log: bool = False): Uninitializes the module and the log file (if activated in the config file).+Animation(animation: list[Any] | str = ""): Constructor to create an animation._update(auto_reset: bool = True): Advances the animation by one step._render(delete: bool = False): Renders the current frame of the animation._is_last(): Returns whether the current step is the last one._reset(): Resets the current step to 0.@update(style: Style = Style("#", "-", "<", ">", "|", "|")): Update the BasePack animations to fit with the given Style (or the default one if no Style given).#P_SLIDE_R: Character sliding to the right.#P_SLIDE_L: Character sliding to the left.#P_SLIDER_R: Slider going right.#P_SLIDER_L: Slider going left.#P_FILL_R: Filling to the right.#P_FILL_R: Filling to the left.#P_EMPTY_R: Emptying to the right.#P_EMPTY_L: Emptying to the left.#P_FULL: Full.#P_EMPTY: Empty.+ProgressBar(length: int, animation: Animation | None = None, style: Style = Style("#", "-", "<", ">", "|", "|"), percent_style: str = "bar", spinner: Animation | None = None, spinner_position: str = "a"): Constructor to create a progress bar._update(percent: int = 0, update_spinner: bool = True, auto_reset: bool = True): Updates the progress bar to a specified percentage._render(color: ANSI | tuple[ANSI, ANSI, ANSI] = Color.color(Color.C_RESET), hide_spinner_at_end: bool = True, delete: bool = False): Renders the progress bar.@stick(style: Style = Style("#", " ", "#", "#", "", "")): Creates a stick spinner.@plus(style: Style = Style("#", " ", "#", "#", "", "")): Creates a plus spinner.@cross(style: Style = Style("#", " ", "#", "#", "", "")): Creates a cross spinner.+Style(on: str = "#", off: str = "-", arrow_left: str = "<", arrow_right: str = ">", border_left: str = "|", border_right: str = "|"): Constructor to create a style.+ANSI(sequence: list[Any | str] | Any | str = ""): Constructor to create an ANSI sequence.#ESC: ANSI escape character.@update(): Update the BasePack escape sequences (currently reserved for future extensions).#P_ERROR: Colors for error title and body.#P_WARNING: Colors for warning title and body.#P_VALID: Colors for valid title and body.#P_INFO: Colors for information title and body.@color(color: int): Returns ANSI sequence for pre-made color codes.@color_fg(color: int): Returns ANSI sequence for a foreground color.@color_bg(color: int): Returns ANSI sequence for a background color.@rgb_fg(r: int, g: int, b: int): Returns ANSI sequence for a foreground RGB color.@rgb_bg(r: int, g: int, b: int): Returns ANSI sequence for a background RGB color.@epitech_fg(): Returns ANSI sequence for a foreground colored as Epitech (light).@epitech_bg(): Returns ANSI sequence for a background colored as Epitech (light).@epitech_dark_fg(): Returns ANSI sequence for a foreground colored as Epitech (dark).@epitech_dark_bg(): Returns ANSI sequence for a background colored as Epitech (dark).#C_RESET: Reset color code.#C_BOLD: Bold color code.#C_ITALIC: Italic color code.#C_UNDERLINE: Underline color code.#C_FLASH_SLOW: Slow flashing color code.#C_FLASH_FAST: Fast flashing color code.#C_HIDDEN: Hidden color code.#C_STRIKETHROUGH: Strikethrough color code.#C_FG_...: Foreground colors.#C_BG_...: Background colors.@up(n: int = 1): Moves the cursor up n lines.@down(n: int = 1): Moves the cursor down n lines.@left(n: int = 1): Moves the cursor left n columns.@right(n: int = 1): Moves the cursor right n columns.@top(): Moves the cursor to the top left corner.@previous(n: int = 1): Moves the cursor to the beginning of n lines before.@next(n: int = 1): Moves the cursor to the beginning of n lines after.@move(x: int = 0, y: int = 0): Moves the cursor at position (x, y).@move_column(x: int = 0): Moves the cursor at position x on the same line.@set(): Save the position of the cursor.@reset(): Load the saved position of the cursor.@show(): Shows the cursor.@hide(): Hides the cursor.@clear_line(): Clears the current line.@clear_start_line(): Clears the current line from the beginning to the cursor.@clear_end_line(): Clears the current line from the cursor to the end.@clear_screen(): Clears the entire screen.@clear(): Clears the entire screen and move the cursor to the top-left corner.@clear_previous_line(n: int = 1): Go to the previous n lines, clear it and bring the cursor to the beginning of the previous line.+Error(message: str = "an error occurred", error: str = "Error", link: tuple[str, int] | None = None): Constructor to create an error object.+Action(name: str, function: Callable, *args, **kwargs: Constructor to create an Action object.+Actions(actions: list[Action] | Action | None = None): Constructor to create an Actions object.+Config(path:str, data: dict | None = None, file_name:str = "config.ini"): Constructor to create a Config object (create the config file if it does not exist, read it otherwise)._get(section: str, option: str, wanted_type: type = str): Returns the value of type wanted_type in section section and option option._delete(cached: bool = False): Deletes the configuration file (and removes cached values unless cached=True).@exist(path: str, file_name: str = "config.ini"): Returns whether a config file named file_name exist in path or not.@print(*args, separator: str = " ", start: str = "", end: str = "\n", file: Any = stdout, auto_reset: bool = True, sleep: int | float | None = None, cut: bool = False): Print any objects in the terminal (or in any other file), starting with start and ending with end, if multiple value are to be printed, they will be separated by separator, if cut then the text will be cut to fit in the terminal, optional waiting after printing of sleep seconds.@input(msg: str = "Input", separator: str = " >>> ", wanted_type: type = str): Returns a user text input changed to wanted_type.@flush(stream: Any = stdout): Flush any content in stream.+Log(path: str, file_name: str | None = None: Constructor to create a log._log(status: str, title: str, description: str): Create a formatted log and save it a log file._comment(comment: str): Create a non formatted log and save it in a log file._save(log_str: str): Save a log in a log file._close(delete: bool = False) format the end of the log file and save it, delete the log file if delete_logs._delete() delete the log file._read(): Returns the content of a log file._show(): Print a formatted table of the content of a log_file.@update(): Update the Settings.#S_PACKAGE_NAME: Packageβs name.#S_PACKAGE_VERSION: Packageβs version.#S_PACKAGE_DESCRIPTION: Packageβs description.#S_PACKAGE_REPOSITORY: Packageβs repository URL.#S_SETTING_SHOW_BANNER: Packageβs show-banner setting.#S_SETTING_AUTO_COLOR: Packageβs auto-color setting.#S_SETTING_SAFE_MODE: Packageβs safe-mode setting.#S_SETTING_MINIMAL_MODE: Packageβs minimal-mode setting.#S_SETTING_DEBUG: Packageβs debug setting.#S_SETTING_LOG: Packageβs log setting.#S_LOG_FILE: Packageβs log_file.+StopWatch(start: bool = False): Constructor to create a stopwatch._start(): Reset and start the stopwatch._stop(): Update and stop the stopwatch._update(): Update the elapsed time._elapsed(auto_update: bool = False): Returns the precise elapsed time._reset(): Reset the StopWatch back to 0.@wait(sleep: int | float): Pauses execution for sleep seconds.@pause(msg: str = "Press enter to continue..."): Pauses execution until enter key is pressed._reset(): Clear the format of a text._bold(): Make a text bold._italic(): Make a text italic._underline(): Make a text underlined._hide(): Make a text hidden._strikthrough(): Make a text strikethrough._error(title: bool = False): Make a text styled as an ERROR (background is colored if title, foreground otherwise)._warning(title: bool = False): Make a text styled as a WARNING (background is colored if title, foreground otherwise)._ok(title: bool = False): Make a text styled as an OK (background is colored if title, foreground otherwise)._info(title: bool = False): Make a text styled as an INFO (background is colored if title, foreground otherwise).@apply(obj: Any, sequence: Any | None = None): Apply anything to an object (Text, ANSI, Animation, ProgressBar or str).@tree(d: dict | str | list, title: str | None = None, indent: int = 0: Get a formated version of a dictionary as bash βtreeβ command does).@module_tree(): Get moduleβs file tree.+Text(text: Any | str = ""): Constructor to create a text object.@url_link(url: str, text: str | None = None): Creates a link to a url.@file_link(path: str, line: int | None = None): Creates a link to a file and line number.ProgressBar wrong lengthpytest tests 100% coverage reachedAnimation classespytest testsSetting and log classesREADME grammar π
test-package workflowpytest tests for the whole module (including sub-modules)optionallen() Console compatibilityuninstall-package)len() Animation, ANSI and Text compatibilityAction and Actions classesREADME grammar π
objectinstall-package + check-package)Action class (not implemented yet)READMEThis project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
βοΈ Like the project? Give it a star! π Found a bug? Report it in the issues!