Metadata-Version: 2.1
Name: ez-life
Version: 1.0.2
Summary: A Python Package to make life ez for pythonistas
Home-page: https://github.com/Josiah-tan/ez_life
Author: Josiah Tan
Author-email: josiah123t@gmail.com
License: MIT
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
        
        # Installation
        ```
        pip install -U ez_life
        ```
        # param2attr
        - Here is a little sneak peak of what you can do with this package!
        	- First consider this code block:
        
        
        ```python
        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 
        
        ```python
        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](https://colab.research.google.com/drive/1PStbTEDiuXgjIKrMOcJAbY9NOg23w9TK?usp=sharing)
        
        # JTProperty
        - Ez_life can also manage variable dependencies, building upon the @property decorator!
        
        - First here's some code with the classic @property decorator:
        
        ```python
        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!
        
        ```python
        from ez_life import JTProperty
        
        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](https://colab.research.google.com/drive/1yt7lT1H9xhXY7OVo7DGaW-APm-qHWOpR?usp=sharing) 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
        
        
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Description-Content-Type: text/markdown
