A Python Package to make life ez for pythonistas
Project description
ez_life
The objective of ez_life is to make coding with Python easier by removing repetitive code while still maintaining the same level of functionality
param2attr
- Here is a little sneak peak of what you can do with this package!
- First consider this code block:
from ez_life import Param2attr
class Foo:
def __init__(self, param1 = None, param2 = None, param3 = None):
# This sux
self.param1 = param1
self.param2 = param2
self.param3 = param3
- We can instead create a class that looks like this, using a property decorator to perform the param to attribute assignments
class Foo:
@Param2attr(exclude=None)
def __init__(self, param1 = None, param2 = None, param3 = None):
# this good, allows u to write other code here during initialization
pass
- If you are interested to learn about the implementation or other features that param2attr supports, feel free to read the documentation
JTProperty
-
Ez_life can also manage variable dependencies, building upon the @property decorator!
-
First here's some code with the classic @property decorator:
class SetAndGet:
def __init__(self, r = 1):
# initialise the protected variable
self._radius = None
# calls the @radius.setter method
self.radius = r
@property
def radius(self):
if self._radius is None:
self.radius = 2
return self._radius
@radius.setter
def radius(self, r):
if r <= 0:
raise ValueError("radius should be greater than 0")
self._radius = r
- Using the @JTProperty decorator, we can see that we can abstract away the self._radius variable and hence write less code!
class JTSetAndGet:
def __init__(self, r = 1):
self.radius = r
@JTProperty(setter = True)
def radius(self):
return 2
@radius.setter
def radius(self, r):
if r <= 0:
raise ValueError("radius should be greater than 0")
return r
- JTProperty also supports a variety of other features including:
- Automatic setter creation
- Graph Dependencies
- Support for inheritence
- Read the documentation here to learn about these features!
ez_life directory layout:
- ez_life: the package containing all .ipynb dev files and converted .py files
- param2attr.ipynb: dev notebook for automation of parameter creation to class object attributes
- param2attr.py: param2attr.ipynb -> param2attr.py via Makefile
- jt_property.ipynb: dev notebook for more writing dependency related code
- jt_property.py: jt_property.ipynb -> jt_property.py via Makefile
- .gitignore: for ignoring files when pushing and pulling
- LICENSE: what u can and can't do with this repo
- MAKEFILE: automated test cases and .ipynb to .py conversion
- README: this file essentially
- test*.py: test files for modules within ez_life
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ez-life-1.0.0.tar.gz
(9.8 kB
view details)
Built Distribution
ez_life-1.0.0-py3-none-any.whl
(10.1 kB
view details)
File details
Details for the file ez-life-1.0.0.tar.gz
.
File metadata
- Download URL: ez-life-1.0.0.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64c27a8b69462256ec58553bf0f960ca25cfab96588e396c681811263e1f5ecd |
|
MD5 | 34ef76b2c4c774ebf542cca7c3c5f8f4 |
|
BLAKE2b-256 | 80c5a678dc7b1e8d550a1bf5c565e7b4af0000dc2fcd8f16c62ae73698d4e92a |
File details
Details for the file ez_life-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: ez_life-1.0.0-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0da26ae61b16dbf258728ba2ee80a47679ecd7425d143c981ec6e34826cafa29 |
|
MD5 | df2c6a901bfbdeae8dd4c78a706299c9 |
|
BLAKE2b-256 | e0a5c8db3efe8f6563709360ddde8bf22e458a97275d6680402e1deacc54877c |