Adding upstream version 1.6.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
a5555eb4a1
commit
d5b8e0af0d
42 changed files with 3857 additions and 0 deletions
89
examples/recursive_dirtree_generator.py
Normal file
89
examples/recursive_dirtree_generator.py
Normal file
|
@ -0,0 +1,89 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Example of treelib usage to generate recursive tree of directories.
|
||||
It could be useful to implement Directory Tree data structure
|
||||
|
||||
2016 samuelsh
|
||||
"""
|
||||
|
||||
import treelib
|
||||
import random
|
||||
import hashlib
|
||||
from string import digits, letters
|
||||
import sys
|
||||
|
||||
|
||||
MAX_FILES_PER_DIR = 10
|
||||
|
||||
|
||||
def range2(stop):
|
||||
if sys.version_info[0] < 3:
|
||||
return xrange(stop) # noqa: F821
|
||||
else:
|
||||
return range(stop)
|
||||
|
||||
|
||||
def get_random_string(length):
|
||||
return "".join(random.choice(digits + letters) for _ in range2(length))
|
||||
|
||||
|
||||
def build_recursive_tree(tree, base, depth, width):
|
||||
"""
|
||||
Args:
|
||||
tree: Tree
|
||||
base: Node
|
||||
depth: int
|
||||
width: int
|
||||
|
||||
Returns:
|
||||
|
||||
"""
|
||||
if depth >= 0:
|
||||
depth -= 1
|
||||
for i in range2(width):
|
||||
directory = Directory()
|
||||
tree.create_node(
|
||||
"{0}".format(directory.name),
|
||||
"{0}".format(hashlib.md5(directory.name)),
|
||||
parent=base.identifier,
|
||||
data=directory,
|
||||
) # node identifier is md5 hash of it's name
|
||||
dirs_nodes = tree.children(base.identifier)
|
||||
for dir in dirs_nodes:
|
||||
newbase = tree.get_node(dir.identifier)
|
||||
build_recursive_tree(tree, newbase, depth, width)
|
||||
else:
|
||||
return
|
||||
|
||||
|
||||
class Directory(object):
|
||||
def __init__(self):
|
||||
self._name = get_random_string(64)
|
||||
self._files = [
|
||||
File() for _ in range2(MAX_FILES_PER_DIR)
|
||||
] # Each directory contains 1000 files
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self._name
|
||||
|
||||
@property
|
||||
def files(self):
|
||||
return self._files
|
||||
|
||||
|
||||
class File(object):
|
||||
def __init__(self):
|
||||
self._name = get_random_string(64)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self._name
|
||||
|
||||
|
||||
tree = treelib.Tree()
|
||||
base = tree.create_node("Root", "root")
|
||||
build_recursive_tree(tree, base, 2, 10)
|
||||
|
||||
tree.show()
|
Loading…
Add table
Add a link
Reference in a new issue