Skip to main content

Bugless future for our sanity sake

Project description

Crashless

Crash proof your code

Crashless enables you to catch those pesky bugs during backend development and correct them in real-time. Makes your development cycle smooth, so you can actually focus on building what actually matters.

Installation

Crashless is published as a Python package and can be installed with pip, ideally by using a virtual environment. Open up a terminal and install Crashless with:

pip install crashless

Add to FastAPI in 3 steps

  1. Copy and paste the following server with a crashed endpoint to a file called main.py:

     from fastapi import FastAPI
    
     app = FastAPI()
    
    
     @app.get("/")
     def read_root():
         return {"message": "The server is running OK!"}
    
    
     @app.get("/crash")  # This endpoint has a fatal bug :(
     def crash():
         result = 8 + '7'
         return {'msg': f"Summing a+b = {result}"}
     
     
     # Adds Crashless
     import sys
     from crashless import fastapi_handler  # Imports library
     
     
     def in_dev_mode():
         """Knows if you are running in production or development mode"""
         return sys.argv[1] == 'dev'
     
     
     if in_dev_mode():  # If in dev mode adds an exception handler, that will suggest a possible fix.
         app.add_exception_handler(Exception, fastapi_handler.handle_exception)
    

    As you can see the /crash endpoint has an issue.

  2. Run the server with:

     fastapi dev main.py
    

    If you don't have the fastapi command follow instructions here.

  3. Go to http://127.0.0.1:8000 and check that it's running OK.

    Then go to http://127.0.0.1:8000/crash and see how it crashes.

    Now go to the terminal, where the server is running, and you'll see something like this:

     TypeError: unsupported operand type(s) for +: 'int' and 'str'
    
     Error detected, let's fix it!
     The following code changes will be applied:
    
      @app.get("/crash")  # This endpoint has a fatal bug :(
      def crash():
     -    result = 8 + '7'
     +    result = 8 + int('7')
      return {'msg': f"Summing a+b = {result}"}
    
    
     Explanation: The error occurred because you cannot add an integer and a string directly. The fix converts the string '7' to
     an integer using int('7') before performing the addition.
    

    You can apply changes by ENTERING a y. The changes will take place and the api reloads. If you try again you get 15!

Add to Django in 3 steps

coming soon!

Add to Flask in 3 steps

coming soon!

Links

Source Code: https://github.com/jisazaTappsi/crashless

Python library: https://pypi.org/project/crashless/

Project details


Download files

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

Source Distribution

crashless-0.0.5.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

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

crashless-0.0.5-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file crashless-0.0.5.tar.gz.

File metadata

  • Download URL: crashless-0.0.5.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.8.18

File hashes

Hashes for crashless-0.0.5.tar.gz
Algorithm Hash digest
SHA256 55a1539d7cb5ad20bb30740de7bbec46cb6941bff59471fe45129fc782875108
MD5 6b4584c41b4f8fb6c4057c0a4d46e77d
BLAKE2b-256 6daad22c4623903c6c0bc39174ce2b5b7e13fa98b37405a6c42d0b79a2af3277

See more details on using hashes here.

File details

Details for the file crashless-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: crashless-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.8.18

File hashes

Hashes for crashless-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 bebe939dc66306775c18cf5dc1907004f9289eb99ce7514b7212b163455604b1
MD5 56c35b581ec005b0be7cb6679d8eef3d
BLAKE2b-256 6af4da750ba4ce195d278eed28c8b0b9b50381e909b76a5c7dafb874eb213d82

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