New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

heaven

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

heaven

Extremely Stupid Simple, Blazing Fast, Get Out of your way immediately Microframework for building Python Web Applications.

  • 0.5.1
  • PyPI
  • Socket score

Maintainers
1

Heaven :

Heaven is a very very small, extremely tiny, and insanely fast ASGI web application framework. It was designed to facilitate productivity by allowing for complete mastery in 10 minutes or less.

Heaven is a very light layer around ASGI with support for application mounting and is perhaps the simplest and one of the fastest python web frameworks (biased opinion of course).


Quickstart

  1. Install with pip
$ pip install heaven

  1. create a function to handle your http requests in a file of your choosing i.e. patients.py or controllers/patients/records.py
from heaven import Request, Response, Context


async def get_record_by_id(req: Request, res: Response, ctx: Context):
    id = req.params.get('id')

    # we'll get to this in a minute
    dbconn = req.app.peek('dbconnection')
    results = await dbconn.execute('select * from patients where id = 1000')

    # req, res, ctx are available in your jinja templates
    ctx.keep('results', results)
    await res.render('patients.html')

  1. Optional : You can create functions to be initialised at app startup i.e. in middlewares/database.py
from heaven import App 

async def updatabase(app: App):
    # write code to connect to your database here
    pool = DatabasePool('dsn://here')

    # this will be available in all request handlers as request.app._.dbconn or req.app.peek('dbconn')
    app.keep('dbconn', pool)

  1. Create your heaven application and connect your request handler e.g. in src/example.py
from heaven import App  # also available as Router, Application


router = Router()


# you can persist things like db connections etc at app startup
router.ON(STARTUP, 'middlewares.connections.updatabase')


# note that you did not need to import your request handler, just giving heaven
# the path to your handler as a string is enough
router.GET('/v1/patients/:id', 'controllers.patients.records.get_record_by_id')

  1. You can run with uvicorn, gunicorn or any other asgi HTTP, HTTP2, and web socket protocol server of your choice.
$ uvicorn app:example --reload
 * Running on http://127.0.0.1:8000

Contributing

For guidance on how to make contributions to Routerling, see the Contribution Guidelines

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc