Name | pytermstyle JSON |
Version |
1.0.0
JSON |
| download |
home_page | None |
Summary | ANSI color formatting for output in terminal |
upload_time | 2025-01-06 18:39:47 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT License Copyright (c) 2024 Luka spotrz.official@gmail.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
keywords |
ansi
color
colored
colour
console
logging
terminal
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pytermstyle
<img src="media/description.PNG" alt="pytermstyle">
Python module that enables ANSI color formatting for output in terminal
## Installation
```
python3 -m pip install --upgrade pytermstyle
```
## Documentation
You can acquire logger by using any of the following methods:
**Acquire default logger provided on import**
```python
from pytermstyle import get_default_logger
logger = get_default_logger()
logger("Hello World!") # Equivalent to print
logger.bold("Hello World!")
```
**Acquire default logger with optional configuration**
```python
from pytermstyle import init_config
logger = init_config()
logger.bold("Hello World!")
```
For details on how to configure logger, visit [Settings](https://github.com/SpotRusherZ/pytermstyle/blob/main/README.md#settings---persistent-styling) section
**Create and configure custom instance of colored logger**
```python
from pytermstyle import create_logger
logger = create_logger()
logger.bold("Hello World!")
```
Module supports different ways to style the output:
* Basic Styling: Predefined common styles like bold, italic, underline, and strikethrough
* Background & Foreground Colors: Predefined and RGB colors
By default, logger will behave like regular `print` function, until user defines either:
1) Persistent styling - Define [settings](https://github.com/SpotRusherZ/pytermstyle/blob/main/README.md#settings---persistent-styling) for your instance of the logger that will behave as a new default for logger
2) Single-use styling - Directly call supported styling methods on logging. This way of logging will override any predefined settings for the given call
### Chaining Styles - Single-use styling
To apply styling to one output line, call as many predefined styles methods as you like
All previously called styles will be applied first time when you specify output text
```python
from pytermstyle import get_default_logger
logger = get_default_logger()
logger.bold().italic().underline().bg_cyan().fg_red("Styled text")
logger("Regular text")
logger.fg_blue().bg_yellow().strike("Styled text")
```
There is no limit to the amount of styling methods that you can use, if you specify multiple foreground/background colors **last called color method will be applied**
```python
logger.fg_magenta().bg_green().fg_yellow("Styled text") # Text will have green background & yellow foreground, magenta will be ignored
```
Additionally, since styling will be preserved until the first time when user specifies output, you can delay applying styles:
```python
logger.bg_cyan().fg_red() # Logger will not output anything
logger("Styled text") # Logger will output text with cyan background and red foreground
```
### Supported styles
* bold()
* faint()
* italic()
* underline()
* slow_blink()
* rapid_blink()
* conceal()
* strike()
* framed()
* encircled()
* overlined()
**Note:** Depending on terminal, not every styling that module offers is promised to be supported.
### Predefined colors
| Color | Background | Foreground | HEX |
| :------ | :----------- | :----------- | :-------- |
| black | bg_black() | fg_black() | `#000000` |
| red | bg_red() | fg_red() | `#FF0000` |
| green | bg_green() | fg_green() | `#00FF00` |
| yellow | bg_yellow() | fg_yellow() | `#FFFF00` |
| blue | bg_blue() | fg_blue() | `#0000FF` |
| magenta | bg_magenta() | fg_magenta() | `#FF00FF` |
| cyan | bg_cyan() | fg_cyan() | `#00FFFF` |
| white | bg_white() | fg_white() | `#FFFFFF` |
### Custom colors
Module offers wider set of defined colors accessible through `fg_color` & `bg_color`.
```python
logger.fg_color("red", text="Styled text")
logger.bg_color("blue", text="Styled text")
```
**Note:** `logger.fg_red("Example")` and `logger.fg_color("red", text="Example")` yield same result
Defined set of colors that can be used as a color name for these two methods:
| Color | HEX | 8-bit Code |
| ----------- | --------- | ---------- |
| black | `#000000` | 0 |
| red | `#800000` | 1 |
| green | `#008000` | 2 |
| yellow | `#808000` | 3 |
| blue | `#000080` | 4 |
| magenta | `#800080` | 5 |
| cyan | `#008080` | 6 |
| white | `#C0C0C0` | 7 |
| dark-red | `#870000` | 88 |
| dark-green | `#005F00` | 22 |
| dark-blue | `#000087` | 18 |
| light-red | `#FF0000` | 196 |
| light-green | `#87FF87` | 120 |
| light-blue | `#5FD7FF` | 81 |
| pink | `#FF00FF` | 13 |
| orange | `#FFAF00` | 214 |
| purple | `#8700FF` | 93 |
| brown | `#875F00` | 94 |
| sky-blue | `#AFD7FF` | 153 |
| lime-green | `#AFFF87` | 156 |
**Note:** Since implementation of these two methods returns 8-bit representation of specified colors, color code in range [0, 255] will also be accepted input. See [ANSI Escape Codes - 8-bit](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) for more details
### RGB Colors
To define colors as RGB, you can use `fg_rgb()` and `bg_rgb()` methods in format:
```python
fg_rgb(r: int, g: int, b: int, text: Optional[str])
bg_rgb(r: int, g: int, b: int, text: Optional[str])
```
```python
logger.fg_rgb(61, 217, 187).bg_rgb(32, 87, 111, text="RGB Message")
```
### Settings - Persistent styling
In case where user would like to keep one styling for most of the output, styling can be defined through settings and logger can be configured to use these settings at any point in code execution.
Settings can be defined as Python dictionary in following format:
```python
{
"style": {
"type": "list[str]",
"description": "List of valid font styles",
"required": "false"
},
"foreground": {
"type": "string" | "list[str]",
"description": "Valid supported color / 8-bit color code or RGB value"
"oneOf": {
"color": "string",
"rgb": "list[str]"
},
"required": "false"
},
"background": {
"type": "string" | "list[str]",
"description": "Valid supported color / 8-bit color code or RGB value"
"oneOf": {
"color": "string",
"rgb": "list[str]"
},
"required": "false"
},
}
```
Example:
```python
from pytermstyle import init_config
SETTINGS = {
"style": ["bold", "italic", "underline"],
"foreground": {
"rgb": ["61", "217", "217"],
},
"background": {
"color": "magenta"
},
}
logger = init_config(SETTINGS)
logger("Text with styling defined through settings")
logger("which behaves as default styling")
logger.bold("Calling styling methods directly will overwrite these settings")
logger("After which settings will be applied again.")
```
If user wishes to remove the settings from the logger, `clear()` method should be called
```python
logger = init_config({ "style": ["bold"] })
logger("Custom styling")
logger.clear()
logger("Behaves as regular print again")
```
User can also configure logger to use settings at any point in execution, by calling `configure()` method
```python
logger = init_config()
logger("Regular print")
logger.configure({ "style": ["bold"] })
logger("Bold text")
```
### (NO_)COLOR mode
Implementation of this module surrounds output text with proper ANSI escape codes recognized by terminal
Since there are many different terminal applications, not all of them will support every standard ANSI escape code defined in the module, or will not suport ANSI escape codes at all
This module will try to recognize if terminal does not support ANSI Escape codes, or if user specified in any standardized way that terminal shouldn't accept them.
If one of the following environment variables exists, logger will strip any ANSI color codes from the output and behave as regular `print` function:
* [NO_COLOR](https://no-color.org/)
* ANSI_COLORS_DISABLED
* TERM = "dumb"
If [FORCE_COLOR](https://force-color.org/) environment variable exists, logger will attempt colored output.
### Exception Handling
`ColorException` - Thrown by `fg_color` / `bg_color` / `fg_rgb` / `bg_rgb` if validation for provided input fails
`TermConfigException` - Thrown by settings if provided configuration failed validation
### `logging` integration
This module can work with Python `logging` module by exposing `TermStyleFormatter` class, and `basicConfig()` method.
Example:
```python
import logging
from pytermstyle import basicConfig
basicConfig(level=logging.DEBUG)
logging.debug("Default debug styling")
logging.info("Default info styling")
logging.warning("Default warning styling")
logging.error("Default error styling")
```
If you want to use colors for a specific instance of logger, use `TermStyleFormatter`, a provided subclass of `logging.Formatter`
For both methods of configuration, there is already defined styling for each logging level, if you wish to override default settings, you can provide custom settings object.
Settings object behaves in a same way as [settings](https://github.com/SpotRusherZ/pytermstyle/blob/main/README.md#settings---persistent-styling), with addition being able to specify each level as a key:
```python
SETTINGS = {
"style": ["underline", "bold"],
"foreground": {"color": "sky-blue"},
"background": {"rgb": [32, 87, 111]},
}
LOGGING_SETTINGS = {
"DEBUG": SETTINGS,
"ERROR": {
**SETTINGS,
"background": {"color": "dark-red"}
}
}
basicConfig(settings=LOGGING_SETTINGS)
logging.debug("Custom debug styling")
logging.info("Default info styling")
logging.warning("Default warning styling")
logging.error("Custom error styling")
```
`logging` module also provides formatting of log message, which `pytermstyle` expands with two additional attributes: `colorStart` & `colorEnd`, which can define part of the log message which will be styled:
```python
# Whole log message should be styled
# Default formatting is: %(colorStart)s%(levelname)s:%(name)s:%(colorEnd)s%(message)s
basicConfig(format="%(colorStart)s%(levelname)s:%(name)s:%(message)s%(colorEnd)s")
logging.debug("Custom debug format")
logging.info("Custom info format")
logging.warning("Custom warning format")
logging.error("Custom error format")
```
### Examples
For complete code examples visit: [examples](https://github.com/SpotRusherZ/pytermstyle/tree/main/examples) directory
Raw data
{
"_id": null,
"home_page": null,
"name": "pytermstyle",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Luka <spotrz.official@gmail.com>",
"keywords": "ANSI, color, colored, colour, console, logging, terminal",
"author": null,
"author_email": "Luka <spotrz.official@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/7f/7c/c0925b1da1b2dd6894208d502ead41fe17727986c493301005a0337c31af/pytermstyle-1.0.0.tar.gz",
"platform": null,
"description": "# pytermstyle\n\n<img src=\"media/description.PNG\" alt=\"pytermstyle\">\n\nPython module that enables ANSI color formatting for output in terminal\n\n## Installation\n\n```\npython3 -m pip install --upgrade pytermstyle\n```\n\n## Documentation\n\nYou can acquire logger by using any of the following methods:\n\n**Acquire default logger provided on import**\n```python\nfrom pytermstyle import get_default_logger\n\nlogger = get_default_logger()\n\nlogger(\"Hello World!\") # Equivalent to print\nlogger.bold(\"Hello World!\")\n```\n\n**Acquire default logger with optional configuration**\n```python\nfrom pytermstyle import init_config\n\nlogger = init_config()\n\nlogger.bold(\"Hello World!\")\n```\nFor details on how to configure logger, visit [Settings](https://github.com/SpotRusherZ/pytermstyle/blob/main/README.md#settings---persistent-styling) section\n\n**Create and configure custom instance of colored logger**\n```python\nfrom pytermstyle import create_logger\n\nlogger = create_logger()\n\nlogger.bold(\"Hello World!\")\n```\n\nModule supports different ways to style the output:\n* Basic Styling: Predefined common styles like bold, italic, underline, and strikethrough\n* Background & Foreground Colors: Predefined and RGB colors\n\nBy default, logger will behave like regular `print` function, until user defines either:\n1) Persistent styling - Define [settings](https://github.com/SpotRusherZ/pytermstyle/blob/main/README.md#settings---persistent-styling) for your instance of the logger that will behave as a new default for logger\n2) Single-use styling - Directly call supported styling methods on logging. This way of logging will override any predefined settings for the given call\n\n### Chaining Styles - Single-use styling\n\nTo apply styling to one output line, call as many predefined styles methods as you like\nAll previously called styles will be applied first time when you specify output text\n\n```python\nfrom pytermstyle import get_default_logger\n\nlogger = get_default_logger()\n\nlogger.bold().italic().underline().bg_cyan().fg_red(\"Styled text\")\nlogger(\"Regular text\")\nlogger.fg_blue().bg_yellow().strike(\"Styled text\")\n```\n\nThere is no limit to the amount of styling methods that you can use, if you specify multiple foreground/background colors **last called color method will be applied**\n\n```python\nlogger.fg_magenta().bg_green().fg_yellow(\"Styled text\") # Text will have green background & yellow foreground, magenta will be ignored\n```\n\nAdditionally, since styling will be preserved until the first time when user specifies output, you can delay applying styles:\n```python\nlogger.bg_cyan().fg_red() # Logger will not output anything\n\nlogger(\"Styled text\") # Logger will output text with cyan background and red foreground\n```\n\n### Supported styles\n\n* bold()\n* faint()\n* italic()\n* underline()\n* slow_blink()\n* rapid_blink()\n* conceal()\n* strike()\n* framed()\n* encircled()\n* overlined()\n\n**Note:** Depending on terminal, not every styling that module offers is promised to be supported.\n\n### Predefined colors\n\n| Color | Background | Foreground | HEX |\n| :------ | :----------- | :----------- | :-------- |\n| black | bg_black() | fg_black() | `#000000` |\n| red | bg_red() | fg_red() | `#FF0000` |\n| green | bg_green() | fg_green() | `#00FF00` |\n| yellow | bg_yellow() | fg_yellow() | `#FFFF00` |\n| blue | bg_blue() | fg_blue() | `#0000FF` |\n| magenta | bg_magenta() | fg_magenta() | `#FF00FF` |\n| cyan | bg_cyan() | fg_cyan() | `#00FFFF` |\n| white | bg_white() | fg_white() | `#FFFFFF` |\n\n### Custom colors\n\nModule offers wider set of defined colors accessible through `fg_color` & `bg_color`.\n\n```python\nlogger.fg_color(\"red\", text=\"Styled text\")\nlogger.bg_color(\"blue\", text=\"Styled text\")\n```\n\n**Note:** `logger.fg_red(\"Example\")` and `logger.fg_color(\"red\", text=\"Example\")` yield same result\n\nDefined set of colors that can be used as a color name for these two methods:\n| Color | HEX | 8-bit Code |\n| ----------- | --------- | ---------- |\n| black | `#000000` | 0 |\n| red | `#800000` | 1 |\n| green | `#008000` | 2 |\n| yellow | `#808000` | 3 |\n| blue | `#000080` | 4 |\n| magenta | `#800080` | 5 |\n| cyan | `#008080` | 6 |\n| white | `#C0C0C0` | 7 |\n| dark-red | `#870000` | 88 |\n| dark-green | `#005F00` | 22 |\n| dark-blue | `#000087` | 18 |\n| light-red | `#FF0000` | 196 |\n| light-green | `#87FF87` | 120 |\n| light-blue | `#5FD7FF` | 81 |\n| pink | `#FF00FF` | 13 |\n| orange | `#FFAF00` | 214 |\n| purple | `#8700FF` | 93 |\n| brown | `#875F00` | 94 |\n| sky-blue | `#AFD7FF` | 153 |\n| lime-green | `#AFFF87` | 156 |\n\n**Note:** Since implementation of these two methods returns 8-bit representation of specified colors, color code in range [0, 255] will also be accepted input. See [ANSI Escape Codes - 8-bit](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) for more details\n\n### RGB Colors\n\nTo define colors as RGB, you can use `fg_rgb()` and `bg_rgb()` methods in format:\n\n```python\nfg_rgb(r: int, g: int, b: int, text: Optional[str])\nbg_rgb(r: int, g: int, b: int, text: Optional[str])\n```\n\n```python\nlogger.fg_rgb(61, 217, 187).bg_rgb(32, 87, 111, text=\"RGB Message\")\n```\n\n### Settings - Persistent styling\n\nIn case where user would like to keep one styling for most of the output, styling can be defined through settings and logger can be configured to use these settings at any point in code execution.\n\nSettings can be defined as Python dictionary in following format:\n```python\n{\n \"style\": {\n \"type\": \"list[str]\",\n \"description\": \"List of valid font styles\",\n \"required\": \"false\"\n },\n \"foreground\": {\n \"type\": \"string\" | \"list[str]\",\n \"description\": \"Valid supported color / 8-bit color code or RGB value\"\n \"oneOf\": {\n \"color\": \"string\",\n \"rgb\": \"list[str]\"\n },\n \"required\": \"false\"\n },\n \"background\": {\n \"type\": \"string\" | \"list[str]\",\n \"description\": \"Valid supported color / 8-bit color code or RGB value\"\n \"oneOf\": {\n \"color\": \"string\",\n \"rgb\": \"list[str]\"\n },\n \"required\": \"false\"\n },\n}\n```\n\nExample:\n```python\nfrom pytermstyle import init_config\n\nSETTINGS = {\n \"style\": [\"bold\", \"italic\", \"underline\"],\n \"foreground\": {\n \"rgb\": [\"61\", \"217\", \"217\"],\n },\n \"background\": {\n \"color\": \"magenta\"\n },\n}\n\nlogger = init_config(SETTINGS)\n\nlogger(\"Text with styling defined through settings\")\nlogger(\"which behaves as default styling\")\n\nlogger.bold(\"Calling styling methods directly will overwrite these settings\")\n\nlogger(\"After which settings will be applied again.\")\n```\n\nIf user wishes to remove the settings from the logger, `clear()` method should be called\n```python\nlogger = init_config({ \"style\": [\"bold\"] })\n\nlogger(\"Custom styling\")\nlogger.clear()\nlogger(\"Behaves as regular print again\")\n```\n\nUser can also configure logger to use settings at any point in execution, by calling `configure()` method\n```python\nlogger = init_config()\n\nlogger(\"Regular print\")\n\nlogger.configure({ \"style\": [\"bold\"] })\nlogger(\"Bold text\")\n```\n\n### (NO_)COLOR mode\n\nImplementation of this module surrounds output text with proper ANSI escape codes recognized by terminal\nSince there are many different terminal applications, not all of them will support every standard ANSI escape code defined in the module, or will not suport ANSI escape codes at all\n\nThis module will try to recognize if terminal does not support ANSI Escape codes, or if user specified in any standardized way that terminal shouldn't accept them.\nIf one of the following environment variables exists, logger will strip any ANSI color codes from the output and behave as regular `print` function:\n* [NO_COLOR](https://no-color.org/)\n* ANSI_COLORS_DISABLED\n* TERM = \"dumb\"\n\nIf [FORCE_COLOR](https://force-color.org/) environment variable exists, logger will attempt colored output.\n\n### Exception Handling\n\n`ColorException` - Thrown by `fg_color` / `bg_color` / `fg_rgb` / `bg_rgb` if validation for provided input fails\n\n`TermConfigException` - Thrown by settings if provided configuration failed validation\n\n### `logging` integration\n\nThis module can work with Python `logging` module by exposing `TermStyleFormatter` class, and `basicConfig()` method.\n\nExample:\n```python\nimport logging\nfrom pytermstyle import basicConfig\n\nbasicConfig(level=logging.DEBUG)\n\nlogging.debug(\"Default debug styling\") \nlogging.info(\"Default info styling\")\nlogging.warning(\"Default warning styling\")\nlogging.error(\"Default error styling\")\n```\n\nIf you want to use colors for a specific instance of logger, use `TermStyleFormatter`, a provided subclass of `logging.Formatter`\n\nFor both methods of configuration, there is already defined styling for each logging level, if you wish to override default settings, you can provide custom settings object.\nSettings object behaves in a same way as [settings](https://github.com/SpotRusherZ/pytermstyle/blob/main/README.md#settings---persistent-styling), with addition being able to specify each level as a key:\n\n```python\nSETTINGS = {\n \"style\": [\"underline\", \"bold\"],\n \"foreground\": {\"color\": \"sky-blue\"},\n \"background\": {\"rgb\": [32, 87, 111]},\n}\n\nLOGGING_SETTINGS = {\n \"DEBUG\": SETTINGS,\n \"ERROR\": {\n **SETTINGS,\n \"background\": {\"color\": \"dark-red\"}\n }\n}\n\nbasicConfig(settings=LOGGING_SETTINGS)\n\nlogging.debug(\"Custom debug styling\") \nlogging.info(\"Default info styling\")\nlogging.warning(\"Default warning styling\")\nlogging.error(\"Custom error styling\")\n```\n\n`logging` module also provides formatting of log message, which `pytermstyle` expands with two additional attributes: `colorStart` & `colorEnd`, which can define part of the log message which will be styled:\n\n```python\n# Whole log message should be styled\n# Default formatting is: %(colorStart)s%(levelname)s:%(name)s:%(colorEnd)s%(message)s\nbasicConfig(format=\"%(colorStart)s%(levelname)s:%(name)s:%(message)s%(colorEnd)s\")\n\nlogging.debug(\"Custom debug format\") \nlogging.info(\"Custom info format\")\nlogging.warning(\"Custom warning format\")\nlogging.error(\"Custom error format\")\n```\n\n### Examples\n\nFor complete code examples visit: [examples](https://github.com/SpotRusherZ/pytermstyle/tree/main/examples) directory\n",
"bugtrack_url": null,
"license": "MIT License Copyright (c) 2024 Luka spotrz.official@gmail.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"summary": "ANSI color formatting for output in terminal",
"version": "1.0.0",
"project_urls": {
"Homepage": "https://github.com/SpotRusherZ/pytermstyle",
"Issues": "https://github.com/SpotRusherZ/pytermstyle/issues"
},
"split_keywords": [
"ansi",
" color",
" colored",
" colour",
" console",
" logging",
" terminal"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2815612bf98b8e7049d0149ee0ee9293533c80882f72f4e0b56f4b5d3bc39849",
"md5": "ae4fe1af1832f9a5dd7f99c5b31026ab",
"sha256": "f854c9698abdbb65a5617404a6144e8054d558765d53011aabac5711761bde8c"
},
"downloads": -1,
"filename": "pytermstyle-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ae4fe1af1832f9a5dd7f99c5b31026ab",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14554,
"upload_time": "2025-01-06T18:39:44",
"upload_time_iso_8601": "2025-01-06T18:39:44.660513Z",
"url": "https://files.pythonhosted.org/packages/28/15/612bf98b8e7049d0149ee0ee9293533c80882f72f4e0b56f4b5d3bc39849/pytermstyle-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7f7cc0925b1da1b2dd6894208d502ead41fe17727986c493301005a0337c31af",
"md5": "a505c6251a4d65ac9e8dd5ace4a99eee",
"sha256": "9ed17257142551e3cea49f0a788e23a22393d26c10f5bc96aacfecad0abd1a87"
},
"downloads": -1,
"filename": "pytermstyle-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "a505c6251a4d65ac9e8dd5ace4a99eee",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 18407,
"upload_time": "2025-01-06T18:39:47",
"upload_time_iso_8601": "2025-01-06T18:39:47.153875Z",
"url": "https://files.pythonhosted.org/packages/7f/7c/c0925b1da1b2dd6894208d502ead41fe17727986c493301005a0337c31af/pytermstyle-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-06 18:39:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "SpotRusherZ",
"github_project": "pytermstyle",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "pytermstyle"
}