pywhereis 0.3
Unix whereis-like python script and package to find the source file of python object (package, module, function, class ...).
License: BSD Licence
Keywords: file source object dotted name automatic discovery

Summary
=======
Locate a python object (package, module, function, class ...) source file.

Usage
=====

   ``pywhereis [-v] [-s] dotted_name...``

CMD line Examples
=================

- The ``pywhereis`` script accept a package, module, function or a class ::

    $ pywhereis shlex
    shlex: /usr/lib/python2.7/shlex.py
    $ pywhereis os.path.abspath
    os.path.abspath: /usr/lib/python2.7/posixpath.py  337

- You can pass more than one dotted-name to it ::

    $ pywhereis shlex inspect.ismodule
    shlex: /usr/lib/python2.7/shlex.py
    inspect.ismodule: /usr/lib/python2.7/inspect.py  51

- If the name is a function, class or method the result will contain the line
  number where the object is defined ::

    $ pywhereis unittest.TestCase.assertEqual
    unittest.TestCase.assertEqual: /usr/lib/python2.7/unittest.py  344

- It will **fail** localizing object that are not pure python ::

    $ pywhereis.py sys
    sys:

- For more info about why the localization fail you can use the verbose
  mode ::

    $ pywhereis -v sys
    sys: Error: <module 'sys' (built-in)> is not pure python.

- If it's run with -s, --site-packages option the script will check first in
  site-packages instead of the default which is to check in the current dir
  first ::

    $ cd ~ ; touch os.py
    $ pywhereis os
    os: /home/mouad/os.py
    $ pywhereis -s os
    os: /usr/lib/python2.7/os.py

  **Note:** Option only available for python3.2 and below !

- For python2.7 and above you can also do ::

    $ python2.7 -mpywhereis subprocess.Popen
    subprocess.Popen: /usr/local/lib/python2.7/subprocess.py 33

  **Note:** The above will only work if pywhereis was installed in that python version.

- Of course you can still search in a different python version by running this
  script using that python ::

    $ python3.4 $(which pywhereis) html
    html: /usr/local/lib/python3.4/html/__init__.py


Code Examples
=============

This package come also with a python package ``whereis`` that can be used like
so ::

    >>> import whereis
    >>> whereis.resolve('sys')
    <module 'sys' (built-in)>
    >>> whereis.locate('os')
    '/usr/lib/python2.7/os.py'


CHANGES
=======

0.3
---

- Fixing bug _issue#2: https://bitbucket.org/mouad/pywhereis/issue/2, This mean that
  user can install pywhereis once in any Python version, and use it everywhere i.e.
  with other python versions or inside virtualenv ... , This work for now with
  only POSIX compliant system.
- BUGFIX: Fix locating not pure Python modules, bug noticed when trying to
  locate lxml.etree.XPath.
- Add support to Python3.4 and Python3.3.
- Change versioning instead of 0.0.2 now it's 0.3.
- **Backward incompatibilty change**: pywhereis return now the real path instead of symlink.

0.0.2
-----

- Add support to locating zip archive and eggs modules.
- Add a new argument -s, --site-packages that enable looking in
  site-packages directory before current directory.
- BUGFIX: Fix ``whereis.resolve`` to always raise ImportError even if the
  module that we are searching for is broken (SyntaxError ...), the same
  with ``whereis.locate``.

0.0.1
-----

First release.