Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

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.

Metadata

Release files for glampy 0.5.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for glampy 0.5.3
File Size Uploaded
glampy-0.5.3.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for glampy 0.5.3
File Interpreter ABI Platform
glampy-0.5.3-py3-none-any.whl Python 3 none any Details

Total release size: 11.1 kB

Release files / glampy-0.5.3.tar.gz

Download URL glampy-0.5.3.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
14313c57a86fe99af95def2dda4146d9769f3631869edc12739bf14a8ea63de3
BLAKE2b-256 checksum
How to use checksums
ad77cfed60c35358a58a605f344c649827d337ab65d322baf33f2d70bb0bd096
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.3 CPython/3.12.1 Linux/6.17.0-1008-azure

Release files / glampy-0.5.3-py3-none-any.whl

Download URL glampy-0.5.3-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6ff54596159e327add4fc5bb40be22e72f55317cbec1a6f3d797364e10e25996
BLAKE2b-256 checksum
How to use checksums
b2e153f1b8c7609420a54450c0af4bbb94b212e1ca6db54e387aa75a8a04fd85
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.3 CPython/3.12.1 Linux/6.17.0-1008-azure
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page