prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Hy sets are really broken.
  ``` Hy
  (env-hy) C:\Users\ME\Code>hy
  hy 0.11.0 using CPython(v3.4.3:9b73f1c3e601) 3.4.3 on Windows
  => #{:a 'a}
  Traceback (most recent call last):
    File "C:\Python34\Scripts\env-hy\Scripts\hy-script.py", line 9, in <module>
      load_entry_point('hy==0.11.0', 'console_scripts', 'hy')()
    File "C:\Python34\Scripts\env-hy\lib\site-packages\hy\cmdline.py", line 341, in hy_main
      sys.exit(cmdline_handler("hy", sys.argv))
    File "C:\Python34\Scripts\env-hy\lib\site-packages\hy\cmdline.py", line 336, in cmdline_handler
      return run_repl(spy=options.spy)
    File "C:\Python34\Scripts\env-hy\lib\site-packages\hy\cmdline.py", line 234, in run_repl
      os=platform.system()
    File "C:\Python34\Lib\code.py", line 234, in interact
      more = self.push(line)
    File "C:\Python34\Lib\code.py", line 256, in push
      more = self.runsource(source, self.filename)
    File "C:\Python34\Scripts\env-hy\lib\site-packages\hy\cmdline.py", line 93, in runsource
      tokens = tokenize(source)
    File "C:\Python34\Scripts\env-hy\lib\site-packages\hy\lex\__init__.py", line 33, in tokenize
      return parser.parse(lexer.lex(buf))
    File "C:\Python34\Scripts\env-hy\lib\site-packages\rply\parser.py", line 23, in parse
      t, symstack, statestack, state
    File "C:\Python34\Scripts\env-hy\lib\site-packages\rply\parser.py", line 80, in _reduce_production
      value = p.func(targ)
    File "C:\Python34\Scripts\env-hy\lib\site-packages\hy\lex\parser.py", line 69, in wrapped
      ret = fun(p)
    File "C:\Python34\Scripts\env-hy\lib\site-packages\hy\lex\parser.py", line 214, in t_set
      return HySet(p[1])
    File "C:\Python34\Scripts\env-hy\lib\site-packages\hy\models\set.py", line 31, in __init__
      items = sorted(items)
  TypeError: unorderable types: HyExpression() < HyKeyword()
  
  (env-hy) C:\Users\ME\Code>
  ```
  
  That is NOT supposed to happen.
  
  
  </issue>
  <code>
  [start of hy/models/set.py]
  1 # Copyright (c) 2013 Paul Tagliamonte <paultag@debian.org>
  2 #
  3 # Permission is hereby granted, free of charge, to any person obtaining a
  4 # copy of this software and associated documentation files (the "Software"),
  5 # to deal in the Software without restriction, including without limitation
  6 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
  7 # and/or sell copies of the Software, and to permit persons to whom the
  8 # Software is furnished to do so, subject to the following conditions:
  9 #
  10 # The above copyright notice and this permission notice shall be included in
  11 # all copies or substantial portions of the Software.
  12 #
  13 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  16 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  18 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  19 # DEALINGS IN THE SOFTWARE.
  20 
  21 from hy.models.list import HyList
  22 from functools import reduce
  23 
  24 
  25 class HySet(HyList):
  26     """
  27     Hy set (actually a list that pretends to be a set)
  28     """
  29 
  30     def __init__(self, items):
  31         items = sorted(items)
  32         items = list(reduce(lambda r, v: v in r and r or r+[v], items, []))
  33         super(HySet, self).__init__(items)
  34 
  35     def __repr__(self):
  36         return "#{%s}" % (" ".join([repr(x) for x in self]))
  37
  [end of hy/models/set.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/hy/models/set.py b/hy/models/set.py
  --- a/hy/models/set.py
  +++ b/hy/models/set.py
  @@ -18,19 +18,16 @@
   # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
   # DEALINGS IN THE SOFTWARE.
   
  +from hy.models import _wrappers, wrap_value
   from hy.models.list import HyList
  -from functools import reduce
   
   
   class HySet(HyList):
       """
  -    Hy set (actually a list that pretends to be a set)
  +    Hy set (just a representation of a set)
       """
   
  -    def __init__(self, items):
  -        items = sorted(items)
  -        items = list(reduce(lambda r, v: v in r and r or r+[v], items, []))
  -        super(HySet, self).__init__(items)
  -
       def __repr__(self):
           return "#{%s}" % (" ".join([repr(x) for x in self]))
  +
  +_wrappers[set] = lambda s: HySet(wrap_value(x) for x in s)
  
verification_info: {"golden_diff": "diff --git a/hy/models/set.py b/hy/models/set.py\n--- a/hy/models/set.py\n+++ b/hy/models/set.py\n@@ -18,19 +18,16 @@\n # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n # DEALINGS IN THE SOFTWARE.\n \n+from hy.models import _wrappers, wrap_value\n from hy.models.list import HyList\n-from functools import reduce\n \n \n class HySet(HyList):\n     \"\"\"\n-    Hy set (actually a list that pretends to be a set)\n+    Hy set (just a representation of a set)\n     \"\"\"\n \n-    def __init__(self, items):\n-        items = sorted(items)\n-        items = list(reduce(lambda r, v: v in r and r or r+[v], items, []))\n-        super(HySet, self).__init__(items)\n-\n     def __repr__(self):\n         return \"#{%s}\" % (\" \".join([repr(x) for x in self]))\n+\n+_wrappers[set] = lambda s: HySet(wrap_value(x) for x in s)\n", "issue": "Hy sets are really broken.\n``` Hy\n(env-hy) C:\\Users\\ME\\Code>hy\nhy 0.11.0 using CPython(v3.4.3:9b73f1c3e601) 3.4.3 on Windows\n=> #{:a 'a}\nTraceback (most recent call last):\n  File \"C:\\Python34\\Scripts\\env-hy\\Scripts\\hy-script.py\", line 9, in <module>\n    load_entry_point('hy==0.11.0', 'console_scripts', 'hy')()\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\hy\\cmdline.py\", line 341, in hy_main\n    sys.exit(cmdline_handler(\"hy\", sys.argv))\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\hy\\cmdline.py\", line 336, in cmdline_handler\n    return run_repl(spy=options.spy)\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\hy\\cmdline.py\", line 234, in run_repl\n    os=platform.system()\n  File \"C:\\Python34\\Lib\\code.py\", line 234, in interact\n    more = self.push(line)\n  File \"C:\\Python34\\Lib\\code.py\", line 256, in push\n    more = self.runsource(source, self.filename)\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\hy\\cmdline.py\", line 93, in runsource\n    tokens = tokenize(source)\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\hy\\lex\\__init__.py\", line 33, in tokenize\n    return parser.parse(lexer.lex(buf))\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\rply\\parser.py\", line 23, in parse\n    t, symstack, statestack, state\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\rply\\parser.py\", line 80, in _reduce_production\n    value = p.func(targ)\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\hy\\lex\\parser.py\", line 69, in wrapped\n    ret = fun(p)\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\hy\\lex\\parser.py\", line 214, in t_set\n    return HySet(p[1])\n  File \"C:\\Python34\\Scripts\\env-hy\\lib\\site-packages\\hy\\models\\set.py\", line 31, in __init__\n    items = sorted(items)\nTypeError: unorderable types: HyExpression() < HyKeyword()\n\n(env-hy) C:\\Users\\ME\\Code>\n```\n\nThat is NOT supposed to happen.\n\n", "before_files": [{"content": "# Copyright (c) 2013 Paul Tagliamonte <paultag@debian.org>\n#\n# Permission is hereby granted, free of charge, to any person obtaining a\n# copy of this software and associated documentation files (the \"Software\"),\n# to deal in the Software without restriction, including without limitation\n# the rights to use, copy, modify, merge, publish, distribute, sublicense,\n# and/or sell copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following conditions:\n#\n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL\n# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n# DEALINGS IN THE SOFTWARE.\n\nfrom hy.models.list import HyList\nfrom functools import reduce\n\n\nclass HySet(HyList):\n    \"\"\"\n    Hy set (actually a list that pretends to be a set)\n    \"\"\"\n\n    def __init__(self, items):\n        items = sorted(items)\n        items = list(reduce(lambda r, v: v in r and r or r+[v], items, []))\n        super(HySet, self).__init__(items)\n\n    def __repr__(self):\n        return \"#{%s}\" % (\" \".join([repr(x) for x in self]))\n", "path": "hy/models/set.py"}]}