Metadata-Version: 2.1
Name: protecc
Version: 0.0.1
Summary: Access modifiers for python
Home-page: https://github.com/avinashshenoy97/protecc
Author: Avinash Shenoy
Author-email: avi123shenoy@gmail.com
License: UNKNOWN
Description: # protecc
        Access modifiers for python.
        
        
        ## Setup
        
        #### PIP install [WIP]
        
        ```bash
        pip install protecc
        ```
        
        #### From the source [WIP]
        
        ```bash
        git clone https://github.com/avinashshenoy97/protecc
        cd protecc
        python setup.py install
        ```
        
        ## Usage
        
        ### Old-Style Classes
        Inherit from/extend the `protecc` class.
        
        ```python
        from protecc import protecc
        
        class regulatedClass(protecc):
            def __init__(self):
                self.publicVariable = 'public value'
                self._privateVariable = 'private value'
        
            def publicMethod(self):
                return True
        
            def __privateMethod(self):
                return True
        
            def getPrivateVariable(self):
                return self._privateVariable
        
            def privateMethodProxy(self):
                return self.__privateMethod()
        ```
        
        ### New-Style Classes (type)
         
        If you prefer metaclass (for better readability/what not), use `metaProtecc`.
        
        ```python
        class metaRegulatedClass(metaclass=metaProtecc):
            def __init__(self):
                self.publicVariable = 'public value'
                self._privateVariable = 'private value'
        
            def publicMethod(self):
                return True
        
            def __privateMethod(self):
                return True
        
            def getPrivateVariable(self):
                return self._privateVariable
        
            def privateMethodProxy(self):
                return self.__privateMethod()
        ```
        
        When accessing "private" methods (i.e, methods that begin with either a single or two underscores), this exception is raised
        
        ```python
        >>> r = regulatedClass()
        >>> r.__privateMethod()
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "/Users/avinashshenoy/STUFF/projects/protecc/protecc.py", line 23, in __protecced_getattribute__
            raise AccessException('Cannot access ' + varType + ' member ' + name) from None
        protecc.AccessException: Cannot access private member __privateMethod
        ```
        
        Private methods can still be accessed from within other class methods, as is expected:
        
        ```python
        >>> r = regulatedClass()
        >>> r.privateMethodProxy()
        True
        ```
        
        ### Note
        
        - This is, by no means, fool-proof access protection.
        - "Private members" are those members whose names are mangled by Python, as per PEP 8 conventions, i.e, starting with 2 underscores and having not more than one trailing underscore.
        - Additionally, "protected members" are those members whose names are preceded by a single underscores. These members cannot be accessed from outside the class as well, as is expected.
        
        ## Primary Contributors
        
        | | |
        |:-:|:-:|
        |<img src="https://github.com/avinashshenoy97.png" width="48">  | [Avinash Shenoy](https://github.com/avinashshenoy97) |
        
        #### License
        
        This project is released under the [MIT License](https://github.com/avinashshenoy97/protecc/blob/master/LICENSE).
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
