4444import os
4545import sys
4646from distutils import sysconfig
47+ from typing import Dict , List
4748
4849import astroid
4950
5657from pylint .exceptions import EmptyReportError
5758from pylint .graph import DotBackend , get_cycles
5859from pylint .interfaces import IAstroidChecker
59- from pylint .reporters .ureports .nodes import Paragraph , VerbatimText
60+ from pylint .reporters .ureports .nodes import Paragraph , VerbatimText , VNode
6061from pylint .utils import IsortDriver , get_global_option
6162
6263
@@ -172,10 +173,10 @@ def _repr_tree_defs(data, indent_str=None):
172173 return "\n " .join (lines )
173174
174175
175- def _dependencies_graph (filename , dep_info ) :
176+ def _dependencies_graph (filename : str , dep_info : Dict [ str , List [ str ]]) -> str :
176177 """write dependencies as a dot (graphviz) file"""
177178 done = {}
178- printer = DotBackend (filename [: - 4 ], rankdir = "LR" )
179+ printer = DotBackend (os . path . splitext ( os . path . basename ( filename ))[ 0 ], rankdir = "LR" )
179180 printer .emit ('URL="." node[shape="box"]' )
180181 for modname , dependencies in sorted (dep_info .items ()):
181182 done [modname ] = 1
@@ -187,15 +188,15 @@ def _dependencies_graph(filename, dep_info):
187188 for depmodname , dependencies in sorted (dep_info .items ()):
188189 for modname in dependencies :
189190 printer .emit_edge (modname , depmodname )
190- printer .generate (filename )
191+ return printer .generate (filename )
191192
192193
193- def _make_graph (filename , dep_info , sect , gtype ):
194+ def _make_graph (filename : str , dep_info : Dict [ str , List [ str ]], sect : VNode , gtype : str ):
194195 """generate a dependencies graph and add some information about it in the
195196 report's section
196197 """
197- _dependencies_graph (filename , dep_info )
198- sect .append (Paragraph (f"{ gtype } imports graph has been written to { filename } " ))
198+ outputfile = _dependencies_graph (filename , dep_info )
199+ sect .append (Paragraph (f"{ gtype } imports graph has been written to { outputfile } " ))
199200
200201
201202# the import checker itself ###################################################
@@ -332,9 +333,9 @@ class ImportsChecker(DeprecatedMixin, BaseChecker):
332333 {
333334 "default" : "" ,
334335 "type" : "string" ,
335- "metavar" : "<file.dot >" ,
336- "help" : "Create a graph of every (i.e. internal and "
337- " external) dependencies in the given file"
336+ "metavar" : "<file.gv >" ,
337+ "help" : "Output a graph (.gv or any supported image format) of "
338+ " all (i.e. internal and external) dependencies to the given file"
338339 " (report RP0402 must not be disabled)." ,
339340 },
340341 ),
@@ -343,19 +344,21 @@ class ImportsChecker(DeprecatedMixin, BaseChecker):
343344 {
344345 "default" : "" ,
345346 "type" : "string" ,
346- "metavar" : "<file.dot>" ,
347- "help" : "Create a graph of external dependencies in the"
348- " given file (report RP0402 must not be disabled)." ,
347+ "metavar" : "<file.gv>" ,
348+ "help" : "Output a graph (.gv or any supported image format)"
349+ " of external dependencies to the given file"
350+ " (report RP0402 must not be disabled)." ,
349351 },
350352 ),
351353 (
352354 "int-import-graph" ,
353355 {
354356 "default" : "" ,
355357 "type" : "string" ,
356- "metavar" : "<file.dot>" ,
357- "help" : "Create a graph of internal dependencies in the"
358- " given file (report RP0402 must not be disabled)." ,
358+ "metavar" : "<file.gv>" ,
359+ "help" : "Output a graph (.gv or any supported image format)"
360+ " of internal dependencies to the given file"
361+ " (report RP0402 must not be disabled)." ,
359362 },
360363 ),
361364 (
0 commit comments