import logging
from datetime import datetime

import requests
from bs4 import BeautifulSoup
from waste_collection_schedule import Collection

TITLE = "Grosswangen"
DESCRIPTION = " Source for 'Grosswangen, CH'"
URL = "https://www.grosswangen.ch"
TEST_CASES = {"TEST": {}}

ICON_MAP = {
    "Grüngutabfuhr": "mdi:leaf",
    "Kehricht-Aussentour": "mdi:trash-can-outline",
    "Kartonsammlung": "mdi:recycle",
    "Altpapiersammlung": "newspaper-variant-multiple-outline",
    "Häckselservice": "mdi:leaf-off",
    "Alteisensammlung und Sammlung elektronischer Geräte": "desktop-classic",
    "Zusätzliche Gratis-Laubabfuhr": "mdi:leaf",
}

_LOGGER = logging.getLogger(__name__)


class Source:
    def __init__(self, args=None):
        self = None

    def fetch(self):

        r = requests.get(
            "https://www.grosswangen.ch/institution/details/abfallsammlungen"
        )

        r.raise_for_status()

        soup = BeautifulSoup(r.text, "html.parser")

        entries = []

        for tag in soup.find_all(class_="InstList-institution InstDetail-termin"):
            for typ in tag.find_all("strong"):
                # print(typ.string)
                waste_type = typ.string
            for date in tag.find_all("span", class_="mobile"):
                # print(date.string[-8:])
                waste_date = datetime.strptime(date.string[-8:], "%d.%m.%y").date()

            entries.append(Collection(waste_date, waste_type, ICON_MAP.get(waste_type)))

        return entries

custom_components/waste_collection_schedule/waste_collection_schedule/source/grosswangen_ch.py
import logging
from datetime import datetime

import requests
from bs4 import BeautifulSoup
from waste_collection_schedule import Collection

TITLE = "Grosswangen"
DESCRIPTION = " Source for 'Grosswangen, CH'"
URL = "https://www.grosswangen.ch"
TEST_CASES = {"TEST": {}}

ICON_MAP = {
    "Grüngutabfuhr": "mdi:leaf",
    "Kehricht-Aussentour": "mdi:trash-can-outline",
    "Kartonsammlung": "mdi:recycle",
    "Altpapiersammlung": "newspaper-variant-multiple-outline",
    "Häckselservice": "mdi:leaf-off",
    "Alteisensammlung und Sammlung elektronischer Geräte": "desktop-classic",
    "Zusätzliche Gratis-Laubabfuhr": "mdi:leaf",
}

_LOGGER = logging.getLogger(__name__)


class Source:
    def __init__(self):
        self = None

    def fetch(self):

        r = requests.get(
            "https://www.grosswangen.ch/institution/details/abfallsammlungen"
        )

        r.raise_for_status()

        soup = BeautifulSoup(r.text, "html.parser")

        entries = []

        for tag in soup.find_all(class_="InstList-institution InstDetail-termin"):
            for typ in tag.find_all("strong"):
                # print(typ.string)
                waste_type = typ.string
            for date in tag.find_all("span", class_="mobile"):
                # print(date.string[-8:])
                waste_date = datetime.strptime(date.string[-8:], "%d.%m.%y").date()

            entries.append(Collection(waste_date, waste_type, ICON_MAP.get(waste_type)))

        return entries

custom_components/waste_collection_schedule/waste_collection_schedule/source/grosswangen_ch.py
diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/grosswangen_ch.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/grosswangen_ch.py
index 016123025..f34da4da9 100644
--- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/grosswangen_ch.py
+++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/grosswangen_ch.py
@@ -24,7 +24,7 @@
 
 
 class Source:
-    def __init__(self, args=None):
+    def __init__(self):
         self = None
 
     def fetch(self):
diff --git a/doc/source/grosswangen_ch.md b/doc/source/grosswangen_ch.md
index 4f7b434ea..502fc67da 100644
--- a/doc/source/grosswangen_ch.md
+++ b/doc/source/grosswangen_ch.md
@@ -8,8 +8,7 @@ Support for schedules provided by [https://www.grosswangen.ch/institution/detail
 waste_collection_schedule:
   sources:
     - name: grosswangen_ch
-      args:
-      args: None
+      args: {}
 ```
 
 ### Configuration Variables
@@ -23,6 +22,5 @@ but use args as shown in example.
 waste_collection_schedule:
   sources:
     - name: grosswangen_ch
-      args:
-      args: None
+      args: {}
 ```

Add Source grosswangen_ch
 python3 test_sources.py -s grosswangen_ch -i -l
Testing source grosswangen_ch ...
  found 58 entries for TEST
    2023-01-12: Grüngutabfuhr [mdi:leaf]
    2023-01-26: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-02-02: Kartonsammlung [mdi:recycle]
    2023-02-16: Altpapiersammlung [newspaper-variant-multiple-outline]
    2023-02-16: Grüngutabfuhr [mdi:leaf]
    2023-02-23: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-03-02: Kartonsammlung [mdi:recycle]
    2023-03-09: Häckselservice [mdi:leaf-off]
    2023-03-09: Grüngutabfuhr [mdi:leaf]
    2023-03-23: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-03-30: Grüngutabfuhr [mdi:leaf]
    2023-04-01: Alteisensammlung und Sammlung elektronischer Geräte [desktop-classic]
    2023-04-06: Kartonsammlung [mdi:recycle]
    2023-04-13: Grüngutabfuhr [mdi:leaf]
    2023-04-20: Häckselservice [mdi:leaf-off]
    2023-04-27: Grüngutabfuhr [mdi:leaf]
    2023-04-27: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-05-04: Kartonsammlung [mdi:recycle]
    2023-05-11: Grüngutabfuhr [mdi:leaf]
    2023-05-11: Altpapiersammlung [newspaper-variant-multiple-outline]
    2023-05-25: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-05-25: Grüngutabfuhr [mdi:leaf]
    2023-06-01: Kartonsammlung [mdi:recycle]
    2023-06-15: Grüngutabfuhr [mdi:leaf]
    2023-06-22: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-06-29: Grüngutabfuhr [mdi:leaf]
    2023-07-06: Kartonsammlung [mdi:recycle]
    2023-07-13: Grüngutabfuhr [mdi:leaf]
    2023-07-27: Grüngutabfuhr [mdi:leaf]
    2023-07-27: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-08-03: Kartonsammlung [mdi:recycle]
    2023-08-10: Altpapiersammlung [newspaper-variant-multiple-outline]
    2023-08-10: Grüngutabfuhr [mdi:leaf]
    2023-08-24: Grüngutabfuhr [mdi:leaf]
    2023-08-24: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-09-07: Grüngutabfuhr [mdi:leaf]
    2023-09-07: Kartonsammlung [mdi:recycle]
    2023-09-14: Häckselservice [mdi:leaf-off]
    2023-09-21: Grüngutabfuhr [mdi:leaf]
    2023-09-28: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-10-05: Kartonsammlung [mdi:recycle]
    2023-10-12: Grüngutabfuhr [mdi:leaf]
    2023-10-19: Häckselservice [mdi:leaf-off]
    2023-10-26: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-10-26: Zusätzliche Gratis-Laubabfuhr [mdi:leaf]
    2023-10-26: Grüngutabfuhr [mdi:leaf]
    2023-11-02: Kartonsammlung [mdi:recycle]
    2023-11-04: Alteisensammlung und Sammlung elektronischer Geräte [desktop-classic]
    2023-11-09: Grüngutabfuhr [mdi:leaf]
    2023-11-16: Häckselservice [mdi:leaf-off]
    2023-11-16: Altpapiersammlung [newspaper-variant-multiple-outline]
    2023-11-23: Kehricht-Aussentour [mdi:trash-can-outline]
    2023-11-23: Grüngutabfuhr [mdi:leaf]
    2023-11-30: Grüngutabfuhr [mdi:leaf]
    2023-11-30: Zusätzliche Gratis-Laubabfuhr [mdi:leaf]
    2023-12-07: Kartonsammlung [mdi:recycle]
    2023-12-14: Grüngutabfuhr [mdi:leaf]
    2023-12-21: Kehricht-Aussentour [mdi:trash-can-outline]
