Metadata-Version: 2.1
Name: anytree
Version: 2.7.1
Summary: Powerful and Lightweight Python Tree Data Structure..
Home-page: https://github.com/c0fec0de/anytree
Author: c0fec0de
Author-email: c0fec0de@gmail.com
License: Apache 2.0
Description: .. image:: https://badge.fury.io/py/anytree.svg
            :target: https://badge.fury.io/py/anytree
        
        .. image:: https://travis-ci.org/c0fec0de/anytree.svg?branch=master
            :target: https://travis-ci.org/c0fec0de/anytree
        
        .. image:: https://coveralls.io/repos/github/c0fec0de/anytree/badge.svg
            :target: https://coveralls.io/github/c0fec0de/anytree
        
        .. image:: https://readthedocs.org/projects/anytree/badge/?version=2.7.1
            :target: http://anytree.readthedocs.io/en/2.7.1/?badge=2.7.1
        
        .. image:: https://codeclimate.com/github/c0fec0de/anytree.png
            :target: https://codeclimate.com/github/c0fec0de/anytree
        
        .. image:: https://img.shields.io/pypi/pyversions/anytree.svg
           :target: https://pypi.python.org/pypi/anytree
        
        .. image:: https://img.shields.io/badge/code%20style-pep8-brightgreen.svg
           :target: https://www.python.org/dev/peps/pep-0008/
        
        .. image:: https://img.shields.io/badge/code%20style-pep257-brightgreen.svg
           :target: https://www.python.org/dev/peps/pep-0257/
        
        Documentation
        =============
        
        The Documentation_ is hosted on http://anytree.readthedocs.io/en/2.7.1/
        
        .. _Documentation: http://anytree.readthedocs.io/en/2.7.1/
        
        Getting started
        ===============
        
        .. _getting_started:
        
        Usage is simple.
        
        **Construction**
        
        >>> from anytree import Node, RenderTree
        >>> udo = Node("Udo")
        >>> marc = Node("Marc", parent=udo)
        >>> lian = Node("Lian", parent=marc)
        >>> dan = Node("Dan", parent=udo)
        >>> jet = Node("Jet", parent=dan)
        >>> jan = Node("Jan", parent=dan)
        >>> joe = Node("Joe", parent=dan)
        
        **Node**
        
        >>> print(udo)
        Node('/Udo')
        >>> print(joe)
        Node('/Udo/Dan/Joe')
        
        **Tree**
        
        >>> for pre, fill, node in RenderTree(udo):
        ...     print("%s%s" % (pre, node.name))
        Udo
        ├── Marc
        │   └── Lian
        └── Dan
            ├── Jet
            ├── Jan
            └── Joe
        
        >>> from anytree.exporter import DotExporter
        >>> # graphviz needs to be installed for the next line!
        >>> DotExporter(udo).to_picture("udo.png")
        
        .. image:: http://anytree.readthedocs.io/en/latest/_images/udo.png
        
        **Manipulation**
        
        A second tree:
        
        >>> mary = Node("Mary")
        >>> urs = Node("Urs", parent=mary)
        >>> chris = Node("Chris", parent=mary)
        >>> marta = Node("Marta", parent=mary)
        >>> print(RenderTree(mary))
        Node('/Mary')
        ├── Node('/Mary/Urs')
        ├── Node('/Mary/Chris')
        └── Node('/Mary/Marta')
        
        Append:
        
        >>> udo.parent = mary
        >>> print(RenderTree(mary))
        Node('/Mary')
        ├── Node('/Mary/Urs')
        ├── Node('/Mary/Chris')
        ├── Node('/Mary/Marta')
        └── Node('/Mary/Udo')
            ├── Node('/Mary/Udo/Marc')
            │   └── Node('/Mary/Udo/Marc/Lian')
            └── Node('/Mary/Udo/Dan')
                ├── Node('/Mary/Udo/Dan/Jet')
                ├── Node('/Mary/Udo/Dan/Jan')
                └── Node('/Mary/Udo/Dan/Joe')
        
        Subtree rendering:
        
        >>> print(RenderTree(marc))
        Node('/Mary/Udo/Marc')
        └── Node('/Mary/Udo/Marc/Lian')
        
        Cut:
        
        >>> dan.parent = None
        >>> print(RenderTree(dan))
        Node('/Dan')
        ├── Node('/Dan/Jet')
        ├── Node('/Dan/Jan')
        └── Node('/Dan/Joe')
        
        **Extending any python class to become a tree node**
        
        >>> from anytree import NodeMixin, RenderTree
        >>> class MyBaseClass(object):  # Just an example of a base class
        ...     foo = 4
        >>> class MyClass(MyBaseClass, NodeMixin):  # Add Node feature
        ...     def __init__(self, name, length, width, parent=None, children=None):
        ...         super(MyClass, self).__init__()
        ...         self.name = name
        ...         self.length = length
        ...         self.width = width
        ...         self.parent = parent
        ...         if children:
        ...             self.children = children
        
        Just set the `parent` attribute to reflect the tree relation:
        
        >>> my0 = MyClass('my0', 0, 0)
        >>> my1 = MyClass('my1', 1, 0, parent=my0)
        >>> my2 = MyClass('my2', 0, 2, parent=my0)
        
        >>> for pre, fill, node in RenderTree(my0):
        ...     treestr = u"%s%s" % (pre, node.name)
        ...     print(treestr.ljust(8), node.length, node.width)
        my0      0 0
        ├── my1  1 0
        └── my2  0 2
        
        The `children` can be used likewise:
        
        >>> my0 = MyClass('my0', 0, 0, children=[
        ...     MyClass('my1', 1, 0),
        ...     MyClass('my2', 0, 2),
        ... ])
        
        >>> for pre, fill, node in RenderTree(my0):
        ...     treestr = u"%s%s" % (pre, node.name)
        ...     print(treestr.ljust(8), node.length, node.width)
        my0      0 0
        ├── my1  1 0
        └── my2  0 2
        
        
        Installation
        ============
        
        To install the `anytree` module run::
        
            pip install anytree
        
        If you do not have write-permissions to the python installation, try::
        
            pip install anytree --user
        
Keywords: tree,tree data,treelib,tree walk,tree structure
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Provides-Extra: dev
Provides-Extra: test
