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'
    
     Crashless detected an error, let's fix it!
     Loading possible solution...
     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.14.tar.gz (12.0 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.14-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: crashless-0.0.14.tar.gz
  • Upload date:
  • Size: 12.0 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.14.tar.gz
Algorithm Hash digest
SHA256 84430c751b6ffd1c56ebdeb7f96db841958a7ae4f570aaaaf921258bc7690d0b
MD5 8fd42042eb39f44ac3c877c16d9940e9
BLAKE2b-256 97e386313319eac9b077106cf11669451c5ccec7cde9ec6119fa8aa4ec417935

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crashless-0.0.14-py3-none-any.whl
  • Upload date:
  • Size: 11.6 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.14-py3-none-any.whl
Algorithm Hash digest
SHA256 6f229d0502af3e86c45337aad7d3ae045654d227052363e8d9efd56c3480e6d5
MD5 f98fd712b85679e5d4976ade5daac749
BLAKE2b-256 80272e6f2aa87854d33b1abacea85cf113ac40f788021ab21faf7be5509089ac

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