Skip to main content

Modern CLI Library

Project description

nercone_modern

nercone-modern

Modern CLI Library

Installation

uv

Install to venv and Add to project dependencies:

uv add nercone-modern

Install to venv:

uv pip install nercone-modern

pip

pip3 install nercone-modern

Usage

Import

from nercone_modern.color import ModernColor
from nercone_modern.text import ModernText
from nercone_modern.logging import ModernLogging
from nercone_modern.progressbar import ModernProgressBar

Color

from nercone_modern.color import ModernColor as Color
print(f"Build {Color.GREEN}Success{Color.RESET}")

Supported colors:

  • CYAN
  • MAGENTA
  • YELLOW
  • GREEN
  • RED
  • BLUE
  • WHITE
  • BLACK
  • GRAY
  • RESET

Text

from nercone_modern.text import ModernText as Text
from nercone_modern.color import ModernColor as Color
print("Build" + Text("Success", color="green"))
print("Build" + Text("Failed", color=Color.RED))

Logging

ModernLogging(
  process_name: str = "App",           # Process name to show in the log
  display_level: str = "INFO",         # The minimum level to show in the log
  filepath: str | None = None,         # Log file path
  show_proc: bool | None = None,       # Whether to show process names
  show_level: bool | None = None       # Whether to show level names
)
ModernLogging().log(
  message: str = "",                   # Log contents
  level_text: str = "INFO",            # Level from "DEBUG", "INFO", "WARN", "ERROR" and "CRITICAL"
  level_color: str                     # Custom color for Level (see ModernLogging.color.ModernColor)
)
ModernLogging().prompt(
  message: str = "",                   # Log contents
  level_text: str = "INFO",            # Level from "DEBUG", "INFO", "WARN", "ERROR" and "CRITICAL"
  level_color: str | None = None,      # Custom color for Level (see ModernColor)
  default: str | None = None,          # Default answer
  show_default: bool = False,          # Whether to show default answer
  choices: list[str] | None = None,    # List of possible answers
  show_choices: bool = True,           # Whether to show choices
  interrupt_ignore: bool = False,      # Whether to raise an exception on KeyboardInterrupt or continue using the default argument.
  interrupt_default: str | None = None # Value to use instead of the default argument when interrupt_ignore is True.
)
from nercone_modern.logging import ModernLogging
logger = ModernLogging("Main", display_level="DEBUG")
logger.log("This is a test message", level_text="INFO", level_color="magenta")
answer = logger.prompt("What's your name?", level_text="INFO")
logger.log(f"Answer: {answer}", level_text="DEBUG")
answer2 = logger.prompt("Select mode", default="A", choices=["A", "b", "c", "d"], level_text="INFO")
logger.log(f"Mode: {answer2}", level_text="DEBUG")

Supported levels:

  • DEBUG
  • INFO
  • WARN
  • ERROR
  • CRITICAL

Progress Bar

ModernProgressBar(
  total: int,                          # Total number of steps (max progress value)
  process_name: str,                   # Name of the process shown next to the bar
  spinner_mode: bool = False,          # Whether to start in spinner mode instead of progress (spinner-only) mode
  primary_color: str = "blue",         # Color used for filled bar and brackets (see ModernColor)
  secondary_color: str = "cyan",       # Color used for center marker / spinner (see ModernColor)
  box_left: str = "[",                 # Left bracket surrounding the bar and status
  box_right: str = "]"                 # Right bracket surrounding the bar and status
)
ModernProgressBar().spinner(
  enabled: bool = True                 # Enable or disable spinner mode dynamically
)
ModernProgressBar().spin_start()       # Start spinner animation immediately
ModernProgressBar().setMessage(
  message: str = ""                    # Message to show after the status (e.g. current step description)
)
ModernProgressBar().start()            # Initial rendering and start of spinner (if enabled)
ModernProgressBar().update(
  amount: int = 1                      # Increase current progress by the specified amount and re-render
)
ModernProgressBar().finish()           # Mark as complete, stop spinner and render final DONE state
ModernProgressBar().log(
  message: str = "",                   # Log contents printed above the progress bar
  level_text: str = "INFO",            # Level from "DEBUG", "INFO", "WARN", "ERROR" and "CRITICAL"
  level_color: str | None = None,      # Custom color for Level (see ModernColor)
  show_proc: bool | None = None,       # Whether to show process names (fallbacks to ModernLogging settings)
  show_level: bool | None = None,      # Whether to show level names (fallbacks to ModernLogging settings)
  modernLogging: ModernLogging = None  # Existing ModernLogging instance to reuse. If None, a new one is created.
)
from nercone_modern.progressbar import ModernProgressBar
progress_bar = ModernProgressBar(total=100, process_name="Task 1", spinner_mode=True)

progress_bar.start()
time.sleep(5)

progress_bar.spinner(False)

progress_bar.setMessage("Step 1")

for i in range(50):
  time.sleep(0.05)
  progress_bar.update(amount=1)

progress_bar.setMessage("Step 2")

for i in range(25):
  time.sleep(0.03)
  progress_bar.update(amount=1)

progress_bar.setMessage("Step 3")

for i in range(5):
  time.sleep(1)
  progress_bar.update(amount=5)

progress_bar.finish()

PyPI - Version

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nercone_modern-1.12.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nercone_modern-1.12.0-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file nercone_modern-1.12.0.tar.gz.

File metadata

  • Download URL: nercone_modern-1.12.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nercone_modern-1.12.0.tar.gz
Algorithm Hash digest
SHA256 5f8819da124d9da9588708f3505b6281c4bc973348f63bc2679b4f62451a2b09
MD5 1772d193e936d5872e7351cd314db042
BLAKE2b-256 7e9125085063839ef1a6814df0b015076d9854b3571faac18f9a1a1c2e71fc0b

See more details on using hashes here.

File details

Details for the file nercone_modern-1.12.0-py3-none-any.whl.

File metadata

  • Download URL: nercone_modern-1.12.0-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.29 {"installer":{"name":"uv","version":"0.9.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nercone_modern-1.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b1fb3ea9b55831ae85eda075d4fabcb39cfb89ad255b93cd092714a2f4eab934
MD5 fb09962567636d3c05f8da8385aefa75
BLAKE2b-256 1704bc8bc52cce41f442f29be90eddee3dd087f8bfa09135117ff23728ee28ce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page