Skip to main content

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:

  1. Build: Traverse the directory and build the file tree
  2. Process: Apply custom processing to each node
  3. 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

treeverse-0.2.1.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

treeverse-0.2.1-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

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

Hashes for treeverse-0.2.1.tar.gz
Algorithm Hash digest
SHA256 e228608b35f26c2ddd3a541563cb97b5c98f6d7922c33c519b84b32ed13cca20
MD5 cf91c7907254c1ca9febe4992d0c5085
BLAKE2b-256 f99ab0844fa5ddbf3d3ff0ba49b945e48ba7b31f08fc857ef6d1f70dca577028

See more details on using hashes here.

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

Hashes for treeverse-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b66ba9a3cdb6b81dc58e9115db0fd87e0d81ba1233c1de6e71743f257a5231d5
MD5 97f55c88a47bbdaa098001f2c3e63016
BLAKE2b-256 6280f9c65b0e57ef4133369f32c8b04eadb59070d2a5cae5285e6f52bc8dd492

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page