On Fri, Dec 4, 2009 at 2:52 PM, geremy condra <debat...@gmail.com> wrote: > On Fri, Dec 4, 2009 at 11:17 AM, MRAB <pyt...@mrabarnett.plus.com> wrote: >> M.-A. Lemburg wrote: >>> >>> geremy condra wrote: >>>> >>>> On Thu, Dec 3, 2009 at 12:57 PM, M.-A. Lemburg <m...@egenix.com> wrote: >>>>> >>>>> geremy condra wrote: >>>>>> >>>>>> On Thu, Dec 3, 2009 at 7:04 AM, M.-A. Lemburg <m...@egenix.com> wrote: >>>>>>> >>>>>>> I think the only major CS data type missing from Python is some >>>>>>> form of (fast) directed graph implementation à la kjGraph: >>>>>>> >>>>>>> http://gadfly.sourceforge.net/kjbuckets.html >>>>>>> >>>>>>> With these, you can easily build all sorts of relations between >>>>>>> objects and apply fast operations on them. In fact, it should then >>>>>>> be possible to build a complete relational database in Python >>>>>>> (along the lines of Gadfly). >>>>>> >>>>>> If you're in the market for a Python graph library, you may want >>>>>> to check out Graphine- I'm obviously biased (I wrote most of it) >>>>>> but it has a few more bells and whistles than kjbuckets, and is >>>>>> pretty darned easy to use. It also supports undirected and >>>>>> bridge graphs. >>>>> >>>>> Thanks for the hint :-) >>>>> >>>>> The lib looks nice and would probably serve as a good prototype >>>>> for writing a new built-in type for Python. >>>> >>>> I suspect that it would have a better chance at getting into >>>> collections than becoming a builtin, but who knows. I'd just >>>> like to have something like it in the standard library. >>> >>> Integrating an easy-to-use graph library into the collections >>> module (and it's C companion) is good idea. >>> >>>>> This would have to be written in C, though, >>>> >>>> That's currently in the works, along with database backing. >>>> We'd welcome any help though... hint, hint... >>>> >>>>> and come under a Python compatible license. >>>> >>>> I'm willing to dual license under the Python license if >>>> there were a substantial interest in doing so, and I'm >>>> confident that the other authors and maintainers >>>> would feel the same way. >>> >>> Great ! >>> >>>> The question in my mind is whether such an interest exists. >>> >>> Since Python is being used more and more in CS classes, >>> such an addition would complete the tool-set and make Python >>> even more attractive for undergrad CS courses. >>> >>> Finding out how much interest exists in advance is always >>> a bit difficult with new data-structures. People have to >>> get a feeling of how they can be put to good use first, >>> so it's a chicken-and-egg problem. >>> >>> We've seen the same thing happen with sets. They were first >>> made available via a separate module and then became built-ins >>> after people realized how useful they are in practice. >>> >> I'd like to add that people (myself included) were already using dicts >> for sets before the module was written, so there was already a clear >> demand for them. >>
To be fair, I don't think you'd have to look very far to find places where a graph representation is approximated using some combination of dicts, sets, and lists. ElementTree comes to mind immediately, and the dict-of-dicts idea for logging recently discussed on python-dev explicitly states that it uses that structure to represent object graphs. To me that says that there is at least some demand. Geremy Condra -- http://mail.python.org/mailman/listinfo/python-list