prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  OH: `get_session_list` cannot "see" current session
  Ohio's `get_session_list` appears to have the current session _manually appended_. Not to mention, it hasn't been updated in a year. This should be fixed, to automatically "guess" the current session instead.
  
  https://github.com/openstates/openstates/blob/master/openstates/oh/__init__.py#L91-L92
  
  </issue>
  <code>
  [start of openstates/oh/__init__.py]
  1 from pupa.scrape import Jurisdiction, Organization
  2 from openstates.utils import url_xpath
  3 
  4 from .people import OHLegislatorScraper
  5 # from .events import OHEventScraper
  6 from .bills import OHBillScraper
  7 
  8 
  9 class Ohio(Jurisdiction):
  10     division_id = "ocd-division/country:us/state:oh"
  11     classification = "government"
  12     name = "Ohio"
  13     url = "http://www.legislature.state.oh.us/"
  14     scrapers = {
  15         'people': OHLegislatorScraper,
  16         # 'events': OHEventScraper,
  17         'bills': OHBillScraper,
  18     }
  19     legislative_sessions = [
  20         {
  21             "_scraped_name": "128",
  22             "identifier": "128",
  23             "name": "128th Legislature (2009-2010)"
  24         },
  25         {
  26             "_scraped_name": "129",
  27             "identifier": "129",
  28             "name": "129th Legislature (2011-2012)",
  29             "start_date": "2011-01-03"
  30         },
  31         {
  32             "_scraped_name": "130",
  33             "identifier": "130",
  34             "name": "130th Legislature (2013-2014)"
  35         },
  36         {
  37             "_scraped_name": "131",
  38             "identifier": "131",
  39             "name": "131st Legislature (2015-2016)"
  40         },
  41         {
  42             "_scraped_name": "132",
  43             "identifier": "132",
  44             "name": "132st Legislature (2017-2018)",
  45             "start_date": "2017-01-02",
  46             "end_date": "2017-12-31"
  47         }
  48     ]
  49     ignored_scraped_sessions = [
  50         "127",
  51         "126",
  52         "125",
  53         "124",
  54         "123",
  55         "122"
  56     ]
  57 
  58     def get_organizations(self):
  59         legislature_name = "Ohio General Assembly"
  60         lower_chamber_name = "House"
  61         lower_seats = 99
  62         lower_title = "Representative"
  63         upper_chamber_name = "Senate"
  64         upper_seats = 33
  65         upper_title = "Senator"
  66 
  67         legislature = Organization(name=legislature_name,
  68                                    classification="legislature")
  69         upper = Organization(upper_chamber_name, classification='upper',
  70                              parent_id=legislature._id)
  71         lower = Organization(lower_chamber_name, classification='lower',
  72                              parent_id=legislature._id)
  73 
  74         for n in range(1, upper_seats+1):
  75             upper.add_post(
  76                 label=str(n), role=upper_title,
  77                 division_id='{}/sldu:{}'.format(self.division_id, n))
  78         for n in range(1, lower_seats+1):
  79             lower.add_post(
  80                 label=str(n), role=lower_title,
  81                 division_id='{}/sldl:{}'.format(self.division_id, n))
  82 
  83         yield legislature
  84         yield upper
  85         yield lower
  86 
  87     def get_session_list(self):
  88         sessions = url_xpath('http://archives.legislature.state.oh.us',
  89                              '//form[@action="bill_search.cfm"]//input[@type="radio"'
  90                              ' and @name="SESSION"]/@value')
  91         # Archive does not include current session
  92         sessions.append('131')
  93         return sessions
  94
  [end of openstates/oh/__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/openstates/oh/__init__.py b/openstates/oh/__init__.py
  --- a/openstates/oh/__init__.py
  +++ b/openstates/oh/__init__.py
  @@ -46,14 +46,7 @@
               "end_date": "2017-12-31"
           }
       ]
  -    ignored_scraped_sessions = [
  -        "127",
  -        "126",
  -        "125",
  -        "124",
  -        "123",
  -        "122"
  -    ]
  +    ignored_scraped_sessions = []
   
       def get_organizations(self):
           legislature_name = "Ohio General Assembly"
  @@ -85,9 +78,7 @@
           yield lower
   
       def get_session_list(self):
  -        sessions = url_xpath('http://archives.legislature.state.oh.us',
  -                             '//form[@action="bill_search.cfm"]//input[@type="radio"'
  -                             ' and @name="SESSION"]/@value')
  +        sessions = url_xpath('https://www.legislature.ohio.gov/legislation/search-legislation',
  +                             '//div[@class="selectedValues"]/ul/span/li/text()')
           # Archive does not include current session
  -        sessions.append('131')
           return sessions
  
verification_info: {"golden_diff": "diff --git a/openstates/oh/__init__.py b/openstates/oh/__init__.py\n--- a/openstates/oh/__init__.py\n+++ b/openstates/oh/__init__.py\n@@ -46,14 +46,7 @@\n             \"end_date\": \"2017-12-31\"\n         }\n     ]\n-    ignored_scraped_sessions = [\n-        \"127\",\n-        \"126\",\n-        \"125\",\n-        \"124\",\n-        \"123\",\n-        \"122\"\n-    ]\n+    ignored_scraped_sessions = []\n \n     def get_organizations(self):\n         legislature_name = \"Ohio General Assembly\"\n@@ -85,9 +78,7 @@\n         yield lower\n \n     def get_session_list(self):\n-        sessions = url_xpath('http://archives.legislature.state.oh.us',\n-                             '//form[@action=\"bill_search.cfm\"]//input[@type=\"radio\"'\n-                             ' and @name=\"SESSION\"]/@value')\n+        sessions = url_xpath('https://www.legislature.ohio.gov/legislation/search-legislation',\n+                             '//div[@class=\"selectedValues\"]/ul/span/li/text()')\n         # Archive does not include current session\n-        sessions.append('131')\n         return sessions\n", "issue": "OH: `get_session_list` cannot \"see\" current session\nOhio's `get_session_list` appears to have the current session _manually appended_. Not to mention, it hasn't been updated in a year. This should be fixed, to automatically \"guess\" the current session instead.\r\n\r\nhttps://github.com/openstates/openstates/blob/master/openstates/oh/__init__.py#L91-L92\n", "before_files": [{"content": "from pupa.scrape import Jurisdiction, Organization\nfrom openstates.utils import url_xpath\n\nfrom .people import OHLegislatorScraper\n# from .events import OHEventScraper\nfrom .bills import OHBillScraper\n\n\nclass Ohio(Jurisdiction):\n    division_id = \"ocd-division/country:us/state:oh\"\n    classification = \"government\"\n    name = \"Ohio\"\n    url = \"http://www.legislature.state.oh.us/\"\n    scrapers = {\n        'people': OHLegislatorScraper,\n        # 'events': OHEventScraper,\n        'bills': OHBillScraper,\n    }\n    legislative_sessions = [\n        {\n            \"_scraped_name\": \"128\",\n            \"identifier\": \"128\",\n            \"name\": \"128th Legislature (2009-2010)\"\n        },\n        {\n            \"_scraped_name\": \"129\",\n            \"identifier\": \"129\",\n            \"name\": \"129th Legislature (2011-2012)\",\n            \"start_date\": \"2011-01-03\"\n        },\n        {\n            \"_scraped_name\": \"130\",\n            \"identifier\": \"130\",\n            \"name\": \"130th Legislature (2013-2014)\"\n        },\n        {\n            \"_scraped_name\": \"131\",\n            \"identifier\": \"131\",\n            \"name\": \"131st Legislature (2015-2016)\"\n        },\n        {\n            \"_scraped_name\": \"132\",\n            \"identifier\": \"132\",\n            \"name\": \"132st Legislature (2017-2018)\",\n            \"start_date\": \"2017-01-02\",\n            \"end_date\": \"2017-12-31\"\n        }\n    ]\n    ignored_scraped_sessions = [\n        \"127\",\n        \"126\",\n        \"125\",\n        \"124\",\n        \"123\",\n        \"122\"\n    ]\n\n    def get_organizations(self):\n        legislature_name = \"Ohio General Assembly\"\n        lower_chamber_name = \"House\"\n        lower_seats = 99\n        lower_title = \"Representative\"\n        upper_chamber_name = \"Senate\"\n        upper_seats = 33\n        upper_title = \"Senator\"\n\n        legislature = Organization(name=legislature_name,\n                                   classification=\"legislature\")\n        upper = Organization(upper_chamber_name, classification='upper',\n                             parent_id=legislature._id)\n        lower = Organization(lower_chamber_name, classification='lower',\n                             parent_id=legislature._id)\n\n        for n in range(1, upper_seats+1):\n            upper.add_post(\n                label=str(n), role=upper_title,\n                division_id='{}/sldu:{}'.format(self.division_id, n))\n        for n in range(1, lower_seats+1):\n            lower.add_post(\n                label=str(n), role=lower_title,\n                division_id='{}/sldl:{}'.format(self.division_id, n))\n\n        yield legislature\n        yield upper\n        yield lower\n\n    def get_session_list(self):\n        sessions = url_xpath('http://archives.legislature.state.oh.us',\n                             '//form[@action=\"bill_search.cfm\"]//input[@type=\"radio\"'\n                             ' and @name=\"SESSION\"]/@value')\n        # Archive does not include current session\n        sessions.append('131')\n        return sessions\n", "path": "openstates/oh/__init__.py"}]}