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.1.tar.gz
(10.9 kB
view hashes)
Built Distribution
ez_life-1.0.1-py3-none-any.whl
(16.8 kB
view hashes)