json-compare-pro


Namejson-compare-pro JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryAdvanced JSON comparison library with flexible validation rules, schema support, and comprehensive testing capabilities
upload_time2025-08-23 18:05:39
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords comparison diff json schema testing validation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # JSON Compare Pro πŸš€

[![PyPI version](https://badge.fury.io/py/json-compare-pro.svg)](https://badge.fury.io/py/json-compare-pro)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Tests](https://github.com/harshitgoel09/json-compare-pro/workflows/Tests/badge.svg)](https://github.com/harshitgoel09/json-compare-pro/actions)

**Advanced JSON comparison library with flexible validation rules, schema support, and comprehensive testing capabilities.**

JSON Compare Pro is a powerful, production-ready Python library designed for comparing JSON objects with advanced features like custom validation rules, schema validation, JSONPath support, tolerance checks, and detailed diff reporting. Perfect for API testing, data validation, and automated testing workflows.

## ✨ Features

### πŸ” **Advanced Comparison**
- **Flexible key ignoring** - Exclude specific keys from comparison
- **Key existence validation** - Check for key presence without comparing values
- **Custom validation rules** - Regex, patterns, ranges, and more
- **Numeric tolerance** - Handle floating-point precision issues
- **Case sensitivity options** - Configurable string comparison
- **Whitespace handling** - Ignore or preserve whitespace in strings
- **Array order control** - Compare arrays with or without order consideration

### πŸ›‘οΈ **Schema Validation**
- **JSON Schema support** - Validate against JSON Schema specifications
- **Schema builder** - Programmatically create schemas
- **Pre-built schemas** - Common patterns for users, products, API responses
- **Detailed validation reports** - Comprehensive error reporting

### πŸ—ΊοΈ **JSONPath Support**
- **Advanced querying** - Extract and compare specific JSON paths
- **Path filtering** - Focus comparison on specific data subsets
- **Query builder** - Fluent API for building JSONPath expressions
- **Common patterns** - Pre-built queries for typical use cases

### πŸ“Š **Detailed Diff Reporting**
- **Multiple output formats** - JSON, text, markdown, HTML, rich terminal
- **Categorized differences** - Added, removed, changed, type changes
- **Path-based reporting** - Exact location of differences
- **Summary statistics** - Quick overview of comparison results

### 🎯 **Production Ready**
- **Comprehensive testing** - 100% test coverage with edge cases
- **Type hints** - Full type annotation support
- **Error handling** - Robust exception handling with detailed messages
- **Performance optimized** - Efficient algorithms for large JSON objects
- **CLI interface** - Command-line tool for quick comparisons

## πŸš€ Quick Start

### Installation

```bash
pip install json-compare-pro
```

### Basic Usage

```python
from json_compare_pro import compare_jsons

# Simple comparison
json1 = {"name": "John", "age": 30}
json2 = {"name": "John", "age": 30}

result = compare_jsons(json1, json2)
print(result)  # True
```

### Advanced Configuration

```python
from json_compare_pro import compare_jsons_with_config, JSONCompareConfig

# Advanced comparison with configuration
config = JSONCompareConfig(
    keys_to_ignore=["id", "timestamp"],
    check_keys_only=["status"],
    case_sensitive=False,
    ignore_order=True,
    numeric_tolerance=0.1
)

result = compare_jsons_with_config(json1, json2, config)
print(f"Equal: {result.is_equal}")
print(f"Differences: {len(result.differences)}")
print(f"Execution time: {result.execution_time:.4f}s")
```

### Custom Validation

```python
# Custom validation rules
custom_validations = {
    "email": {"type": "endswith", "expected": "@example.com"},
    "phone": {"type": "regex", "expected": r"\d{3}-\d{3}-\d{4}"},
    "score": {"type": "range", "min": 0, "max": 100}
}

result = compare_jsons(json1, json2, custom_validations=custom_validations)
```

### Schema Validation

```python
from json_compare_pro import JSONSchemaValidator, create_user_schema

# Create and use schema
schema = create_user_schema()
validator = JSONSchemaValidator(schema)

validation_result = validator.validate(json_data)
if validation_result.is_valid:
    print("βœ… Data is valid!")
else:
    print(f"❌ Validation failed: {len(validation_result.errors)} errors")
```

### JSONPath Extraction

```python
from json_compare_pro import JSONPathExtractor

# Extract values using JSONPath
extractor = JSONPathExtractor()
result = extractor.find(json_data, "$.users[*].email")

print(f"Found {result.count} email addresses:")
for value, path in zip(result.values, result.paths):
    print(f"  {path}: {value}")
```

### Detailed Diff Report

```python
from json_compare_pro import JSONDiffReporter, DiffFormatter

# Generate detailed diff
reporter = JSONDiffReporter()
diff_report = reporter.generate_diff(json1, json2)

# Format as markdown
markdown_diff = DiffFormatter.to_markdown(diff_report)
print(markdown_diff)
```

## πŸ–₯️ Command Line Interface

### Basic Comparison

```bash
# Compare two JSON files
json-compare file1.json file2.json

# With options
json-compare file1.json file2.json \
  --ignore-keys id timestamp \
  --check-keys-only status \
  --case-sensitive false \
  --output-format markdown \
  --output-file diff_report.md
```

### Generate Diff Report

```bash
# Generate detailed diff
json-compare diff file1.json file2.json \
  --output-format html \
  --output-file diff_report.html
```

### Extract with JSONPath

```bash
# Extract values using JSONPath
json-compare extract data.json "$.users[*].email" \
  --output-format json
```

### Schema Validation

```bash
# Validate against schema
json-compare validate data.json schema.json

# Generate schema
json-compare generate-schema --type user --output-file user_schema.json
```

## πŸ“š Advanced Examples

### API Testing Workflow

```python
import requests
from json_compare_pro import compare_jsons_with_config, JSONCompareConfig

# Test API response
def test_api_response():
    # Expected response structure
    expected = {
        "status": "success",
        "data": {
            "users": [
                {"id": "1", "name": "John", "email": "john@example.com"}
            ]
        }
    }
    
    # Actual API response
    response = requests.get("https://api.example.com/users")
    actual = response.json()
    
    # Compare with configuration
    config = JSONCompareConfig(
        keys_to_ignore=["data.users[0].id"],  # Ignore dynamic ID
        custom_validations={
            "data.users[*].email": {"type": "endswith", "expected": "@example.com"}
        },
        ignore_order=True  # Array order doesn't matter
    )
    
    result = compare_jsons_with_config(expected, actual, config)
    
    if result.is_equal:
        print("βœ… API response matches expected structure")
    else:
        print("❌ API response differs:")
        for diff in result.differences:
            print(f"  - {diff['message']}")
    
    return result.is_equal
```

### Data Migration Validation

```python
from json_compare_pro import JSONPathExtractor, compare_jsons

def validate_migration(old_data, new_data):
    # Extract specific fields for comparison
    extractor = JSONPathExtractor()
    
    # Compare user data
    old_users = extractor.find(old_data, "$.users[*]")
    new_users = extractor.find(new_data, "$.users[*]")
    
    # Validate each user
    for old_user, new_user in zip(old_users.values, new_users.values):
        result = compare_jsons(
            old_user, new_user,
            keys_to_ignore=["id", "created_at"],  # These change during migration
            custom_validations={
                "email": {"type": "contains", "expected": "@"},
                "status": {"type": "equals", "expected": "active"}
            }
        )
        
        if not result:
            print(f"❌ User migration validation failed")
            return False
    
    print("βœ… All users migrated successfully")
    return True
```

### Configuration Management

```python
from json_compare_pro import JSONCompareConfig, ComparisonMode

# Different comparison modes for different scenarios
configs = {
    "strict": JSONCompareConfig(
        comparison_mode=ComparisonMode.STRICT,
        case_sensitive=True,
        ignore_order=False
    ),
    
    "lenient": JSONCompareConfig(
        comparison_mode=ComparisonMode.LENIENT,
        case_sensitive=False,
        ignore_order=True,
        numeric_tolerance=0.1
    ),
    
    "tolerance": JSONCompareConfig(
        comparison_mode=ComparisonMode.TOLERANCE,
        numeric_tolerance=0.01,
        ignore_whitespace=True
    )
}

# Use appropriate config based on context
def compare_with_context(json1, json2, context="strict"):
    config = configs[context]
    return compare_jsons_with_config(json1, json2, config)
```

## πŸ§ͺ Testing

### Run Tests

```bash
# Install development dependencies
pip install -e ".[dev]"

# Run all tests
pytest

# Run with coverage
pytest --cov=json_compare_pro --cov-report=html

# Run specific test categories
pytest -m "not slow"
pytest tests/test_core.py::TestBasicComparison
```

### Test Examples

```python
import pytest
from json_compare_pro import compare_jsons

class TestMyData:
    def test_user_data_consistency(self):
        """Test that user data maintains consistency across operations."""
        original = {"name": "John", "age": 30, "email": "john@example.com"}
        processed = {"name": "John", "age": 30, "email": "john@example.com"}
        
        assert compare_jsons(original, processed)
    
    def test_api_response_structure(self):
        """Test API response structure validation."""
        expected = {"status": "success", "data": {"users": []}}
        actual = {"status": "success", "data": {"users": []}}
        
        # Ignore dynamic fields
        result = compare_jsons(
            expected, actual,
            keys_to_ignore=["data.users[*].id", "data.users[*].created_at"]
        )
        
        assert result
```

## πŸ“– Documentation

- **[Full Documentation](https://json-compare-pro.readthedocs.io)** - Comprehensive API reference and guides
- **[Examples Gallery](https://json-compare-pro.readthedocs.io/en/latest/examples.html)** - Real-world usage examples
- **[Migration Guide](https://json-compare-pro.readthedocs.io/en/latest/migration.html)** - Upgrading from other libraries

## 🀝 Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.

### Development Setup

```bash
# Clone the repository
git clone https://github.com/harshitgoel09/json-compare-pro.git
cd json-compare-pro

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -e ".[dev]"

# Run pre-commit hooks
pre-commit install

# Run tests
pytest
```

### Code Quality

```bash
# Format code
black src tests
isort src tests

# Lint code
flake8 src tests
mypy src

# Run all quality checks
tox
```

## πŸ“„ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## πŸ™ Acknowledgments

- Inspired by the need for robust JSON comparison in API testing
- Built with modern Python best practices
- Thanks to the open-source community for excellent dependencies

## πŸ“ž Support

- **Issues**: [GitHub Issues](https://github.com/harshitgoel09/json-compare-pro/issues)
- **Discussions**: [GitHub Discussions](https://github.com/harshitgoel09/json-compare-pro/discussions)
- **Documentation**: [Read the Docs](https://json-compare-pro.readthedocs.io)

---

**Made with ❀️ by Harshit Goel for the Python community** 
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "json-compare-pro",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Harshit Goel <harshitgoel96@gmail.com>",
    "keywords": "comparison, diff, json, schema, testing, validation",
    "author": null,
    "author_email": "Harshit Goel <harshitgoel96@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/26/a8/be7acf64ae226de197271936b936e93f027a370bb5545d01c9ba3c15962b/json_compare_pro-0.1.0.tar.gz",
    "platform": null,
    "description": "# JSON Compare Pro \ud83d\ude80\n\n[![PyPI version](https://badge.fury.io/py/json-compare-pro.svg)](https://badge.fury.io/py/json-compare-pro)\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-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[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Tests](https://github.com/harshitgoel09/json-compare-pro/workflows/Tests/badge.svg)](https://github.com/harshitgoel09/json-compare-pro/actions)\n\n**Advanced JSON comparison library with flexible validation rules, schema support, and comprehensive testing capabilities.**\n\nJSON Compare Pro is a powerful, production-ready Python library designed for comparing JSON objects with advanced features like custom validation rules, schema validation, JSONPath support, tolerance checks, and detailed diff reporting. Perfect for API testing, data validation, and automated testing workflows.\n\n## \u2728 Features\n\n### \ud83d\udd0d **Advanced Comparison**\n- **Flexible key ignoring** - Exclude specific keys from comparison\n- **Key existence validation** - Check for key presence without comparing values\n- **Custom validation rules** - Regex, patterns, ranges, and more\n- **Numeric tolerance** - Handle floating-point precision issues\n- **Case sensitivity options** - Configurable string comparison\n- **Whitespace handling** - Ignore or preserve whitespace in strings\n- **Array order control** - Compare arrays with or without order consideration\n\n### \ud83d\udee1\ufe0f **Schema Validation**\n- **JSON Schema support** - Validate against JSON Schema specifications\n- **Schema builder** - Programmatically create schemas\n- **Pre-built schemas** - Common patterns for users, products, API responses\n- **Detailed validation reports** - Comprehensive error reporting\n\n### \ud83d\uddfa\ufe0f **JSONPath Support**\n- **Advanced querying** - Extract and compare specific JSON paths\n- **Path filtering** - Focus comparison on specific data subsets\n- **Query builder** - Fluent API for building JSONPath expressions\n- **Common patterns** - Pre-built queries for typical use cases\n\n### \ud83d\udcca **Detailed Diff Reporting**\n- **Multiple output formats** - JSON, text, markdown, HTML, rich terminal\n- **Categorized differences** - Added, removed, changed, type changes\n- **Path-based reporting** - Exact location of differences\n- **Summary statistics** - Quick overview of comparison results\n\n### \ud83c\udfaf **Production Ready**\n- **Comprehensive testing** - 100% test coverage with edge cases\n- **Type hints** - Full type annotation support\n- **Error handling** - Robust exception handling with detailed messages\n- **Performance optimized** - Efficient algorithms for large JSON objects\n- **CLI interface** - Command-line tool for quick comparisons\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install json-compare-pro\n```\n\n### Basic Usage\n\n```python\nfrom json_compare_pro import compare_jsons\n\n# Simple comparison\njson1 = {\"name\": \"John\", \"age\": 30}\njson2 = {\"name\": \"John\", \"age\": 30}\n\nresult = compare_jsons(json1, json2)\nprint(result)  # True\n```\n\n### Advanced Configuration\n\n```python\nfrom json_compare_pro import compare_jsons_with_config, JSONCompareConfig\n\n# Advanced comparison with configuration\nconfig = JSONCompareConfig(\n    keys_to_ignore=[\"id\", \"timestamp\"],\n    check_keys_only=[\"status\"],\n    case_sensitive=False,\n    ignore_order=True,\n    numeric_tolerance=0.1\n)\n\nresult = compare_jsons_with_config(json1, json2, config)\nprint(f\"Equal: {result.is_equal}\")\nprint(f\"Differences: {len(result.differences)}\")\nprint(f\"Execution time: {result.execution_time:.4f}s\")\n```\n\n### Custom Validation\n\n```python\n# Custom validation rules\ncustom_validations = {\n    \"email\": {\"type\": \"endswith\", \"expected\": \"@example.com\"},\n    \"phone\": {\"type\": \"regex\", \"expected\": r\"\\d{3}-\\d{3}-\\d{4}\"},\n    \"score\": {\"type\": \"range\", \"min\": 0, \"max\": 100}\n}\n\nresult = compare_jsons(json1, json2, custom_validations=custom_validations)\n```\n\n### Schema Validation\n\n```python\nfrom json_compare_pro import JSONSchemaValidator, create_user_schema\n\n# Create and use schema\nschema = create_user_schema()\nvalidator = JSONSchemaValidator(schema)\n\nvalidation_result = validator.validate(json_data)\nif validation_result.is_valid:\n    print(\"\u2705 Data is valid!\")\nelse:\n    print(f\"\u274c Validation failed: {len(validation_result.errors)} errors\")\n```\n\n### JSONPath Extraction\n\n```python\nfrom json_compare_pro import JSONPathExtractor\n\n# Extract values using JSONPath\nextractor = JSONPathExtractor()\nresult = extractor.find(json_data, \"$.users[*].email\")\n\nprint(f\"Found {result.count} email addresses:\")\nfor value, path in zip(result.values, result.paths):\n    print(f\"  {path}: {value}\")\n```\n\n### Detailed Diff Report\n\n```python\nfrom json_compare_pro import JSONDiffReporter, DiffFormatter\n\n# Generate detailed diff\nreporter = JSONDiffReporter()\ndiff_report = reporter.generate_diff(json1, json2)\n\n# Format as markdown\nmarkdown_diff = DiffFormatter.to_markdown(diff_report)\nprint(markdown_diff)\n```\n\n## \ud83d\udda5\ufe0f Command Line Interface\n\n### Basic Comparison\n\n```bash\n# Compare two JSON files\njson-compare file1.json file2.json\n\n# With options\njson-compare file1.json file2.json \\\n  --ignore-keys id timestamp \\\n  --check-keys-only status \\\n  --case-sensitive false \\\n  --output-format markdown \\\n  --output-file diff_report.md\n```\n\n### Generate Diff Report\n\n```bash\n# Generate detailed diff\njson-compare diff file1.json file2.json \\\n  --output-format html \\\n  --output-file diff_report.html\n```\n\n### Extract with JSONPath\n\n```bash\n# Extract values using JSONPath\njson-compare extract data.json \"$.users[*].email\" \\\n  --output-format json\n```\n\n### Schema Validation\n\n```bash\n# Validate against schema\njson-compare validate data.json schema.json\n\n# Generate schema\njson-compare generate-schema --type user --output-file user_schema.json\n```\n\n## \ud83d\udcda Advanced Examples\n\n### API Testing Workflow\n\n```python\nimport requests\nfrom json_compare_pro import compare_jsons_with_config, JSONCompareConfig\n\n# Test API response\ndef test_api_response():\n    # Expected response structure\n    expected = {\n        \"status\": \"success\",\n        \"data\": {\n            \"users\": [\n                {\"id\": \"1\", \"name\": \"John\", \"email\": \"john@example.com\"}\n            ]\n        }\n    }\n    \n    # Actual API response\n    response = requests.get(\"https://api.example.com/users\")\n    actual = response.json()\n    \n    # Compare with configuration\n    config = JSONCompareConfig(\n        keys_to_ignore=[\"data.users[0].id\"],  # Ignore dynamic ID\n        custom_validations={\n            \"data.users[*].email\": {\"type\": \"endswith\", \"expected\": \"@example.com\"}\n        },\n        ignore_order=True  # Array order doesn't matter\n    )\n    \n    result = compare_jsons_with_config(expected, actual, config)\n    \n    if result.is_equal:\n        print(\"\u2705 API response matches expected structure\")\n    else:\n        print(\"\u274c API response differs:\")\n        for diff in result.differences:\n            print(f\"  - {diff['message']}\")\n    \n    return result.is_equal\n```\n\n### Data Migration Validation\n\n```python\nfrom json_compare_pro import JSONPathExtractor, compare_jsons\n\ndef validate_migration(old_data, new_data):\n    # Extract specific fields for comparison\n    extractor = JSONPathExtractor()\n    \n    # Compare user data\n    old_users = extractor.find(old_data, \"$.users[*]\")\n    new_users = extractor.find(new_data, \"$.users[*]\")\n    \n    # Validate each user\n    for old_user, new_user in zip(old_users.values, new_users.values):\n        result = compare_jsons(\n            old_user, new_user,\n            keys_to_ignore=[\"id\", \"created_at\"],  # These change during migration\n            custom_validations={\n                \"email\": {\"type\": \"contains\", \"expected\": \"@\"},\n                \"status\": {\"type\": \"equals\", \"expected\": \"active\"}\n            }\n        )\n        \n        if not result:\n            print(f\"\u274c User migration validation failed\")\n            return False\n    \n    print(\"\u2705 All users migrated successfully\")\n    return True\n```\n\n### Configuration Management\n\n```python\nfrom json_compare_pro import JSONCompareConfig, ComparisonMode\n\n# Different comparison modes for different scenarios\nconfigs = {\n    \"strict\": JSONCompareConfig(\n        comparison_mode=ComparisonMode.STRICT,\n        case_sensitive=True,\n        ignore_order=False\n    ),\n    \n    \"lenient\": JSONCompareConfig(\n        comparison_mode=ComparisonMode.LENIENT,\n        case_sensitive=False,\n        ignore_order=True,\n        numeric_tolerance=0.1\n    ),\n    \n    \"tolerance\": JSONCompareConfig(\n        comparison_mode=ComparisonMode.TOLERANCE,\n        numeric_tolerance=0.01,\n        ignore_whitespace=True\n    )\n}\n\n# Use appropriate config based on context\ndef compare_with_context(json1, json2, context=\"strict\"):\n    config = configs[context]\n    return compare_jsons_with_config(json1, json2, config)\n```\n\n## \ud83e\uddea Testing\n\n### Run Tests\n\n```bash\n# Install development dependencies\npip install -e \".[dev]\"\n\n# Run all tests\npytest\n\n# Run with coverage\npytest --cov=json_compare_pro --cov-report=html\n\n# Run specific test categories\npytest -m \"not slow\"\npytest tests/test_core.py::TestBasicComparison\n```\n\n### Test Examples\n\n```python\nimport pytest\nfrom json_compare_pro import compare_jsons\n\nclass TestMyData:\n    def test_user_data_consistency(self):\n        \"\"\"Test that user data maintains consistency across operations.\"\"\"\n        original = {\"name\": \"John\", \"age\": 30, \"email\": \"john@example.com\"}\n        processed = {\"name\": \"John\", \"age\": 30, \"email\": \"john@example.com\"}\n        \n        assert compare_jsons(original, processed)\n    \n    def test_api_response_structure(self):\n        \"\"\"Test API response structure validation.\"\"\"\n        expected = {\"status\": \"success\", \"data\": {\"users\": []}}\n        actual = {\"status\": \"success\", \"data\": {\"users\": []}}\n        \n        # Ignore dynamic fields\n        result = compare_jsons(\n            expected, actual,\n            keys_to_ignore=[\"data.users[*].id\", \"data.users[*].created_at\"]\n        )\n        \n        assert result\n```\n\n## \ud83d\udcd6 Documentation\n\n- **[Full Documentation](https://json-compare-pro.readthedocs.io)** - Comprehensive API reference and guides\n- **[Examples Gallery](https://json-compare-pro.readthedocs.io/en/latest/examples.html)** - Real-world usage examples\n- **[Migration Guide](https://json-compare-pro.readthedocs.io/en/latest/migration.html)** - Upgrading from other libraries\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/harshitgoel09/json-compare-pro.git\ncd json-compare-pro\n\n# Create virtual environment\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\n\n# Install dependencies\npip install -e \".[dev]\"\n\n# Run pre-commit hooks\npre-commit install\n\n# Run tests\npytest\n```\n\n### Code Quality\n\n```bash\n# Format code\nblack src tests\nisort src tests\n\n# Lint code\nflake8 src tests\nmypy src\n\n# Run all quality checks\ntox\n```\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- Inspired by the need for robust JSON comparison in API testing\n- Built with modern Python best practices\n- Thanks to the open-source community for excellent dependencies\n\n## \ud83d\udcde Support\n\n- **Issues**: [GitHub Issues](https://github.com/harshitgoel09/json-compare-pro/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/harshitgoel09/json-compare-pro/discussions)\n- **Documentation**: [Read the Docs](https://json-compare-pro.readthedocs.io)\n\n---\n\n**Made with \u2764\ufe0f by Harshit Goel for the Python community** ",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Advanced JSON comparison library with flexible validation rules, schema support, and comprehensive testing capabilities",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/harshitgoel09/json-compare-pro/issues",
        "Changelog": "https://github.com/harshitgoel09/json-compare-pro/blob/main/CHANGELOG.md",
        "Documentation": "https://json-compare-pro.readthedocs.io",
        "Homepage": "https://github.com/harshitgoel09/json-compare-pro",
        "Repository": "https://github.com/harshitgoel09/json-compare-pro.git"
    },
    "split_keywords": [
        "comparison",
        " diff",
        " json",
        " schema",
        " testing",
        " validation"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "827fc9e2ddddff51fb0acc67cf116fc6d98b5b5e39cb589910facd624dd7e229",
                "md5": "8065065b83890a8bc2a48af5b1df919d",
                "sha256": "74fd7086355be0b0e003a906d24d02411289575b9bd54a15ad80eedda23e4f24"
            },
            "downloads": -1,
            "filename": "json_compare_pro-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8065065b83890a8bc2a48af5b1df919d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 27263,
            "upload_time": "2025-08-23T18:05:37",
            "upload_time_iso_8601": "2025-08-23T18:05:37.900343Z",
            "url": "https://files.pythonhosted.org/packages/82/7f/c9e2ddddff51fb0acc67cf116fc6d98b5b5e39cb589910facd624dd7e229/json_compare_pro-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "26a8be7acf64ae226de197271936b936e93f027a370bb5545d01c9ba3c15962b",
                "md5": "05dda43dc3e934fddbdd53b66f6d9c20",
                "sha256": "e5d03fcedce8fe422f7e06484f1d6f599317ec8b6d77a629370c371c434d1cf5"
            },
            "downloads": -1,
            "filename": "json_compare_pro-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "05dda43dc3e934fddbdd53b66f6d9c20",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 37229,
            "upload_time": "2025-08-23T18:05:39",
            "upload_time_iso_8601": "2025-08-23T18:05:39.989081Z",
            "url": "https://files.pythonhosted.org/packages/26/a8/be7acf64ae226de197271936b936e93f027a370bb5545d01c9ba3c15962b/json_compare_pro-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-23 18:05:39",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "harshitgoel09",
    "github_project": "json-compare-pro",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "json-compare-pro"
}
        
Elapsed time: 1.17892s