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 details)
Built Distribution
ez_life-1.0.1-py3-none-any.whl
(16.8 kB
view details)
File details
Details for the file ez-life-1.0.1.tar.gz
.
File metadata
- Download URL: ez-life-1.0.1.tar.gz
- Upload date:
- Size: 10.9 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 | 395f48e306dd7cef47db1c056d7ad94da548e1bfa64095a4555aa1b6ef460120 |
|
MD5 | 5b597990ad4caf6539abecf667a01172 |
|
BLAKE2b-256 | d0d70d95fd3fcc7e9c55cfc00deafe14a7bbe161a5257666452caa337fe81ba4 |
File details
Details for the file ez_life-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: ez_life-1.0.1-py3-none-any.whl
- Upload date:
- Size: 16.8 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 | c5e26e08e50de678fb90c0d5668a38d400dccf336aa861ea08f04dbd2fd37caf |
|
MD5 | 951cf9b4c8b2331740da98d0580203bb |
|
BLAKE2b-256 | 515686ba7cc0e5508db7ae708e2174ab8d78cf7e7bf0e9a3988b308670ebd9b5 |