prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Docs of some functions written are missing
  ## 📚 Documentation
  
  A simple issue, Docs are missing on the torchvision website for following functions written in torchvision.
  
  I guess we should add these docs on the webpage, as end-users will benefit from using these functions. 
  
  Most people will not look at source code to find these functions but refer to docs.
  
  Missing docs that I found
  
  - [x] Image reading functions [here](https://github.com/pytorch/vision/blob/master/torchvision/io/image.py)
  We have docs for video io functions, so maybe image should too be there.
  
  - [x] Torchvision ops from [boxes.py](https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py). Docs are added for NMS. but we are missing IoU, Box area and some classes. Partly fixed in #2642 
  
  Please do let me know if some other docs or missing as well.
  
  Also, I can raise a PR to fix these, please do let me know if it is needed!
  
  
  
  
  
  </issue>
  <code>
  [start of torchvision/io/__init__.py]
  1 from ._video_opt import (
  2     Timebase,
  3     VideoMetaData,
  4     _HAS_VIDEO_OPT,
  5     _probe_video_from_file,
  6     _probe_video_from_memory,
  7     _read_video_from_file,
  8     _read_video_from_memory,
  9     _read_video_timestamps_from_file,
  10     _read_video_timestamps_from_memory,
  11 )
  12 from .video import (
  13     read_video,
  14     read_video_timestamps,
  15     write_video,
  16 )
  17 
  18 
  19 __all__ = [
  20     "write_video",
  21     "read_video",
  22     "read_video_timestamps",
  23     "_read_video_from_file",
  24     "_read_video_timestamps_from_file",
  25     "_probe_video_from_file",
  26     "_read_video_from_memory",
  27     "_read_video_timestamps_from_memory",
  28     "_probe_video_from_memory",
  29     "_HAS_VIDEO_OPT",
  30     "_read_video_clip_from_memory",
  31     "_read_video_meta_data",
  32     "VideoMetaData",
  33     "Timebase"
  34 ]
  35
  [end of torchvision/io/__init__.py]
  [start of torchvision/ops/__init__.py]
  1 from .boxes import nms, box_iou
  2 from .new_empty_tensor import _new_empty_tensor
  3 from .deform_conv import deform_conv2d, DeformConv2d
  4 from .roi_align import roi_align, RoIAlign
  5 from .roi_pool import roi_pool, RoIPool
  6 from .ps_roi_align import ps_roi_align, PSRoIAlign
  7 from .ps_roi_pool import ps_roi_pool, PSRoIPool
  8 from .poolers import MultiScaleRoIAlign
  9 from .feature_pyramid_network import FeaturePyramidNetwork
  10 
  11 from ._register_onnx_ops import _register_custom_op
  12 
  13 _register_custom_op()
  14 
  15 
  16 __all__ = [
  17     'deform_conv2d', 'DeformConv2d', 'nms', 'roi_align', 'RoIAlign', 'roi_pool',
  18     'RoIPool', '_new_empty_tensor', 'ps_roi_align', 'PSRoIAlign', 'ps_roi_pool',
  19     'PSRoIPool', 'MultiScaleRoIAlign', 'FeaturePyramidNetwork'
  20 ]
  21
  [end of torchvision/ops/__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/torchvision/io/__init__.py b/torchvision/io/__init__.py
  --- a/torchvision/io/__init__.py
  +++ b/torchvision/io/__init__.py
  @@ -15,7 +15,6 @@
       write_video,
   )
   
  -
   __all__ = [
       "write_video",
       "read_video",
  diff --git a/torchvision/ops/__init__.py b/torchvision/ops/__init__.py
  --- a/torchvision/ops/__init__.py
  +++ b/torchvision/ops/__init__.py
  @@ -1,4 +1,4 @@
  -from .boxes import nms, box_iou
  +from .boxes import nms, batched_nms, remove_small_boxes, clip_boxes_to_image, box_area, box_iou
   from .new_empty_tensor import _new_empty_tensor
   from .deform_conv import deform_conv2d, DeformConv2d
   from .roi_align import roi_align, RoIAlign
  @@ -14,7 +14,8 @@
   
   
   __all__ = [
  -    'deform_conv2d', 'DeformConv2d', 'nms', 'roi_align', 'RoIAlign', 'roi_pool',
  +    'deform_conv2d', 'DeformConv2d', 'nms', 'batched_nms', 'remove_small_boxes',
  +    'clip_boxes_to_image', 'box_area', 'box_iou', 'roi_align', 'RoIAlign', 'roi_pool',
       'RoIPool', '_new_empty_tensor', 'ps_roi_align', 'PSRoIAlign', 'ps_roi_pool',
       'PSRoIPool', 'MultiScaleRoIAlign', 'FeaturePyramidNetwork'
   ]
  
verification_info: {"golden_diff": "diff --git a/torchvision/io/__init__.py b/torchvision/io/__init__.py\n--- a/torchvision/io/__init__.py\n+++ b/torchvision/io/__init__.py\n@@ -15,7 +15,6 @@\n     write_video,\n )\n \n-\n __all__ = [\n     \"write_video\",\n     \"read_video\",\ndiff --git a/torchvision/ops/__init__.py b/torchvision/ops/__init__.py\n--- a/torchvision/ops/__init__.py\n+++ b/torchvision/ops/__init__.py\n@@ -1,4 +1,4 @@\n-from .boxes import nms, box_iou\n+from .boxes import nms, batched_nms, remove_small_boxes, clip_boxes_to_image, box_area, box_iou\n from .new_empty_tensor import _new_empty_tensor\n from .deform_conv import deform_conv2d, DeformConv2d\n from .roi_align import roi_align, RoIAlign\n@@ -14,7 +14,8 @@\n \n \n __all__ = [\n-    'deform_conv2d', 'DeformConv2d', 'nms', 'roi_align', 'RoIAlign', 'roi_pool',\n+    'deform_conv2d', 'DeformConv2d', 'nms', 'batched_nms', 'remove_small_boxes',\n+    'clip_boxes_to_image', 'box_area', 'box_iou', 'roi_align', 'RoIAlign', 'roi_pool',\n     'RoIPool', '_new_empty_tensor', 'ps_roi_align', 'PSRoIAlign', 'ps_roi_pool',\n     'PSRoIPool', 'MultiScaleRoIAlign', 'FeaturePyramidNetwork'\n ]\n", "issue": "Docs of some functions written are missing\n## \ud83d\udcda Documentation\r\n\r\nA simple issue, Docs are missing on the torchvision website for following functions written in torchvision.\r\n\r\nI guess we should add these docs on the webpage, as end-users will benefit from using these functions. \r\n\r\nMost people will not look at source code to find these functions but refer to docs.\r\n\r\nMissing docs that I found\r\n\r\n- [x] Image reading functions [here](https://github.com/pytorch/vision/blob/master/torchvision/io/image.py)\r\nWe have docs for video io functions, so maybe image should too be there.\r\n\r\n- [x] Torchvision ops from [boxes.py](https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py). Docs are added for NMS. but we are missing IoU, Box area and some classes. Partly fixed in #2642 \r\n\r\nPlease do let me know if some other docs or missing as well.\r\n\r\nAlso, I can raise a PR to fix these, please do let me know if it is needed!\r\n\r\n\r\n\r\n\n", "before_files": [{"content": "from ._video_opt import (\n    Timebase,\n    VideoMetaData,\n    _HAS_VIDEO_OPT,\n    _probe_video_from_file,\n    _probe_video_from_memory,\n    _read_video_from_file,\n    _read_video_from_memory,\n    _read_video_timestamps_from_file,\n    _read_video_timestamps_from_memory,\n)\nfrom .video import (\n    read_video,\n    read_video_timestamps,\n    write_video,\n)\n\n\n__all__ = [\n    \"write_video\",\n    \"read_video\",\n    \"read_video_timestamps\",\n    \"_read_video_from_file\",\n    \"_read_video_timestamps_from_file\",\n    \"_probe_video_from_file\",\n    \"_read_video_from_memory\",\n    \"_read_video_timestamps_from_memory\",\n    \"_probe_video_from_memory\",\n    \"_HAS_VIDEO_OPT\",\n    \"_read_video_clip_from_memory\",\n    \"_read_video_meta_data\",\n    \"VideoMetaData\",\n    \"Timebase\"\n]\n", "path": "torchvision/io/__init__.py"}, {"content": "from .boxes import nms, box_iou\nfrom .new_empty_tensor import _new_empty_tensor\nfrom .deform_conv import deform_conv2d, DeformConv2d\nfrom .roi_align import roi_align, RoIAlign\nfrom .roi_pool import roi_pool, RoIPool\nfrom .ps_roi_align import ps_roi_align, PSRoIAlign\nfrom .ps_roi_pool import ps_roi_pool, PSRoIPool\nfrom .poolers import MultiScaleRoIAlign\nfrom .feature_pyramid_network import FeaturePyramidNetwork\n\nfrom ._register_onnx_ops import _register_custom_op\n\n_register_custom_op()\n\n\n__all__ = [\n    'deform_conv2d', 'DeformConv2d', 'nms', 'roi_align', 'RoIAlign', 'roi_pool',\n    'RoIPool', '_new_empty_tensor', 'ps_roi_align', 'PSRoIAlign', 'ps_roi_pool',\n    'PSRoIPool', 'MultiScaleRoIAlign', 'FeaturePyramidNetwork'\n]\n", "path": "torchvision/ops/__init__.py"}]}