prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Signer/Verifier deprecation warning has wrong stacklevel
  Seeing this with Cryptography 2.0:
  
  ```
  .../python3.5/site-packages/cryptography/hazmat/backends/openssl/rsa.py:477: DeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.
    _warn_sign_verify_deprecated()
  .../python3.5/site-packages/cryptography/hazmat/backends/openssl/rsa.py:382: DeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.
    _warn_sign_verify_deprecated()
  ```
  
  I see a few open issues related to deprecations (e.g. #3794), but I'm not sure if any of them cover this particular message.
  
  </issue>
  <code>
  [start of src/cryptography/hazmat/backends/openssl/utils.py]
  1 # This file is dual licensed under the terms of the Apache License, Version
  2 # 2.0, and the BSD License. See the LICENSE file in the root of this repository
  3 # for complete details.
  4 
  5 from __future__ import absolute_import, division, print_function
  6 
  7 import warnings
  8 
  9 from cryptography import utils
  10 from cryptography.hazmat.primitives import hashes
  11 from cryptography.hazmat.primitives.asymmetric.utils import Prehashed
  12 
  13 
  14 def _calculate_digest_and_algorithm(backend, data, algorithm):
  15     if not isinstance(algorithm, Prehashed):
  16         hash_ctx = hashes.Hash(algorithm, backend)
  17         hash_ctx.update(data)
  18         data = hash_ctx.finalize()
  19     else:
  20         algorithm = algorithm._algorithm
  21 
  22     if len(data) != algorithm.digest_size:
  23         raise ValueError(
  24             "The provided data must be the same length as the hash "
  25             "algorithm's digest size."
  26         )
  27 
  28     return (data, algorithm)
  29 
  30 
  31 def _check_not_prehashed(signature_algorithm):
  32     if isinstance(signature_algorithm, Prehashed):
  33         raise TypeError(
  34             "Prehashed is only supported in the sign and verify methods. "
  35             "It cannot be used with signer or verifier."
  36         )
  37 
  38 
  39 def _warn_sign_verify_deprecated():
  40     warnings.warn(
  41         "signer and verifier have been deprecated. Please use sign "
  42         "and verify instead.",
  43         utils.PersistentlyDeprecated,
  44         stacklevel=2
  45     )
  46
  [end of src/cryptography/hazmat/backends/openssl/utils.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/src/cryptography/hazmat/backends/openssl/utils.py b/src/cryptography/hazmat/backends/openssl/utils.py
  --- a/src/cryptography/hazmat/backends/openssl/utils.py
  +++ b/src/cryptography/hazmat/backends/openssl/utils.py
  @@ -41,5 +41,5 @@
           "signer and verifier have been deprecated. Please use sign "
           "and verify instead.",
           utils.PersistentlyDeprecated,
  -        stacklevel=2
  +        stacklevel=3
       )
  
verification_info: {"golden_diff": "diff --git a/src/cryptography/hazmat/backends/openssl/utils.py b/src/cryptography/hazmat/backends/openssl/utils.py\n--- a/src/cryptography/hazmat/backends/openssl/utils.py\n+++ b/src/cryptography/hazmat/backends/openssl/utils.py\n@@ -41,5 +41,5 @@\n         \"signer and verifier have been deprecated. Please use sign \"\n         \"and verify instead.\",\n         utils.PersistentlyDeprecated,\n-        stacklevel=2\n+        stacklevel=3\n     )\n", "issue": "Signer/Verifier deprecation warning has wrong stacklevel\nSeeing this with Cryptography 2.0:\r\n\r\n```\r\n.../python3.5/site-packages/cryptography/hazmat/backends/openssl/rsa.py:477: DeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.\r\n  _warn_sign_verify_deprecated()\r\n.../python3.5/site-packages/cryptography/hazmat/backends/openssl/rsa.py:382: DeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.\r\n  _warn_sign_verify_deprecated()\r\n```\r\n\r\nI see a few open issues related to deprecations (e.g. #3794), but I'm not sure if any of them cover this particular message.\n", "before_files": [{"content": "# This file is dual licensed under the terms of the Apache License, Version\n# 2.0, and the BSD License. See the LICENSE file in the root of this repository\n# for complete details.\n\nfrom __future__ import absolute_import, division, print_function\n\nimport warnings\n\nfrom cryptography import utils\nfrom cryptography.hazmat.primitives import hashes\nfrom cryptography.hazmat.primitives.asymmetric.utils import Prehashed\n\n\ndef _calculate_digest_and_algorithm(backend, data, algorithm):\n    if not isinstance(algorithm, Prehashed):\n        hash_ctx = hashes.Hash(algorithm, backend)\n        hash_ctx.update(data)\n        data = hash_ctx.finalize()\n    else:\n        algorithm = algorithm._algorithm\n\n    if len(data) != algorithm.digest_size:\n        raise ValueError(\n            \"The provided data must be the same length as the hash \"\n            \"algorithm's digest size.\"\n        )\n\n    return (data, algorithm)\n\n\ndef _check_not_prehashed(signature_algorithm):\n    if isinstance(signature_algorithm, Prehashed):\n        raise TypeError(\n            \"Prehashed is only supported in the sign and verify methods. \"\n            \"It cannot be used with signer or verifier.\"\n        )\n\n\ndef _warn_sign_verify_deprecated():\n    warnings.warn(\n        \"signer and verifier have been deprecated. Please use sign \"\n        \"and verify instead.\",\n        utils.PersistentlyDeprecated,\n        stacklevel=2\n    )\n", "path": "src/cryptography/hazmat/backends/openssl/utils.py"}]}