A flexible tool for traversing, filtering, and processing file trees
Project description
Treeverse
Treeverse is a Python tool for traversing, processing, and accumulating data from file trees using custom code.
Installation
pip install treeverse
Usage
Treeverse operates in three main steps:
- Build: Traverse the directory and build the file tree
- Process: Apply custom processing to each node
- Accumulate: Aggregate data from child nodes to parent nodes
1. Build the tree
treeverse build -p /path/to/your/project -e py -e yaml \
-c your_module:your_filter_function -o tree.yaml
Options:
-p, --path
: Specify the path to traverse (default is current directory)-e, --extensions
: Specify file extensions to include (can be used multiple times)-c, --callback
: Path to filter callback functions (can be used multiple times)-o, --output
: Output file (default: tree.yaml)--write-to-stream
: Write output to stdout instead of a file
2. Process the tree
treeverse process -i tree.yaml -c your_module:your_processing_function -o processed_tree.yaml
Options:
-i, --input
: Input file (default: tree.yaml)-c, --callback
: Path to the processing function-o, --output
: Output file (default: processed_tree.yaml)--read-from-stream
: Read input from stdin instead of a file--write-to-stream
: Write output to stdout instead of a file
3. Accumulate results
treeverse accumulate -i processed_tree.yaml -c your_module:your_accumulation_function -o final_result.yaml
Options:
-i, --input
: Input file (default: processed_tree.yaml)-c, --callback
: Path to the accumulation function-o, --output
: Output file (default: accumulated_tree.yaml)--read-from-stream
: Read input from stdin instead of a file--write-to-stream
: Write output to stdout instead of a file
Example Use Case
Process all Python and YAML files in a project, analyze them, and accumulate results:
treeverse build -p ~/path/to/your/project -e py -e yaml -o tree.yaml
treeverse process -i tree.yaml -c ~/path/to/your/tools.py:analyze_file -o processed_tree.yaml
treeverse accumulate -i processed_tree.yaml -c ~/path/to/your/tools.py:accumulate_results -o final_analysis.yaml
To use streaming for the entire pipeline:
treeverse build -p ~/path/to/your/project -e py -e yaml --write-to-stream | \
treeverse process -c ~/path/to/your/tools.py:analyze_file --read-from-stream --write-to-stream | \
treeverse accumulate -c ~/path/to/your/tools.py:accumulate_results --read-from-stream > final_analysis.yaml
In this example, tools.py
would contain custom analyze_file
and accumulate_results
functions.
Reference Implementations
For examples of callable functions that can be used with Treeverse, check the simple_callbacks.py
file in the project repository. This file contains reference implementations for filtering, processing, and accumulation functions.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file treeverse-0.2.1.tar.gz
.
File metadata
- Download URL: treeverse-0.2.1.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.6 Darwin/23.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e228608b35f26c2ddd3a541563cb97b5c98f6d7922c33c519b84b32ed13cca20 |
|
MD5 | cf91c7907254c1ca9febe4992d0c5085 |
|
BLAKE2b-256 | f99ab0844fa5ddbf3d3ff0ba49b945e48ba7b31f08fc857ef6d1f70dca577028 |
File details
Details for the file treeverse-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: treeverse-0.2.1-py3-none-any.whl
- Upload date:
- Size: 19.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.6 Darwin/23.4.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b66ba9a3cdb6b81dc58e9115db0fd87e0d81ba1233c1de6e71743f257a5231d5 |
|
MD5 | 97f55c88a47bbdaa098001f2c3e63016 |
|
BLAKE2b-256 | 6280f9c65b0e57ef4133369f32c8b04eadb59070d2a5cae5285e6f52bc8dd492 |