juftin/camply

yaml search with ReserveCalifornia fails with TypeError: object of type 'NoneType' has no len()

Closed this issue ยท 0 comments

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()

Original Camply Command (with --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