Metadata-Version: 2.1
Name: constant-properties-protector
Version: 0.2.2
Summary: UNKNOWN
Home-page: https://github.com/BehzadShayegh/constant-properties-protector
Author: Behzad Shayegh
Author-email: behzad.shayegh@ut.ac.ir
License: UNKNOWN
Project-URL: Bug Tracker, https://github.com/BehzadShayegh/constant-properties-protector/issues
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE

# Constant Properties Protector Package

With the help of this module, you can protect some of the properties in a class. Protecting means avoiding to change them but keep them publicly available.

```python
from constant_properties_protector import CPP

class A:
    def __init__(self):
        CPP.protect(self, 'initialized_protected')
        CPP.protect(self, 'uninitialized_protected')
        self._initialized_protected = 12
        
a = A()
print(a.initialized_protected)
# >>> 12
a.t = 2
print(a.t)
# >>> 2
a.initialized_protected += 1
# Exception: Can not modify constant property: initialized_protected
a.uninitialized_protected = 10
# Exception: Can not modify constant property: uninitialized_protected

class B(A):
    def __init__(self):
        super().__init__()
        CPP.protect(self, 'new_protected_value')
        self._new_protected_value = 26

b = B()
print(b.new_protected_value)
# >>> 26
b.new_protected_value += 2
# Exception: Can not modify constant property: new_protected_value
```

NOTE: 

* There is no need to inherit from CPP.
* Use `_` first of the protected property name to get full access to it.
* Use `protect` function to add to protected properties.
* CPP will define python properties for your class. So it affects the class, not the instance. DON'T use CPP to protect property in runtime. Use it to define protected values for all instances of a class.

## Installation
```pip install constant-properties-protector```

