1 Metadata-Version: 1.1 2 Name: modulegraph 3 Version: 0.12.1 4 Summary: Python module dependency analysis tool 5 Home-page: http://bitbucket.org/ronaldoussoren/modulegraph 6 Author: Ronald Oussoren 7 Author-email: ronaldoussoren (a] mac.com 8 License: MIT 9 Download-URL: http://pypi.python.org/pypi/modulegraph 10 Description: modulegraph determines a dependency graph between Python modules primarily 11 by bytecode analysis for import statements. 12 13 modulegraph uses similar methods to modulefinder from the standard library, 14 but uses a more flexible internal representation, has more extensive 15 knowledge of special cases, and is extensible. 16 17 18 Release history 19 =============== 20 21 0.12.1 22 ------ 23 24 * Issue #25: Complex python files could cause an "maximum recursion depth exceeded" 25 exception due to using stack-based recursion to walk the module AST. 26 27 28 0.12 29 ---- 30 31 * Added 'modulegraph.modulegraph.InvalidSourceModule'. This graph node is 32 used for Python source modules that cannot be compiled (for example because 33 they contain syntax errors). 34 35 This is primarily useful for being able to create a graph for packages 36 that have python 2.x or python 3.x compatibility in separate modules that 37 contain code that isn't valid in the "other" python version. 38 39 * Added 'modulegraph.modulegraph.InvalidCompiledModule'. This graph node 40 is used for Python bytecode modules that cannot be loaded. 41 42 * Added 'modulegraph.modulegraph.NamespacePackage'. 43 44 Patch by bitbucket user htgoebel. 45 46 * No longer add a MissingModule node to the graph for 'collections.defaultdict' 47 when using 'from collections import defaultdict' ('collections.defaultdict' 48 is an attribute of 'collections', not a submodule). 49 50 * Fixed typo in ModuleGraph.getReferences() 51 52 * Added ModuleGraph.getReferers(tonode). This methods yields the 53 nodes that are referencing *tonode* (the reverse of getReferences) 54 55 * The graph will no longer contain MissingModule nodes when using 'from ... import name' to 56 import a global variable in a python module. 57 58 There will still be MissingModule nodes for global variables in C extentions, and 59 for 'from missing import name' when 'missing' is itself a MissingModule. 60 61 * Issue #18: Don't assume that a PEP 302 loader object has a ``path`` attribute. That 62 attribute is not documented and is not always present. 63 64 0.11.2 65 ------ 66 67 * 68 69 0.11.1 70 ------ 71 72 * Issue #145: Don't exclude the platform specific 'path' modules (like ntpath) 73 74 0.11 75 ---- 76 77 This is a feature release 78 79 Features 80 ........ 81 82 * Hardcode knowlegde about the compatibility aliases in the email 83 module (for python 2.5 upto 3.0). 84 85 This makes it possible to remove a heavy-handed recipe from py2app. 86 87 * Added ``modegraph.zipio.getmode`` to fetch the Unix file mode 88 for a file. 89 90 * Added some handy methods to ``modulegraph.modulegraph.ModuleGraph``. 91 92 0.10.5 93 ------ 94 95 This is a bugfix release 96 97 * Don't look at the file extension to determine the file type 98 in modulegraph.find_modules.parse_mf_results, but use the 99 class of the item. 100 101 * Issue #13: Improved handing of bad relative imports 102 ("from .foo import bar"), these tended to raise confusing errors and 103 are now handled like any other failed import. 104 105 0.10.4 106 ------ 107 108 This is a bugfix release 109 110 * There were no 'classifiers' in the package metadata due to a bug 111 in setup.py. 112 113 0.10.3 114 ------ 115 116 This is a bugfix release 117 118 Bugfixes 119 ........ 120 121 * ``modulegraph.find.modules.parse_mf_results`` failed when the main script of 122 a py2app module didn't have a file name ending in '.py'. 123 124 0.10.2 125 ------ 126 127 This is a bugfix release 128 129 Bugfixes 130 ........ 131 132 * Issue #12: modulegraph would sometimes find the wrong package *__init__* 133 module due to using the wrong search method. One easy way to reproduce the 134 problem was to have a toplevel module named *__init__*. 135 136 Reported by Kentzo. 137 138 0.10.1 139 ------ 140 141 This is a bugfix release 142 143 Bugfixes 144 ........ 145 146 * Issue #11: creating xrefs and dotty graphs from modulegraphs (the --xref 147 and --graph options of py2app) didn't work with python 3 due to use of 148 APIs that aren't available in that version of python. 149 150 Reported by Andrew Barnert. 151 152 153 0.10 154 ---- 155 156 This is a minor feature release 157 158 Features 159 ........ 160 161 * ``modulegraph.find_modules.find_needed_modules`` claimed to automaticly 162 include subpackages for the "packages" argument as well, but that code 163 didn't work at all. 164 165 * Issue #9: The modulegraph script is deprecated, use 166 "python -mmodulegraph" instead. 167 168 * Issue #10: Ensure that the result of "zipio.open" can be used 169 in a with statement (that is, ``with zipio.open(...) as fp``. 170 171 * No longer use "2to3" to support Python 3. 172 173 Because of this modulegraph now supports Python 2.6 174 and later. 175 176 * Slightly improved HTML output, which makes it easier 177 to manipulate the generated HTML using JavaScript. 178 179 Patch by anatoly techtonik. 180 181 * Ensure modulegraph works with changes introduced after 182 Python 3.3b1. 183 184 * Implement support for PEP 420 ("Implicit namespace packages") 185 in Python 3.3. 186 187 * ``modulegraph.util.imp_walk`` is deprecated and will be 188 removed in the next release of this package. 189 190 Bugfixes 191 ........ 192 193 * The module graph was incomplete, and generated incorrect warnings 194 along the way, when a subpackage contained import statements for 195 submodules. 196 197 An example of this is ``sqlalchemy.util``, the ``__init__.py`` file 198 for this package contains imports of modules in that modules using 199 the classic relative import syntax (that is ``import compat`` to 200 import ``sqlalchemy.util.compat``). Until this release modulegraph 201 searched the wrong path to locate these modules (and hence failed 202 to find them). 203 204 205 0.9.2 206 ----- 207 208 This is a bugfix release 209 210 Bugfixes 211 ........ 212 213 * The 'packages' option to modulegraph.find_modules.find_modules ignored 214 the search path argument but always used the default search path. 215 216 * The 'imp_find_modules' function in modulegraph.util has an argument 'path', 217 this was a string in previous release and can now also be a sequence. 218 219 * Don't crash when a module on the 'includes' list doesn't exist, but warn 220 just like for missing 'packages' (modulegraph.find_modules.find_modules) 221 222 0.9.1 223 ----- 224 225 This is a bugfix release 226 227 Bug fixes 228 ......... 229 230 - Fixed the name of nodes imports in packages where the first element of 231 a dotted name can be found but the rest cannot. This used to create 232 a MissingModule node for the dotted name in the global namespace instead 233 of relative to the package. 234 235 That is, given a package "pkg" with submodule "sub" if the "__init__.py" 236 of "pkg" contains "import sub.nomod" we now create a MissingModule node 237 for "pkg.sub.nomod" instead of "sub.nomod". 238 239 This fixes an issue with including the crcmod package in application 240 bundles, first reported on the pythonmac-sig mailinglist by 241 Brendan Simon. 242 243 0.9 244 --- 245 246 This is a minor feature release 247 248 249 Features: 250 251 - Documentation is now generated using `sphinx <http://pypi.python.org/pypi/sphinx>`_ 252 and can be viewed at <http://packages.python.org/modulegraph>. 253 254 The documention is very rough at this moment and in need of reorganisation and 255 language cleanup. I've basiclly writting the current version by reading the code 256 and documenting what it does, the order in which classes and methods are document 257 is therefore not necessarily the most useful. 258 259 - The repository has moved to bitbucket 260 261 - Renamed ``modulegraph.modulegraph.AddPackagePath`` to ``addPackagePath``, 262 likewise ``ReplacePackage`` is now ``replacePackage``. The old name is still 263 available, but is deprecated and will be removed before the 1.0 release. 264 265 - ``modulegraph.modulegraph`` contains two node types that are unused and 266 have unclear semantics: ``FlatPackage`` and ``ArchiveModule``. These node 267 types are deprecated and will be removed before 1.0 is released. 268 269 - Added a simple commandline tool (``modulegraph``) that will print information 270 about the dependency graph of a script. 271 272 - Added a module (``zipio``) for dealing with paths that may refer to entries 273 inside zipfiles (such as source paths referring to modules in zipped eggfiles). 274 275 With this addition ``modulegraph.modulegraph.os_listdir`` is deprecated and 276 it will be removed before the 1.0 release. 277 278 Bug fixes: 279 280 - The ``__cmp__`` method of a Node no longer causes an exception 281 when the compared-to object is not a Node. Patch by Ivan Kozik. 282 283 - Issue #1: The initialiser for ``modulegraph.ModuleGraph`` caused an exception 284 when an entry on the path (``sys.path``) doesn't actually exist. 285 286 Fix by "skurylo", testcase by Ronald. 287 288 - The code no longer worked with python 2.5, this release fixes that. 289 290 - Due to the switch to mercurial setuptools will no longer include 291 all required files. Fixed by adding a MANIFEST.in file 292 293 - The method for printing a ``.dot`` representation of a ``ModuleGraph`` 294 works again. 295 296 297 0.8.1 298 ----- 299 300 This is a minor feature release 301 302 Features: 303 304 - ``from __future__ import absolute_import`` is now supported 305 306 - Relative imports (``from . import module``) are now supported 307 308 - Add support for namespace packages when those are installed 309 using option ``--single-version-externally-managed`` (part 310 of setuptools/distribute) 311 312 0.8 313 --- 314 315 This is a minor feature release 316 317 Features: 318 319 - Initial support for Python 3.x 320 321 - It is now possible to run the test suite 322 using ``python setup.py test``. 323 324 (The actual test suite is still fairly minimal though) 325 326 Keywords: import,,dependencies 327 Platform: any 328 Classifier: Intended Audience :: Developers 329 Classifier: License :: OSI Approved :: MIT License 330 Classifier: Programming Language :: Python 331 Classifier: Programming Language :: Python :: 2 332 Classifier: Programming Language :: Python :: 2.7 333 Classifier: Programming Language :: Python :: 3 334 Classifier: Programming Language :: Python :: 3.3 335 Classifier: Programming Language :: Python :: 3.4 336 Classifier: Topic :: Software Development :: Libraries :: Python Modules 337 Classifier: Topic :: Software Development :: Build Tools 338