semvec/pypi-packages huggingface dataset:
masterqa 1.10.1
Automation-Assisted Manual Testing - https://masterqa.com
License: MIT
Requires Python: >=3.8

# MasterQA

[![pypi](https://img.shields.io/pypi/v/masterqa.svg)](https://pypi.python.org/pypi/masterqa) [![Build Status](https://github.com/masterqa/MasterQA/workflows/CI%20build/badge.svg)](https://github.com/masterqa/MasterQA/actions)

### MasterQA combines SeleniumBase automation with manual verification to greatly improve the productivity and sanity of QA teams.

## (NOTE: **[MasterQA is now part of SeleniumBase!](https://github.com/seleniumbase/SeleniumBase/tree/master/seleniumbase/masterqa)**)

![](https://seleniumbase.io/cdn/img/mqa_hybrid.png "MasterQA")

### Run the example test:

```bash
pip install masterqa

git clone https://github.com/masterqa/MasterQA.git

cd MasterQA/examples

pytest masterqa_test.py  # (Default browser: Chrome)
```

![](https://seleniumbase.io/cdn/gif/masterqa6.gif "MasterQA")

### Follow the [example](https://github.com/masterqa/MasterQA/blob/master/examples/masterqa_test.py) to write your own tests:

```python
from seleniumbase import MasterQA

class MasterQATests(MasterQA):
    def test_xkcd(self):
        self.open("https://xkcd.com/1512/")
        for i in range(4):
            self.click('a[rel="next"]')
        for i in range(3):
            self.click('a[rel="prev"]')
        self.verify()

        self.open("https://xkcd.com/1520/")
        for i in range(2):
            self.click('a[rel="next"]')
        self.verify("Can you find the moon?")

        self.click('a[rel="next"]')
        self.verify("Do the drones look safe?")

        self.open("https://seleniumbase.io/devices/")
        self.type("input#urlInput", "seleniumbase.io/error_page\n")
        self.verify("Do you see Octocat in a Jedi knight robe?")

        self.open("https://xkcd.com/213/")
        for i in range(5):
            self.click('a[rel="prev"]')
        self.verify("Does the page say 'Abnormal Expressions'?")
```

You'll notice that tests are written based on [SeleniumBase](https://seleniumbase.io), with the key difference of using a different import: ``from masterqa import MasterQA`` rather than ``from seleniumbase import BaseCase``. Now the test class will import ``MasterQA`` instead of ``BaseCase``.

To add a manual verification step, use ``self.verify()`` in the code after each part of the script that needs manual verification. If you want to include a custom question, add text inside that call (in quotes). Example:

```python
self.verify()

self.verify("Can you find the moon?")
```

MasterQA is powered by [SeleniumBase](https://seleniumbase.io), the most advanced open-source automation platform on the [Planet](https://en.wikipedia.org/wiki/Earth).
format-tree 0.2.3
Advanced formatting, analysis, and visualization utilities for scikit-learn decision trees.
License: MIT
Requires Python: >=3.7
Keywords: decision tree, visualization, sklearn, matplotlib, pandas, analysis, data science, machine learning

# format_tree

A Python package for advanced formatting, analysis, and visualization of scikit-learn decision trees.

## Features
- Plot decision trees with customizable node information (samples, class values as number or percentage)
- Option to display thresholds as integers
- Flexible class name display
- Analyze and summarize tree structure and leaf nodes
- Utilities for checking and reporting null values in leaf nodes (per leaf, per column)
- Convert tree structure to DataFrame for further analysis, including path and sample details
- Support for missing value analysis and advanced DataFrame summaries

## Installation
```bash
pip install format_tree
```

## Usage
### Plot a formatted decision tree
```python
from format_tree import plot_formatted_tree
fig, ax = plot_formatted_tree(
    decision_tree, 
    feature_names=feature_names, 
    class_names=class_names,
    samples_format="percentage",
    value_format="number",
    integer_thresholds=True,
    display_missing=True,  # Show missing value info if desired
    X_train=X,            # Pass your feature data if using display_missing
    columns_to_check=["feature1", "feature2"]  # Columns to check for nulls
)
fig.show()
```

### Check for nulls in leaf nodes (per leaf, per column)
```python
from format_tree import get_nulls_in_leaf_nodes
nulls = get_nulls_in_leaf_nodes(
    decision_tree, X, ["feature1", "feature2"], df=df  # df is optional, X is used if not provided
)
print(nulls)
```

### Summarize tree structure as a DataFrame
```python
from format_tree import summarize_tree
summary_df = summarize_tree(
    decision_tree,
    feature_names=feature_names,
    class_list=class_names,
    display_missing=True,      # Show missing value info if desired
    X_train=X,                 # Pass your tarining data if using display_missing
    columns_to_check=["feature1", "feature2"]
)
print(summary_df.head())
```

### Summarize tree structure as a DataFrame (with class percentages)
```python
from format_tree import summarize_tree
summary_df = summarize_tree(
    decision_tree,
    feature_names=feature_names,
    class_list=class_names,
    display_missing=True,      # Show missing value info if desired
    X_train=X,                 # Pass your training data if using display_missing
    columns_to_check=["feature1", "feature2"]
)
print(summary_df.head())
# The output DataFrame includes columns for each class and their percentage (e.g., 'class1', 'class1%')
```

### Convert feature text columns to standardized range format
```python
from format_tree import convert_text_to_number_column
summary_df = convert_text_to_number_column(summary_df, 'feature1', min_value=0, max_value=10)
print(summary_df.head())
```

## License
MIT

## PyPI
https://pypi.org/project/format_tree/

## GitHub
https://github.com/k-explore/format_tree