Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mkrd/SuperPy
https://github.com/mkrd/SuperPy
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/mkrd/SuperPy
- Owner: mkrd
- License: mit
- Created: 2021-02-01T08:52:29.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2023-03-13T12:29:57.000Z (almost 2 years ago)
- Last Synced: 2024-05-22T17:30:55.183Z (8 months ago)
- Language: Python
- Size: 74.2 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SuperPy
[![Downloads](https://pepy.tech/badge/super-py)](https://pepy.tech/project/super-py)
[![Downloads](https://pepy.tech/badge/super-py/month)](https://pepy.tech/project/super-py)
[![Downloads](https://pepy.tech/badge/super-py/week)](https://pepy.tech/project/super-py)There are 5 sub modules:
- sp.logging
- sp.testing
- sp.concurrency
- sp.dicts
- sp.disk
- sp.string## sp.logging
SuperPy's logging system is a simple abstraction from the standard library logging module.
It also provides some nice extra functionalities.
Here are some examples:### Logging messages
``` python
import super_py as splog = sp.logging.Logger("info",
ts_color="bright_green",
terminal=True,
files=["info.log", "combined.log"],
)log("This is a simple log!")
```This will write the following log line to the terminal, and the files `info.log` and `comnined.log`:
```
[info ] 2022-10-04 15:53:09 This is a simple log!
```
where the name and timestamp will be colored in `bright_green`.### Logging function benchmarks
You can also use the provided decorator to log benchmarks of your functions:
``` python
import super_py as splog = sp.logging.Logger("benchmark",
ts_color="bright_green",
terminal=True,
)@log.benchmark(with_args=[0])
def wait(seconds):
time.sleep(seconds)for i in range(10):
wait(i / 10)
```This will write the following log lines:
```
[benchmark ] 2022-10-04 16:03:39 0.0ms wait((0.0))
[benchmark ] 2022-10-04 16:03:39 105.1ms wait((0.1))
[benchmark ] 2022-10-04 16:03:39 205.1ms wait((0.2))
[benchmark ] 2022-10-04 16:03:40 308.3ms wait((0.3))
[benchmark ] 2022-10-04 16:03:40 403.5ms wait((0.4))
[benchmark ] 2022-10-04 16:03:40 505.1ms wait((0.5))
[benchmark ] 2022-10-04 16:03:41 605.1ms wait((0.6))
[benchmark ] 2022-10-04 16:03:42 705.1ms wait((0.7))
[benchmark ] 2022-10-04 16:03:43 804.1ms wait((0.8))
[benchmark ] 2022-10-04 16:03:43 903.3ms wait((0.9))
```You can use benchmark without calling the decorator, it will still work:
``` python
@log.benchmark
def wait(seconds):
time.sleep(seconds)
```The benchmark decorator takes the following keyword arguments:
- `with_args: list[int]`: The list of indices of function arguments which should be logged.
- `with_kwargs: list[str]`: The list of keyword argument names of the function which should be logged.