Skip to main content

Fast & Friendly, Web Framework For Building Async APIs

Project description

PyPI PyVersion codecov Downloads license

Panther Logo

Panther

A Fast & Friendly Web Framework for Building Async APIs with Python 3.10+

📚 Documentation


🐾 Why Choose Panther?

Panther is designed to be fast, simple, and powerful. Here's what makes it special:

  • One of the fastest Python frameworks available (Benchmark)
  • File-based database (PantherDB) - No external database setup required
  • Document-oriented ODM - Supports MongoDB & PantherDB with familiar syntax
  • API caching system - In-memory and Redis support
  • OpenAPI - Auto-generated API documentation with multiple UI options
  • WebSocket support - Real-time communication out of the box
  • Authentication & Permissions - Built-in security features
  • Background tasks - Handle long-running operations
  • Middleware & Throttling - Extensible and configurable

Quick Start

Installation

pip install panther
  • Create a main.py file with one of the examples below.

Your First API

Here's a simple REST API endpoint that returns a "Hello World" message:

from datetime import datetime, timedelta
from panther import status, Panther
from panther.app import GenericAPI
from panther.openapi.urls import url_routing as openapi_url_routing
from panther.response import Response

class HelloAPI(GenericAPI):
    # Cache responses for 10 seconds
    cache = timedelta(seconds=10)
    
    def get(self):
        current_time = datetime.now().isoformat()
        return Response(
            data={'message': f'Hello from Panther! 🐾 | {current_time}'},
            status_code=status.HTTP_200_OK
        )

# URL routing configuration
url_routing = {
    '/': HelloAPI,
    'docs/': openapi_url_routing,  # Auto-generated API docs
}

# Create your Panther app
app = Panther(__name__, configs=__name__, urls=url_routing)

WebSocket Echo Server

Here's a simple WebSocket echo server that sends back any message it receives:

from panther import Panther
from panther.app import GenericAPI
from panther.response import HTMLResponse
from panther.websocket import GenericWebsocket

class EchoWebsocket(GenericWebsocket):
    async def connect(self, **kwargs):
        await self.accept()
        await self.send("Connected to Panther WebSocket!")
    
    async def receive(self, data: str | bytes):
        # Echo back the received message
        await self.send(f"Echo: {data}")

class WebSocketPage(GenericAPI):
    def get(self):
        template = """
        <h2>🐾 Panther WebSocket Echo Server</h2>
        <input id="msg"><button onclick="s.send(msg.value)">Send</button>
        <ul id="log"></ul>
        <script>
            const s = new WebSocket('ws://127.0.0.1:8000/ws');
            s.onmessage = e => log.innerHTML += `<li><- ${msg.value}</li><li>-> ${e.data}</li>`;
        </script>
        """
        return HTMLResponse(template)

url_routing = {
    '': WebSocketPage,
    'ws': EchoWebsocket,
}
app = Panther(__name__, configs=__name__, urls=url_routing)

Run Your Application

  1. Start the development server

    $ panther run main:app
    
  2. Test your application


For LLMs and Coding Agents

Start with:

These files are kept focused on current Panther APIs and copyable examples.


🙏 Acknowledgments

Supported by

JetBrains

⭐️ If you find Panther useful, please give it a star!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

panther-5.3.0.tar.gz (137.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

panther-5.3.0-py3-none-any.whl (112.0 kB view details)

Uploaded Python 3

File details

Details for the file panther-5.3.0.tar.gz.

File metadata

  • Download URL: panther-5.3.0.tar.gz
  • Upload date:
  • Size: 137.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for panther-5.3.0.tar.gz
Algorithm Hash digest
SHA256 7b8f060a807025834cd88b2b615feaa7e7fdd93b30eb5246d45a9a765d88563f
MD5 d831ce3b34dbe6d8173f43bbb80c9863
BLAKE2b-256 f56eabd001bd9d429f7a422358ba38c41383c700a57e3873f8d0eeded9b6b263

See more details on using hashes here.

File details

Details for the file panther-5.3.0-py3-none-any.whl.

File metadata

  • Download URL: panther-5.3.0-py3-none-any.whl
  • Upload date:
  • Size: 112.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for panther-5.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64b1cf1727d54d19c6155ca145bb116f44171b878df68c34c41ce0ba35ea439c
MD5 3067af15a308ca3b07e154a6e7b3c53e
BLAKE2b-256 282a4422fda043b62c5ad205eaca08b70db79971601567d0ea6e157a051efda7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page