Closed smilinggoat closed 1 year ago
Describe the bug
When configuring camply to use a yaml file for searches, if the provider is ReserveCalifornia, it consistently exits with TypeError: object of type 'NoneType' has no len()
provider
ReserveCalifornia
TypeError: object of type 'NoneType' has no len()
Original Camply Command (with --debug)
--debug
camply campsites --yaml-config my_search.yaml --debug
my_search.yaml content
provider: ReserveCalifornia recreation_area: 1077 start_date: 2023-07-21 end_date: 2023-07-23
Expected behavior
Command should have the same output as when ReserveCalifornia is used with inline arguments.
Console Output (with --debug)
[2023-07-05 15:37:05] CAMPLY camply, the campsite finder ⛺️ [2023-07-05 15:37:05] DEBUG Setting up camply debugging [2023-07-05 15:37:05] DEBUG Camply Version: 0.27.0 [2023-07-05 15:37:05] DEBUG Python Version: 3.11.4 [2023-07-05 15:37:05] DEBUG Platform: darwin [2023-07-05 15:37:05] INFO YAML File Parsed: my_search.yaml [2023-07-05 15:37:05] INFO Using Camply Provider: "ReserveCalifornia" [2023-07-05 15:37:05] INFO 2 booking nights selected for search, ranging from 2023-07-21 to 2023-07-22 [2023-07-05 15:37:05] CAMPLY Exiting camply 👋 ╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮ │ /Users/ixtli/.local/bin/camply:8 in <module> │ │ │ │ 5 from camply.cli import cli │ │ 6 if __name__ == '__main__': │ │ 7 │ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) │ │ ❱ 8 │ sys.exit(cli()) │ │ 9 │ │ │ │ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │ │ │ cli = <function cli at 0x12ec04040> │ │ │ │ re = <module 're' from │ │ │ │ '/opt/homebrew/Cellar/python@3.11/3.11.4_1/Frameworks/Python.framework/Versions/3.11/… │ │ │ │ sys = <module 'sys' (built-in)> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/camply/cli.py:881 in cli │ │ │ │ 878 │ Camply Command Line Utility Wrapper │ │ 879 │ """ │ │ 880 │ try: │ │ ❱ 881 │ │ camply_command_line() │ │ 882 │ except KeyboardInterrupt: │ │ 883 │ │ logger.debug("Handling Exit Request") │ │ 884 │ finally: │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/click/core.py:1130 in │ │ __call__ │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/rich_click/rich_group.py:21 │ │ in main │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/click/core.py:1055 in main │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/click/core.py:1657 in invoke │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/click/core.py:1404 in invoke │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/click/core.py:760 in invoke │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/click/decorators.py:38 in │ │ new_func │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/camply/cli.py:772 in │ │ campsites │ │ │ │ 769 │ │ │ yaml_config=yaml_config, │ │ 770 │ │ ) │ │ 771 │ provider_class: Type[BaseCampingSearch] = CAMPSITE_SEARCH_PROVIDER[provider] │ │ ❱ 772 │ camping_finder: BaseCampingSearch = provider_class(**provider_kwargs) │ │ 773 │ camping_finder.get_matching_campsites(**search_kwargs) │ │ 774 │ │ 775 │ │ │ │ ╭──────────────────────────────────────── locals ────────────────────────────────────────╮ │ │ │ campground = () │ │ │ │ campsite = () │ │ │ │ context = CamplyContext(debug=True, provider=None) │ │ │ │ continuous = False │ │ │ │ day = () │ │ │ │ debug = True │ │ │ │ end_date = () │ │ │ │ equipment = () │ │ │ │ equipment_id = None │ │ │ │ nights = 1 │ │ │ │ notifications = () │ │ │ │ notify_first_try = None │ │ │ │ offline_search = False │ │ │ │ offline_search_path = None │ │ │ │ polling_interval = None │ │ │ │ provider = 'ReserveCalifornia' │ │ │ │ provider_class = <class 'camply.search.search_usedirect.SearchReserveCalifornia'> │ │ │ │ provider_kwargs = { │ │ │ │ │ 'search_window': SearchWindow( │ │ │ │ │ │ start_date=datetime.date(2023, 7, 21), │ │ │ │ │ │ end_date=datetime.date(2023, 7, 23) │ │ │ │ │ ), │ │ │ │ │ 'recreation_area': 1077, │ │ │ │ │ 'campgrounds': None, │ │ │ │ │ 'campsites': None, │ │ │ │ │ 'weekends_only': False, │ │ │ │ │ 'days_of_the_week': None, │ │ │ │ │ 'nights': 1, │ │ │ │ │ 'equipment': None, │ │ │ │ │ 'offline_search': False, │ │ │ │ │ 'offline_search_path': None │ │ │ │ } │ │ │ │ rec_area = () │ │ │ │ search_forever = None │ │ │ │ search_kwargs = { │ │ │ │ │ 'log': True, │ │ │ │ │ 'verbose': True, │ │ │ │ │ 'continuous': True, │ │ │ │ │ 'polling_interval': 10, │ │ │ │ │ 'notify_first_try': False, │ │ │ │ │ 'notification_provider': 'silent', │ │ │ │ │ 'search_forever': False, │ │ │ │ │ 'search_once': False │ │ │ │ } │ │ │ │ search_once = False │ │ │ │ start_date = () │ │ │ │ weekends = False │ │ │ │ yaml_config = '/Users/ixtli/my_search.yaml' │ │ │ ╰────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /Users/ixtli/.local/pipx/venvs/camply/lib/python3.11/site-packages/camply/search/search_usedirec │ │ t.py:84 in __init__ │ │ │ │ 81 │ │ self._recreation_area_ids: List[int] = make_list(recreation_area, coerce=int) │ │ 82 │ │ self._campground_ids: List[int] = make_list(campgrounds, coerce=int) │ │ 83 │ │ campsites = make_list(kwargs.get("campsites", []), coerce=int) │ │ ❱ 84 │ │ if len(campsites) > 0: │ │ 85 │ │ │ self.campsite_finder.validate_campsites( │ │ 86 │ │ │ │ campsites=campsites, facility_ids=self._campground_ids │ │ 87 │ │ │ ) │ │ │ │ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │ │ │ campgrounds = None │ │ │ │ campsites = None │ │ │ │ kwargs = { │ │ │ │ │ 'campsites': None, │ │ │ │ │ 'days_of_the_week': None, │ │ │ │ │ 'equipment': None, │ │ │ │ │ 'offline_search': False, │ │ │ │ │ 'offline_search_path': None │ │ │ │ } │ │ │ │ nights = 1 │ │ │ │ recreation_area = 1077 │ │ │ │ search_window = SearchWindow( │ │ │ │ │ start_date=datetime.date(2023, 7, 21), │ │ │ │ │ end_date=datetime.date(2023, 7, 23) │ │ │ │ ) │ │ │ │ self = <camply.search.search_usedirect.SearchReserveCalifornia object at │ │ │ │ 0x10eb89810> │ │ │ │ weekends_only = False │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ TypeError: object of type 'NoneType' has no len()
Additional context
Formatting the above search as an inline command successfully completes:
camply --debug campsites \ --provider ReserveCalifornia \ --rec-area 1077 \ --start-date 2023-07-21 \ --end-date 2023-07-23
Describe the bug
When configuring camply to use a yaml file for searches, if the
provider
isReserveCalifornia
, it consistently exits withTypeError: object of type 'NoneType' has no len()
Original Camply Command (with
--debug
)camply campsites --yaml-config my_search.yaml --debug
my_search.yaml content
Expected behavior
Command should have the same output as when ReserveCalifornia is used with inline arguments.
Console Output (with
--debug
)Additional context
Formatting the above search as an inline command successfully completes: