Tool to make drilling into Python objects easy & painless
Project description
Safe Access
==============
Tired of always checking hasattr, len, or if a key is in a dictionary? safe_access allows
you to safely drill down multiple levels into any python object without having to worry about
AttributeErrors, KeyErrors, or IndexErrors. Oh, and it supports wildcards.
*Available on pypi*: https://pypi.python.org/pypi/safe_access
python
from safe_access import safe_access
class A(object):
pass
a = A()
a.b = {"abc": ['x', 'y', 'z'], "def": [1, 2, 3]}
# Access valid path
print safe_access(a, 'a.b["abc"][1]', default_value=7)
# returns 'y'
# Access valid path with variable substitution
myvar = 1
print safe_access(a, 'a.b["abc"][myvar]', default_value=7, myvar=myvar)
# returns 'y'
# Access that causes index out of range, but returns default value of 7
print safe_access(a, 'a.b["abc"][404]', default_value=7)
# returns 7
# Access non-existant attribute
print safe_access(a, 'a.bad_attribute')
# returns None
# Access wildcard
print safe_access(a, 'a.b[*][0]')
# returns ['x', 1]
Limitations:
\1. Does not support function calls at this time
\2. Does not support escaped quotations
\3. Does not support variable references withing tuple literals
==============
Tired of always checking hasattr, len, or if a key is in a dictionary? safe_access allows
you to safely drill down multiple levels into any python object without having to worry about
AttributeErrors, KeyErrors, or IndexErrors. Oh, and it supports wildcards.
*Available on pypi*: https://pypi.python.org/pypi/safe_access
python
from safe_access import safe_access
class A(object):
pass
a = A()
a.b = {"abc": ['x', 'y', 'z'], "def": [1, 2, 3]}
# Access valid path
print safe_access(a, 'a.b["abc"][1]', default_value=7)
# returns 'y'
# Access valid path with variable substitution
myvar = 1
print safe_access(a, 'a.b["abc"][myvar]', default_value=7, myvar=myvar)
# returns 'y'
# Access that causes index out of range, but returns default value of 7
print safe_access(a, 'a.b["abc"][404]', default_value=7)
# returns 7
# Access non-existant attribute
print safe_access(a, 'a.bad_attribute')
# returns None
# Access wildcard
print safe_access(a, 'a.b[*][0]')
# returns ['x', 1]
Limitations:
\1. Does not support function calls at this time
\2. Does not support escaped quotations
\3. Does not support variable references withing tuple literals
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
safe_access-1.1.tar.gz
(9.4 kB
view details)
Built Distributions
safe_access-1.1-py2.7.egg
(5.5 kB
view details)
File details
Details for the file safe_access-1.1.tar.gz
.
File metadata
- Download URL: safe_access-1.1.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b2cac1dbec8844998e5208416140bb4b8b910628033b9f025eb28bdca2e3465 |
|
MD5 | cc571c11b621ae5ab1d4b2fa9dae588b |
|
BLAKE2b-256 | 5a96c5013d08c413205e26bcd37e68da43938d7b798ddbf7f6ada7b0e47467c3 |
File details
Details for the file safe_access-1.1.macosx-10.10-intel.tar.gz
.
File metadata
- Download URL: safe_access-1.1.macosx-10.10-intel.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00be74f31ab945f0677ef18b3afed982d4926468a9412e0d7364343af8798261 |
|
MD5 | f07d751587fa5ddf92e1a103f09a665a |
|
BLAKE2b-256 | 993b2ec3bd0abc30b50a4a2d4095f7b2d9957b1986ce6aa892f96c7a2557c885 |
File details
Details for the file safe_access-1.1-py2.7.egg
.
File metadata
- Download URL: safe_access-1.1-py2.7.egg
- Upload date:
- Size: 5.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 319576ba408ccda8cd80bd88a598ea13a2fc28e9dfe2a4db50f6c0ea79639e06 |
|
MD5 | 7be840f8e9e7c98780b1a37e8adb71db |
|
BLAKE2b-256 | ae4d350c01be2034fb59414ee61a44b29a3e0aed62aaa729533f1628888aa94b |