proofofthought


Nameproofofthought JSON
Version 1.0.1 PyPI version JSON
download
home_pageNone
SummaryLLM-based reasoning using Z3 theorem proving
upload_time2025-10-18 00:31:47
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT
keywords llm reasoning z3 theorem-proving smt ai
VCS
bugtrack_url
requirements annotated-types anyio babel backrefs black certifi cfgv charset-normalizer click colorama distlib distro filelock ghp-import h11 httpcore httpx identify idna iniconfig Jinja2 jiter joblib Markdown MarkupSafe mergedeep mkdocs mkdocs-get-deps mkdocs-material mkdocs-material-extensions mypy mypy_extensions nodeenv numpy openai packaging paginate pandas pathspec platformdirs pluggy pre_commit pyarrow pydantic pydantic_core Pygments pymdown-extensions pytest python-dateutil python-dotenv pytokens pytz PyYAML pyyaml_env_tag requests ruff scikit-learn scipy six sniffio threadpoolctl tqdm typing-inspection typing_extensions tzdata urllib3 virtualenv watchdog z3-solver
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ProofOfThought

[![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Z3](https://img.shields.io/badge/Z3-4.15+-green.svg)](https://github.com/Z3Prover/z3)
[![OpenAI](https://img.shields.io/badge/OpenAI-Compatible-412991.svg)](https://platform.openai.com/)
[![Azure](https://img.shields.io/badge/Azure-GPT--4o/GPT--5-0078D4.svg)](https://azure.microsoft.com/en-us/products/ai-services/openai-service)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

LLM-based reasoning using Z3 theorem proving with multiple backend support (SMT2 and JSON).

## Features

- **Dual Backend Support**: Choose between SMT2 (default) or JSON execution backends
- **Azure OpenAI Integration**: Native support for Azure GPT-4o and GPT-5 models
- **Comprehensive Benchmarks**: Evaluated on 5 reasoning datasets (ProntoQA, FOLIO, ProofWriter, ConditionalQA, StrategyQA)
- **High-level API**: Simple Python interface for reasoning tasks
- **Batch Evaluation Pipeline**: Built-in tools for dataset evaluation and metrics
- **Postprocessing Techniques**: Self-Refine, Self-Consistency, Decomposed Prompting, and Least-to-Most Prompting for enhanced reasoning quality

## Installation

### From PyPI (Recommended)

Install the latest stable version:

```bash
pip install proofofthought
```

**Note:** Package name is `proofofthought`, but imports use `z3adapter`:
```python
from z3adapter.reasoning import ProofOfThought
```

### From Source (Development)

For contributing or using the latest development version:

```bash
git clone https://github.com/debarghaG/proofofthought.git
cd proofofthought
pip install -r requirements.txt
```

### Prerequisites

- Python 3.12 or higher
- An OpenAI API key or Azure OpenAI endpoint
- Z3 solver (automatically installed via `z3-solver` package)

## Setup

### Environment Variables

Create a `.env` file in your project directory:

**For OpenAI:**
```bash
OPENAI_API_KEY=your-api-key-here
```

**For Azure OpenAI:**
```bash
AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com/
AZURE_OPENAI_KEY=your-azure-key-here
AZURE_DEPLOYMENT_NAME=gpt-5  # or gpt-4o
AZURE_API_VERSION=2024-02-15-preview
```

You can also set these as system environment variables instead of using a `.env` file.

## Quick Start

### Using OpenAI

```python
import os
from dotenv import load_dotenv
from openai import OpenAI
from z3adapter.reasoning import ProofOfThought

# Load environment variables
load_dotenv()

# Create OpenAI client
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# Initialize ProofOfThought
pot = ProofOfThought(llm_client=client, model="gpt-4o")

# Ask a question
result = pot.query("Would Nancy Pelosi publicly denounce abortion?")
print(result.answer)  # False
```

### Using Azure OpenAI

```python
import os
from dotenv import load_dotenv
from openai import AzureOpenAI
from z3adapter.reasoning import ProofOfThought

# Load environment variables
load_dotenv()

# Create Azure OpenAI client
client = AzureOpenAI(
    azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
    api_key=os.getenv("AZURE_OPENAI_KEY"),
    api_version=os.getenv("AZURE_API_VERSION")
)

# Initialize ProofOfThought with your deployment name
pot = ProofOfThought(
    llm_client=client,
    model=os.getenv("AZURE_DEPLOYMENT_NAME")  # e.g., "gpt-4o" or "gpt-5"
)

# Ask a question
result = pot.query("Would Nancy Pelosi publicly denounce abortion?")
print(result.answer)  # False
```

## Batch Evaluation

```python
from z3adapter.reasoning import EvaluationPipeline, ProofOfThought

evaluator = EvaluationPipeline(proof_of_thought=pot, output_dir="results/")
result = evaluator.evaluate(
    dataset="data/strategyQA_train.json",
    question_field="question",
    answer_field="answer",
    max_samples=10
)
print(f"Accuracy: {result.metrics.accuracy:.2%}")
```

## Backend Selection

ProofOfThought supports two execution backends:

```python
# SMT2 backend (default) - Standard SMT-LIB 2.0 via Z3 CLI
pot = ProofOfThought(llm_client=client, backend="smt2")

# JSON backend - Custom DSL via Python Z3 API
pot = ProofOfThought(llm_client=client, backend="json")
```

See [BACKENDS.md](BACKENDS.md) for details on choosing a backend.

## Postprocessing Techniques

Enhance reasoning quality with advanced postprocessing techniques:

```python
# Enable Self-Refine for iterative refinement
pot = ProofOfThought(
    llm_client=client,
    postprocessors=["self_refine"],
    postprocessor_configs={"self_refine": {"num_iterations": 2}}
)

# Use Self-Consistency for improved reliability via majority voting
pot = ProofOfThought(
    llm_client=client,
    postprocessors=["self_consistency"],
    postprocessor_configs={"self_consistency": {"num_samples": 5}}
)

# Chain multiple postprocessors
pot = ProofOfThought(
    llm_client=client,
    postprocessors=["self_refine", "self_consistency"]
)
```

Available techniques:
- **Self-Refine**: Iterative refinement through self-critique
- **Self-Consistency**: Majority voting across multiple reasoning paths
- **Decomposed Prompting**: Breaking complex questions into sub-questions
- **Least-to-Most Prompting**: Progressive problem solving from simple to complex

See [POSTPROCESSORS.md](POSTPROCESSORS.md) for complete documentation and usage examples.

## Architecture

The system has two layers:

1. **High-level API** (`z3adapter.reasoning`) - Simple Python interface for reasoning tasks
2. **Low-level execution** (`z3adapter.backends`) - JSON DSL or SMT2 backend for Z3

Most users should use the high-level API.

## Examples

The `examples/` directory contains complete working examples for various use cases:

- **simple_usage.py** - Basic usage with OpenAI
- **azure_simple_example.py** - Simple Azure OpenAI integration
- **backend_comparison.py** - Comparing SMT2 vs JSON backends
- **batch_evaluation.py** - Evaluating on datasets
- **postprocessor_example.py** - Using postprocessing techniques

### Running Examples After pip Install

If you installed via `pip install proofofthought`, you can create your own scripts anywhere using the Quick Start examples above. The examples directory is primarily for development and testing.

### Running Examples in Development Mode

If you cloned the repository:

```bash
cd /path/to/proofofthought
python examples/simple_usage.py
```

**Note:** Some examples use helper modules like `utils/azure_config.py` which are only available when running from the repository root.

## Running Experiments

You can use this repository as a strong baseline for LLM+Solver methods. This code is generally benchmarked with GPT-5 on the first 100 samples of 5 datasets, as an indicator of whether we broke something during development. These numbers are not the best, and you can certainly get better numbers with better prompt engineering with this same tooling. Please feel free to put in a PR if you get better numbers with modified prompts.

To run all benchmarks with both backends and generate results:

```bash
python experiments_pipeline.py
```

This will:
- Run all 5 benchmarks (ProntoQA, FOLIO, ProofWriter, ConditionalQA, StrategyQA)
- Test both SMT2 and JSON backends
- Generate results tables in `results/`
- Automatically update the benchmark results section below

<!-- BENCHMARK_RESULTS_START -->

# Benchmark Results

**Last Updated:** 2025-10-16 18:14:07

| Benchmark | Backend | Samples | Accuracy | Precision | Recall | F1 Score | Success Rate |
|-----------|---------|---------|----------|-----------|--------|----------|--------------|
| PRONTOQA | SMT2 | 100 | 100.00% | 1.0000 | 1.0000 | 1.0000 | 100.00% |
| FOLIO | SMT2 | 100 | 69.00% | 0.6949 | 0.7736 | 0.7321 | 99.00% |
| PROOFWRITER | SMT2 | 96 | 98.96% | 1.0000 | 1.0000 | 1.0000 | 98.96% |
| CONDITIONALQA | SMT2 | 100 | 83.00% | 0.9375 | 0.8219 | 0.8759 | 100.00% |
| STRATEGYQA | SMT2 | 100 | 84.00% | 0.8205 | 0.7805 | 0.8000 | 100.00% |
| PRONTOQA | JSON | 100 | 99.00% | 1.0000 | 0.9815 | 0.9907 | 100.00% |
| FOLIO | JSON | 100 | 76.00% | 0.7619 | 0.9412 | 0.8421 | 94.00% |
| PROOFWRITER | JSON | 96 | 95.83% | 1.0000 | 1.0000 | 1.0000 | 95.83% |
| CONDITIONALQA | JSON | 100 | 76.00% | 0.9180 | 0.8750 | 0.8960 | 89.00% |
| STRATEGYQA | JSON | 100 | 68.00% | 0.7500 | 0.7895 | 0.7692 | 86.00% |



<!-- BENCHMARK_RESULTS_END -->

# Citations

Please consider citing our work if you find this useful.

```
@inproceedings{
ganguly2024proof,
title={{PROOF} {OF} {THOUGHT} : Neurosymbolic Program Synthesis allows Robust and Interpretable Reasoning},
author={Debargha Ganguly and Srinivasan Iyengar and Vipin Chaudhary and Shivkumar Kalyanaraman},
booktitle={The First Workshop on System-2 Reasoning at Scale, NeurIPS'24},
year={2024},
url={https://openreview.net/forum?id=Pxx3r14j3U}
}
```

```
@inproceedings{
ganguly2025grammars,
title={Grammars of Formal Uncertainty: When to Trust {LLM}s in Automated Reasoning Tasks},
author={Debargha Ganguly and Vikash Singh and Sreehari Sankar and Biyao Zhang and Xuecen Zhang and Srinivasan Iyengar and Xiaotian Han and Amit Sharma and Shivkumar Kalyanaraman and Vipin Chaudhary},
booktitle={The Thirty-ninth Annual Conference on Neural Information Processing Systems},
year={2025},
url={https://openreview.net/forum?id=QfKpJ00t2L}
}
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "proofofthought",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "llm, reasoning, z3, theorem-proving, smt, ai",
    "author": null,
    "author_email": "Debargha Ganguly <debargha@case.edu>",
    "download_url": "https://files.pythonhosted.org/packages/99/7d/959daf852aa99cb9b66584adad065934a4451713cf8044659050fd11d702/proofofthought-1.0.1.tar.gz",
    "platform": null,
    "description": "# ProofOfThought\n\n[![Python 3.12](https://img.shields.io/badge/python-3.12-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[![Z3](https://img.shields.io/badge/Z3-4.15+-green.svg)](https://github.com/Z3Prover/z3)\n[![OpenAI](https://img.shields.io/badge/OpenAI-Compatible-412991.svg)](https://platform.openai.com/)\n[![Azure](https://img.shields.io/badge/Azure-GPT--4o/GPT--5-0078D4.svg)](https://azure.microsoft.com/en-us/products/ai-services/openai-service)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\nLLM-based reasoning using Z3 theorem proving with multiple backend support (SMT2 and JSON).\n\n## Features\n\n- **Dual Backend Support**: Choose between SMT2 (default) or JSON execution backends\n- **Azure OpenAI Integration**: Native support for Azure GPT-4o and GPT-5 models\n- **Comprehensive Benchmarks**: Evaluated on 5 reasoning datasets (ProntoQA, FOLIO, ProofWriter, ConditionalQA, StrategyQA)\n- **High-level API**: Simple Python interface for reasoning tasks\n- **Batch Evaluation Pipeline**: Built-in tools for dataset evaluation and metrics\n- **Postprocessing Techniques**: Self-Refine, Self-Consistency, Decomposed Prompting, and Least-to-Most Prompting for enhanced reasoning quality\n\n## Installation\n\n### From PyPI (Recommended)\n\nInstall the latest stable version:\n\n```bash\npip install proofofthought\n```\n\n**Note:** Package name is `proofofthought`, but imports use `z3adapter`:\n```python\nfrom z3adapter.reasoning import ProofOfThought\n```\n\n### From Source (Development)\n\nFor contributing or using the latest development version:\n\n```bash\ngit clone https://github.com/debarghaG/proofofthought.git\ncd proofofthought\npip install -r requirements.txt\n```\n\n### Prerequisites\n\n- Python 3.12 or higher\n- An OpenAI API key or Azure OpenAI endpoint\n- Z3 solver (automatically installed via `z3-solver` package)\n\n## Setup\n\n### Environment Variables\n\nCreate a `.env` file in your project directory:\n\n**For OpenAI:**\n```bash\nOPENAI_API_KEY=your-api-key-here\n```\n\n**For Azure OpenAI:**\n```bash\nAZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com/\nAZURE_OPENAI_KEY=your-azure-key-here\nAZURE_DEPLOYMENT_NAME=gpt-5  # or gpt-4o\nAZURE_API_VERSION=2024-02-15-preview\n```\n\nYou can also set these as system environment variables instead of using a `.env` file.\n\n## Quick Start\n\n### Using OpenAI\n\n```python\nimport os\nfrom dotenv import load_dotenv\nfrom openai import OpenAI\nfrom z3adapter.reasoning import ProofOfThought\n\n# Load environment variables\nload_dotenv()\n\n# Create OpenAI client\nclient = OpenAI(api_key=os.getenv(\"OPENAI_API_KEY\"))\n\n# Initialize ProofOfThought\npot = ProofOfThought(llm_client=client, model=\"gpt-4o\")\n\n# Ask a question\nresult = pot.query(\"Would Nancy Pelosi publicly denounce abortion?\")\nprint(result.answer)  # False\n```\n\n### Using Azure OpenAI\n\n```python\nimport os\nfrom dotenv import load_dotenv\nfrom openai import AzureOpenAI\nfrom z3adapter.reasoning import ProofOfThought\n\n# Load environment variables\nload_dotenv()\n\n# Create Azure OpenAI client\nclient = AzureOpenAI(\n    azure_endpoint=os.getenv(\"AZURE_OPENAI_ENDPOINT\"),\n    api_key=os.getenv(\"AZURE_OPENAI_KEY\"),\n    api_version=os.getenv(\"AZURE_API_VERSION\")\n)\n\n# Initialize ProofOfThought with your deployment name\npot = ProofOfThought(\n    llm_client=client,\n    model=os.getenv(\"AZURE_DEPLOYMENT_NAME\")  # e.g., \"gpt-4o\" or \"gpt-5\"\n)\n\n# Ask a question\nresult = pot.query(\"Would Nancy Pelosi publicly denounce abortion?\")\nprint(result.answer)  # False\n```\n\n## Batch Evaluation\n\n```python\nfrom z3adapter.reasoning import EvaluationPipeline, ProofOfThought\n\nevaluator = EvaluationPipeline(proof_of_thought=pot, output_dir=\"results/\")\nresult = evaluator.evaluate(\n    dataset=\"data/strategyQA_train.json\",\n    question_field=\"question\",\n    answer_field=\"answer\",\n    max_samples=10\n)\nprint(f\"Accuracy: {result.metrics.accuracy:.2%}\")\n```\n\n## Backend Selection\n\nProofOfThought supports two execution backends:\n\n```python\n# SMT2 backend (default) - Standard SMT-LIB 2.0 via Z3 CLI\npot = ProofOfThought(llm_client=client, backend=\"smt2\")\n\n# JSON backend - Custom DSL via Python Z3 API\npot = ProofOfThought(llm_client=client, backend=\"json\")\n```\n\nSee [BACKENDS.md](BACKENDS.md) for details on choosing a backend.\n\n## Postprocessing Techniques\n\nEnhance reasoning quality with advanced postprocessing techniques:\n\n```python\n# Enable Self-Refine for iterative refinement\npot = ProofOfThought(\n    llm_client=client,\n    postprocessors=[\"self_refine\"],\n    postprocessor_configs={\"self_refine\": {\"num_iterations\": 2}}\n)\n\n# Use Self-Consistency for improved reliability via majority voting\npot = ProofOfThought(\n    llm_client=client,\n    postprocessors=[\"self_consistency\"],\n    postprocessor_configs={\"self_consistency\": {\"num_samples\": 5}}\n)\n\n# Chain multiple postprocessors\npot = ProofOfThought(\n    llm_client=client,\n    postprocessors=[\"self_refine\", \"self_consistency\"]\n)\n```\n\nAvailable techniques:\n- **Self-Refine**: Iterative refinement through self-critique\n- **Self-Consistency**: Majority voting across multiple reasoning paths\n- **Decomposed Prompting**: Breaking complex questions into sub-questions\n- **Least-to-Most Prompting**: Progressive problem solving from simple to complex\n\nSee [POSTPROCESSORS.md](POSTPROCESSORS.md) for complete documentation and usage examples.\n\n## Architecture\n\nThe system has two layers:\n\n1. **High-level API** (`z3adapter.reasoning`) - Simple Python interface for reasoning tasks\n2. **Low-level execution** (`z3adapter.backends`) - JSON DSL or SMT2 backend for Z3\n\nMost users should use the high-level API.\n\n## Examples\n\nThe `examples/` directory contains complete working examples for various use cases:\n\n- **simple_usage.py** - Basic usage with OpenAI\n- **azure_simple_example.py** - Simple Azure OpenAI integration\n- **backend_comparison.py** - Comparing SMT2 vs JSON backends\n- **batch_evaluation.py** - Evaluating on datasets\n- **postprocessor_example.py** - Using postprocessing techniques\n\n### Running Examples After pip Install\n\nIf you installed via `pip install proofofthought`, you can create your own scripts anywhere using the Quick Start examples above. The examples directory is primarily for development and testing.\n\n### Running Examples in Development Mode\n\nIf you cloned the repository:\n\n```bash\ncd /path/to/proofofthought\npython examples/simple_usage.py\n```\n\n**Note:** Some examples use helper modules like `utils/azure_config.py` which are only available when running from the repository root.\n\n## Running Experiments\n\nYou can use this repository as a strong baseline for LLM+Solver methods. This code is generally benchmarked with GPT-5 on the first 100 samples of 5 datasets, as an indicator of whether we broke something during development. These numbers are not the best, and you can certainly get better numbers with better prompt engineering with this same tooling. Please feel free to put in a PR if you get better numbers with modified prompts.\n\nTo run all benchmarks with both backends and generate results:\n\n```bash\npython experiments_pipeline.py\n```\n\nThis will:\n- Run all 5 benchmarks (ProntoQA, FOLIO, ProofWriter, ConditionalQA, StrategyQA)\n- Test both SMT2 and JSON backends\n- Generate results tables in `results/`\n- Automatically update the benchmark results section below\n\n<!-- BENCHMARK_RESULTS_START -->\n\n# Benchmark Results\n\n**Last Updated:** 2025-10-16 18:14:07\n\n| Benchmark | Backend | Samples | Accuracy | Precision | Recall | F1 Score | Success Rate |\n|-----------|---------|---------|----------|-----------|--------|----------|--------------|\n| PRONTOQA | SMT2 | 100 | 100.00% | 1.0000 | 1.0000 | 1.0000 | 100.00% |\n| FOLIO | SMT2 | 100 | 69.00% | 0.6949 | 0.7736 | 0.7321 | 99.00% |\n| PROOFWRITER | SMT2 | 96 | 98.96% | 1.0000 | 1.0000 | 1.0000 | 98.96% |\n| CONDITIONALQA | SMT2 | 100 | 83.00% | 0.9375 | 0.8219 | 0.8759 | 100.00% |\n| STRATEGYQA | SMT2 | 100 | 84.00% | 0.8205 | 0.7805 | 0.8000 | 100.00% |\n| PRONTOQA | JSON | 100 | 99.00% | 1.0000 | 0.9815 | 0.9907 | 100.00% |\n| FOLIO | JSON | 100 | 76.00% | 0.7619 | 0.9412 | 0.8421 | 94.00% |\n| PROOFWRITER | JSON | 96 | 95.83% | 1.0000 | 1.0000 | 1.0000 | 95.83% |\n| CONDITIONALQA | JSON | 100 | 76.00% | 0.9180 | 0.8750 | 0.8960 | 89.00% |\n| STRATEGYQA | JSON | 100 | 68.00% | 0.7500 | 0.7895 | 0.7692 | 86.00% |\n\n\n\n<!-- BENCHMARK_RESULTS_END -->\n\n# Citations\n\nPlease consider citing our work if you find this useful.\n\n```\n@inproceedings{\nganguly2024proof,\ntitle={{PROOF} {OF} {THOUGHT} : Neurosymbolic Program Synthesis allows Robust and Interpretable Reasoning},\nauthor={Debargha Ganguly and Srinivasan Iyengar and Vipin Chaudhary and Shivkumar Kalyanaraman},\nbooktitle={The First Workshop on System-2 Reasoning at Scale, NeurIPS'24},\nyear={2024},\nurl={https://openreview.net/forum?id=Pxx3r14j3U}\n}\n```\n\n```\n@inproceedings{\nganguly2025grammars,\ntitle={Grammars of Formal Uncertainty: When to Trust {LLM}s in Automated Reasoning Tasks},\nauthor={Debargha Ganguly and Vikash Singh and Sreehari Sankar and Biyao Zhang and Xuecen Zhang and Srinivasan Iyengar and Xiaotian Han and Amit Sharma and Shivkumar Kalyanaraman and Vipin Chaudhary},\nbooktitle={The Thirty-ninth Annual Conference on Neural Information Processing Systems},\nyear={2025},\nurl={https://openreview.net/forum?id=QfKpJ00t2L}\n}\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "LLM-based reasoning using Z3 theorem proving",
    "version": "1.0.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/debarghaG/proofofthought/issues",
        "Documentation": "https://github.com/debarghaG/proofofthought#readme",
        "Homepage": "https://github.com/debarghaG/proofofthought",
        "Repository": "https://github.com/debarghaG/proofofthought"
    },
    "split_keywords": [
        "llm",
        " reasoning",
        " z3",
        " theorem-proving",
        " smt",
        " ai"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "712665fa91ed31f61b0d6fdea7c903b2480ee9cf624a3726790bd9285cde3555",
                "md5": "353856cf38d2d37db725087261483049",
                "sha256": "238011d024f01060ca07f99606bd531b3267313a65fd837ceb5c72dcb7237c9a"
            },
            "downloads": -1,
            "filename": "proofofthought-1.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "353856cf38d2d37db725087261483049",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 60775,
            "upload_time": "2025-10-18T00:31:46",
            "upload_time_iso_8601": "2025-10-18T00:31:46.495432Z",
            "url": "https://files.pythonhosted.org/packages/71/26/65fa91ed31f61b0d6fdea7c903b2480ee9cf624a3726790bd9285cde3555/proofofthought-1.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "997d959daf852aa99cb9b66584adad065934a4451713cf8044659050fd11d702",
                "md5": "026bb20ab4629c1e6134f024efd1c72c",
                "sha256": "53203a4754abed529df341617eacc218da779e5443530f70743f08b75fe3a4cd"
            },
            "downloads": -1,
            "filename": "proofofthought-1.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "026bb20ab4629c1e6134f024efd1c72c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 46007,
            "upload_time": "2025-10-18T00:31:47",
            "upload_time_iso_8601": "2025-10-18T00:31:47.518274Z",
            "url": "https://files.pythonhosted.org/packages/99/7d/959daf852aa99cb9b66584adad065934a4451713cf8044659050fd11d702/proofofthought-1.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-18 00:31:47",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "debarghaG",
    "github_project": "proofofthought",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "annotated-types",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "anyio",
            "specs": [
                [
                    "==",
                    "4.11.0"
                ]
            ]
        },
        {
            "name": "babel",
            "specs": [
                [
                    "==",
                    "2.17.0"
                ]
            ]
        },
        {
            "name": "backrefs",
            "specs": [
                [
                    "==",
                    "5.9"
                ]
            ]
        },
        {
            "name": "black",
            "specs": [
                [
                    "==",
                    "25.9.0"
                ]
            ]
        },
        {
            "name": "certifi",
            "specs": [
                [
                    "==",
                    "2025.8.3"
                ]
            ]
        },
        {
            "name": "cfgv",
            "specs": [
                [
                    "==",
                    "3.4.0"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.4.4"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    "==",
                    "8.3.0"
                ]
            ]
        },
        {
            "name": "colorama",
            "specs": [
                [
                    "==",
                    "0.4.6"
                ]
            ]
        },
        {
            "name": "distlib",
            "specs": [
                [
                    "==",
                    "0.4.0"
                ]
            ]
        },
        {
            "name": "distro",
            "specs": [
                [
                    "==",
                    "1.9.0"
                ]
            ]
        },
        {
            "name": "filelock",
            "specs": [
                [
                    "==",
                    "3.19.1"
                ]
            ]
        },
        {
            "name": "ghp-import",
            "specs": [
                [
                    "==",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "h11",
            "specs": [
                [
                    "==",
                    "0.16.0"
                ]
            ]
        },
        {
            "name": "httpcore",
            "specs": [
                [
                    "==",
                    "1.0.9"
                ]
            ]
        },
        {
            "name": "httpx",
            "specs": [
                [
                    "==",
                    "0.28.1"
                ]
            ]
        },
        {
            "name": "identify",
            "specs": [
                [
                    "==",
                    "2.6.14"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.10"
                ]
            ]
        },
        {
            "name": "iniconfig",
            "specs": [
                [
                    "==",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "Jinja2",
            "specs": [
                [
                    "==",
                    "3.1.6"
                ]
            ]
        },
        {
            "name": "jiter",
            "specs": [
                [
                    "==",
                    "0.11.0"
                ]
            ]
        },
        {
            "name": "joblib",
            "specs": [
                [
                    "==",
                    "1.5.2"
                ]
            ]
        },
        {
            "name": "Markdown",
            "specs": [
                [
                    "==",
                    "3.9"
                ]
            ]
        },
        {
            "name": "MarkupSafe",
            "specs": [
                [
                    "==",
                    "3.0.3"
                ]
            ]
        },
        {
            "name": "mergedeep",
            "specs": [
                [
                    "==",
                    "1.3.4"
                ]
            ]
        },
        {
            "name": "mkdocs",
            "specs": [
                [
                    "==",
                    "1.6.1"
                ]
            ]
        },
        {
            "name": "mkdocs-get-deps",
            "specs": [
                [
                    "==",
                    "0.2.0"
                ]
            ]
        },
        {
            "name": "mkdocs-material",
            "specs": [
                [
                    "==",
                    "9.6.22"
                ]
            ]
        },
        {
            "name": "mkdocs-material-extensions",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "mypy",
            "specs": [
                [
                    "==",
                    "1.18.2"
                ]
            ]
        },
        {
            "name": "mypy_extensions",
            "specs": [
                [
                    "==",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "nodeenv",
            "specs": [
                [
                    "==",
                    "1.9.1"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    "==",
                    "2.3.3"
                ]
            ]
        },
        {
            "name": "openai",
            "specs": [
                [
                    "==",
                    "2.0.1"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "25.0"
                ]
            ]
        },
        {
            "name": "paginate",
            "specs": [
                [
                    "==",
                    "0.5.7"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    "==",
                    "2.3.3"
                ]
            ]
        },
        {
            "name": "pathspec",
            "specs": [
                [
                    "==",
                    "0.12.1"
                ]
            ]
        },
        {
            "name": "platformdirs",
            "specs": [
                [
                    "==",
                    "4.4.0"
                ]
            ]
        },
        {
            "name": "pluggy",
            "specs": [
                [
                    "==",
                    "1.6.0"
                ]
            ]
        },
        {
            "name": "pre_commit",
            "specs": [
                [
                    "==",
                    "4.3.0"
                ]
            ]
        },
        {
            "name": "pyarrow",
            "specs": [
                [
                    "==",
                    "21.0.0"
                ]
            ]
        },
        {
            "name": "pydantic",
            "specs": [
                [
                    "==",
                    "2.11.9"
                ]
            ]
        },
        {
            "name": "pydantic_core",
            "specs": [
                [
                    "==",
                    "2.33.2"
                ]
            ]
        },
        {
            "name": "Pygments",
            "specs": [
                [
                    "==",
                    "2.19.2"
                ]
            ]
        },
        {
            "name": "pymdown-extensions",
            "specs": [
                [
                    "==",
                    "10.16.1"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "==",
                    "8.4.2"
                ]
            ]
        },
        {
            "name": "python-dateutil",
            "specs": [
                [
                    "==",
                    "2.9.0.post0"
                ]
            ]
        },
        {
            "name": "python-dotenv",
            "specs": [
                [
                    "==",
                    "1.1.1"
                ]
            ]
        },
        {
            "name": "pytokens",
            "specs": [
                [
                    "==",
                    "0.1.10"
                ]
            ]
        },
        {
            "name": "pytz",
            "specs": [
                [
                    "==",
                    "2025.2"
                ]
            ]
        },
        {
            "name": "PyYAML",
            "specs": [
                [
                    "==",
                    "6.0.3"
                ]
            ]
        },
        {
            "name": "pyyaml_env_tag",
            "specs": [
                [
                    "==",
                    "1.1"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.32.5"
                ]
            ]
        },
        {
            "name": "ruff",
            "specs": [
                [
                    "==",
                    "0.13.2"
                ]
            ]
        },
        {
            "name": "scikit-learn",
            "specs": [
                [
                    "==",
                    "1.7.2"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": [
                [
                    "==",
                    "1.16.2"
                ]
            ]
        },
        {
            "name": "six",
            "specs": [
                [
                    "==",
                    "1.17.0"
                ]
            ]
        },
        {
            "name": "sniffio",
            "specs": [
                [
                    "==",
                    "1.3.1"
                ]
            ]
        },
        {
            "name": "threadpoolctl",
            "specs": [
                [
                    "==",
                    "3.6.0"
                ]
            ]
        },
        {
            "name": "tqdm",
            "specs": [
                [
                    "==",
                    "4.67.1"
                ]
            ]
        },
        {
            "name": "typing-inspection",
            "specs": [
                [
                    "==",
                    "0.4.2"
                ]
            ]
        },
        {
            "name": "typing_extensions",
            "specs": [
                [
                    "==",
                    "4.15.0"
                ]
            ]
        },
        {
            "name": "tzdata",
            "specs": [
                [
                    "==",
                    "2025.2"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    "==",
                    "2.5.0"
                ]
            ]
        },
        {
            "name": "virtualenv",
            "specs": [
                [
                    "==",
                    "20.34.0"
                ]
            ]
        },
        {
            "name": "watchdog",
            "specs": [
                [
                    "==",
                    "6.0.0"
                ]
            ]
        },
        {
            "name": "z3-solver",
            "specs": [
                [
                    "==",
                    "4.15.3.0"
                ]
            ]
        }
    ],
    "lcname": "proofofthought"
}
        
Elapsed time: 1.21901s