Skip to main content
Help us improve Python packaging – donate today!

A Python module that build dependency matrices between other modules.

Project Description

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.

Installation

pip install dependenpy

Usage

Version 3 introduces a command-line tool:

Example:

dependenpy -h

Result:

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:

dependenpy dependenpy
dependenpy dependenpy --depth=2

Result:

               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:

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.

Documentation

On ReadTheDocs

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.

Release history Release notifications

This version
History Node

3.2.0

History Node

3.1.0

History Node

3.0.0

History Node

2.0.3

History Node

2.0.1

History Node

2.0.0

History Node

1.1.2

History Node

1.1.1

History Node

1.1.0

History Node

1.0.4

History Node

v1.0.3

History Node

v1.0.2

History Node

v1.0.1

History Node

v1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
dependenpy-3.2.0-py2.py3-none-any.whl (21.7 kB) Copy SHA256 hash SHA256 Wheel py2.py3 Jun 27, 2017
dependenpy-3.2.0.tar.gz (30.0 kB) Copy SHA256 hash SHA256 Source None Jun 27, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page