New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IPython tab-completion populates the Dict with a few unwanted fields #26
Comments
This occurs because some piece of code ends up checking to see if a given attribute is part of the Dict instance. This will probably be an on-going problem (similar to the need for us to implement a dir method), as long as external code ends up checking to see if the object under question implements a method, or contains an attribute. |
Yup - I'm not entirely convinced there's a solid solution to this. |
We could alternatively (just for iPython) detect that we are being spawned from an iPython shell and return the appropriate expected values from the getattr code. not_ipython = False
try:
__IPYTHON__
except NameError:
not_ipython = True I don't have an iPython env around, so ill play around w/ this a bit later. Just food for thought as usual :) |
Thanks @sabhiram, but I hope and think it can be handled in a more elegant way. Perhaps not without a rather large rewrite, but we'll see. |
There's a fix that I have in a local branch which is kind of hacky. Thougts @sabhiram, @burk, @Who8MyLunch? |
The problem described by this issue is that addict.Dict is very forgiving when a key or attribute does not exist. The following code currently raise no exceptions since Dict always creates a new key if one does not already exist: d = addict.Dict()
val_x = d.X
val_y = d['Y']
bool_z1 = hasattr(d, 'Z1')
bool_z2 = 'Z2' in d
print(d)
print(bool_z1)
print(bool_z2) The above code produces the following output:
Is this really the desired behavior? Shouldn't these two lines yield similar results? bool_z1 = hasattr(d, 'Z1')
bool_z2 = 'Z2' in d |
Hi @Who8MyLunch, sorry for the 1Y+ delay in response. Point here is that |
Python 2.7.9 and Python 3.4.2
I think there's similar behaviour in the interactive console in PyCharm.
The text was updated successfully, but these errors were encountered: