prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  consolidation: add simplemodls to __all__
  # Description
  
  It would be nice if the snippet in the README could be shorter:
  
  right now this is needed
  ```
  import pyhf
  import pyhf.simplemodels
  pdf = pyhf.simplemodels.hepdata_like(signal_data=[12.0], bkg_data=[50.0], bkg_uncerts=[3.0])
  CLs_obs = pyhf.utils.hypotest(1.0, [51] + pdf.config.auxdata, pdf)
  ```
  
  whereas if we pre-import `simplemodels` it could be 
  ```
  import pyhf
  pdf = pyhf.simplemodels.hepdata_like(signal_data=[12.0], bkg_data=[50.0], bkg_uncerts=[3.0])
  CLs_obs = pyhf.utils.hypotest(1.0, [51] + pdf.config.auxdata, pdf)
  ```
  
  since `simplemodels.py` doesn't add much code, i don't think it would slow down things a lot
  
  </issue>
  <code>
  [start of pyhf/__init__.py]
  1 from .tensor import BackendRetriever as tensor
  2 from .optimize import OptimizerRetriever as optimize
  3 from .version import __version__
  4 from . import events
  5 
  6 tensorlib = tensor.numpy_backend()
  7 default_backend = tensorlib
  8 optimizer = optimize.scipy_optimizer()
  9 default_optimizer = optimizer
  10 
  11 
  12 def get_backend():
  13     """
  14     Get the current backend and the associated optimizer
  15 
  16     Example:
  17         >>> import pyhf
  18         >>> pyhf.get_backend()
  19         (<pyhf.tensor.numpy_backend.numpy_backend object at 0x...>, <pyhf.optimize.opt_scipy.scipy_optimizer object at 0x...>)
  20 
  21     Returns:
  22         backend, optimizer
  23     """
  24     global tensorlib
  25     global optimizer
  26     return tensorlib, optimizer
  27 
  28 
  29 @events.register('change_backend')
  30 def set_backend(backend, custom_optimizer=None):
  31     """
  32     Set the backend and the associated optimizer
  33 
  34     Example:
  35         >>> import pyhf
  36         >>> import tensorflow as tf
  37         >>> pyhf.set_backend(pyhf.tensor.tensorflow_backend(session=tf.Session()))
  38 
  39     Args:
  40         backend: One of the supported pyhf backends: NumPy,
  41                  TensorFlow, PyTorch, and MXNet
  42 
  43     Returns:
  44         None
  45     """
  46     global tensorlib
  47     global optimizer
  48 
  49     # need to determine if the tensorlib changed or the optimizer changed for events
  50     tensorlib_changed = bool(backend.name != tensorlib.name)
  51     optimizer_changed = False
  52 
  53     if backend.name == 'tensorflow':
  54         new_optimizer = (
  55             custom_optimizer if custom_optimizer else optimize.tflow_optimizer(backend)
  56         )
  57         if tensorlib.name == 'tensorflow':
  58             tensorlib_changed |= bool(backend.session != tensorlib.session)
  59     elif backend.name == 'pytorch':
  60         new_optimizer = (
  61             custom_optimizer
  62             if custom_optimizer
  63             else optimize.pytorch_optimizer(tensorlib=backend)
  64         )
  65     # TODO: Add support for mxnet_optimizer()
  66     # elif tensorlib.name == 'mxnet':
  67     #     new_optimizer = custom_optimizer if custom_optimizer else mxnet_optimizer()
  68     else:
  69         new_optimizer = (
  70             custom_optimizer if custom_optimizer else optimize.scipy_optimizer()
  71         )
  72 
  73     optimizer_changed = bool(optimizer != new_optimizer)
  74     # set new backend
  75     tensorlib = backend
  76     optimizer = new_optimizer
  77     # trigger events
  78     if tensorlib_changed:
  79         events.trigger("tensorlib_changed")()
  80     if optimizer_changed:
  81         events.trigger("optimizer_changed")()
  82 
  83 
  84 from .pdf import Model
  85 
  86 __all__ = ['Model', 'utils', 'modifiers', '__version__']
  87
  [end of pyhf/__init__.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/pyhf/__init__.py b/pyhf/__init__.py
  --- a/pyhf/__init__.py
  +++ b/pyhf/__init__.py
  @@ -82,5 +82,6 @@
   
   
   from .pdf import Model
  +from . import simplemodels
   
  -__all__ = ['Model', 'utils', 'modifiers', '__version__']
  +__all__ = ['Model', 'utils', 'modifiers', 'simplemodels', '__version__']
  
verification_info: {"golden_diff": "diff --git a/pyhf/__init__.py b/pyhf/__init__.py\n--- a/pyhf/__init__.py\n+++ b/pyhf/__init__.py\n@@ -82,5 +82,6 @@\n \n \n from .pdf import Model\n+from . import simplemodels\n \n-__all__ = ['Model', 'utils', 'modifiers', '__version__']\n+__all__ = ['Model', 'utils', 'modifiers', 'simplemodels', '__version__']\n", "issue": "consolidation: add simplemodls to __all__\n# Description\r\n\r\nIt would be nice if the snippet in the README could be shorter:\r\n\r\nright now this is needed\r\n```\r\nimport pyhf\r\nimport pyhf.simplemodels\r\npdf = pyhf.simplemodels.hepdata_like(signal_data=[12.0], bkg_data=[50.0], bkg_uncerts=[3.0])\r\nCLs_obs = pyhf.utils.hypotest(1.0, [51] + pdf.config.auxdata, pdf)\r\n```\r\n\r\nwhereas if we pre-import `simplemodels` it could be \r\n```\r\nimport pyhf\r\npdf = pyhf.simplemodels.hepdata_like(signal_data=[12.0], bkg_data=[50.0], bkg_uncerts=[3.0])\r\nCLs_obs = pyhf.utils.hypotest(1.0, [51] + pdf.config.auxdata, pdf)\r\n```\r\n\r\nsince `simplemodels.py` doesn't add much code, i don't think it would slow down things a lot\n", "before_files": [{"content": "from .tensor import BackendRetriever as tensor\nfrom .optimize import OptimizerRetriever as optimize\nfrom .version import __version__\nfrom . import events\n\ntensorlib = tensor.numpy_backend()\ndefault_backend = tensorlib\noptimizer = optimize.scipy_optimizer()\ndefault_optimizer = optimizer\n\n\ndef get_backend():\n    \"\"\"\n    Get the current backend and the associated optimizer\n\n    Example:\n        >>> import pyhf\n        >>> pyhf.get_backend()\n        (<pyhf.tensor.numpy_backend.numpy_backend object at 0x...>, <pyhf.optimize.opt_scipy.scipy_optimizer object at 0x...>)\n\n    Returns:\n        backend, optimizer\n    \"\"\"\n    global tensorlib\n    global optimizer\n    return tensorlib, optimizer\n\n\n@events.register('change_backend')\ndef set_backend(backend, custom_optimizer=None):\n    \"\"\"\n    Set the backend and the associated optimizer\n\n    Example:\n        >>> import pyhf\n        >>> import tensorflow as tf\n        >>> pyhf.set_backend(pyhf.tensor.tensorflow_backend(session=tf.Session()))\n\n    Args:\n        backend: One of the supported pyhf backends: NumPy,\n                 TensorFlow, PyTorch, and MXNet\n\n    Returns:\n        None\n    \"\"\"\n    global tensorlib\n    global optimizer\n\n    # need to determine if the tensorlib changed or the optimizer changed for events\n    tensorlib_changed = bool(backend.name != tensorlib.name)\n    optimizer_changed = False\n\n    if backend.name == 'tensorflow':\n        new_optimizer = (\n            custom_optimizer if custom_optimizer else optimize.tflow_optimizer(backend)\n        )\n        if tensorlib.name == 'tensorflow':\n            tensorlib_changed |= bool(backend.session != tensorlib.session)\n    elif backend.name == 'pytorch':\n        new_optimizer = (\n            custom_optimizer\n            if custom_optimizer\n            else optimize.pytorch_optimizer(tensorlib=backend)\n        )\n    # TODO: Add support for mxnet_optimizer()\n    # elif tensorlib.name == 'mxnet':\n    #     new_optimizer = custom_optimizer if custom_optimizer else mxnet_optimizer()\n    else:\n        new_optimizer = (\n            custom_optimizer if custom_optimizer else optimize.scipy_optimizer()\n        )\n\n    optimizer_changed = bool(optimizer != new_optimizer)\n    # set new backend\n    tensorlib = backend\n    optimizer = new_optimizer\n    # trigger events\n    if tensorlib_changed:\n        events.trigger(\"tensorlib_changed\")()\n    if optimizer_changed:\n        events.trigger(\"optimizer_changed\")()\n\n\nfrom .pdf import Model\n\n__all__ = ['Model', 'utils', 'modifiers', '__version__']\n", "path": "pyhf/__init__.py"}]}