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.12.tar.gz (11.5 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.12-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: crashless-0.0.12.tar.gz
  • Upload date:
  • Size: 11.5 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.12.tar.gz
Algorithm Hash digest
SHA256 ec7c115c0a567c37060db57ea1e44b0f63a51f0b5ce8f1c1a6aa2376d87cc5af
MD5 6b843566c7f6f732658e225f347cdc37
BLAKE2b-256 c654882451e2f8a87c2a5214bbd95f6cf2883f75e54306c452dbea589b6ef268

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crashless-0.0.12-py3-none-any.whl
  • Upload date:
  • Size: 11.1 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.12-py3-none-any.whl
Algorithm Hash digest
SHA256 5cbabe9ccde8531081376026e42522593fda12312a346cbd9d2e901d3d72f3f8
MD5 b4f0a0bb428e9eafb159e9f0ed7047d3
BLAKE2b-256 25e9fb1f3316115d318143c547b83d293545209d41afb6fb276acf912692364b

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