prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  South Glos UK doesn't return all Recycling / Food Bin dates
  The South Gloucester UK source is only returning the Food Bin and Recycling bins every other week, when they should be every week.
  
  Calendar in HA shows like this for me:
  ![image](https://github.com/mampfes/hacs_waste_collection_schedule/assets/4178651/ac283ac4-584a-429d-a20b-3f0dcf3a28c6)
  
  The South Glos webpage shows:
  ![image](https://github.com/mampfes/hacs_waste_collection_schedule/assets/4178651/9ec0502d-0fc9-48a5-a16b-a44d69409f5f)
  
  And the service endpoint that you are querying replies with:
  ![image](https://github.com/mampfes/hacs_waste_collection_schedule/assets/4178651/5f7dc0ec-762f-40a1-93a7-8824ac8c91e9)
  
  I could put a PR in to treat the Rx dates as Recycling and Food as well?
  
  </issue>
  <code>
  [start of custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py]
  1 import datetime
  2 import json
  3 
  4 import requests
  5 from waste_collection_schedule import Collection
  6 
  7 TITLE = "South Gloucestershire Council"  # Title will show up in README.md and info.md
  8 DESCRIPTION = "Source script for southglos.gov.uk"  # Describe your source
  9 URL = "https://southglos.gov.uk"  # Insert url to service homepage. URL will show up in README.md and info.md
  10 TEST_CASES = {  # Insert arguments for test cases to be used by test_sources.py script
  11     "Test_001": {"uprn": "643346"},
  12     "Test_002": {"uprn": "641084"}
  13 }
  14 
  15 ICON_MAP = {   # Optional: Dict of waste types and suitable mdi icons
  16     "BLACK BIN": "mdi:trash-can",
  17     "RECYCLING": "mdi:recycle",
  18     "GARDEN WASTE": "mdi:leaf",
  19     "FOOD BIN": "mdi:food"
  20 }
  21 
  22 
  23 class Source:
  24     def __init__(self, uprn: str):  # argX correspond to the args dict in the source configuration
  25         self._uprn = uprn
  26 
  27     def fetch(self):
  28         session = requests.Session()
  29         r = session.get(
  30             f"https://webapps.southglos.gov.uk/Webservices/SGC.RefuseCollectionService/RefuseCollectionService.svc"
  31             f"/getCollections/{self._uprn}")
  32         r.raise_for_status()
  33         output = r.text.strip('[]')
  34         output = json.loads(output)
  35         recycling_and_food_bin_dates = [output['C1'], output['C2'], output['C3']]
  36         black_bin_dates = [output['R1'], output['R2'], output['R3']]
  37         garden_bin_dates = [output['G1'], output['G2'], output['G3']]
  38         entries = []  # List that holds collection schedule
  39 
  40         for collection in recycling_and_food_bin_dates:
  41             entries.append(
  42                 Collection(
  43                     date=datetime.datetime.strptime(collection, "%d/%m/%Y").date(),
  44                     t="RECYCLING",
  45                     icon=ICON_MAP.get("RECYCLING"),
  46                 )
  47             )
  48             entries.append(
  49                 Collection(
  50                     date=datetime.datetime.strptime(collection, "%d/%m/%Y").date(),
  51                     t="FOOD BIN",
  52                     icon=ICON_MAP.get("FOOD BIN"),
  53                 )
  54             )
  55 
  56         for collection in black_bin_dates:
  57             entries.append(
  58                 Collection(
  59                     date=datetime.datetime.strptime(collection, "%d/%m/%Y").date(),
  60                     t="BLACK BIN",
  61                     icon=ICON_MAP.get("BLACK BIN"),
  62                 )
  63             )
  64 
  65         if garden_bin_dates[1] != '':  #
  66             for collection in garden_bin_dates:
  67                 entries.append(
  68                     Collection(
  69                         date=datetime.datetime.strptime(collection, "%d/%m/%Y").date(),
  70                         t="GARDEN WASTE",
  71                         icon=ICON_MAP.get("GARDEN WASTE"),
  72                     )
  73                 )
  74 
  75         return entries
  76
  [end of custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.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/custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py
  --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py
  +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py
  @@ -32,8 +32,11 @@
           r.raise_for_status()
           output = r.text.strip('[]')
           output = json.loads(output)
  -        recycling_and_food_bin_dates = [output['C1'], output['C2'], output['C3']]
  +        # Recycling and food are fields starting with C and R
  +        recycling_and_food_bin_dates = [output['C1'], output['C2'], output['C3'], output['R1'], output['R2'], output['R3']]
  +        # Black bin dates are fields starting R
           black_bin_dates = [output['R1'], output['R2'], output['R3']]
  +        # Garden bin dates are fields starting G
           garden_bin_dates = [output['G1'], output['G2'], output['G3']]
           entries = []  # List that holds collection schedule
  
verification_info: {"golden_diff": "diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py\n--- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py\n+++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py\n@@ -32,8 +32,11 @@\n         r.raise_for_status()\n         output = r.text.strip('[]')\n         output = json.loads(output)\n-        recycling_and_food_bin_dates = [output['C1'], output['C2'], output['C3']]\n+        # Recycling and food are fields starting with C and R\n+        recycling_and_food_bin_dates = [output['C1'], output['C2'], output['C3'], output['R1'], output['R2'], output['R3']]\n+        # Black bin dates are fields starting R\n         black_bin_dates = [output['R1'], output['R2'], output['R3']]\n+        # Garden bin dates are fields starting G\n         garden_bin_dates = [output['G1'], output['G2'], output['G3']]\n         entries = []  # List that holds collection schedule\n", "issue": "South Glos UK doesn't return all Recycling / Food Bin dates\nThe South Gloucester UK source is only returning the Food Bin and Recycling bins every other week, when they should be every week.\r\n\r\nCalendar in HA shows like this for me:\r\n![image](https://github.com/mampfes/hacs_waste_collection_schedule/assets/4178651/ac283ac4-584a-429d-a20b-3f0dcf3a28c6)\r\n\r\nThe South Glos webpage shows:\r\n![image](https://github.com/mampfes/hacs_waste_collection_schedule/assets/4178651/9ec0502d-0fc9-48a5-a16b-a44d69409f5f)\r\n\r\nAnd the service endpoint that you are querying replies with:\r\n![image](https://github.com/mampfes/hacs_waste_collection_schedule/assets/4178651/5f7dc0ec-762f-40a1-93a7-8824ac8c91e9)\r\n\r\nI could put a PR in to treat the Rx dates as Recycling and Food as well?\n", "before_files": [{"content": "import datetime\nimport json\n\nimport requests\nfrom waste_collection_schedule import Collection\n\nTITLE = \"South Gloucestershire Council\"  # Title will show up in README.md and info.md\nDESCRIPTION = \"Source script for southglos.gov.uk\"  # Describe your source\nURL = \"https://southglos.gov.uk\"  # Insert url to service homepage. URL will show up in README.md and info.md\nTEST_CASES = {  # Insert arguments for test cases to be used by test_sources.py script\n    \"Test_001\": {\"uprn\": \"643346\"},\n    \"Test_002\": {\"uprn\": \"641084\"}\n}\n\nICON_MAP = {   # Optional: Dict of waste types and suitable mdi icons\n    \"BLACK BIN\": \"mdi:trash-can\",\n    \"RECYCLING\": \"mdi:recycle\",\n    \"GARDEN WASTE\": \"mdi:leaf\",\n    \"FOOD BIN\": \"mdi:food\"\n}\n\n\nclass Source:\n    def __init__(self, uprn: str):  # argX correspond to the args dict in the source configuration\n        self._uprn = uprn\n\n    def fetch(self):\n        session = requests.Session()\n        r = session.get(\n            f\"https://webapps.southglos.gov.uk/Webservices/SGC.RefuseCollectionService/RefuseCollectionService.svc\"\n            f\"/getCollections/{self._uprn}\")\n        r.raise_for_status()\n        output = r.text.strip('[]')\n        output = json.loads(output)\n        recycling_and_food_bin_dates = [output['C1'], output['C2'], output['C3']]\n        black_bin_dates = [output['R1'], output['R2'], output['R3']]\n        garden_bin_dates = [output['G1'], output['G2'], output['G3']]\n        entries = []  # List that holds collection schedule\n\n        for collection in recycling_and_food_bin_dates:\n            entries.append(\n                Collection(\n                    date=datetime.datetime.strptime(collection, \"%d/%m/%Y\").date(),\n                    t=\"RECYCLING\",\n                    icon=ICON_MAP.get(\"RECYCLING\"),\n                )\n            )\n            entries.append(\n                Collection(\n                    date=datetime.datetime.strptime(collection, \"%d/%m/%Y\").date(),\n                    t=\"FOOD BIN\",\n                    icon=ICON_MAP.get(\"FOOD BIN\"),\n                )\n            )\n\n        for collection in black_bin_dates:\n            entries.append(\n                Collection(\n                    date=datetime.datetime.strptime(collection, \"%d/%m/%Y\").date(),\n                    t=\"BLACK BIN\",\n                    icon=ICON_MAP.get(\"BLACK BIN\"),\n                )\n            )\n\n        if garden_bin_dates[1] != '':  #\n            for collection in garden_bin_dates:\n                entries.append(\n                    Collection(\n                        date=datetime.datetime.strptime(collection, \"%d/%m/%Y\").date(),\n                        t=\"GARDEN WASTE\",\n                        icon=ICON_MAP.get(\"GARDEN WASTE\"),\n                    )\n                )\n\n        return entries\n", "path": "custom_components/waste_collection_schedule/waste_collection_schedule/source/southglos_gov_uk.py"}]}