Metadata-Version: 2.2
Name: dependenpy
Version: 3.2.0
Summary: A Python module that build dependency matrices between other modules.
Home-page: https://github.com/Pawamoy/dependenpy
Author: Timothee Mazzucotelli
Author-email: timothee.mazzucotelli@gmail.com
License: ISC
Keywords: dependenpy
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Utilities
License-File: LICENSE
License-File: AUTHORS.rst
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: summary

==========
Dependenpy
==========



Dependenpy allows you to build a dependency matrix for a set of Python packages.
To do this, it reads and searches the source code for import statements.

License
=======

Software licensed under `ISC`_ license.

.. _ISC: https://www.isc.org/downloads/software-support-policy/isc-license/

Installation
============

::

    pip install dependenpy


Usage
=====

Version 3 introduces a command-line tool:

Example:

.. code:: bash

    dependenpy -h

Result:

.. code:: bash

    usage: dependenpy [-d DEPTH] [-f {csv,json,text}] [-g] [-G] [-h] [-i INDENT] [-l] [-m]
                  [-o OUTPUT] [-t] [-v]
                  PACKAGES [PACKAGES ...]

    Command line tool for dependenpy Python package.

    positional arguments:
      PACKAGES              The package list. Can be a comma-separated list. Each package
                            must be either a valid path or a package in PYTHONPATH.

    optional arguments:
      -d DEPTH, --depth DEPTH
                            Specify matrix or graph depth. Default: best guess.
      -f {csv,json,text}, --format {csv,json,text}
                            Output format. Default: text.
      -g, --show-graph      Show the graph (no text format). Default: false.
      -G, --greedy          Explore subdirectories even if they do not contain an
                            __init__.py file. Can make execution slower. Default: false.
      -h, --help            Show this help message and exit.
      -i INDENT, --indent INDENT
                            Specify output indentation. CSV will never be indented. Text
                            will always have new-lines. JSON can be minified with a
                            negative value. Default: best guess.
      -l, --show-dependencies-list
                            Show the dependencies list. Default: false.
      -m, --show-matrix     Show the matrix. Default: true unless -g, -l or -t.
      -o OUTPUT, --output OUTPUT
                            Output to given file. Default: stdout.
      -t, --show-treemap    Show the treemap (work in progress). Default: false.
      -v, --version         Show the current version of the program and exit.

Example:

.. code:: bash

    dependenpy dependenpy
    dependenpy dependenpy --depth=2

Result:

.. code:: bash

                    Module | Id ||0|1|2|3|4|5|6|7|8|
     ----------------------+----++-+-+-+-+-+-+-+-+-+
       dependenpy.__init__ |  0 ||0|0|0|4|0|0|0|0|2|
       dependenpy.__main__ |  1 ||0|0|1|0|0|0|0|0|0|
            dependenpy.cli |  2 ||1|0|0|1|0|4|0|0|0|
            dependenpy.dsm |  3 ||0|0|0|0|2|1|3|0|0|
         dependenpy.finder |  4 ||0|0|0|0|0|0|0|0|0|
        dependenpy.helpers |  5 ||0|0|0|0|0|0|0|0|0|
           dependenpy.node |  6 ||0|0|0|0|0|0|0|0|3|
        dependenpy.plugins |  7 ||0|0|0|1|0|1|0|0|0|
     dependenpy.structures |  8 ||0|0|0|0|0|1|0|0|0|

You can also use dependenpy programmatically:

.. code:: python

    from dependenpy import DSM

    # create DSM
    dsm = DSM('django')

    # transform as matrix
    matrix = dsm.as_matrix(depth=2)

    # initialize with many packages
    dsm = DSM('django', 'meerkat', 'appsettings', 'dependenpy', 'archan')
    with open('output', 'w') as output:
        dsm.print(format='json', indent=2, output=output)

    # access packages and modules
    meerkat = dsm['meerkat']  # or dsm.get('meerkat')
    finder = dsm['dependenpy.finder']  # or even dsm['dependenpy']['finder']

    # instances of DSM and Package all have print, as_matrix, etc. methods
    meerkat.print_matrix(depth=2)

This package was originally design to work in a Django project.
The Django package `django-meerkat`_ uses it to display the matrices with Highcharts.

.. _django-meerkat: https://github.com/Pawamoy/django-meerkat


Documentation
=============

`On ReadTheDocs`_

.. _`On ReadTheDocs`: http://dependenpy.readthedocs.io/

Development
===========

To run all the tests: ``tox``

=========
Changelog
=========

3.2.0 (2017-06-27)
==================

- Change ``-g`` short option for ``--greedy`` to ``-G``.
- Add ``-g, --show-graph`` option with related graph class and capabilities.
- Add a provider for Archan (``dependenpy.plugins.InternalDependencies``).
- Update documentation accordingly.

3.1.0 (2017-06-02)
==================

- Change ``-i, --enforce-init`` option to its contrary ``-g, --greedy``.
- Add ``-i, --indent`` option to specify indentation level.
- Options ``-l``, ``-m`` and ``-t`` are now mutually exclusive.
- Fix matrix build for depth 0.
- Print methods have been improved.
- Update documentation.

3.0.0 (2017-05-23)
==================

This version is a big refactoring. The code is way more object oriented,
cleaner, shorter, simpler, smarter, more user friendly- in short: better.

Additional features:

- command line entry point,
- runtime static imports are now caught (in functions or classes),
  as well as import statements (previously only from import).

2.0.3 (2017-04-20)
==================

- Fix occasional UnicodeEncode when reading UTF-8 file.
- Handle bad characters in files when parsing with ``ast``.

0.1.0 to 2.0.2 (2016-10-06)
===========================

- Development (alpha then beta version).

0.1.0 (2016-10-06)
==================

- Alpha release on PyPI.
