prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Document all the scalars we have
  One that's definitely missing is the JSON one, or at least it doesn't show up on the search (we do get an example of creating a custom JSON scalar though, which is misleading)
  
  <!-- POLAR PLEDGE BADGE START -->
  ## Upvote & Fund
  
  - We're using [Polar.sh](https://polar.sh/strawberry-graphql) so you can upvote and help fund this issue.
  - We receive the funding once the issue is completed & confirmed by you.
  - Thank you in advance for helping prioritize & fund our backlog.
  
  <a href="https://polar.sh/strawberry-graphql/strawberry/issues/3404">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://polar.sh/api/github/strawberry-graphql/strawberry/issues/3404/pledge.svg?darkmode=1">
    <img alt="Fund with Polar" src="https://polar.sh/api/github/strawberry-graphql/strawberry/issues/3404/pledge.svg">
  </picture>
  </a>
  <!-- POLAR PLEDGE BADGE END -->
  
  
  </issue>
  <code>
  [start of strawberry/scalars.py]
  1 from __future__ import annotations
  2 
  3 import base64
  4 from typing import TYPE_CHECKING, Any, Dict, NewType, Union
  5 
  6 from .custom_scalar import scalar
  7 
  8 if TYPE_CHECKING:
  9     from .custom_scalar import ScalarDefinition, ScalarWrapper
  10 
  11 
  12 ID = NewType("ID", str)
  13 
  14 JSON = scalar(
  15     NewType("JSON", object),  # mypy doesn't like `NewType("name", Any)`
  16     description=(
  17         "The `JSON` scalar type represents JSON values as specified by "
  18         "[ECMA-404]"
  19         "(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf)."
  20     ),
  21     specified_by_url=(
  22         "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf"
  23     ),
  24     serialize=lambda v: v,
  25     parse_value=lambda v: v,
  26 )
  27 
  28 Base16 = scalar(
  29     NewType("Base16", bytes),
  30     description="Represents binary data as Base16-encoded (hexadecimal) strings.",
  31     specified_by_url="https://datatracker.ietf.org/doc/html/rfc4648.html#section-8",
  32     serialize=lambda v: base64.b16encode(v).decode("utf-8"),
  33     parse_value=lambda v: base64.b16decode(v.encode("utf-8"), casefold=True),
  34 )
  35 
  36 Base32 = scalar(
  37     NewType("Base32", bytes),
  38     description=(
  39         "Represents binary data as Base32-encoded strings, using the standard alphabet."
  40     ),
  41     specified_by_url=("https://datatracker.ietf.org/doc/html/rfc4648.html#section-6"),
  42     serialize=lambda v: base64.b32encode(v).decode("utf-8"),
  43     parse_value=lambda v: base64.b32decode(v.encode("utf-8"), casefold=True),
  44 )
  45 
  46 Base64 = scalar(
  47     NewType("Base64", bytes),
  48     description=(
  49         "Represents binary data as Base64-encoded strings, using the standard alphabet."
  50     ),
  51     specified_by_url="https://datatracker.ietf.org/doc/html/rfc4648.html#section-4",
  52     serialize=lambda v: base64.b64encode(v).decode("utf-8"),
  53     parse_value=lambda v: base64.b64decode(v.encode("utf-8")),
  54 )
  55 
  56 
  57 def is_scalar(
  58     annotation: Any,
  59     scalar_registry: Dict[object, Union[ScalarWrapper, ScalarDefinition]],
  60 ) -> bool:
  61     if annotation in scalar_registry:
  62         return True
  63 
  64     return hasattr(annotation, "_scalar_definition")
  65
  [end of strawberry/scalars.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/strawberry/scalars.py b/strawberry/scalars.py
  --- a/strawberry/scalars.py
  +++ b/strawberry/scalars.py
  @@ -16,10 +16,10 @@
       description=(
           "The `JSON` scalar type represents JSON values as specified by "
           "[ECMA-404]"
  -        "(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf)."
  +        "(https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf)."
       ),
       specified_by_url=(
  -        "http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf"
  +        "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf"
       ),
       serialize=lambda v: v,
       parse_value=lambda v: v,
  
verification_info: {"golden_diff": "diff --git a/strawberry/scalars.py b/strawberry/scalars.py\n--- a/strawberry/scalars.py\n+++ b/strawberry/scalars.py\n@@ -16,10 +16,10 @@\n     description=(\n         \"The `JSON` scalar type represents JSON values as specified by \"\n         \"[ECMA-404]\"\n-        \"(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).\"\n+        \"(https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf).\"\n     ),\n     specified_by_url=(\n-        \"http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf\"\n+        \"https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf\"\n     ),\n     serialize=lambda v: v,\n     parse_value=lambda v: v,\n", "issue": "Document all the scalars we have\nOne that's definitely missing is the JSON one, or at least it doesn't show up on the search (we do get an example of creating a custom JSON scalar though, which is misleading)\n\n<!-- POLAR PLEDGE BADGE START -->\n## Upvote & Fund\n\n- We're using [Polar.sh](https://polar.sh/strawberry-graphql) so you can upvote and help fund this issue.\n- We receive the funding once the issue is completed & confirmed by you.\n- Thank you in advance for helping prioritize & fund our backlog.\n\n<a href=\"https://polar.sh/strawberry-graphql/strawberry/issues/3404\">\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://polar.sh/api/github/strawberry-graphql/strawberry/issues/3404/pledge.svg?darkmode=1\">\n  <img alt=\"Fund with Polar\" src=\"https://polar.sh/api/github/strawberry-graphql/strawberry/issues/3404/pledge.svg\">\n</picture>\n</a>\n<!-- POLAR PLEDGE BADGE END -->\n\n", "before_files": [{"content": "from __future__ import annotations\n\nimport base64\nfrom typing import TYPE_CHECKING, Any, Dict, NewType, Union\n\nfrom .custom_scalar import scalar\n\nif TYPE_CHECKING:\n    from .custom_scalar import ScalarDefinition, ScalarWrapper\n\n\nID = NewType(\"ID\", str)\n\nJSON = scalar(\n    NewType(\"JSON\", object),  # mypy doesn't like `NewType(\"name\", Any)`\n    description=(\n        \"The `JSON` scalar type represents JSON values as specified by \"\n        \"[ECMA-404]\"\n        \"(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).\"\n    ),\n    specified_by_url=(\n        \"http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf\"\n    ),\n    serialize=lambda v: v,\n    parse_value=lambda v: v,\n)\n\nBase16 = scalar(\n    NewType(\"Base16\", bytes),\n    description=\"Represents binary data as Base16-encoded (hexadecimal) strings.\",\n    specified_by_url=\"https://datatracker.ietf.org/doc/html/rfc4648.html#section-8\",\n    serialize=lambda v: base64.b16encode(v).decode(\"utf-8\"),\n    parse_value=lambda v: base64.b16decode(v.encode(\"utf-8\"), casefold=True),\n)\n\nBase32 = scalar(\n    NewType(\"Base32\", bytes),\n    description=(\n        \"Represents binary data as Base32-encoded strings, using the standard alphabet.\"\n    ),\n    specified_by_url=(\"https://datatracker.ietf.org/doc/html/rfc4648.html#section-6\"),\n    serialize=lambda v: base64.b32encode(v).decode(\"utf-8\"),\n    parse_value=lambda v: base64.b32decode(v.encode(\"utf-8\"), casefold=True),\n)\n\nBase64 = scalar(\n    NewType(\"Base64\", bytes),\n    description=(\n        \"Represents binary data as Base64-encoded strings, using the standard alphabet.\"\n    ),\n    specified_by_url=\"https://datatracker.ietf.org/doc/html/rfc4648.html#section-4\",\n    serialize=lambda v: base64.b64encode(v).decode(\"utf-8\"),\n    parse_value=lambda v: base64.b64decode(v.encode(\"utf-8\")),\n)\n\n\ndef is_scalar(\n    annotation: Any,\n    scalar_registry: Dict[object, Union[ScalarWrapper, ScalarDefinition]],\n) -> bool:\n    if annotation in scalar_registry:\n        return True\n\n    return hasattr(annotation, \"_scalar_definition\")\n", "path": "strawberry/scalars.py"}]}