kingkybel-pyflashlogger


Namekingkybel-pyflashlogger JSON
Version 2.0.0 PyPI version JSON
download
home_pagehttps://github.com/kingkybel/PyFlashLogger
SummaryAdvanced console logging with color support and minimal configuration interface
upload_time2025-11-02 18:46:38
maintainerNone
docs_urlNone
authorDieter J Kybelksties
requires_python>=3.8
licenseGPLv2
keywords logging console color ansi configuration
VCS
bugtrack_url
requirements colorama Pygments setuptools kingkybel-pyfundamentals
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # kingkybel-pyflashlogger

Advanced console logging with color support and minimal configuration interface.

## Features

- ๐ŸŽจ **Color-Coded Logging**: Automatic ANSI color coding for different log levels with flexible configuration
- ๐Ÿท๏ธ **Custom Log Levels**: Support for custom log levels with configurable labels and fixed numeric assignments
- ๐Ÿ”„ **Minimal Interface**: Simple API for logging without complex setup
- ๐ŸŒˆ **Special Color Support**: Configurable colors for timestamps, process IDs, brackets, operators, etc.
- ๐Ÿ“‹ **Field Ordering**: Base class configurable field ordering (level, timestamp, pid, tid, message) for all log channels
- ๐Ÿ’พ **JSON Configuration**: Save and load color/label configurations
- ๐Ÿ”— **Multiple Channels**: Console and file logging implementations with unified configuration
- ๐Ÿงช **Format Flexibility**: Different formats for standard logs, commands, and std streams
- ๐Ÿ“ค **Output Formats**: Multiple output formats (Human readable, JSON pretty, JSON lines) available to all channels with runtime switching
- ๐Ÿ”ง **Runtime Configuration**: Dynamically set color schemes and output formats at runtime for individual channels or all channels
- ๐Ÿ“Š **Structured JSON Output**: Automatic parsing of message arguments into JSON with support for direct object serialization
- ๐ŸŽฏ **Enhanced ColorScheme API**: Flexible color retrieval supporting LogLevel enums, Field enums, and string keys
- โœ… **Comprehensive Testing**: Full test coverage including all new functionality

## Installation

```bash
pip install kingkybel-pyflashlogger
```

Or from source:
```bash
git clone https://github.com/kingkybel/FlashLogger.git
cd FlashLogger
pip install -e .
```

## Tools

FlashLogger includes interactive configuration tools:

### Color & Label Configurator (`tools/color_configurator.py`)

Interactive tool for customizing logging colors and labels with live preview:

```bash
cd tools
python color_configurator.py                 # Use default configs
python color_configurator.py colors.json labels.json  # Load custom configs

# Interactive commands:
# 4 RED _ DIM    # Change WARNING level colors
# load labels DE # Switch to German labels
# s              # Save configuration
# q              # Quit
```

**Features:**
- Visual preview of all colors and levels
- Tab completion for color names
- Load/save configurations
- Support for predefined schemes (COLOR, BW, PLAIN)
- International label support (EN, DE)

### Logger Testing Tool (`tools/try_out_logger.py`)

Sample script demonstrating FlashLogger capabilities with runtime configuration:

```bash
python tools/try_out_logger.py
```

Shows examples of:
- Runtime color scheme changes
- Output format switching
- Structured JSON output
- Custom log levels

## Quick Start

```python
from flashlogger import FlashLogger, ColorScheme, LogLevel

# Basic usage
logger = FlashLogger()
logger.log_info("This is an info message")
logger.log_warning("This is a warning")

# With custom colors
scheme = ColorScheme.default_color_scheme()
console_logger = FlashLogger(console=scheme)
console_logger.log_error("Colorized error message")

# Custom log levels
logger.log_custom0("Custom level message")
```

## Advanced Usage

### Runtime Color Scheme Configuration
```python
from flashlogger import ColorScheme, LogChannelConsole

# Create logger with initial scheme
logger = FlashLogger()
channel = logger.get_channel(LogChannelConsole.__name__)

# Dynamically change color schemes at runtime
channel.set_color_scheme(ColorScheme.Default.BLACK_AND_WHITE)
logger.set_color_scheme(ColorScheme.Default.COLOR)  # Affects all channels

# Use custom color schemes
custom_scheme = ColorScheme(color_scheme_json="my_colors.json")
channel.set_color_scheme(custom_scheme)
```

### Runtime Output Format Configuration
```python
from flashlogger import FlashLogger, OutputFormat

logger = FlashLogger()

# Set output format for all channels
logger.set_output_format(OutputFormat.JSON_PRETTY)

# Set format for individual channels
channel = logger.get_channel('LogChannelConsole')
channel.set_output_format('JSON_LINES')  # Override for this channel

# JSON output now includes structured arguments
logger.log_info("Simple message", {"complex": "data"}, arg1="value")
# Output: {"timestamp": "...", "level": "info", "message": "Simple message",
#          "message0": {"complex": "data"}, "arg1": "value"}
```

### Structured JSON Output
FlashLogger automatically structures logging arguments for JSON output:

```python
# Dict as first argument gets merged directly (no "message" wrapper)
logger.log_custom0({"user_id": 123, "action": "login"})
# JSON: {"user_id": 123, "action": "login", "level": "custom0", ...}

# Multiple args get indexed as message0, message1, etc.
logger.log_info("Operation", completed=True, duration=1.5)
# JSON: {"message": "Operation", "message0": true, "duration": 1.5, "level": "info", ...}
```

### Enhanced ColorScheme API
```python
from flashlogger import ColorScheme, LogLevel
from flashlogger.color_scheme import Field

scheme = ColorScheme(ColorScheme.Default.COLOR)

# Flexible color retrieval methods
color_str = scheme.get("warning")           # String key
color_enum = scheme.get(LogLevel.WARNING)   # LogLevel enum
field_color = scheme.get(Field.TIMESTAMP)   # Field enum

# With style and inverse options
bright_color = scheme.get("error", style=Style.BRIGHT)
inverse_color = scheme.get("debug", inverse=True)
```

### Color Configuration
```python
from flashlogger import ColorScheme

# Load predefined schemes
color_scheme = ColorScheme(ColorScheme.Default.COLOR)
bw_scheme = ColorScheme(ColorScheme.Default.BLACK_AND_WHITE)

# Create custom scheme from JSON
custom_scheme = ColorScheme(color_scheme_json="my_colors.json")

# Runtime color customization
scheme.set_level_color(LogLevel.WARNING, foreground="RED", background="YELLOW")
```

### Field Ordering
```python
# Customize log field display order
scheme.field_order = ["level", "timestamp", "message"]  # Omit pid/tid
logger = FlashLogger(console=scheme)

# Output: [WARNING] [2025-10-26 00:00:00.000] This is a message
```

### Custom Labels
```python
from flashlogger import LogLevel

# Define custom labels
LogLevel.set_str_repr(LogLevel.custom0, "NETWORK_IO")
LogLevel.set_str_repr(LogLevel.custom1, "DB_QUERY")

logger = FlashLogger()
logger.log_custom0("Network I/O operation")  # Shows as "NETWORK_IO"
```

## Log Levels

- **DEBUG**: Debugging information
- **INFO**: General information
- **WARNING**: Warning conditions
- **ERROR**: Error conditions
- **FATAL**: Fatal errors
- **CRITICAL**: Critical conditions
- **COMMAND**: Command execution
- **COMMAND_OUTPUT**: Command stdout capture
- **COMMAND_STDERR**: Command stderr capture
- **CUSTOM0-9**: Custom user-defined levels

## Configuration Files

FlashLogger includes default configuration files for color schemes and log level labels:

- `color_scheme_color.json`: Full color scheme
- `color_scheme_bw.json`: Black and white scheme
- `log_levels_en.json`: English log level labels
- `log_levels_de.json`: German log level labels

## Channels

### Console Channel
```python
from flashlogger import LogChannelConsole

channel = LogChannelConsole(color_scheme=my_scheme, minimum_log_level="WARNING")
channel.do_log("ERROR", "This error will be logged")
```

### File Channel
```python
from flashlogger import LogChannelFile

channel = LogChannelFile(filename="app.log")
channel.do_log("INFO", "This goes to file")
```

## Custom Channels

Extend `LogChannelABC` for custom logging destinations:

```python
from flashlogger import LogChannelABC

class MyChannel(LogChannelABC):
    def do_log(self, log_level, *args, **kwargs):
        # Your custom logging logic
        pass
```

## API Reference

### FlashLogger
- **Logging Methods**:
  - `log_debug(message)`: Log debug message
  - `log_info(message)`: Log info message
  - `log_warning(message)`: Log warning message
  - `log_error(message)`: Log error message
  - `log_fatal(message)`: Log fatal error
  - `log_custom0(message)`: Log custom level 0-9
- **Runtime Configuration**:
  - `set_output_format(format)`: Set output format for all channels
  - `set_color_scheme(scheme)`: Set color scheme for all channels
  - `add_channel(channel)`: Add a log channel with duplicate prevention
  - `get_channel(selector)`: Get channel by ID, name, or instance

### OutputFormat
- `HUMAN_READABLE`: Default human-readable format
- `JSON_PRETTY`: Pretty-printed JSON with indentation
- `JSON_LINES`: Compact single-line JSON

### ColorScheme
- Constructor: `ColorScheme(default_scheme_or_path)`
- Methods:
  - `get(level, inverse=False, style=None)`: Get colors for LogLevel, Field, or string
  - `save_to_json(path)`: Save configuration to JSON
  - `set_level_color(level, foreground, background)`: Runtime color customization

### LogChannelABC
- Methods:
  - `set_output_format(format)`: Set output format for this channel
  - `is_loggable(level)`: Check if level is loggable
  - `do_log(level, *args, **kwargs)`: Log a message

### LogChannelConsole
- Inherits from LogChannelABC
- Methods:
  - `set_color_scheme(scheme)`: Set color scheme for console output
  - `set_output_format(format)`: Set output format with formatter updates
  - `set_level_color(level, foreground, background)`: Runtime level color changes

### LogLevel
- Standard levels: `DEBUG`, `INFO`, `WARNING`, etc.
- Custom levels: `CUSTOM0` through `CUSTOM9` (with fixed numeric assignments)
- Methods: `set_str_repr(level, label)`, `load_str_reprs_from_json(path)`

## License

GPLv2 - See the LICENSE file for details.

## Contributing

Contributions welcome! Please open issues for bugs or feature requests.

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/kingkybel/PyFlashLogger",
    "name": "kingkybel-pyflashlogger",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Dieter J Kybelksties <github@kybelksties.com>",
    "keywords": "logging, console, color, ansi, configuration",
    "author": "Dieter J Kybelksties",
    "author_email": "Dieter J Kybelksties <github@kybelksties.com>",
    "download_url": "https://files.pythonhosted.org/packages/f7/59/702483453b59ecf0aff706623ad54303c0c2908046f1f3efa9a13326405a/kingkybel_pyflashlogger-2.0.0.tar.gz",
    "platform": null,
    "description": "# kingkybel-pyflashlogger\n\nAdvanced console logging with color support and minimal configuration interface.\n\n## Features\n\n- \ud83c\udfa8 **Color-Coded Logging**: Automatic ANSI color coding for different log levels with flexible configuration\n- \ud83c\udff7\ufe0f **Custom Log Levels**: Support for custom log levels with configurable labels and fixed numeric assignments\n- \ud83d\udd04 **Minimal Interface**: Simple API for logging without complex setup\n- \ud83c\udf08 **Special Color Support**: Configurable colors for timestamps, process IDs, brackets, operators, etc.\n- \ud83d\udccb **Field Ordering**: Base class configurable field ordering (level, timestamp, pid, tid, message) for all log channels\n- \ud83d\udcbe **JSON Configuration**: Save and load color/label configurations\n- \ud83d\udd17 **Multiple Channels**: Console and file logging implementations with unified configuration\n- \ud83e\uddea **Format Flexibility**: Different formats for standard logs, commands, and std streams\n- \ud83d\udce4 **Output Formats**: Multiple output formats (Human readable, JSON pretty, JSON lines) available to all channels with runtime switching\n- \ud83d\udd27 **Runtime Configuration**: Dynamically set color schemes and output formats at runtime for individual channels or all channels\n- \ud83d\udcca **Structured JSON Output**: Automatic parsing of message arguments into JSON with support for direct object serialization\n- \ud83c\udfaf **Enhanced ColorScheme API**: Flexible color retrieval supporting LogLevel enums, Field enums, and string keys\n- \u2705 **Comprehensive Testing**: Full test coverage including all new functionality\n\n## Installation\n\n```bash\npip install kingkybel-pyflashlogger\n```\n\nOr from source:\n```bash\ngit clone https://github.com/kingkybel/FlashLogger.git\ncd FlashLogger\npip install -e .\n```\n\n## Tools\n\nFlashLogger includes interactive configuration tools:\n\n### Color & Label Configurator (`tools/color_configurator.py`)\n\nInteractive tool for customizing logging colors and labels with live preview:\n\n```bash\ncd tools\npython color_configurator.py                 # Use default configs\npython color_configurator.py colors.json labels.json  # Load custom configs\n\n# Interactive commands:\n# 4 RED _ DIM    # Change WARNING level colors\n# load labels DE # Switch to German labels\n# s              # Save configuration\n# q              # Quit\n```\n\n**Features:**\n- Visual preview of all colors and levels\n- Tab completion for color names\n- Load/save configurations\n- Support for predefined schemes (COLOR, BW, PLAIN)\n- International label support (EN, DE)\n\n### Logger Testing Tool (`tools/try_out_logger.py`)\n\nSample script demonstrating FlashLogger capabilities with runtime configuration:\n\n```bash\npython tools/try_out_logger.py\n```\n\nShows examples of:\n- Runtime color scheme changes\n- Output format switching\n- Structured JSON output\n- Custom log levels\n\n## Quick Start\n\n```python\nfrom flashlogger import FlashLogger, ColorScheme, LogLevel\n\n# Basic usage\nlogger = FlashLogger()\nlogger.log_info(\"This is an info message\")\nlogger.log_warning(\"This is a warning\")\n\n# With custom colors\nscheme = ColorScheme.default_color_scheme()\nconsole_logger = FlashLogger(console=scheme)\nconsole_logger.log_error(\"Colorized error message\")\n\n# Custom log levels\nlogger.log_custom0(\"Custom level message\")\n```\n\n## Advanced Usage\n\n### Runtime Color Scheme Configuration\n```python\nfrom flashlogger import ColorScheme, LogChannelConsole\n\n# Create logger with initial scheme\nlogger = FlashLogger()\nchannel = logger.get_channel(LogChannelConsole.__name__)\n\n# Dynamically change color schemes at runtime\nchannel.set_color_scheme(ColorScheme.Default.BLACK_AND_WHITE)\nlogger.set_color_scheme(ColorScheme.Default.COLOR)  # Affects all channels\n\n# Use custom color schemes\ncustom_scheme = ColorScheme(color_scheme_json=\"my_colors.json\")\nchannel.set_color_scheme(custom_scheme)\n```\n\n### Runtime Output Format Configuration\n```python\nfrom flashlogger import FlashLogger, OutputFormat\n\nlogger = FlashLogger()\n\n# Set output format for all channels\nlogger.set_output_format(OutputFormat.JSON_PRETTY)\n\n# Set format for individual channels\nchannel = logger.get_channel('LogChannelConsole')\nchannel.set_output_format('JSON_LINES')  # Override for this channel\n\n# JSON output now includes structured arguments\nlogger.log_info(\"Simple message\", {\"complex\": \"data\"}, arg1=\"value\")\n# Output: {\"timestamp\": \"...\", \"level\": \"info\", \"message\": \"Simple message\",\n#          \"message0\": {\"complex\": \"data\"}, \"arg1\": \"value\"}\n```\n\n### Structured JSON Output\nFlashLogger automatically structures logging arguments for JSON output:\n\n```python\n# Dict as first argument gets merged directly (no \"message\" wrapper)\nlogger.log_custom0({\"user_id\": 123, \"action\": \"login\"})\n# JSON: {\"user_id\": 123, \"action\": \"login\", \"level\": \"custom0\", ...}\n\n# Multiple args get indexed as message0, message1, etc.\nlogger.log_info(\"Operation\", completed=True, duration=1.5)\n# JSON: {\"message\": \"Operation\", \"message0\": true, \"duration\": 1.5, \"level\": \"info\", ...}\n```\n\n### Enhanced ColorScheme API\n```python\nfrom flashlogger import ColorScheme, LogLevel\nfrom flashlogger.color_scheme import Field\n\nscheme = ColorScheme(ColorScheme.Default.COLOR)\n\n# Flexible color retrieval methods\ncolor_str = scheme.get(\"warning\")           # String key\ncolor_enum = scheme.get(LogLevel.WARNING)   # LogLevel enum\nfield_color = scheme.get(Field.TIMESTAMP)   # Field enum\n\n# With style and inverse options\nbright_color = scheme.get(\"error\", style=Style.BRIGHT)\ninverse_color = scheme.get(\"debug\", inverse=True)\n```\n\n### Color Configuration\n```python\nfrom flashlogger import ColorScheme\n\n# Load predefined schemes\ncolor_scheme = ColorScheme(ColorScheme.Default.COLOR)\nbw_scheme = ColorScheme(ColorScheme.Default.BLACK_AND_WHITE)\n\n# Create custom scheme from JSON\ncustom_scheme = ColorScheme(color_scheme_json=\"my_colors.json\")\n\n# Runtime color customization\nscheme.set_level_color(LogLevel.WARNING, foreground=\"RED\", background=\"YELLOW\")\n```\n\n### Field Ordering\n```python\n# Customize log field display order\nscheme.field_order = [\"level\", \"timestamp\", \"message\"]  # Omit pid/tid\nlogger = FlashLogger(console=scheme)\n\n# Output: [WARNING] [2025-10-26 00:00:00.000] This is a message\n```\n\n### Custom Labels\n```python\nfrom flashlogger import LogLevel\n\n# Define custom labels\nLogLevel.set_str_repr(LogLevel.custom0, \"NETWORK_IO\")\nLogLevel.set_str_repr(LogLevel.custom1, \"DB_QUERY\")\n\nlogger = FlashLogger()\nlogger.log_custom0(\"Network I/O operation\")  # Shows as \"NETWORK_IO\"\n```\n\n## Log Levels\n\n- **DEBUG**: Debugging information\n- **INFO**: General information\n- **WARNING**: Warning conditions\n- **ERROR**: Error conditions\n- **FATAL**: Fatal errors\n- **CRITICAL**: Critical conditions\n- **COMMAND**: Command execution\n- **COMMAND_OUTPUT**: Command stdout capture\n- **COMMAND_STDERR**: Command stderr capture\n- **CUSTOM0-9**: Custom user-defined levels\n\n## Configuration Files\n\nFlashLogger includes default configuration files for color schemes and log level labels:\n\n- `color_scheme_color.json`: Full color scheme\n- `color_scheme_bw.json`: Black and white scheme\n- `log_levels_en.json`: English log level labels\n- `log_levels_de.json`: German log level labels\n\n## Channels\n\n### Console Channel\n```python\nfrom flashlogger import LogChannelConsole\n\nchannel = LogChannelConsole(color_scheme=my_scheme, minimum_log_level=\"WARNING\")\nchannel.do_log(\"ERROR\", \"This error will be logged\")\n```\n\n### File Channel\n```python\nfrom flashlogger import LogChannelFile\n\nchannel = LogChannelFile(filename=\"app.log\")\nchannel.do_log(\"INFO\", \"This goes to file\")\n```\n\n## Custom Channels\n\nExtend `LogChannelABC` for custom logging destinations:\n\n```python\nfrom flashlogger import LogChannelABC\n\nclass MyChannel(LogChannelABC):\n    def do_log(self, log_level, *args, **kwargs):\n        # Your custom logging logic\n        pass\n```\n\n## API Reference\n\n### FlashLogger\n- **Logging Methods**:\n  - `log_debug(message)`: Log debug message\n  - `log_info(message)`: Log info message\n  - `log_warning(message)`: Log warning message\n  - `log_error(message)`: Log error message\n  - `log_fatal(message)`: Log fatal error\n  - `log_custom0(message)`: Log custom level 0-9\n- **Runtime Configuration**:\n  - `set_output_format(format)`: Set output format for all channels\n  - `set_color_scheme(scheme)`: Set color scheme for all channels\n  - `add_channel(channel)`: Add a log channel with duplicate prevention\n  - `get_channel(selector)`: Get channel by ID, name, or instance\n\n### OutputFormat\n- `HUMAN_READABLE`: Default human-readable format\n- `JSON_PRETTY`: Pretty-printed JSON with indentation\n- `JSON_LINES`: Compact single-line JSON\n\n### ColorScheme\n- Constructor: `ColorScheme(default_scheme_or_path)`\n- Methods:\n  - `get(level, inverse=False, style=None)`: Get colors for LogLevel, Field, or string\n  - `save_to_json(path)`: Save configuration to JSON\n  - `set_level_color(level, foreground, background)`: Runtime color customization\n\n### LogChannelABC\n- Methods:\n  - `set_output_format(format)`: Set output format for this channel\n  - `is_loggable(level)`: Check if level is loggable\n  - `do_log(level, *args, **kwargs)`: Log a message\n\n### LogChannelConsole\n- Inherits from LogChannelABC\n- Methods:\n  - `set_color_scheme(scheme)`: Set color scheme for console output\n  - `set_output_format(format)`: Set output format with formatter updates\n  - `set_level_color(level, foreground, background)`: Runtime level color changes\n\n### LogLevel\n- Standard levels: `DEBUG`, `INFO`, `WARNING`, etc.\n- Custom levels: `CUSTOM0` through `CUSTOM9` (with fixed numeric assignments)\n- Methods: `set_str_repr(level, label)`, `load_str_reprs_from_json(path)`\n\n## License\n\nGPLv2 - See the LICENSE file for details.\n\n## Contributing\n\nContributions welcome! Please open issues for bugs or feature requests.\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests if applicable\n5. Submit a pull request\n",
    "bugtrack_url": null,
    "license": "GPLv2",
    "summary": "Advanced console logging with color support and minimal configuration interface",
    "version": "2.0.0",
    "project_urls": {
        "Changelog": "https://github.com/kingkybel/PyFlashLogger/blob/main/CHANGELOG.md",
        "Documentation": "https://github.com/kingkybel/PyFlashLogger#readme",
        "Homepage": "https://github.com/kingkybel/PyFlashLogger",
        "Issues": "https://github.com/kingkybel/PyFlashLogger/issues",
        "Repository": "https://github.com/kingkybel/PyFlashLogger"
    },
    "split_keywords": [
        "logging",
        " console",
        " color",
        " ansi",
        " configuration"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fa58a1faaacc75e71493d94d751d758e8abc7553f4d7bc977d4dbe31cc6455fc",
                "md5": "96933361f2adcc1a1a127d6b6b80e433",
                "sha256": "480b99df67fca031a0f7254322fcf9507f4a6f15b51cc5c03b9898d9072307c6"
            },
            "downloads": -1,
            "filename": "kingkybel_pyflashlogger-2.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "96933361f2adcc1a1a127d6b6b80e433",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 30503,
            "upload_time": "2025-11-02T18:46:37",
            "upload_time_iso_8601": "2025-11-02T18:46:37.563458Z",
            "url": "https://files.pythonhosted.org/packages/fa/58/a1faaacc75e71493d94d751d758e8abc7553f4d7bc977d4dbe31cc6455fc/kingkybel_pyflashlogger-2.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f759702483453b59ecf0aff706623ad54303c0c2908046f1f3efa9a13326405a",
                "md5": "41782e8d70cef02eb9969ba9d45283d9",
                "sha256": "507542b96c85af9954cb7283f5c0974bf24daebc13ab87528965c5ea57505ab2"
            },
            "downloads": -1,
            "filename": "kingkybel_pyflashlogger-2.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "41782e8d70cef02eb9969ba9d45283d9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 39968,
            "upload_time": "2025-11-02T18:46:38",
            "upload_time_iso_8601": "2025-11-02T18:46:38.693858Z",
            "url": "https://files.pythonhosted.org/packages/f7/59/702483453b59ecf0aff706623ad54303c0c2908046f1f3efa9a13326405a/kingkybel_pyflashlogger-2.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-02 18:46:38",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kingkybel",
    "github_project": "PyFlashLogger",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "colorama",
            "specs": [
                [
                    ">=",
                    "0.4.6"
                ]
            ]
        },
        {
            "name": "Pygments",
            "specs": [
                [
                    ">=",
                    "2.19.2"
                ]
            ]
        },
        {
            "name": "setuptools",
            "specs": [
                [
                    ">=",
                    "80.9.0"
                ]
            ]
        },
        {
            "name": "kingkybel-pyfundamentals",
            "specs": [
                [
                    ">=",
                    "0.1.1"
                ]
            ]
        }
    ],
    "lcname": "kingkybel-pyflashlogger"
}
        
Elapsed time: 2.23744s