Patchwork [meta-python] python-snakefood: add 1.4

login
register
mail settings
Submitter Tim Orling
Date Aug. 24, 2014, 12:57 a.m.
Message ID <1408841825-1720-1-git-send-email-TicoTimo@gmail.com>
Download mbox | patch
Permalink /patch/78865/
State Accepted, archived
Headers show

Comments

Tim Orling - Aug. 24, 2014, 12:57 a.m.
* Generate dependencies from Python code, filter, cluster and generate
  graphs from the dependency list

* Tools included:
  - sfood:
      Given a set of input files or root directories, generate a list of
      dependencies between the files;
  - sfood-graph:
      Read a list of dependencies and produce a Graphviz dot file. (This
      file can be run through the Graphviz dot tool to produce a
      viewable/printable PDF file);
  - sfood-cluster:
      Read a list of dependencies, a list of file clusters, and output a
      list of simplified (clustered) dependencies.
  - sfood-checker:
      Analyze the source code with the AST and list unused or redundant
      imports.
  - sfood-imports:
      Find and list import statements in Python files, regardless of
      whether they can be imported or not.

Signed-off-by: Tim Orling <TicoTimo@gmail.com>
---
 .../python/python-snakefood_1.4.bb                 | 56 ++++++++++++++++++++++
 1 file changed, 56 insertions(+)
 create mode 100644 meta-python/recipes-devtools/python/python-snakefood_1.4.bb

Patch

diff --git a/meta-python/recipes-devtools/python/python-snakefood_1.4.bb b/meta-python/recipes-devtools/python/python-snakefood_1.4.bb
new file mode 100644
index 0000000..1af33d4
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-snakefood_1.4.bb
@@ -0,0 +1,56 @@ 
+SUMMARY = "Dependency graphing for Python"
+DESCRIPTION = " Generate dependency graphs from Python code. This \
+dependency tracker package has a few distinguishing characteristics \
+\
+    * It uses the AST to parse the Python files. This is very reliable, \
+      it always runs.\
+    * No module is loaded. Loading modules to figure out dependencies is \
+      almost always problem, because a lot of codebases run initialization \
+      code in the global namespace, which often requires additional setup. \
+      Snakefood is guaranteed not to have this problem (it just runs, no \
+      matter what).\
+    * It works on a set of files, i.e. you do not have to specify a single \
+      script, you can select a directory (package or else) or a set of files.\
+      It finds all the Python files recursively automatically.\
+    * Automatic/no configuration: your PYTHONPATH is automatically adjusted \
+      to include the required package roots. It figures out the paths that \
+      are required from the files/directories given as input. You should not \
+      have to setup ANYTHING.\
+    * It does not have to automatically 'follow' dependencies between modules,\
+      i.e. by default it only considers the files and directories you specify \
+      on the command-line and their immediate dependencies. It also has an \
+      option to automatically include only the dependencies within the \
+      packages of the files you specify.\
+    * It follows the UNIX philosophy of small programs that do one thing well:\
+      it consists of a few simple programs whose outputs you combine via \
+      pipes. Graphing dependencies always requires the user to filter and \
+      cluster the filenames, so this is appropriate. You can combine it with \
+      your favourite tools, grep, sed, etc.\
+\
+A problem with dependency trackers that run code is that they are unreliable, \
+due to the dynamic nature of Python (the presence of imports within function \
+calls and __import__ hooks makes it almost impossible to always do the right \
+thing). This script aims at being right 99% of the time, and we think that \
+given the trade-offs, 99% is good enough for 99% of the uses.\
+"
+AUTHOR = "Martin Blais <blais@furius.ca>"
+HOMEPAGE = "http://furius.ca/snakefood"
+SECTION = "devel/python"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+SRCNAME = "snakefood"
+
+SRC_URI = "https://pypi.python.org/packages/source/s/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
+SRC_URI[md5sum] = "56c88667a33d8909b0aabf2ab6903bdf"
+SRC_URI[sha256sum] = "295784668032254e7391ca99ba7060edd3ae4eca1a330ac11627b18ab5923b77"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+inherit setuptools
+
+RDEPENDS_${PN} = " python-logging python-compiler python-shell"
+# the above modules do not have a -native counterpart
+RDEPENDS_${PN}_class-native = ""
+
+BBCLASSEXTEND = "native"
+