A minimalistic yet powerful object proxying utility
Project description
# ObjectProxy #
**A minimalistic yet powerful object proxying utility**
This readme attempts to explain the general use of this library.
### Installation ###
* Install from repository
```
pip install git+https://github.com/aviksama/objectproxy.git
```
* Install from pypi
```
pip install object-proxy
```
### Example ###
Object proxy basically creates a proxy for any python object:
```python
class MyClass(object):
def __init__(self, array=None):
self.array = array or []
def get_array_element(self, index):
try:
return self.array[index]
except IndexError:
return
def create_dictionary_of_objects(*args):
mydict = dict()
for index, arg in enumerate(args):
mydict[index] = arg
```
Now lets create proxies for the objects above in random fashion
```python
>>> from objectproxy import ProxyElement, eval_proxy
>>> class_proxy = ProxyElement(MyClass, args=[[1,2,3],], kwargs={})
>>> function_proxy = ProxyElement(create_dictionary_of_objects, args=[class_proxy], kwargs={})
>>> class_proxy_ref = function_proxy.values()[0]
>>> class_proxy_array_element = class_proxy_ref.get_array_element(0)
>>> eval_proxy(class_proxy_array_element)
1
```
until `eval_proxy` is called on the proxy object, It doesn't call the parent methods. Hence all the parent methods and attributes are lazily evaluated.
### Contribution guidelines ###
We appreciate your effort in contributing to this project. You can contribute in any of the following.
* Writing tests
* Code review
* Other guidelines
* Submit issues
In order to contribute please fork the repository, And make a GitHub pull request to `dev` branch.
### Who do I talk to? ###
* Repo owner or admin
* Other community or team contact
**A minimalistic yet powerful object proxying utility**
This readme attempts to explain the general use of this library.
### Installation ###
* Install from repository
```
pip install git+https://github.com/aviksama/objectproxy.git
```
* Install from pypi
```
pip install object-proxy
```
### Example ###
Object proxy basically creates a proxy for any python object:
```python
class MyClass(object):
def __init__(self, array=None):
self.array = array or []
def get_array_element(self, index):
try:
return self.array[index]
except IndexError:
return
def create_dictionary_of_objects(*args):
mydict = dict()
for index, arg in enumerate(args):
mydict[index] = arg
```
Now lets create proxies for the objects above in random fashion
```python
>>> from objectproxy import ProxyElement, eval_proxy
>>> class_proxy = ProxyElement(MyClass, args=[[1,2,3],], kwargs={})
>>> function_proxy = ProxyElement(create_dictionary_of_objects, args=[class_proxy], kwargs={})
>>> class_proxy_ref = function_proxy.values()[0]
>>> class_proxy_array_element = class_proxy_ref.get_array_element(0)
>>> eval_proxy(class_proxy_array_element)
1
```
until `eval_proxy` is called on the proxy object, It doesn't call the parent methods. Hence all the parent methods and attributes are lazily evaluated.
### Contribution guidelines ###
We appreciate your effort in contributing to this project. You can contribute in any of the following.
* Writing tests
* Code review
* Other guidelines
* Submit issues
In order to contribute please fork the repository, And make a GitHub pull request to `dev` branch.
### Who do I talk to? ###
* Repo owner or admin
* Other community or team contact
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
object-proxy-0.1a1.tar.gz
(2.7 kB
view details)
Built Distribution
File details
Details for the file object-proxy-0.1a1.tar.gz
.
File metadata
- Download URL: object-proxy-0.1a1.tar.gz
- Upload date:
- Size: 2.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfc49f465065fccbea05fcd4e0f63657b4a9c772ab1a48033da013e2311c3b42 |
|
MD5 | c073996e8f06b4ed56c8e148d98d6e45 |
|
BLAKE2b-256 | 9de24cbe5f5d6ada6db695dc4d3c07ba0b3a8435fff080c8444df6c573fcbaf5 |
File details
Details for the file object_proxy-0.1a1-py3-none-any.whl
.
File metadata
- Download URL: object_proxy-0.1a1-py3-none-any.whl
- Upload date:
- Size: 3.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e30ca453f3ce7f17135b988f86507aa6a2b6249e22e8825f25cbef11411bacf |
|
MD5 | d7879ed482138af3f7239e2b195ce5ae |
|
BLAKE2b-256 | 4665a80602070365ba1ea8d0c8156791bee039ffe11f99f674791da8334ce443 |