Expand Python Super Capabilities
Project description
|build| |license| |code style| |coverage| |colab-badge|
Supercharge
This package allows you to automatically run code before and after a given class method. Furthermore, this behaviour can be enforced on child classes as well.
Supercharge is available via:
.. code-block::
pip install supercharge
Example
.. code-block:: py
from supercharge import Charge
class HelloWorld:
def __init__(self):
self.run_prepared = False
self.run_state = False
@Charge
def run(self):
if self.run_prepared:
print("running ...")
@run.enter
def pre_run(self):
self.run_prepared = True
@run.exit
def post_run(self):
self.run_state = True
If this is behaviour is desired in subclassed runs one must use the Base
class.
.. code-block:: py
from supercharge import Charge, Base
class HelloWorld(Base):
def __init__(self):
self.run_prepared = False
self.run_state = False
@Charge
def run(self):
raise NotImplementedError
@run.enter
def pre_run(self):
self.run_prepared = True
@run.exit
def post_run(self):
self.run_state = True
class Child(HelloWorld):
def run(self):
if self.run_prepared:
print("running ...")
Noticeable Alternatives
Using supercharge might not always be the best way to go. In many scenarios an easier way to achieve a similar functionality can be
.. code-block:: py
class HelloWorld:
def __init__(self):
self.run_prepared = False
self.run_state = False
def run(self):
self.pre_run()
self.base_run()
self.post_run()
def base_run(self):
raise NotImplementedError
def pre_run(self):
self.run_prepared = True
def post_run(self):
self.run_state = True
class Child(HelloWorld):
def base_run(self):
if self.run_prepared:
print("running ...")
where you call Child.run()
and overwrite Child.base_run()
.
.. badges
.. |build| image:: https://github.com/zincware/supercharge/actions/workflows/pytest.yaml/badge.svg :alt: Build tests passing :target: https://github.com/zincware/py-test/blob/readme_badges/
.. |license| image:: https://img.shields.io/badge/License-EPL-purple.svg?style=flat :alt: Project license :target: https://www.eclipse.org/legal/epl-2.0/faq.php
.. |code style| image:: https://img.shields.io/badge/code%20style-black-black :alt: Code style: black :target: https://github.com/psf/black/
.. |coverage| image:: https://coveralls.io/repos/github/zincware/supercharge/badge.svg :alt: Code coverage :target: https://coveralls.io/github/zincware/supercharge
.. |colab-badge| image:: https://colab.research.google.com/assets/colab-badge.svg :alt: Open Example in Google Colab :target: https://colab.research.google.com/github/zincware/supercharge/blob/main/examples/introduction.ipynb
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file supercharge-0.1.0.tar.gz
.
File metadata
- Download URL: supercharge-0.1.0.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c68dec077d293b0fe2ad54734c8393fc761f2251b7fc9ef2ea0f200e2268d8af |
|
MD5 | 43b96b9ac500ce29b1982e58b0f98fd8 |
|
BLAKE2b-256 | 3398210d22c1eda71e154ff8f7d0cdf86f2fc555149700d288401bbc998169c8 |
File details
Details for the file supercharge-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: supercharge-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d9d9c6afce7387ebcaceb95fa60923133b8e38142ff874f39058249a033ca0b |
|
MD5 | 1f971a900c5d232528ec5fa83d0c88fa |
|
BLAKE2b-256 | 16265f663d4fec5b7b70cb84c2c296ba9fd3bdab900d9b034dc63d8458d79512 |