I am looking for a competent Pythonista (Python expert), to help me write a tree manipulation package/module/library in Python. I am coder myself, with several years C/C++ prgramming experience. I am now learning Python, and this project will partly, help me learn how to write code the 'Pythonic way'. The delivered code must be well written and well commented.
The library provides functionality to do several cool things with tree data structures. It should be relatively easy for a Python expert to code, very quickly, in about a day or two. I have provided a starting point 'boiler plate' code to help the coder get started very quickly. This is an ideal project for an experienced Python coder who is looking to quickly build good ratings on the RaC site.
A high level overview of some of the function of this package is, it allows you to:
1. load data from file into a tree structure
2. traverse the nodes in the tree, recursively applying a user supplied function to data in the node (I think this provides a great example to highlight the use of iterable classes, maps and lambda functions)
3. tree navigation by specified direction and jump size
4. functions for 'grabbing' subtrees from a rooted tree, given a criteria. Technically, this is what is known as "(sub)tree pattern matching". I thought about how to do this, and I think that the best way to implement this is to create an XML 'document' from a tree and then use XPath to do the pattern matching - however, I am open to any ideas, and you are free to implement it another way, if you thing you have an easier/better way of doing this
5. Computing summary stats on trees and subtrees and dumping data to file
The attached file has most of the data structures you are likely to need, as well as prototypes of the functions you are likely to need to implement the package requirements.
I have also sketched out a unit test (well, comments only) which will put the developed package through its paces once all the functions etc are in place.
As ever, if anything is not clear, please do not hesitate to ask me for further clarification.