Metadata-Version: 2.0
Name: dependenpy
Version: 3.0.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
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
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

==========
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] [-l] [-m] [-o OUTPUT] [-v] [-h] 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
                            Matrix depth. Default: 2 if one package, otherwise 1.
      -i, --enforce-init    Enforce presence of __init__.py when listing
                            directories. Default: false.
      -l, --show-dependencies-list
                            Show the dependencies list. Default: false.
      -m, --show-matrix     Show the matrix. Default: false.
      -o OUTPUT, --output OUTPUT
                            File to write to. Default: stdout.
      -v, --version         Show program's version number and exit.
      -h, --help            Show this help message and exit.

Example:

.. code:: bash

    dependenpy dependenpy
    dependenpy dependenpy --depth=2

Result:

.. code:: bash

                  Module | Id ||0|1|2|3|
     --------------------+----++-+-+-+-+
     dependenpy.__init__ |  0 ||0|0|0|4|
     dependenpy.__main__ |  1 ||0|0|1|0|
          dependenpy.cli |  2 ||0|0|0|1|
          dependenpy.dsm |  3 ||0|0|0|0|

Example:

.. code:: bash

    dependenpy -l dependenpy

Result:

.. code:: bash

    Dependency DSM for packages: [dependenpy]
      dependenpy
        __main__
          ! __main__ imports sys (line 13)
          __main__ imports main from dependenpy.cli (line 15)
        dsm
          ! dsm imports ast (line 5)
          ! dsm imports os (line 6)
          ! dsm imports sys (line 7)
          ! dsm imports copy.deepcopy (line 8)
          ! dsm imports importlib.util.find_spec (line 9)
          ! dsm imports os.path.basename (line 10)
          ! dsm imports os.path.dirname (line 10)
          ! dsm imports os.path.exists (line 10)
          ! dsm imports os.path.isdir (line 10)
          ! dsm imports os.path.isfile (line 10)
          ! dsm imports os.path.join (line 10)
          ! dsm imports os.path.splitext (line 10)
        cli
          ! cli imports argparse (line 20)
          ! cli imports sys (line 21)
          cli imports DSM from dependenpy.dsm (line 23)
        __init__
          __init__ imports DSM from dependenpy.dsm (line 11)
          __init__ imports Dependency from dependenpy.dsm (line 11)
          __init__ imports Module from dependenpy.dsm (line 11)
          __init__ imports Package from dependenpy.dsm (line 11)

Example:

.. code:: bash

    dependenpy json,setuptools
    dependenpy json setuptools

Result:

.. code:: bash

         Module | Id ||0 |1 |
     -----------+----++--+--+
           json |  0 || 5| 0|
     setuptools |  1 || 0|75|

You can also use dependenpy programmatically:

.. code:: python

    from dependenpy import DSM

    # create DSM
    dsm = DSM('django')

    # transform as matrix, dict of deps or treemap
    matrix = dsm.as_matrix(depth=2)
    deps = dsm.as_dict()
    treemap = dsm.as_treemap()  # soon

    # initialize with many packages
    dsm = DSM('django', 'meerkat', 'appsettings', 'dependenpy', 'archan')
    with open('output', 'w') as output:
        dsm.print(matrix=True, depth=1, dependencies=True, 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 module 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.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.


