Skip to main content

Make your python CLI prints and logs simple but glamorous

Project description

glampy

This project intends to allow building useful, reliable and beautiful python CLIs with ease.

Installation

Stable release version:

pip install glampy

Latest development version:

pip install git+https://github.com/snaeil/glampy

Usage

Logging

The customized logger can be used in it's default optionated way or can be customized.
It is fully compatible with the standard python logging module.

The default style logs the following format, using dynamic colors for different log levels: [2024-01-01 12:00:00] [LEVEL] [LOGGER_NAME] Messages

# Example using the Logger class to log to stdout and a file:
from glampy.logging import Logger
logger = Logger("my_logger", log_file="my_log.log", log_level=logging.DEBUG)
logger.debug("This is a debug message that will be logged to stdout and the file.")

# Example using the Logger class to log to a file only:
from glampy.logging import Logger
logger = Logger("my_logger", console_handler=None, log_level=logging.DEBUG)
logger.debug("This is a debug message that will be logged to a file only.")

# Example using the Logger class to log to stdout only:
from glampy.logging import Logger
logger = Logger("my_logger", log_level=logging.WARNING)
logger.warning("This is a warning message that will be logged to stdout only.")
logger.info("This is an info message that will not be logged.")

# Example using custom log format:
from glampy.logging import Logger
custom_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
logger = Logger("my_logger", log_file="my_log.log", log_level=logging.INFO, log_format=custom_format)

# Example using advanced custom log format:
import logging
from glampy.logging import Logger
from glampy.style import Foreground_Colour, Style
class Formatter(logging.Formatter):
    def format(self, record: logging.LogRecord):
        # Do whatever you want with the record here, e.g. add colors based on level
        color = {
            logging.WARNING: Foreground_Colour.YELLOW,
            logging.ERROR: Foreground_Colour.RED,
            logging.FATAL: Foreground_Colour.RED,
            logging.INFO: Foreground_Colour.GREEN,
            logging.DEBUG: Foreground_Colour.CYAN,
        }.get(record.levelno, 0)
        self._style._fmt = f"[%(asctime)s] [{color}%(levelname)7s{Style.RESET_ALL}] [{Foreground_Colour.MAGENTA}%(name){Style.RESET_ALL}] %(message)s"
        return super().format(record)
advanced_format = Formatter()
logger = Logger("my_logger", log_file="my_log.log", log_level=logging.INFO, log_format=advanced_format)

Style

The style module provides a simple way to style text in the terminal.
See the source code for all available styles.

from glampy.style import Style, Sign, Foreground_Colour, Background_Colour

# Example using the Style class to style text:
print(f"{Sign.WARNING} The word {Style.bold}bold{Style.RESET_ALL} is not {style.italic}italic{Style.RESET_ALL}.")

Contributing

Contributions are welcome! For feature requests, bug reports or questions, please open an issue. For code contributions, please open a pull request.

The development environment can be set up using nix and devenv:

  1. Install nix package manager: bash <(curl -L https://nixos.org/nix/install) --no-daemon
  2. Make sure, your ~/.config/nix/nix.conf contains the following lines:
    experimental-features = nix-command flakes
    
  3. Install devenv by running:
    nix profile install --accept-flake-config 'nixpkgs#devenv'
    
  4. Install nix-direnv by running:
    nix profile install 'nixpkgs#nix-direnv'
    
    Then add nix-direnv to $HOME/.config/direnv/direnvrc:
    source $HOME/.nix-profile/share/nix-direnv/direnvrc
    
  5. Hook direnv into your shell by adding a line to your shell's configuration file (e.g. ~/.bashrc), as described in the direnv documentation:
  6. You might have to open a new shell to make the changes take effect.

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

glampy-0.5.1.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

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

glampy-0.5.1-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file glampy-0.5.1.tar.gz.

File metadata

  • Download URL: glampy-0.5.1.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.1 Linux/6.14.0-1017-azure

File hashes

Hashes for glampy-0.5.1.tar.gz
Algorithm Hash digest
SHA256 5af950a6b7313fa79e0ce8f7b64546b04b247250621a877b8af1cecc7e41460b
MD5 b1dcc6dd770a2459ba70fc462724b770
BLAKE2b-256 42e86c04ce835ad7418582316ff63d2ce2d7d325de93510bb1a9862e1894f8c2

See more details on using hashes here.

File details

Details for the file glampy-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: glampy-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.12.1 Linux/6.14.0-1017-azure

File hashes

Hashes for glampy-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2547c5e8324d932bcee81f9d80a77ca309652a4c9cc626d794e6fa1c78b57935
MD5 f9db55f683b47871c15188749bb9ca2e
BLAKE2b-256 7e156d9b4f60e20360a9281a34a72254e47ad8d79c80afe7902524a63c4eb9f8

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