script-bisect


Namescript-bisect JSON
Version 0.1.2 PyPI version JSON
download
home_pageNone
SummaryBisect package versions in PEP 723 Python scripts using git bisect and uv
upload_time2025-09-10 16:24:58
maintainerNone
docs_urlNone
authoruv-bisect contributors
requires_python>=3.12
licenseNone
keywords bisect debugging dependencies git pep723 python uv
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # script-bisect

[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Bisect package versions in PEP 723 Python scripts using git bisect and uv.

## Overview

`script-bisect` combines the power of git bisect with PEP 723 inline script metadata to automatically find the commit that introduced a regression in a Python package dependency. It works by:

1. πŸ“„ **Parsing** your PEP 723 script to extract dependency information
2. πŸ“₯ **Cloning** the package repository automatically
3. πŸ”„ **Running** git bisect with intelligent test automation
4. ✏️ **Updating** package references for each commit tested
5. 🎯 **Finding** the exact commit that caused the issue

Perfect for debugging package regressions, testing new features, and creating reliable bug reports.

### Super Quick Start πŸš€

Point script-bisect directly at a real GitHub issue:

```bash
# Bisect a real xarray issue directly from GitHub
uvx script-bisect https://github.com/pydata/xarray/issues/10712 xarray v2025.07.1 v2025.08.0
```

That's it! script-bisect will:

1. **Extract** the code from the GitHub issue
2. **Create** a test script automatically
3. **Detect** the package and repository
4. **Run** the bisection to find the problematic commit

For xarray issue [#10712](https://github.com/pydata/xarray/issues/10712), this will show you exactly which commit introduced the regression!

You can also omit the REFs and fill them in using using the UI

```bash
# Bisect a real xarray issue directly from GitHub
uvx script-bisect https://github.com/pydata/xarray/issues/10712 xarray
```

## Installation

### Using uvx (Recommended)

```bash
uvx script-bisect script.py package_name good_ref bad_ref
```

### Using uv

```bash
uv tool install script-bisect
script-bisect script.py package_name good_ref bad_ref
```

### Development Installation

```bash
git clone https://github.com/user/script-bisect.git
cd script-bisect
uv sync --extra dev
uv run script-bisect --help
```

## Quick Start

### Try It Now! πŸš€

### Manual Script Method

You can also create your own test script:

### 1. Create Your Own Script

Create a script that demonstrates your issue:

```python
# /// script
# requires-python = ">=3.11"
# dependencies = [
#   "xarray@git+https://github.com/pydata/xarray.git@main",
# ]
# ///

import xarray as xr
import numpy as np

# Your reproducer code here
data = xr.Dataset({'temp': (['time'], np.random.randn(10))})
result = data.some_method()  # This might fail in certain versions
print("βœ… Test passed!")
```

### 2. Run the Bisection

```bash
# Find when something broke
script-bisect bug_report.py xarray v2024.01.0 v2024.03.0

# Find when something was fixed (inverse mode)
script-bisect bug_report.py pandas v1.5.0 v2.0.0 --inverse
```

### 3. Get Results

```
πŸ” script-bisect v0.1.0
Bisect package versions in PEP 723 Python scripts

πŸ“¦ Package: xarray
πŸ”— Repository: https://github.com/pydata/xarray.git
βœ… Good ref: v2024.01.0 (commit: abc123...)
❌ Bad ref: v2024.03.0 (commit: def456...)

πŸ”„ Starting bisection (approximately 7 steps)...

✨ Found first bad commit:

Commit: 234pqr890...
Author: John Doe <john@example.com>
Date: 2024-02-15 10:30:00
Message: Refactor array indexing logic

View on GitHub: https://github.com/pydata/xarray/commit/234pqr890
```

## Usage

### Basic Usage

```bash
script-bisect SCRIPT PACKAGE GOOD_REF BAD_REF
```

- **SCRIPT**: Path to your PEP 723 Python script
- **PACKAGE**: Name of the package to bisect
- **GOOD_REF**: Git reference (tag/commit/branch) where it works
- **BAD_REF**: Git reference where it's broken

### Options

- `--repo-url URL`: Override repository URL (auto-detected from git dependencies)
- `--test-command CMD`: Custom test command (default: `uv run SCRIPT`)
- `--inverse`: Find when something was fixed (not broken)
- `--keep-clone`: Keep cloned repository for inspection
- `--dry-run`: Show what would be done without executing
- `--verbose`: Enable detailed logging
- `--yes`: Auto-confirm all prompts for automated usage
- `--verify-endpoints`: Verify good/bad references before starting
- `--refresh-cache`: Force refresh of cached repositories and metadata
- `--full-traceback`: Show full Python tracebacks on errors

### Examples

#### Basic Package Regression

```bash
# Your script has: numpy>=1.24.0
script-bisect reproducer.py numpy 1.24.0 1.26.0
```

#### Git Dependency Already Present

```bash
# Your script has: xarray@git+https://github.com/pydata/xarray.git@main
script-bisect bug_report.py xarray v2024.01.0 main
```

#### Custom Repository

```bash
script-bisect test.py numpy v1.24.0 main \\
    --repo-url https://github.com/numpy/numpy.git
```

#### Custom Test Command

```bash
script-bisect test.py pandas v2.0.0 main \\
    --test-command "python -m pytest {script}"
```

#### Finding Fixes (Inverse Mode)

```bash
# Find when a bug was fixed
script-bisect regression_test.py scipy v1.10.0 v1.11.0 --inverse
```

#### Automated Usage

```bash
# Auto-confirm all prompts for CI/automated use
script-bisect test.py numpy v1.24.0 v1.26.0 --yes --verbose

# Force refresh cached data and verify endpoints
script-bisect test.py xarray v2024.01.0 main --refresh-cache --verify-endpoints
```

#### Advanced Examples

```bash
# Full automation with error details
script-bisect regression.py pandas v1.5.0 v2.0.0 \\
    --yes --full-traceback --keep-clone

# Interactive mode with custom test command
script-bisect integration_test.py requests v2.28.0 v2.31.0 \\
    --test-command "python -m pytest {script} -v"
```

## Requirements

### System Requirements

- **Python 3.11+**
- **uv** package manager ([installation guide](https://docs.astral.sh/uv/getting-started/installation/))
- **git** version control

### Script Requirements

Your Python script must contain PEP 723 inline metadata with dependencies:

```python
# /// script
# requires-python = ">=3.11"
# dependencies = [
#   "package_name>=1.0",
#   # OR for git dependencies:
#   "package_name@git+https://github.com/org/repo.git@ref",
# ]
# ///
```

The tool will automatically convert PyPI package specs to git dependencies during bisection.

## Interactive Features

### Parameter Editing

Before starting bisection, you can interactively modify parameters:

```
πŸ”„ Bisection Summary
[s] πŸ“„ Script     test_script.py
[p] πŸ“¦ Package    xarray
[r] πŸ”— Repository https://github.com/pydata/xarray.git
[g] βœ… Good ref   v2024.01.0
[b] ❌ Bad ref    v2024.03.0
[t] πŸ§ͺ Test command uv run test_script.py
[i] πŸ”„ Mode       Normal (find when broken)

Press the highlighted key to edit that parameter, or:
  Enter/y - Start bisection
  n/q - Cancel
```

- Press any highlighted key (s, p, r, g, b, t, i) to edit that parameter
- Edit scripts directly in your configured editor (respects `git config core.editor`)
- Toggle between normal and inverse bisection modes
- Modify test commands and repository URLs on the fly

### End State Options

After bisection completes, choose what to do next:

1. **Exit** - Complete the bisection
2. **Re-run with different refs** - Try different good/bad references
3. **Re-run with different script** - Edit or change the test script
4. **Re-run with modified parameters** - Change package, repo URL, or test command

### Intelligent Caching

script-bisect includes a smart caching system for better performance:

- **Repository Caching**: Cloned repositories are cached in `~/.cache/script-bisect/repos/`
- **Metadata Caching**: Package metadata is cached to avoid repeated PyPI lookups
- **Automatic Updates**: Cached repos are updated with `git fetch` for new commits
- **Auto-cleanup**: Expired cache entries are cleaned up automatically
- **Force Refresh**: Use `--refresh-cache` to bypass cache and fetch fresh data

Cache locations follow XDG Base Directory standards:

- Linux/macOS: `~/.cache/script-bisect/`
- Windows: `%LOCALAPPDATA%\script-bisect\cache\`

## How It Works

### 1. Script Analysis

- Parses PEP 723 metadata from your script
- Validates package dependencies and requirements
- Auto-detects repository URLs for PyPI packages using multiple sources

### 2. Repository Management

- Clones the package repository (with intelligent caching)
- Validates that good/bad references exist
- Updates cached repositories with latest commits
- Manages cleanup automatically (unless `--keep-clone` is used)

### 3. Bisection Process

- Uses `git bisect run` with an automated test script
- For each commit, updates your script's dependency reference
- Runs `uv run script.py` to test the specific commit
- Returns appropriate exit codes for git bisect (0=good, 1=bad, 125=skip)

### 4. Result Reporting

- Identifies the exact problematic commit
- Shows commit details (author, date, message)
- Provides GitHub/GitLab links when possible
- Offers interactive options for follow-up actions

## Troubleshooting

### Common Issues

**"Package not found in dependencies"**

- Ensure the package name matches exactly what's in your dependencies list
- Use `--verbose` to see available packages

**"Could not auto-detect repository URL"**

- Use `--repo-url` to specify the repository manually
- Ensure the package has repository metadata on PyPI

**"uv not found"**

- Install uv: `curl -LsSf https://astral.sh/uv/install.sh | sh`
- Ensure uv is in your PATH

**Test always fails/passes**

- Check your script logic with `--dry-run`
- Use `--verbose` to see test output
- Verify your script correctly demonstrates the issue

### Getting Help

- Check the [troubleshooting guide](./docs/troubleshooting.md)
- Review example scripts in [`examples/`](./examples/)
- Open an issue on [GitHub](https://github.com/user/script-bisect/issues)

## Future Features

### Roadmap πŸ—ΊοΈ

- **Multiple Package Bisection**: Bisect multiple related packages simultaneously
- **PyPI Metadata Lookup**: Automatic repository detection for more packages
- **Regression Test Suite**: Generate test suites from bisection results
- **CI Integration**: GitHub Actions and other CI platform support

## Contributing

We welcome contributions! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.

### Development Setup

```bash
git clone https://github.com/user/script-bisect.git
cd script-bisect
uv sync --extra dev
uv run pre-commit install

# Run tests
uv run pytest
uv run pytest --cov=script_bisect

# Format and lint
uv run ruff format
uv run ruff check --fix
```

## License

MIT License - see [LICENSE](./LICENSE) for details.

## Acknowledgments

- Built with [uv](https://github.com/astral-sh/uv) for fast Python package management
- Inspired by [PEP 723](https://peps.python.org/pep-0723/) inline script metadata
- Uses [rich](https://github.com/Textualize/rich) for beautiful terminal output

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "script-bisect",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "bisect, debugging, dependencies, git, pep723, python, uv",
    "author": "uv-bisect contributors",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/18/ac/fbfd9ebaa219a1e198f51386c2cb4e561836edd68d566a47442340a78ca1/script_bisect-0.1.2.tar.gz",
    "platform": null,
    "description": "# script-bisect\n\n[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nBisect package versions in PEP 723 Python scripts using git bisect and uv.\n\n## Overview\n\n`script-bisect` combines the power of git bisect with PEP 723 inline script metadata to automatically find the commit that introduced a regression in a Python package dependency. It works by:\n\n1. \ud83d\udcc4 **Parsing** your PEP 723 script to extract dependency information\n2. \ud83d\udce5 **Cloning** the package repository automatically\n3. \ud83d\udd04 **Running** git bisect with intelligent test automation\n4. \u270f\ufe0f **Updating** package references for each commit tested\n5. \ud83c\udfaf **Finding** the exact commit that caused the issue\n\nPerfect for debugging package regressions, testing new features, and creating reliable bug reports.\n\n### Super Quick Start \ud83d\ude80\n\nPoint script-bisect directly at a real GitHub issue:\n\n```bash\n# Bisect a real xarray issue directly from GitHub\nuvx script-bisect https://github.com/pydata/xarray/issues/10712 xarray v2025.07.1 v2025.08.0\n```\n\nThat's it! script-bisect will:\n\n1. **Extract** the code from the GitHub issue\n2. **Create** a test script automatically\n3. **Detect** the package and repository\n4. **Run** the bisection to find the problematic commit\n\nFor xarray issue [#10712](https://github.com/pydata/xarray/issues/10712), this will show you exactly which commit introduced the regression!\n\nYou can also omit the REFs and fill them in using using the UI\n\n```bash\n# Bisect a real xarray issue directly from GitHub\nuvx script-bisect https://github.com/pydata/xarray/issues/10712 xarray\n```\n\n## Installation\n\n### Using uvx (Recommended)\n\n```bash\nuvx script-bisect script.py package_name good_ref bad_ref\n```\n\n### Using uv\n\n```bash\nuv tool install script-bisect\nscript-bisect script.py package_name good_ref bad_ref\n```\n\n### Development Installation\n\n```bash\ngit clone https://github.com/user/script-bisect.git\ncd script-bisect\nuv sync --extra dev\nuv run script-bisect --help\n```\n\n## Quick Start\n\n### Try It Now! \ud83d\ude80\n\n### Manual Script Method\n\nYou can also create your own test script:\n\n### 1. Create Your Own Script\n\nCreate a script that demonstrates your issue:\n\n```python\n# /// script\n# requires-python = \">=3.11\"\n# dependencies = [\n#   \"xarray@git+https://github.com/pydata/xarray.git@main\",\n# ]\n# ///\n\nimport xarray as xr\nimport numpy as np\n\n# Your reproducer code here\ndata = xr.Dataset({'temp': (['time'], np.random.randn(10))})\nresult = data.some_method()  # This might fail in certain versions\nprint(\"\u2705 Test passed!\")\n```\n\n### 2. Run the Bisection\n\n```bash\n# Find when something broke\nscript-bisect bug_report.py xarray v2024.01.0 v2024.03.0\n\n# Find when something was fixed (inverse mode)\nscript-bisect bug_report.py pandas v1.5.0 v2.0.0 --inverse\n```\n\n### 3. Get Results\n\n```\n\ud83d\udd0d script-bisect v0.1.0\nBisect package versions in PEP 723 Python scripts\n\n\ud83d\udce6 Package: xarray\n\ud83d\udd17 Repository: https://github.com/pydata/xarray.git\n\u2705 Good ref: v2024.01.0 (commit: abc123...)\n\u274c Bad ref: v2024.03.0 (commit: def456...)\n\n\ud83d\udd04 Starting bisection (approximately 7 steps)...\n\n\u2728 Found first bad commit:\n\nCommit: 234pqr890...\nAuthor: John Doe <john@example.com>\nDate: 2024-02-15 10:30:00\nMessage: Refactor array indexing logic\n\nView on GitHub: https://github.com/pydata/xarray/commit/234pqr890\n```\n\n## Usage\n\n### Basic Usage\n\n```bash\nscript-bisect SCRIPT PACKAGE GOOD_REF BAD_REF\n```\n\n- **SCRIPT**: Path to your PEP 723 Python script\n- **PACKAGE**: Name of the package to bisect\n- **GOOD_REF**: Git reference (tag/commit/branch) where it works\n- **BAD_REF**: Git reference where it's broken\n\n### Options\n\n- `--repo-url URL`: Override repository URL (auto-detected from git dependencies)\n- `--test-command CMD`: Custom test command (default: `uv run SCRIPT`)\n- `--inverse`: Find when something was fixed (not broken)\n- `--keep-clone`: Keep cloned repository for inspection\n- `--dry-run`: Show what would be done without executing\n- `--verbose`: Enable detailed logging\n- `--yes`: Auto-confirm all prompts for automated usage\n- `--verify-endpoints`: Verify good/bad references before starting\n- `--refresh-cache`: Force refresh of cached repositories and metadata\n- `--full-traceback`: Show full Python tracebacks on errors\n\n### Examples\n\n#### Basic Package Regression\n\n```bash\n# Your script has: numpy>=1.24.0\nscript-bisect reproducer.py numpy 1.24.0 1.26.0\n```\n\n#### Git Dependency Already Present\n\n```bash\n# Your script has: xarray@git+https://github.com/pydata/xarray.git@main\nscript-bisect bug_report.py xarray v2024.01.0 main\n```\n\n#### Custom Repository\n\n```bash\nscript-bisect test.py numpy v1.24.0 main \\\\\n    --repo-url https://github.com/numpy/numpy.git\n```\n\n#### Custom Test Command\n\n```bash\nscript-bisect test.py pandas v2.0.0 main \\\\\n    --test-command \"python -m pytest {script}\"\n```\n\n#### Finding Fixes (Inverse Mode)\n\n```bash\n# Find when a bug was fixed\nscript-bisect regression_test.py scipy v1.10.0 v1.11.0 --inverse\n```\n\n#### Automated Usage\n\n```bash\n# Auto-confirm all prompts for CI/automated use\nscript-bisect test.py numpy v1.24.0 v1.26.0 --yes --verbose\n\n# Force refresh cached data and verify endpoints\nscript-bisect test.py xarray v2024.01.0 main --refresh-cache --verify-endpoints\n```\n\n#### Advanced Examples\n\n```bash\n# Full automation with error details\nscript-bisect regression.py pandas v1.5.0 v2.0.0 \\\\\n    --yes --full-traceback --keep-clone\n\n# Interactive mode with custom test command\nscript-bisect integration_test.py requests v2.28.0 v2.31.0 \\\\\n    --test-command \"python -m pytest {script} -v\"\n```\n\n## Requirements\n\n### System Requirements\n\n- **Python 3.11+**\n- **uv** package manager ([installation guide](https://docs.astral.sh/uv/getting-started/installation/))\n- **git** version control\n\n### Script Requirements\n\nYour Python script must contain PEP 723 inline metadata with dependencies:\n\n```python\n# /// script\n# requires-python = \">=3.11\"\n# dependencies = [\n#   \"package_name>=1.0\",\n#   # OR for git dependencies:\n#   \"package_name@git+https://github.com/org/repo.git@ref\",\n# ]\n# ///\n```\n\nThe tool will automatically convert PyPI package specs to git dependencies during bisection.\n\n## Interactive Features\n\n### Parameter Editing\n\nBefore starting bisection, you can interactively modify parameters:\n\n```\n\ud83d\udd04 Bisection Summary\n[s] \ud83d\udcc4 Script     test_script.py\n[p] \ud83d\udce6 Package    xarray\n[r] \ud83d\udd17 Repository https://github.com/pydata/xarray.git\n[g] \u2705 Good ref   v2024.01.0\n[b] \u274c Bad ref    v2024.03.0\n[t] \ud83e\uddea Test command uv run test_script.py\n[i] \ud83d\udd04 Mode       Normal (find when broken)\n\nPress the highlighted key to edit that parameter, or:\n  Enter/y - Start bisection\n  n/q - Cancel\n```\n\n- Press any highlighted key (s, p, r, g, b, t, i) to edit that parameter\n- Edit scripts directly in your configured editor (respects `git config core.editor`)\n- Toggle between normal and inverse bisection modes\n- Modify test commands and repository URLs on the fly\n\n### End State Options\n\nAfter bisection completes, choose what to do next:\n\n1. **Exit** - Complete the bisection\n2. **Re-run with different refs** - Try different good/bad references\n3. **Re-run with different script** - Edit or change the test script\n4. **Re-run with modified parameters** - Change package, repo URL, or test command\n\n### Intelligent Caching\n\nscript-bisect includes a smart caching system for better performance:\n\n- **Repository Caching**: Cloned repositories are cached in `~/.cache/script-bisect/repos/`\n- **Metadata Caching**: Package metadata is cached to avoid repeated PyPI lookups\n- **Automatic Updates**: Cached repos are updated with `git fetch` for new commits\n- **Auto-cleanup**: Expired cache entries are cleaned up automatically\n- **Force Refresh**: Use `--refresh-cache` to bypass cache and fetch fresh data\n\nCache locations follow XDG Base Directory standards:\n\n- Linux/macOS: `~/.cache/script-bisect/`\n- Windows: `%LOCALAPPDATA%\\script-bisect\\cache\\`\n\n## How It Works\n\n### 1. Script Analysis\n\n- Parses PEP 723 metadata from your script\n- Validates package dependencies and requirements\n- Auto-detects repository URLs for PyPI packages using multiple sources\n\n### 2. Repository Management\n\n- Clones the package repository (with intelligent caching)\n- Validates that good/bad references exist\n- Updates cached repositories with latest commits\n- Manages cleanup automatically (unless `--keep-clone` is used)\n\n### 3. Bisection Process\n\n- Uses `git bisect run` with an automated test script\n- For each commit, updates your script's dependency reference\n- Runs `uv run script.py` to test the specific commit\n- Returns appropriate exit codes for git bisect (0=good, 1=bad, 125=skip)\n\n### 4. Result Reporting\n\n- Identifies the exact problematic commit\n- Shows commit details (author, date, message)\n- Provides GitHub/GitLab links when possible\n- Offers interactive options for follow-up actions\n\n## Troubleshooting\n\n### Common Issues\n\n**\"Package not found in dependencies\"**\n\n- Ensure the package name matches exactly what's in your dependencies list\n- Use `--verbose` to see available packages\n\n**\"Could not auto-detect repository URL\"**\n\n- Use `--repo-url` to specify the repository manually\n- Ensure the package has repository metadata on PyPI\n\n**\"uv not found\"**\n\n- Install uv: `curl -LsSf https://astral.sh/uv/install.sh | sh`\n- Ensure uv is in your PATH\n\n**Test always fails/passes**\n\n- Check your script logic with `--dry-run`\n- Use `--verbose` to see test output\n- Verify your script correctly demonstrates the issue\n\n### Getting Help\n\n- Check the [troubleshooting guide](./docs/troubleshooting.md)\n- Review example scripts in [`examples/`](./examples/)\n- Open an issue on [GitHub](https://github.com/user/script-bisect/issues)\n\n## Future Features\n\n### Roadmap \ud83d\uddfa\ufe0f\n\n- **Multiple Package Bisection**: Bisect multiple related packages simultaneously\n- **PyPI Metadata Lookup**: Automatic repository detection for more packages\n- **Regression Test Suite**: Generate test suites from bisection results\n- **CI Integration**: GitHub Actions and other CI platform support\n\n## Contributing\n\nWe welcome contributions! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n### Development Setup\n\n```bash\ngit clone https://github.com/user/script-bisect.git\ncd script-bisect\nuv sync --extra dev\nuv run pre-commit install\n\n# Run tests\nuv run pytest\nuv run pytest --cov=script_bisect\n\n# Format and lint\nuv run ruff format\nuv run ruff check --fix\n```\n\n## License\n\nMIT License - see [LICENSE](./LICENSE) for details.\n\n## Acknowledgments\n\n- Built with [uv](https://github.com/astral-sh/uv) for fast Python package management\n- Inspired by [PEP 723](https://peps.python.org/pep-0723/) inline script metadata\n- Uses [rich](https://github.com/Textualize/rich) for beautiful terminal output\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Bisect package versions in PEP 723 Python scripts using git bisect and uv",
    "version": "0.1.2",
    "project_urls": {
        "Documentation": "https://github.com/ianhi/script-bisect#readme",
        "Issues": "https://github.com/ianhi/script-bisect/issues",
        "Source": "https://github.com/ianhi/script-bisect"
    },
    "split_keywords": [
        "bisect",
        " debugging",
        " dependencies",
        " git",
        " pep723",
        " python",
        " uv"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "dc5dabdf542eecfcebb3ce034bc185e1f0a1d09504261fae91a07babe54e5ee9",
                "md5": "a5c9140c53b8fb15eadce0ba60b457d7",
                "sha256": "e792db919631c6a121895403e3383f08e4eabec0a5572d1f8ace174eb09256f6"
            },
            "downloads": -1,
            "filename": "script_bisect-0.1.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a5c9140c53b8fb15eadce0ba60b457d7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 80116,
            "upload_time": "2025-09-10T16:24:57",
            "upload_time_iso_8601": "2025-09-10T16:24:57.163736Z",
            "url": "https://files.pythonhosted.org/packages/dc/5d/abdf542eecfcebb3ce034bc185e1f0a1d09504261fae91a07babe54e5ee9/script_bisect-0.1.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "18acfbfd9ebaa219a1e198f51386c2cb4e561836edd68d566a47442340a78ca1",
                "md5": "5daa79ebb2aa88cb083a0c765164224b",
                "sha256": "5ee92c131dc7750dce34d12b1779cc00402a9b47c8562131393aa8c7d128621f"
            },
            "downloads": -1,
            "filename": "script_bisect-0.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "5daa79ebb2aa88cb083a0c765164224b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 5086868,
            "upload_time": "2025-09-10T16:24:58",
            "upload_time_iso_8601": "2025-09-10T16:24:58.524145Z",
            "url": "https://files.pythonhosted.org/packages/18/ac/fbfd9ebaa219a1e198f51386c2cb4e561836edd68d566a47442340a78ca1/script_bisect-0.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-10 16:24:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ianhi",
    "github_project": "script-bisect#readme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "script-bisect"
}
        
Elapsed time: 3.98543s