# Django Mercury
[](https://badge.fury.io/py/django-mercury-performance)
[](https://www.python.org/downloads/)
[](https://docs.djangoproject.com/)
[](https://www.gnu.org/licenses/gpl-3.0)
[](https://github.com/ibrahim-sisar/EduLite)
[](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[](https://badge.fury.io/py/django-mercury-performance)\n[](https://www.python.org/downloads/)\n[](https://docs.djangoproject.com/)\n[](https://www.gnu.org/licenses/gpl-3.0)\n[](https://github.com/ibrahim-sisar/EduLite)\n[](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"
}