text: Title: Assertions unsafe in production code
  Body: I've noticed while reading graphene and graphene-django that assertions are used frequently to protect from operations with undefined results or things that should be impossible (but might still happen if used incorrectly).
  
  In Python, assertions are not safe to use for this in general. This is because they can be disabled, and often are in production.
  
  Instead of:
  
  ```python
  assert something is not None, "Something was unexpectedly None"
  ```
  
  We should do this:
  
  ```python
  if something is not None:
      raise AssertionError("Something was unexpectedly None")
  ```
  
  This is the recommended best practice in Python development where assertions are being used.