Skip to main content

Fast & Friendly, Web Framework For Building Async APIs

Project description

PyPI PyVersion codecov Downloads license

Panther

Is A Fast & Friendly Web Framework For Building Async APIs With Python 3.10+

logo

📚 Full Documentation: PantherPy.GitHub.io


Why Use Panther ?

  • Include Simple File-Base Database (PantherDB)
  • Built-in Document-oriented Databases ODM (MongoDB, PantherDB)
  • Built-in Websocket Support
  • Built-in API Caching System (In Memory, Redis)
  • Built-in Authentication Classes
  • Built-in Permission Classes
  • Built-in Visual API Monitoring (In Terminal)
  • Support Custom Background Tasks
  • Support Custom Middlewares
  • Support Custom Throttling
  • Support Function-Base and Class-Base APIs
  • It's One Of The Fastest Python Framework (Benchmark)

Supported by

jetbrains

Installation

$ pip install panther

Usage

  • Create Project

    $ panther create
    
  • Run Project

    $ panther run --reload
    

    * Panther uses Uvicorn as ASGI (Asynchronous Server Gateway Interface) but you can run the project with Granian, daphne or any ASGI server

  • Monitoring Requests

    $ panther monitor 
    
  • Python Shell

    $ panther shell
    

API Example

  • Create main.py

    from datetime import datetime, timedelta
    
    from panther import status, Panther
    from panther.app import GenericAPI
    from panther.response import Response
    
    
    class FirstAPI(GenericAPI):
        # Cache Response For 10 Seconds
        cache = True
        cache_exp_time = timedelta(seconds=10)
        
        def get(self):
            date_time = datetime.now().isoformat()
            data = {'detail': f'Hello World | {date_time}'}
            return Response(data=data, status_code=status.HTTP_202_ACCEPTED)
    
    
    url_routing = {'': FirstAPI}
    app = Panther(__name__, configs=__name__, urls=url_routing)
    
  • Run the project:

    • $ panther run --reload
  • Checkout the http://127.0.0.1:8000/

WebSocket Echo Example

  • Create main.py

    from panther import Panther
    from panther.app import GenericAPI
    from panther.response import HTMLResponse
    from panther.websocket import GenericWebsocket
    
    
    class FirstWebsocket(GenericWebsocket):
        async def connect(self, **kwargs):
            await self.accept()
    
        async def receive(self, data: str | bytes):
            await self.send(data)
    
    
    class MainPage(GenericAPI):
        def get(self):
            template = """
            <input type="text" id="messageInput">
            <button id="sendButton">Send Message</button>
            <ul id="messages"></ul>
            <script>
                var socket = new WebSocket('ws://127.0.0.1:8000/ws');
                socket.addEventListener('message', function (event) {
                    var li = document.createElement('li');
                    document.getElementById('messages').appendChild(li).textContent = 'Server: ' + event.data;
                });
                function sendMessage() {
                    socket.send(document.getElementById('messageInput').value);
                }
                document.getElementById('sendButton').addEventListener('click', sendMessage);
            </script>
            """
            return HTMLResponse(template)
    
    url_routing = {
        '': MainPage,
        'ws': FirstWebsocket,
    }
    app = Panther(__name__, configs=__name__, urls=url_routing)
    
  • Run the project:

    • $ panther run --reload
  • Go to http://127.0.0.1:8000/ and work with your websocket

Next Step: First CRUD


How Panther Works!

diagram


Roadmap

roadmap


If you find this project 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-4.3.3.tar.gz (75.6 kB view details)

Uploaded Source

Built Distribution

panther-4.3.3-py3-none-any.whl (67.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: panther-4.3.3.tar.gz
  • Upload date:
  • Size: 75.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for panther-4.3.3.tar.gz
Algorithm Hash digest
SHA256 6232da6331f729438b0f3c3764673a9f24afb48d0d0f36688ec9f589cbab9c65
MD5 fa7e8fb29e2aaf681ee2ae9b3528e07a
BLAKE2b-256 32640e083a30167614350e018e0d713670e6747645a0f305f8863a1266ac0c05

See more details on using hashes here.

File details

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

File metadata

  • Download URL: panther-4.3.3-py3-none-any.whl
  • Upload date:
  • Size: 67.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for panther-4.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 da4f192e1e77d69cd4286c03076ff1a69009b04a244de051a2d8c377aa610be7
MD5 72adff2fb1e15d6f03d2d82449f517f1
BLAKE2b-256 77c52a418a3f3490fa4a5235ca0da5a120710c4783eb93d55901305092b5ec5b

See more details on using hashes here.

Supported by

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