django-mercury-performance


Namedjango-mercury-performance JSON
Version 0.0.8 PyPI version JSON
download
home_pageNone
SummaryA performance testing framework for Django that helps you understand and fix performance issues, not just detect them
upload_time2025-08-25 04:15:32
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseGPL-3.0-or-later
keywords django performance testing monitoring optimization n+1 queries profiling mercury rest-framework api benchmarking
VCS
bugtrack_url
requirements Django djangorestframework psutil memory-profiler colorlog rich jsonschema pytest pytest-cov coverage black isort mypy flake8 django-debug-toolbar django-silk sphinx sphinx-rtd-theme
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Django Mercury

[![PyPI version](https://badge.fury.io/py/django-mercury-performance.svg)](https://badge.fury.io/py/django-mercury-performance)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![Django 3.2-5.1](https://img.shields.io/badge/django-3.2--5.1-green.svg)](https://docs.djangoproject.com/)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-red.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Built for: EduLite](https://img.shields.io/badge/Built%20for-EduLite-orange)](https://github.com/ibrahim-sisar/EduLite)
[![Values: Open](https://img.shields.io/badge/Values-Open%20%7C%20Free%20%7C%20Fair-purple)](https://github.com/80-20-Human-In-The-Loop)

**Part of the [80-20 Human in the Loop](https://github.com/80-20-Human-In-The-Loop) ecosystem**

> **Test Django app speed. Learn why it's slow. Fix it.**

Django Mercury is a performance testing framework that adapts to your experience level - teaching beginners, empowering experts, and enabling automation while preserving human understanding.

## 🌟 Origin Story

Mercury started at [EduLite](https://github.com/ibrahim-sisar/EduLite), a platform helping students learn with slow internet. We discovered our UserSearchView made **325 database queries** to show one page!

We built Mercury not just to find these problems, but to **teach developers how to understand and fix them**. Mercury follows EduLite's values: **Fair**, **Free**, and **Open** - making performance expertise accessible to everyone.

## 🎯 The 80-20 Philosophy

Mercury embodies the [80-20 Human-in-the-Loop philosophy](https://github.com/80-20-Human-In-The-Loop/Community/wiki/Tutorial-How-To-Write-80-20-Tools):

**80% Automation:**
- Detects performance issues automatically
- Measures queries, time, and memory
- Identifies N+1 patterns
- Generates detailed reports

**20% Human Intelligence:**
- You understand the context
- You make architectural decisions
- You learn from patterns
- You choose the right optimizations

## ⚡ Quick Start

### Install
```bash
pip install django-mercury-performance
```

### Choose Your Profile

Mercury adapts to three audiences through its plugin system:

```bash
# 🎓 Students - Learn while testing
mercury-test --profile student

# 💼 Experts - Fast and efficient
mercury-test --profile expert

# 🤖 Agents - Structured output for CI/CD
mercury-test --profile agent
```

### Write Your First Test

```python
# For investigation and learning
from django_mercury import DjangoMercuryAPITestCase

class QuickCheck(DjangoMercuryAPITestCase):
    """Mercury automatically monitors all tests in this class."""
    
    def test_user_api(self):
        response = self.client.get('/api/users/')
        # Mercury detects issues and explains them!

# For production with specific assertions
from django_mercury import DjangoPerformanceAPITestCase
from django_mercury import monitor_django_view

class ProductionTests(DjangoPerformanceAPITestCase):
    """Enforce performance standards."""
    
    def test_user_api_performance(self):
        with monitor_django_view("user_api") as monitor:
            response = self.client.get('/api/users/')
        
        self.assertResponseTimeLess(monitor, 100)  # Must be under 100ms
        self.assertQueriesLess(monitor, 10)        # Max 10 queries
        self.assertNoNPlusOne(monitor)             # No N+1 patterns
```

## 🔌 Plugin Architecture

Mercury uses a **small core, big plugin** design that enables different experiences:

```bash
mercury-test --list-plugins

Available Plugins:
✅ discovery - Smart Django project finding
✅ wizard - Interactive test selection (students)
✅ learn - Quizzes and tutorials (students)
✅ hints - Performance tips (students)
```

Each profile automatically configures the right plugins:
- **Student**: All educational plugins enabled
- **Expert**: Minimal plugins for speed
- **Agent**: Non-interactive with JSON output

[Learn more about the plugin system →](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Why-Plugins)

## 📊 What Mercury Shows You

### 🎓 Student Mode - Educational Output
```
📚 LEARNING MOMENT DETECTED
═══════════════════════════════════════════════════════
Found: N+1 Query Pattern
Location: UserSerializer.get_profile_data()

📖 What's happening:
Your code makes 1 query to get users, then 1 query
per user to get profiles. With 100 users = 101 queries!

💡 Why this matters:
Each query adds ~2ms overhead. This gets slower as
your data grows.

🔧 How to fix:
Add .select_related('profile') to your queryset:
  User.objects.select_related('profile').all()

📚 Want to learn more?
Run: mercury-test --learn n1-queries
```

### 💼 Expert Mode - Concise Results
```
test_user_list     156ms  45q  23MB  ⚠️ N+1@L45  SLOW
test_user_detail    23ms   3q  12MB  ✅         PASS

Critical: N+1 in views.py:45. Fix: select_related('profile')
```

### 🤖 Agent Mode - Structured JSON
```json
{
  "test": "test_user_list",
  "metrics": {
    "response_time_ms": 156,
    "queries": 45,
    "memory_mb": 23
  },
  "issues": [{
    "type": "n_plus_one",
    "severity": "high",
    "location": "views.py:45",
    "auto_fixable": false,
    "requires_human_review": true
  }]
}
```

## 🎓 Educational Features

Mercury doesn't just find problems - it teaches you to understand them:

### Interactive Learning
```bash
# Start learning mode
mercury-test --learn

# Take quizzes
mercury-test --learn --quiz

# Get step-by-step tutorials
mercury-test --learn n1-queries
```

### Progress Tracking
```bash
mercury-test --learn --progress

📊 YOUR PROGRESS
═══════════════════════════════════════
Level: Intermediate (750 XP)
Topics Mastered: N+1 Queries ✅, Indexing ✅
Currently Learning: Caching (70%)
Next Goal: Complete Caching module
```

### Real-time Teaching
When Mercury finds issues, it explains them in context, shows why they matter, and teaches you how to fix them.

## 🚀 Performance Grading

Mercury grades your application's performance:

| Grade | Score | Meaning |
|-------|-------|---------|
| **S** | 100 | Perfect performance |
| **A+** | 95-99 | Excellent |
| **A** | 90-94 | Very good |
| **B** | 80-89 | Good |
| **C** | 70-79 | Acceptable |
| **D** | 60-69 | Poor |
| **F** | <60 | Failing |

## 🛠️ CI/CD Integration

```yaml
# .github/workflows/performance.yml
name: Performance Tests

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run Mercury Tests
        run: |
          pip install django-mercury-performance
          mercury-test --profile agent --export-metrics=json
      - name: Check Performance
        run: |
          python -c "import json; exit(0 if json.load(open('metrics.json'))['grade'] >= 'B' else 1)"
```

## 📚 Documentation

- **[Quick Start Guide](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Quick-Start)** - Get running in 5 minutes
- **[Educational Mode](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Educational-Mode)** - Learn performance optimization
- **[Understanding Reports](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Understanding-Reports)** - Interpret Mercury's output
- **[Plugin System](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Why-Plugins)** - Extend Mercury's capabilities
- **[API Reference](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/API-Reference)** - Complete API documentation

## 🤝 Contributing

Mercury is part of the [80-20 Human-in-the-Loop](https://github.com/80-20-Human-In-The-Loop) ecosystem. We welcome contributions from everyone!

### Our Values
- **Education First**: Tools should teach, not just detect
- **Human Understanding**: Preserve human decision-making
- **Open Community**: Built together, shared freely

### How to Contribute
1. **Use Mercury** - Test it on your projects
2. **Report Issues** - Help us improve
3. **Share Knowledge** - Write tutorials, create quizzes
4. **Code** - Fix bugs, add features
5. **Translate** - Make Mercury accessible globally

See [CONTRIBUTING.md](CONTRIBUTING.md) for details.

## 🚧 Roadmap

### Current (v1.0)
- ✅ Three-audience plugin system
- ✅ Educational mode with quizzes
- ✅ Performance grading system
- ✅ N+1 detection
- ✅ Smart project discovery

### Next (v1.1)
- 🔨 MCP server for AI integration
- 🔨 Performance trend tracking
- 🔨 Custom plugin API
- 🔨 More educational content

### Future (v2.0)
- 🤖 AI-assisted optimization
- 🤖 Auto-fix for simple issues
- 🤖 Performance prediction
- 🤖 Team learning features

## 📄 License

GNU General Public License v3.0 (GPL-3.0)

We chose GPL to ensure Mercury remains:
- **Free** - No barriers to learning
- **Open** - Transparent development
- **Fair** - Improvements benefit everyone

## 🙏 Acknowledgments

- **[EduLite](https://github.com/ibrahim-sisar/EduLite)** - Where Mercury was born
- **[80-20 Human-in-the-Loop](https://github.com/80-20-Human-In-The-Loop)** - For the philosophy
- **Django Community** - For the amazing framework
- **You** - For making Django apps faster!

---

<div align="center">

**Mercury: Making performance testing educational, accessible, and effective.**

*Because every developer deserves to understand their code's performance.*

[Get Started](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Quick-Start) • [Documentation](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki) • [Community](https://github.com/80-20-Human-In-The-Loop/Community)

</div>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "django-mercury-performance",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "Mathew Storm <mathewstormdev@gmail.com>",
    "keywords": "django, performance, testing, monitoring, optimization, n+1, queries, profiling, mercury, rest-framework, api, benchmarking",
    "author": null,
    "author_email": "Django Mercury Team <mathewstormdev@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/44/dd/2aa3c34dd5e793fbf2e5e16ada9a1d8dc2db3df7c3bc91c0dad509b834b2/django_mercury_performance-0.0.8.tar.gz",
    "platform": null,
    "description": "# Django Mercury\n\n[![PyPI version](https://badge.fury.io/py/django-mercury-performance.svg)](https://badge.fury.io/py/django-mercury-performance)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![Django 3.2-5.1](https://img.shields.io/badge/django-3.2--5.1-green.svg)](https://docs.djangoproject.com/)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-red.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Built for: EduLite](https://img.shields.io/badge/Built%20for-EduLite-orange)](https://github.com/ibrahim-sisar/EduLite)\n[![Values: Open](https://img.shields.io/badge/Values-Open%20%7C%20Free%20%7C%20Fair-purple)](https://github.com/80-20-Human-In-The-Loop)\n\n**Part of the [80-20 Human in the Loop](https://github.com/80-20-Human-In-The-Loop) ecosystem**\n\n> **Test Django app speed. Learn why it's slow. Fix it.**\n\nDjango Mercury is a performance testing framework that adapts to your experience level - teaching beginners, empowering experts, and enabling automation while preserving human understanding.\n\n## \ud83c\udf1f Origin Story\n\nMercury started at [EduLite](https://github.com/ibrahim-sisar/EduLite), a platform helping students learn with slow internet. We discovered our UserSearchView made **325 database queries** to show one page!\n\nWe built Mercury not just to find these problems, but to **teach developers how to understand and fix them**. Mercury follows EduLite's values: **Fair**, **Free**, and **Open** - making performance expertise accessible to everyone.\n\n## \ud83c\udfaf The 80-20 Philosophy\n\nMercury embodies the [80-20 Human-in-the-Loop philosophy](https://github.com/80-20-Human-In-The-Loop/Community/wiki/Tutorial-How-To-Write-80-20-Tools):\n\n**80% Automation:**\n- Detects performance issues automatically\n- Measures queries, time, and memory\n- Identifies N+1 patterns\n- Generates detailed reports\n\n**20% Human Intelligence:**\n- You understand the context\n- You make architectural decisions\n- You learn from patterns\n- You choose the right optimizations\n\n## \u26a1 Quick Start\n\n### Install\n```bash\npip install django-mercury-performance\n```\n\n### Choose Your Profile\n\nMercury adapts to three audiences through its plugin system:\n\n```bash\n# \ud83c\udf93 Students - Learn while testing\nmercury-test --profile student\n\n# \ud83d\udcbc Experts - Fast and efficient\nmercury-test --profile expert\n\n# \ud83e\udd16 Agents - Structured output for CI/CD\nmercury-test --profile agent\n```\n\n### Write Your First Test\n\n```python\n# For investigation and learning\nfrom django_mercury import DjangoMercuryAPITestCase\n\nclass QuickCheck(DjangoMercuryAPITestCase):\n    \"\"\"Mercury automatically monitors all tests in this class.\"\"\"\n    \n    def test_user_api(self):\n        response = self.client.get('/api/users/')\n        # Mercury detects issues and explains them!\n\n# For production with specific assertions\nfrom django_mercury import DjangoPerformanceAPITestCase\nfrom django_mercury import monitor_django_view\n\nclass ProductionTests(DjangoPerformanceAPITestCase):\n    \"\"\"Enforce performance standards.\"\"\"\n    \n    def test_user_api_performance(self):\n        with monitor_django_view(\"user_api\") as monitor:\n            response = self.client.get('/api/users/')\n        \n        self.assertResponseTimeLess(monitor, 100)  # Must be under 100ms\n        self.assertQueriesLess(monitor, 10)        # Max 10 queries\n        self.assertNoNPlusOne(monitor)             # No N+1 patterns\n```\n\n## \ud83d\udd0c Plugin Architecture\n\nMercury uses a **small core, big plugin** design that enables different experiences:\n\n```bash\nmercury-test --list-plugins\n\nAvailable Plugins:\n\u2705 discovery - Smart Django project finding\n\u2705 wizard - Interactive test selection (students)\n\u2705 learn - Quizzes and tutorials (students)\n\u2705 hints - Performance tips (students)\n```\n\nEach profile automatically configures the right plugins:\n- **Student**: All educational plugins enabled\n- **Expert**: Minimal plugins for speed\n- **Agent**: Non-interactive with JSON output\n\n[Learn more about the plugin system \u2192](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Why-Plugins)\n\n## \ud83d\udcca What Mercury Shows You\n\n### \ud83c\udf93 Student Mode - Educational Output\n```\n\ud83d\udcda LEARNING MOMENT DETECTED\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nFound: N+1 Query Pattern\nLocation: UserSerializer.get_profile_data()\n\n\ud83d\udcd6 What's happening:\nYour code makes 1 query to get users, then 1 query\nper user to get profiles. With 100 users = 101 queries!\n\n\ud83d\udca1 Why this matters:\nEach query adds ~2ms overhead. This gets slower as\nyour data grows.\n\n\ud83d\udd27 How to fix:\nAdd .select_related('profile') to your queryset:\n  User.objects.select_related('profile').all()\n\n\ud83d\udcda Want to learn more?\nRun: mercury-test --learn n1-queries\n```\n\n### \ud83d\udcbc Expert Mode - Concise Results\n```\ntest_user_list     156ms  45q  23MB  \u26a0\ufe0f N+1@L45  SLOW\ntest_user_detail    23ms   3q  12MB  \u2705         PASS\n\nCritical: N+1 in views.py:45. Fix: select_related('profile')\n```\n\n### \ud83e\udd16 Agent Mode - Structured JSON\n```json\n{\n  \"test\": \"test_user_list\",\n  \"metrics\": {\n    \"response_time_ms\": 156,\n    \"queries\": 45,\n    \"memory_mb\": 23\n  },\n  \"issues\": [{\n    \"type\": \"n_plus_one\",\n    \"severity\": \"high\",\n    \"location\": \"views.py:45\",\n    \"auto_fixable\": false,\n    \"requires_human_review\": true\n  }]\n}\n```\n\n## \ud83c\udf93 Educational Features\n\nMercury doesn't just find problems - it teaches you to understand them:\n\n### Interactive Learning\n```bash\n# Start learning mode\nmercury-test --learn\n\n# Take quizzes\nmercury-test --learn --quiz\n\n# Get step-by-step tutorials\nmercury-test --learn n1-queries\n```\n\n### Progress Tracking\n```bash\nmercury-test --learn --progress\n\n\ud83d\udcca YOUR PROGRESS\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nLevel: Intermediate (750 XP)\nTopics Mastered: N+1 Queries \u2705, Indexing \u2705\nCurrently Learning: Caching (70%)\nNext Goal: Complete Caching module\n```\n\n### Real-time Teaching\nWhen Mercury finds issues, it explains them in context, shows why they matter, and teaches you how to fix them.\n\n## \ud83d\ude80 Performance Grading\n\nMercury grades your application's performance:\n\n| Grade | Score | Meaning |\n|-------|-------|---------|\n| **S** | 100 | Perfect performance |\n| **A+** | 95-99 | Excellent |\n| **A** | 90-94 | Very good |\n| **B** | 80-89 | Good |\n| **C** | 70-79 | Acceptable |\n| **D** | 60-69 | Poor |\n| **F** | <60 | Failing |\n\n## \ud83d\udee0\ufe0f CI/CD Integration\n\n```yaml\n# .github/workflows/performance.yml\nname: Performance Tests\n\non: [push, pull_request]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n      - name: Run Mercury Tests\n        run: |\n          pip install django-mercury-performance\n          mercury-test --profile agent --export-metrics=json\n      - name: Check Performance\n        run: |\n          python -c \"import json; exit(0 if json.load(open('metrics.json'))['grade'] >= 'B' else 1)\"\n```\n\n## \ud83d\udcda Documentation\n\n- **[Quick Start Guide](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Quick-Start)** - Get running in 5 minutes\n- **[Educational Mode](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Educational-Mode)** - Learn performance optimization\n- **[Understanding Reports](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Understanding-Reports)** - Interpret Mercury's output\n- **[Plugin System](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Why-Plugins)** - Extend Mercury's capabilities\n- **[API Reference](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/API-Reference)** - Complete API documentation\n\n## \ud83e\udd1d Contributing\n\nMercury is part of the [80-20 Human-in-the-Loop](https://github.com/80-20-Human-In-The-Loop) ecosystem. We welcome contributions from everyone!\n\n### Our Values\n- **Education First**: Tools should teach, not just detect\n- **Human Understanding**: Preserve human decision-making\n- **Open Community**: Built together, shared freely\n\n### How to Contribute\n1. **Use Mercury** - Test it on your projects\n2. **Report Issues** - Help us improve\n3. **Share Knowledge** - Write tutorials, create quizzes\n4. **Code** - Fix bugs, add features\n5. **Translate** - Make Mercury accessible globally\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n## \ud83d\udea7 Roadmap\n\n### Current (v1.0)\n- \u2705 Three-audience plugin system\n- \u2705 Educational mode with quizzes\n- \u2705 Performance grading system\n- \u2705 N+1 detection\n- \u2705 Smart project discovery\n\n### Next (v1.1)\n- \ud83d\udd28 MCP server for AI integration\n- \ud83d\udd28 Performance trend tracking\n- \ud83d\udd28 Custom plugin API\n- \ud83d\udd28 More educational content\n\n### Future (v2.0)\n- \ud83e\udd16 AI-assisted optimization\n- \ud83e\udd16 Auto-fix for simple issues\n- \ud83e\udd16 Performance prediction\n- \ud83e\udd16 Team learning features\n\n## \ud83d\udcc4 License\n\nGNU General Public License v3.0 (GPL-3.0)\n\nWe chose GPL to ensure Mercury remains:\n- **Free** - No barriers to learning\n- **Open** - Transparent development\n- **Fair** - Improvements benefit everyone\n\n## \ud83d\ude4f Acknowledgments\n\n- **[EduLite](https://github.com/ibrahim-sisar/EduLite)** - Where Mercury was born\n- **[80-20 Human-in-the-Loop](https://github.com/80-20-Human-In-The-Loop)** - For the philosophy\n- **Django Community** - For the amazing framework\n- **You** - For making Django apps faster!\n\n---\n\n<div align=\"center\">\n\n**Mercury: Making performance testing educational, accessible, and effective.**\n\n*Because every developer deserves to understand their code's performance.*\n\n[Get Started](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki/Quick-Start) \u2022 [Documentation](https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki) \u2022 [Community](https://github.com/80-20-Human-In-The-Loop/Community)\n\n</div>\n",
    "bugtrack_url": null,
    "license": "GPL-3.0-or-later",
    "summary": "A performance testing framework for Django that helps you understand and fix performance issues, not just detect them",
    "version": "0.0.8",
    "project_urls": {
        "Bug Tracker": "https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/issues",
        "Changelog": "https://github.com/Django-Mercury/Performance-Testing/blob/main/CHANGELOG.md",
        "Documentation": "https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing/wiki",
        "Homepage": "https://pypi.org/project/django-mercury-performance/",
        "Repository": "https://github.com/80-20-Human-In-The-Loop/Django-Mercury-Performance-Testing"
    },
    "split_keywords": [
        "django",
        " performance",
        " testing",
        " monitoring",
        " optimization",
        " n+1",
        " queries",
        " profiling",
        " mercury",
        " rest-framework",
        " api",
        " benchmarking"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6e03df1ada54ac22b6fa5dfd438daea9e80c8e21f2ed769fbf2df8325bf529f0",
                "md5": "70db155cb72ab43d792c93aa70bf1bf0",
                "sha256": "5dc7e568f0a5b139c0981701a723901093d123ac4190d0795e7aeda89e9d6b18"
            },
            "downloads": -1,
            "filename": "django_mercury_performance-0.0.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "70db155cb72ab43d792c93aa70bf1bf0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 233446,
            "upload_time": "2025-08-25T04:15:31",
            "upload_time_iso_8601": "2025-08-25T04:15:31.364077Z",
            "url": "https://files.pythonhosted.org/packages/6e/03/df1ada54ac22b6fa5dfd438daea9e80c8e21f2ed769fbf2df8325bf529f0/django_mercury_performance-0.0.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "44dd2aa3c34dd5e793fbf2e5e16ada9a1d8dc2db3df7c3bc91c0dad509b834b2",
                "md5": "72c363ff242da8839b5e14c9aec276e4",
                "sha256": "cae6b05be5d6f618c9156f0310821bb12e5e90eea25e5364f25a1afd9065d50e"
            },
            "downloads": -1,
            "filename": "django_mercury_performance-0.0.8.tar.gz",
            "has_sig": false,
            "md5_digest": "72c363ff242da8839b5e14c9aec276e4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 212118,
            "upload_time": "2025-08-25T04:15:32",
            "upload_time_iso_8601": "2025-08-25T04:15:32.999780Z",
            "url": "https://files.pythonhosted.org/packages/44/dd/2aa3c34dd5e793fbf2e5e16ada9a1d8dc2db3df7c3bc91c0dad509b834b2/django_mercury_performance-0.0.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-25 04:15:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "80-20-Human-In-The-Loop",
    "github_project": "Django-Mercury-Performance-Testing",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "Django",
            "specs": [
                [
                    "<",
                    "6.0"
                ],
                [
                    ">=",
                    "3.2"
                ]
            ]
        },
        {
            "name": "djangorestframework",
            "specs": [
                [
                    ">=",
                    "3.12.0"
                ]
            ]
        },
        {
            "name": "psutil",
            "specs": [
                [
                    ">=",
                    "5.8.0"
                ]
            ]
        },
        {
            "name": "memory-profiler",
            "specs": [
                [
                    ">=",
                    "0.60.0"
                ]
            ]
        },
        {
            "name": "colorlog",
            "specs": [
                [
                    ">=",
                    "6.6.0"
                ]
            ]
        },
        {
            "name": "rich",
            "specs": [
                [
                    ">=",
                    "12.0.0"
                ]
            ]
        },
        {
            "name": "jsonschema",
            "specs": [
                [
                    ">=",
                    "4.0.0"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    ">=",
                    "7.0.0"
                ]
            ]
        },
        {
            "name": "pytest-cov",
            "specs": [
                [
                    ">=",
                    "3.0.0"
                ]
            ]
        },
        {
            "name": "coverage",
            "specs": [
                [
                    ">=",
                    "6.0.0"
                ]
            ]
        },
        {
            "name": "black",
            "specs": [
                [
                    ">=",
                    "22.0.0"
                ]
            ]
        },
        {
            "name": "isort",
            "specs": [
                [
                    ">=",
                    "5.10.0"
                ]
            ]
        },
        {
            "name": "mypy",
            "specs": [
                [
                    ">=",
                    "0.950"
                ]
            ]
        },
        {
            "name": "flake8",
            "specs": [
                [
                    ">=",
                    "4.0.0"
                ]
            ]
        },
        {
            "name": "django-debug-toolbar",
            "specs": [
                [
                    ">=",
                    "3.2.0"
                ]
            ]
        },
        {
            "name": "django-silk",
            "specs": [
                [
                    ">=",
                    "4.3.0"
                ]
            ]
        },
        {
            "name": "sphinx",
            "specs": [
                [
                    ">=",
                    "4.5.0"
                ]
            ]
        },
        {
            "name": "sphinx-rtd-theme",
            "specs": [
                [
                    ">=",
                    "1.0.0"
                ]
            ]
        }
    ],
    "lcname": "django-mercury-performance"
}
        
Elapsed time: 2.67202s