Metadata-Version: 1.0
Name: z3c.dependencychecker
Version: 0.4
Summary: UNKNOWN
Home-page: http://www.thehealthagency.com
Author: The Health Agency
Author-email: techniek@thehealthagency.com
License: ZPL
Description: z3c.dependencychecker
        =====================
        
        Checks which imports are done and compares them to what's in ``setup.py`` and
        warn when discovering missing or unneeded dependencies.
        
        .. contents::
        
        
        What it does
        ------------
        
        z3c.dependencychecker reports on:
        
        - **Unused imports**: pyflakes is another tool that does this (and that also
        reports on missing variables inside the files).
        
        - **Missing (test) requirements**: imports without a corresponding requirement
        in the ``setup.py``.  There might be false alarms, but at least you've got a
        (hopefully short) list of items to check.
        
        Watch out for packages that have a different name than how they're imported.
        For instance a requirement on ``pydns`` which is used as ``import DNS`` in
        your code: pydns and DNS lead to separate "missing requirements: DNS" and
        "unneeded requirements: pydns" warnings.
        
        - **Unneeded (test) requirements**: requirements in your setup.py that aren't
        imported anywhere in your code.  You *might* need them because not
        everything needs to be imported.  It at least gives you a much smaller list
        to check by hand.
        
        - **Requirements that should be test-only**: if something is only imported in
        a test file, it shouldn't be in the generic defaults.  So you get a separate
        list of requirements that should be moved from the regular to the test
        requirements.
        
        
        Credits
        -------
        
        z3c.dependencychecker is a different application/packaging of zope's
        importchecker utility.  It has been used in quite some projects, I grabbed a
        copy from `lovely.recipe's checkout
        <http://bazaar.launchpad.net/~vcs-imports/lovely.recipe/trunk/annotate/head%3A/src/lovely/recipe/importchecker/importchecker.py>`_.
        
        - Martijn Faassen wrote the original importchecker script.
        
        - `Reinout van Rees <http://reinout.vanrees.org>`_ (`The Health Agency
        <http://www.thehealthagency.com>`_) added the dependency checker
        functionality and packaged it.
        
        
        Source code
        -----------
        
        The source code can be found in zope's svn repository:
        http://svn.zope.org/repos/main/z3c.dependencychecker
        
        At the moment, bugs and suggestions can be send to Reinout.
        
        
        Usage of z3c.dependencychecker
        ==============================
        
        .. :doctest:
        
        
        Installation
        ------------
        
        Either install z3c.dependencychecker globally (``easy_install
        z3c.dependencychecker``) or install it in your buildout.
        
        
        Usage
        -----
        
        Run the ``dependencychecker`` or ``bin/dependencychecker`` script from your
        project's root folder and it will report on your dependencies.
        
        By default, it looks in the ``src/`` directory for your sources.
        Alternatively, you can specify a start directory yourself, for instance
        ``'.'`` if there's no ``src/`` directory.
        
        We have a sample project in a temp directory:
        
        >>> sample1_dir
        '/TESTTEMP/sample1'
        >>> ls(sample1_dir)
        setup.py
        src
        
        For our test, we call the main() method, just like the ``dependencychecker``
        script would.
        
        >>> import os
        >>> os.chdir(sample1_dir)
        >>> from z3c.dependencychecker import dependencychecker
        >>> dependencychecker.main()
        Unused imports
        ==============
        /TESTTEMP/sample1/src/sample1/unusedimports.py:7:  tempfile
        /TESTTEMP/sample1/src/sample1/unusedimports.py:4:  zest.releaser
        /TESTTEMP/sample1/src/sample1/unusedimports.py:6:  os
        <BLANKLINE>
        Missing requirements
        ====================
        missing.req
        something.origname
        zope.interface
        <BLANKLINE>
        Missing test requirements
        =========================
        reinout.hurray
        <BLANKLINE>
        Unneeded requirements
        =====================
        unneeded.req
        <BLANKLINE>
        Requirements that should be test requirements
        =============================================
        needed.by.test
        <BLANKLINE>
        Unneeded test requirements
        ==========================
        zope.testing
        <BLANKLINE>
        Note: requirements are taken from the egginfo dir, so you need
        to re-run buildout (or setup.py or whatever) for changes in
        setup.py to have effect.
        <BLANKLINE>
        
        
        
        TODO
        ====
        
        - Add tests for zcml ``package="another.import"`` detection.
        
        - Improve test coverage.
        
        - Try it on more projects and gather feedback.
        
        - Add some extra fallbacks for often-used packages like PIL (which is really
        Imaging when you import it).
        
        - Optionally check imports inside doctests.
        
        
        
        
        Changelog of z3c.dependencychecker
        ==================================
        
        0.4 (2009-12-10)
        ----------------
        
        - Supporting "from zope import interface"-style imports where you really want
        to be told you're missing an "zope.interface" dependency instead of just
        "zope" (which is just a namespace package).
        
        
        0.3 (2009-12-08)
        ----------------
        
        - Sorted "unneeded requirements" reports and filtered out duplicates.
        
        - Reporting separately on dependencies that should be moved from the regular
        to the test dependencies.
        
        
        0.2 (2009-12-08)
        ----------------
        
        - Added tests.  Initial quick test puts coverage at 86%.
        
        - Fixed bug in test requirement detection.
        
        - Added documentation.
        
        - Moved source code to zope's svn repository.
        
        
        0.1 (2009-12-02)
        ----------------
        
        - Also reporting on unneeded imports.
        
        - Added note on re-running buildout after a setup.py change.
        
        - Added zcml lookup to detect even more missing imports.
        
        - Added reporting on missing regular and test imports.
        
        - Grabbing existing requirements from egginfo directory.
        
        - Copied over Martijn Faassen's zope importchecker script.
        
Platform: UNKNOWN
