README

>>> see()
An alternative to Python's dir().
Easy to type; easy to read!
For humans only.
Version: 1.0
Requirements: Python 2.4+ or 3.0
-----------------------------------------------
Sacrilege! Just what do you think you're doing?
-----------------------------------------------
Don't get me wrong; dir() is a wonderful little function. Always there to help
you out when you chance upon something new and mysterious. I would dare say
it's one of my favourites.
But wait! There is a problem. Let's face it: dir() isn't exactly easy on the
eyes. Say you have a list of everyday items:
>>> pencil_case = [
... 'pencils', 'protractor', 'ruler',
... 'a pair of compasses', 'razor blades',
... 'calculator', 'Garry Gum',
... 'Anti-Garry Gum'
... ]
And you want to see what you can do with this list. So you try:
>>> dir(pencil_case)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '
__delslice__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__get
item__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '
__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__
', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__',
'__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'a
ppend', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse'
, 'sort']
What a mess. Look at all that code! We didn't want the works -- we were just
curious. Help us out here, Computer. This just will not cut it.
Enter see().
>>> see(pencil_case)
[] in + += * *=
< <= == != > >=
hash() help() iter() len() repr()
reversed() str() .append() .count() .extend() .index()
.insert() .pop() .remove() .reverse() .sort()
Blimey! There's something different about this one, isn't there? Is this the
same pencil_case we had before? I can READ it. There's functions and operators
and everything. No underscores or list separators in sight. I am sorry I
doubted you, Computer. We can still be friends, yes?
-------------------------------------------------
Okay, I'm convinced. How do I install this thing?
-------------------------------------------------
If you have root privileges, installing may be as simple as typing
sudo easy_install see
from a bash shell. If easy_install is not, er, installed on your system, use
the accompanying setup.py file instead:
sudo python setup.py install
For a local install (e.g. for users without root privileges), do:
python setup.py install --home="$HOME"
Now fire up a Python shell and try out this poetic little number:
from see import see
With a bit of luck, nothing will explode, and you'll be skimming through
object attributes like nobody's business.
-------------------------------------------
I don't have to type that every time, do I?
-------------------------------------------
Absolutely not! You can make sure see() is available every time you run Python
by using a startup file. Simply save the line `from see import see` to a .py
file in your home directory (here I'll use the file ~/.pythonrc.py). Then, set
the following environment variable (e.g. in ~/.bashrc):
export PYTHONSTARTUP="$HOME/.pythonrc.py"
Now let's see if it works...
$ python
Python 2.5.1 (your lottery numbers)
Type "help", "copyright", "credits" or "license" for more information.
>>> foo = 'bar'
>>> see(foo, '.is*')
.isalnum() .isalpha() .isdigit() .islower() .isspace()
.istitle() .isupper()
>>>
>>> # success!
For iPython users, enabling see() by default requires a little more work.
Create a ipy_profile_see.py file in your ~/.ipython directory, and save the
following code to it:
from IPython import ipapi
def main():
ip = ipapi.get()
ip.ex('from see import see')
main()
From here, you have two options:
1. Launch iPython with the command: ipython -profile see
2. Open ~/.ipython/ipy_user_conf.py and add the following line inside the
main() function:
import ipy_profile_see