Metadata-Version: 2.1
Name: grimp
Version: 1.2.3
Summary: Builds a queryable graph of the imports within one or more Python packages.
Home-page: UNKNOWN
Author: David Seddon
Author-email: david@seddonym.me
License: BSD 2-Clause License
Project-URL: Documentation, https://grimp.readthedocs.io/
Project-URL: Source code, https://github.com/seddonym/grimp/
Description: =====
        Grimp
        =====
        
        .. image:: https://img.shields.io/pypi/v/grimp.svg
            :target: https://pypi.org/project/grimp
        
        .. image:: https://img.shields.io/pypi/pyversions/grimp.svg
            :alt: Python versions
            :target: https://pypi.org/project/grimp/
        
        .. image:: https://api.travis-ci.com/seddonym/grimp.svg?branch=master
            :target: https://travis-ci.com/seddonym/grimp
        
        
        Builds a queryable graph of the imports within one or more Python packages.
        
        * Free software: BSD license
        
        Quick start
        -----------
        
        Install grimp::
        
            pip install grimp
        
        Install the Python package you wish to analyse::
        
            pip install somepackage
        
        In Python, build the import graph for the package::
        
            >>> import grimp
            >>> graph = grimp.build_graph('somepackage')
        
        You may now use the graph object to analyse the package. Some examples::
        
            >>> graph.find_children('somepackage.foo')
            {
                'somepackage.foo.one',
                'somepackage.foo.two',
            }
        
            >>> graph.find_descendants('somepackage.foo')
            {
                'somepackage.foo.one',
                'somepackage.foo.two',
                'somepackage.foo.two.blue',
                'somepackage.foo.two.green',
            }
        
            >>> graph.find_modules_directly_imported_by('somepackage.foo')
            {
                'somepackage.bar.one',
            }
        
            >>> graph.find_upstream_modules('somepackage.foo')
            {
                'somepackage.bar.one',
                'somepackage.baz',
                'somepackage.foobar',
            }
        
            >>> graph.find_shortest_chain(importer='somepackage.foobar', imported='somepackage.foo')
            (
                'somepackage.foobar',
                'somepackage.baz',
                'somepackage.foo',
            )
        
            >>> graph.get_import_details(importer='somepackage.foobar', imported='somepackage.baz'))
            [
                {
                    'importer': 'somepackage.foobar',
                    'imported': 'somepackage.baz',
                    'line_number': 5,
                    'line_contents': 'from . import baz',
                },
            ]
        
        External packages
        -----------------
        
        By default, external dependencies will not be included. This can be overridden like so::
        
            >>> graph = grimp.build_graph('somepackage', include_external_packages=True)
            >>> graph.find_modules_directly_imported_by('somepackage.foo')
            {
                'somepackage.bar.one',
                'os',
                'decimal',
                'sqlalchemy',
            }
        
        Multiple packages
        -----------------
        
        You may analyse multiple root packages. To do this, pass each package name as a positional argument::
        
            >>> graph = grimp.build_graph('somepackage', 'anotherpackage')
            >>> graph.find_modules_directly_imported_by('somepackage.foo')
            {
                'somepackage.bar.one',
                'anotherpackage.baz',
            }
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Utilities
Description-Content-Type: text/x-rst
