Metadata-Version: 1.0
Name: z3c.dependencychecker
Version: 1.6
Summary: UNKNOWN
Home-page: https://github.com/reinout/z3c.dependencychecker
Author: Reinout van Rees
Author-email: reinout@vanrees.org
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.
        
        It checks the following locations:
        
        - Python files for regular imports.
        
        - Zcml files for ``package="some.thing"`` attributes.
        
        - Python files, ``.txt`` and ``.rst`` files for imports in doctests.
        
        
        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>`_ added the dependency
          checker functionality and packaged it (mostly while working at `The Health
          Agency <http://www.thehealthagency.com>`_).
        
        - Quite some fixes from `Jonas Baumann <https://github.com/jone>`_.
        
        
        Source code, forking and reporting bugs
        ---------------------------------------
        
        The source code can be found on github:
        https://github.com/reinout/z3c.dependencychecker
        
        You can fork and fix it from there. And you can add issues and feature
        requests in the github issue tracker.
        
        
        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
        ====
        
        - Improve test coverage of original import checker module.
        
        - Try it on more projects and gather feedback.
        
        - Try to handle local (so non-absolute) imports.
        
        - Display impacted files for each section (like Unused imports). Maybe with a
          option (-v)?
        
        - Improve documentation on commandline usage ("you can pass a
          directoryname").
        
        
        Changelog of z3c.dependencychecker
        ==================================
        
        1.6 (2012-11-01)
        ----------------
        
        - Fix AttributeError when "magic modules" like email.Header are imported.
        
        
        1.5 (2012-07-03)
        ----------------
        
        - Add support for zipped dists when looking up pkg name.
        
        
        1.4 (2012-07-03)
        ----------------
        
        - Lookup pkg name from egg-infos if possible (python >= 2.5). This helps for
          instance with the PIL problem (which can be ``Imaging`` instead when you
          import it).
        
        
        1.3.2 (2012-06-29)
        ------------------
        
        - Fixed broken 1.3.0 and 1.3.0 release: the ``MANIFEST.in`` was missing...
        
        
        1.3.1 (2012-06-29)
        ------------------
        
        - Documentation updates because we moved to github:
          https://github.com/reinout/z3c.dependencychecker .
        
        
        1.3 (2012-06-29)
        ----------------
        
        - Added fix for standard library detection on OSX when using the python
          buildout. (Patch by Jonas Baumann, as is the next item).
        
        - Supporting ``[tests]`` in addition to ``[test]`` for test requirements.
        
        
        1.2 (2011-09-19)
        ----------------
        
        - Looking for a package directory named after the package name in preference
          to the src/ directory.
        
        - Compensating for django-style 'django-something' package names with
          'django_something' package directories.  Dash versus underscore.
        
        
        1.1 (2010-01-06)
        ----------------
        
        - Zcml files are also searched for 'component=' patterns as that can be used
          by securitypolicy declarations.
        
        - Dependencychecker is now case insensitive as pypi is too.
        
        - Using optparse for parsing commandline now.  Added --help and --version.
        
        
        1.0 (2009-12-10)
        ----------------
        
        - Documentation update.
        
        - Improved test coverage. The dependencychecker module self is at 100%, the
          original import checker module is at 91% coverage.
        
        
        0.5 (2009-12-10)
        ----------------
        
        - Searching in doctests (.py, .txt, .rst) for imports, too.  Regex-based by
          necessity, but it seems to catch what I can test it with.
        
        
        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
