Name | yacl JSON |
Version |
0.6.0
JSON |
| download |
home_page | None |
Summary | YACL (Yet Another Color Logger) is a simple to use color logger for Python programs. |
upload_time | 2024-11-22 12:13:44 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | Copyright 2019 Forschungszentrum Jülich GmbH 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 |
utility
logging
color
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# YACL - Yet Another Color Logger
## Overview
YACL is a very simple to use color logger for Python intended to be used for stderr logging. It can be set up with a
single function call in existing projects and enables colored logging output with reasonable defaults. Colors are
disabled automatically if stderr is not connected to a tty (e.g. on file redirection) or if not supported by the
connected terminal. Currently, Linux and macOS are supported.
You can use Markdown style formattings to produce bold and italic text. Additionally, text enclosed in double
underscores will be displayed underlined. YACL checks the terminal capabilities and automatically disables unsupported
formats.
Additionally, YACL can enable a custom global except hook to colorize Python exceptions tracebacks and automatically
start PDB in post mortem mode (so you don't need to run your script with `python -m pdb` explicitly).
## Breaking changes
- From version 0.5.x to 0.6:
- The function `setup_colored_exceptions` is now always available, regardless if Pygments is installed or not.
However, it will raise an `ImportError` is Pygments cannot be imported.
- From version 0.4.x to 0.5:
- Color codes are now applied **after** the logger created the final logging string with all placeholders replaced.
Example:
```python
item_count = 3
logger.info("Found %d items.", item_count)
```
Before version 0.5, color codes were applied to the string `"Found %d items"`. Now, color codes are added to the
final string `"Found 3 items"`. This requires the library user to rework custom `keyword_colors` dictionaries but is
more flexible for applying color rules.
## Installation
YACL is available on PyPI for Python 3.9+ and can be installed with `pip`:
```bash
python3 -m pip install yacl
```
If you use Arch Linux or one of its derivatives, you can also install `yacl` from the
[AUR](https://aur.archlinux.org/packages/python-yacl/):
```bash
yay -S python-yacl
```
## Usage
### Simple
Call ``setup_colored_stderr_logging`` after the root logger has been set up, for example:
```python
#!/usr/bin/env python3
import logging
from yacl import setup_colored_stderr_logging
def main():
logging.basicConfig(level=logging.DEBUG)
setup_colored_stderr_logging()
if __name__ == "__main__":
main()
```
Afterwards, get module level loggers and use them without any further configuration:
```python
import logging
logger = logging.getLogger(__name__)
def my_func():
logger.debug('Failed to open file "abc"')
```
You will get an output like:
![screenshot_simple](https://raw.githubusercontent.com/IngoMeyer441/yacl/master/simple.png)
This example only works if you don't attach any output handlers to loggers other than the root logger as recommended in
the [Python logging documentation](https://docs.python.org/3/library/logging.html):
> If you attach a handler to a logger and one or more of its ancestors, it may emit the same record multiple times. In
> general, you should not need to attach a handler to more than one logger - if you just attach it to the appropriate
> logger which is highest in the logger hierarchy, then it will see all events logged by all descendant loggers,
> provided that their propagate setting is left set to True. A common scenario is to attach handlers only to the root
> logger, and to let propagation take care of the rest.
### Customization
You can pass several arguments to the `setup_colored_stderr_logging` function to customize the logging behavior:
- `logger`: The logger which will be configured to print colored logging output to stderr. By default, the root logger
is used.
- `format_string`: The format string to use for logging messages. By default the logging format
`[%(levelname)s] (%(name)s:%(lineno)s:%(funcName)s): %(message)s` is used.
**Important**: All formats must be passed as **string types**. For example, in the default format, ``lineno`` is given
as string (`(%lineno)s`) and not as number (`(%lineno)d`).
- `remove_other_handlers`: Bool flag to remove all other output handlers on the given logger. Is set to `true` by
default to avoid duplicate logging messages.
- `attribute_colors`: A dictionary which assigns colors to logging attributes (which are used in the logging format
string). This dictionary is merged with the internal defaults:
```python
from yacl import TerminalColorCodes
_attribute_colors = {
"funcName": TerminalColorCodes.blue,
"lineno": TerminalColorCodes.yellow,
"name": TerminalColorCodes.cyan,
}
```
- `keyword_colors`: A dictionary which assigns colors to a given regular expressions. This setting can be used to
highlight expressions in the logging messages. This dictionary is merged with the internal defaults:
```python
from yacl import TerminalColorCodes
keyword_colors = {
r"\bcritical( error)?\b": TerminalColorCodes.red + TerminalColorCodes.blink + TerminalColorCodes.bold,
r"\bdebug(ged|ging)?\b": TerminalColorCodes.green + TerminalColorCodes.bold,
r"\berror\b": TerminalColorCodes.red + TerminalColorCodes.bold,
r"\bfail(ed|ing)?\b": TerminalColorCodes.red + TerminalColorCodes.bold,
r"\binfo\b": TerminalColorCodes.blue + TerminalColorCodes.bold,
r"\bwarn(ed|ing)?\b": TerminalColorCodes.yellow + TerminalColorCodes.bold,
r'"[^"]*"': TerminalColorCodes.yellow,
r"\*([^*]+)\*": TerminalColorCodes.italics,
r"\*\*([^*]+)\*\*": TerminalColorCodes.bold,
r"__([^_]+)__": TerminalColorCodes.underline,
r"`([^`]+)`": TerminalColorCodes.standout,
}
```
Example: Pass a dictionary
```python
{
r"'[^']*'": TerminalColorCodes.green + TerminalColorCodes.italics,
}
```
to highlight strings in single quotes with green color and italic font (if supported by the Terminal).
- `level_colors`: A dictionary which assigns colors to logging levels (DEBUG, INFO, ...). This dictionary is merged with
the internal defaults:
```python
from yacl import TerminalColorCodes
level_colors = {
"DEBUG": TerminalColorCodes.green + TerminalColorCodes.bold,
"INFO": TerminalColorCodes.blue + TerminalColorCodes.bold,
"WARNING": TerminalColorCodes.yellow + TerminalColorCodes.bold,
"ERROR": TerminalColorCodes.red + TerminalColorCodes.bold,
"CRITICAL": TerminalColorCodes.red + TerminalColorCodes.blink + TerminalColorCodes.bold,
}
```
### Colored Exceptions
If [Pygments](https://pypi.org/project/Pygments/) is installed, YACL can generate colored exception tracebacks. You can
force to install Pygments as a YACL dependency with the `colored_exceptions` extra:
```bash
python3 -m pip install 'yacl[colored_exceptions]'
```
The function `setup_colored_exceptions` needs to be called once (for example after `setup_colored_stderr_logging`) to
install a custom [Python excepthook](https://docs.python.org/3/library/sys.html#sys.excepthook). It takes an optional
bool parameter `dark_background` which can be set to `True` to activate brighter colors on dark terminal backgrounds. A
full example is:
```python
#!/usr/bin/env python3
import logging
from yacl import setup_colored_exceptions, setup_colored_stderr_logging
def main():
logging.basicConfig(level=logging.DEBUG)
setup_colored_stderr_logging()
setup_colored_exceptions()
if __name__ == "__main__":
main()
```
Set the environment variable `YACL_ENABLE_COLORED_EXCEPTIONS` to `1` to always enable colored exceptions on `yacl`
import. With this activation mode, `YACL_DARK_BACKGROUND` can be used to control the color scheme.
**Note:** Starting from Python 3.13, Python has [built-in support for colored exception
tracebacks](https://docs.python.org/3/whatsnew/3.13.html#improved-error-messages). Running `setup_colored_exceptions` on
Python 3.13 or newer has no effect.
### PDB post mortem hook
Run `setup_pdb_debugging` to install a PDB post mortem hook. If your program crashes and is run in a terminal window,
you will be dropped into the PDB shell. This allows you to analyze the program state which led to the crash.
Set the environment variable `YACL_ENABLE_PDB` to `1` to always enable PDB post mortem debugging on `yacl` import.
### Enable colored exceptions and PDB post mortem mode without source code modification
If you would like to use YACL's colored exceptions and / or PDB post mortem debugging without adding it to your
project's source code, you can add it to the startup script of your virtual environment. For this, define an
`enable-yacl` function in your shell's startup file (`~/.bashrc` or `~/.zshrc`):
```bash
enable-yacl () {
local site_packages_directory
if [[ -z "${VIRTUAL_ENV}" ]]; then
>&2 echo "Please activate a virtual environment first."
return 1
fi
pip install 'yacl[colored_exceptions]' 'git+https://github.com/pdbpp/pdbpp.git' && \
site_packages_directory="$(python -c 'import site; print(site.getsitepackages()[0])')" && \
echo 'import yacl' >"${site_packages_directory}/sitecustomize.py"
}
```
Run `enable-yacl` to install YACL and [pdb++](https://github.com/pdbpp/pdbpp) into the currently activated virtual
environment and load `yacl` on interpreter startup. Now, you can use the environment variables
`YACL_ENABLE_COLORED_EXCEPTIONS` and `YACL_ENABLE_PDB` (see the explanations in the previous sections) to control the
behavior of YACL.
## Contributing
Please open [an issue on GitHub](https://github.com/IngoMeyer441/yacl/issues/new) if you experience bugs or miss
features. Please consider to send a pull request if you can spend time on fixing the issue yourself. This project uses
[pre-commit](https://pre-commit.com) to ensure code quality and a consistent code style. Run
```bash
make git-hooks-install
```
to install all linters as Git hooks in your local clone of `yacl`.
Raw data
{
"_id": null,
"home_page": null,
"name": "yacl",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "Ingo Meyer <i.meyer@fz-juelich.de>",
"keywords": "utility, logging, color",
"author": null,
"author_email": "Ingo Meyer <i.meyer@fz-juelich.de>",
"download_url": "https://files.pythonhosted.org/packages/46/b3/86ade40feed43f4c045b698083165dc81946511981e97c680f68e8bba80b/yacl-0.6.0.tar.gz",
"platform": null,
"description": "# YACL - Yet Another Color Logger\n\n## Overview\n\nYACL is a very simple to use color logger for Python intended to be used for stderr logging. It can be set up with a\nsingle function call in existing projects and enables colored logging output with reasonable defaults. Colors are\ndisabled automatically if stderr is not connected to a tty (e.g. on file redirection) or if not supported by the\nconnected terminal. Currently, Linux and macOS are supported.\n\nYou can use Markdown style formattings to produce bold and italic text. Additionally, text enclosed in double\nunderscores will be displayed underlined. YACL checks the terminal capabilities and automatically disables unsupported\nformats.\n\nAdditionally, YACL can enable a custom global except hook to colorize Python exceptions tracebacks and automatically\nstart PDB in post mortem mode (so you don't need to run your script with `python -m pdb` explicitly).\n\n## Breaking changes\n\n- From version 0.5.x to 0.6:\n\n - The function `setup_colored_exceptions` is now always available, regardless if Pygments is installed or not.\n However, it will raise an `ImportError` is Pygments cannot be imported.\n\n- From version 0.4.x to 0.5:\n\n - Color codes are now applied **after** the logger created the final logging string with all placeholders replaced.\n\n Example:\n\n ```python\n item_count = 3\n logger.info(\"Found %d items.\", item_count)\n ```\n\n Before version 0.5, color codes were applied to the string `\"Found %d items\"`. Now, color codes are added to the\n final string `\"Found 3 items\"`. This requires the library user to rework custom `keyword_colors` dictionaries but is\n more flexible for applying color rules.\n\n## Installation\n\nYACL is available on PyPI for Python 3.9+ and can be installed with `pip`:\n\n```bash\npython3 -m pip install yacl\n```\n\nIf you use Arch Linux or one of its derivatives, you can also install `yacl` from the\n[AUR](https://aur.archlinux.org/packages/python-yacl/):\n\n```bash\nyay -S python-yacl\n```\n\n## Usage\n\n### Simple\n\nCall ``setup_colored_stderr_logging`` after the root logger has been set up, for example:\n\n```python\n#!/usr/bin/env python3\n\nimport logging\nfrom yacl import setup_colored_stderr_logging\n\n\ndef main():\n logging.basicConfig(level=logging.DEBUG)\n setup_colored_stderr_logging()\n\n\nif __name__ == \"__main__\":\n main()\n```\n\nAfterwards, get module level loggers and use them without any further configuration:\n\n```python\nimport logging\n\n\nlogger = logging.getLogger(__name__)\n\n\ndef my_func():\n logger.debug('Failed to open file \"abc\"')\n```\n\nYou will get an output like:\n\n![screenshot_simple](https://raw.githubusercontent.com/IngoMeyer441/yacl/master/simple.png)\n\nThis example only works if you don't attach any output handlers to loggers other than the root logger as recommended in\nthe [Python logging documentation](https://docs.python.org/3/library/logging.html):\n\n> If you attach a handler to a logger and one or more of its ancestors, it may emit the same record multiple times. In\n> general, you should not need to attach a handler to more than one logger - if you just attach it to the appropriate\n> logger which is highest in the logger hierarchy, then it will see all events logged by all descendant loggers,\n> provided that their propagate setting is left set to True. A common scenario is to attach handlers only to the root\n> logger, and to let propagation take care of the rest.\n\n### Customization\n\nYou can pass several arguments to the `setup_colored_stderr_logging` function to customize the logging behavior:\n\n- `logger`: The logger which will be configured to print colored logging output to stderr. By default, the root logger\n is used.\n\n- `format_string`: The format string to use for logging messages. By default the logging format\n `[%(levelname)s] (%(name)s:%(lineno)s:%(funcName)s): %(message)s` is used.\n\n **Important**: All formats must be passed as **string types**. For example, in the default format, ``lineno`` is given\n as string (`(%lineno)s`) and not as number (`(%lineno)d`).\n\n- `remove_other_handlers`: Bool flag to remove all other output handlers on the given logger. Is set to `true` by\n default to avoid duplicate logging messages.\n\n- `attribute_colors`: A dictionary which assigns colors to logging attributes (which are used in the logging format\n string). This dictionary is merged with the internal defaults:\n\n ```python\n from yacl import TerminalColorCodes\n\n _attribute_colors = {\n \"funcName\": TerminalColorCodes.blue,\n \"lineno\": TerminalColorCodes.yellow,\n \"name\": TerminalColorCodes.cyan,\n }\n ```\n\n- `keyword_colors`: A dictionary which assigns colors to a given regular expressions. This setting can be used to\n highlight expressions in the logging messages. This dictionary is merged with the internal defaults:\n\n ```python\n from yacl import TerminalColorCodes\n\n keyword_colors = {\n r\"\\bcritical( error)?\\b\": TerminalColorCodes.red + TerminalColorCodes.blink + TerminalColorCodes.bold,\n r\"\\bdebug(ged|ging)?\\b\": TerminalColorCodes.green + TerminalColorCodes.bold,\n r\"\\berror\\b\": TerminalColorCodes.red + TerminalColorCodes.bold,\n r\"\\bfail(ed|ing)?\\b\": TerminalColorCodes.red + TerminalColorCodes.bold,\n r\"\\binfo\\b\": TerminalColorCodes.blue + TerminalColorCodes.bold,\n r\"\\bwarn(ed|ing)?\\b\": TerminalColorCodes.yellow + TerminalColorCodes.bold,\n r'\"[^\"]*\"': TerminalColorCodes.yellow,\n r\"\\*([^*]+)\\*\": TerminalColorCodes.italics,\n r\"\\*\\*([^*]+)\\*\\*\": TerminalColorCodes.bold,\n r\"__([^_]+)__\": TerminalColorCodes.underline,\n r\"`([^`]+)`\": TerminalColorCodes.standout,\n }\n ```\n\n Example: Pass a dictionary\n\n ```python\n {\n r\"'[^']*'\": TerminalColorCodes.green + TerminalColorCodes.italics,\n }\n ```\n\n to highlight strings in single quotes with green color and italic font (if supported by the Terminal).\n\n- `level_colors`: A dictionary which assigns colors to logging levels (DEBUG, INFO, ...). This dictionary is merged with\n the internal defaults:\n\n ```python\n from yacl import TerminalColorCodes\n\n level_colors = {\n \"DEBUG\": TerminalColorCodes.green + TerminalColorCodes.bold,\n \"INFO\": TerminalColorCodes.blue + TerminalColorCodes.bold,\n \"WARNING\": TerminalColorCodes.yellow + TerminalColorCodes.bold,\n \"ERROR\": TerminalColorCodes.red + TerminalColorCodes.bold,\n \"CRITICAL\": TerminalColorCodes.red + TerminalColorCodes.blink + TerminalColorCodes.bold,\n }\n ```\n\n### Colored Exceptions\n\nIf [Pygments](https://pypi.org/project/Pygments/) is installed, YACL can generate colored exception tracebacks. You can\nforce to install Pygments as a YACL dependency with the `colored_exceptions` extra:\n\n```bash\npython3 -m pip install 'yacl[colored_exceptions]'\n```\n\nThe function `setup_colored_exceptions` needs to be called once (for example after `setup_colored_stderr_logging`) to\ninstall a custom [Python excepthook](https://docs.python.org/3/library/sys.html#sys.excepthook). It takes an optional\nbool parameter `dark_background` which can be set to `True` to activate brighter colors on dark terminal backgrounds. A\nfull example is:\n\n```python\n#!/usr/bin/env python3\n\nimport logging\nfrom yacl import setup_colored_exceptions, setup_colored_stderr_logging\n\n\ndef main():\n logging.basicConfig(level=logging.DEBUG)\n setup_colored_stderr_logging()\n setup_colored_exceptions()\n\n\nif __name__ == \"__main__\":\n main()\n```\n\nSet the environment variable `YACL_ENABLE_COLORED_EXCEPTIONS` to `1` to always enable colored exceptions on `yacl`\nimport. With this activation mode, `YACL_DARK_BACKGROUND` can be used to control the color scheme.\n\n**Note:** Starting from Python 3.13, Python has [built-in support for colored exception\ntracebacks](https://docs.python.org/3/whatsnew/3.13.html#improved-error-messages). Running `setup_colored_exceptions` on\nPython 3.13 or newer has no effect.\n\n### PDB post mortem hook\n\nRun `setup_pdb_debugging` to install a PDB post mortem hook. If your program crashes and is run in a terminal window,\nyou will be dropped into the PDB shell. This allows you to analyze the program state which led to the crash.\n\nSet the environment variable `YACL_ENABLE_PDB` to `1` to always enable PDB post mortem debugging on `yacl` import.\n\n### Enable colored exceptions and PDB post mortem mode without source code modification\n\nIf you would like to use YACL's colored exceptions and / or PDB post mortem debugging without adding it to your\nproject's source code, you can add it to the startup script of your virtual environment. For this, define an\n`enable-yacl` function in your shell's startup file (`~/.bashrc` or `~/.zshrc`):\n\n```bash\nenable-yacl () {\n local site_packages_directory\n\n if [[ -z \"${VIRTUAL_ENV}\" ]]; then\n >&2 echo \"Please activate a virtual environment first.\"\n return 1\n fi\n\n pip install 'yacl[colored_exceptions]' 'git+https://github.com/pdbpp/pdbpp.git' && \\\n site_packages_directory=\"$(python -c 'import site; print(site.getsitepackages()[0])')\" && \\\n echo 'import yacl' >\"${site_packages_directory}/sitecustomize.py\"\n}\n```\n\nRun `enable-yacl` to install YACL and [pdb++](https://github.com/pdbpp/pdbpp) into the currently activated virtual\nenvironment and load `yacl` on interpreter startup. Now, you can use the environment variables\n`YACL_ENABLE_COLORED_EXCEPTIONS` and `YACL_ENABLE_PDB` (see the explanations in the previous sections) to control the\nbehavior of YACL.\n\n## Contributing\n\nPlease open [an issue on GitHub](https://github.com/IngoMeyer441/yacl/issues/new) if you experience bugs or miss\nfeatures. Please consider to send a pull request if you can spend time on fixing the issue yourself. This project uses\n[pre-commit](https://pre-commit.com) to ensure code quality and a consistent code style. Run\n\n```bash\nmake git-hooks-install\n```\n\nto install all linters as Git hooks in your local clone of `yacl`.\n",
"bugtrack_url": null,
"license": "Copyright 2019 Forschungszentrum J\u00fclich GmbH 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": "YACL (Yet Another Color Logger) is a simple to use color logger for Python programs.",
"version": "0.6.0",
"project_urls": {
"Homepage": "https://github.com/IngoMeyer441/yacl"
},
"split_keywords": [
"utility",
" logging",
" color"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "60f595a6766eed7090c28bf1a24b4a5d7e8a4ed3b616219d4058f3c8134f578a",
"md5": "74aec07e7e3abf6adbecd43bf6770980",
"sha256": "5e4f76219b1fd770d5de1e25e28c857af358a6e340f74d7ef0573866a699264a"
},
"downloads": -1,
"filename": "yacl-0.6.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "74aec07e7e3abf6adbecd43bf6770980",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 10292,
"upload_time": "2024-11-22T12:13:41",
"upload_time_iso_8601": "2024-11-22T12:13:41.620816Z",
"url": "https://files.pythonhosted.org/packages/60/f5/95a6766eed7090c28bf1a24b4a5d7e8a4ed3b616219d4058f3c8134f578a/yacl-0.6.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "46b386ade40feed43f4c045b698083165dc81946511981e97c680f68e8bba80b",
"md5": "940dd5931ec2efdbeb798ad5ad648166",
"sha256": "dd63bce1ebc68befdb03dfaf472e081e791bdcf824540ef1a97ef2fc294033d1"
},
"downloads": -1,
"filename": "yacl-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "940dd5931ec2efdbeb798ad5ad648166",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 10465,
"upload_time": "2024-11-22T12:13:44",
"upload_time_iso_8601": "2024-11-22T12:13:44.120523Z",
"url": "https://files.pythonhosted.org/packages/46/b3/86ade40feed43f4c045b698083165dc81946511981e97c680f68e8bba80b/yacl-0.6.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-22 12:13:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "IngoMeyer441",
"github_project": "yacl",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "yacl"
}