Open stjohnjohnson opened 3 weeks ago
Describe the bug
Trying to search for campsites in North, Lower, and Upper pines and getting stuck with
campsites -> 924 -> availabilities none is not an allowed value (type=type_error.none.not_allowed)
I believe it is because North and Lower are closed for the season.
Yaml Config
campgrounds: - 232449 - 232450 - 232447 start_date: 2024-11-23 end_date: 2024-11-26 nights: 3 continuous: true notifications: telegram search_forever: true polling_interval: 5 equipment: - [RV, 25]
Debug
| 2024-10-03 04:59:04,487 [ CAMPLY]: camply, the campsite finder ⛺️ | 2024-10-03 04:59:04,488 [ DEBUG]: Setting up camply debugging | 2024-10-03 04:59:04,488 [ DEBUG]: Camply Version: 0.32.8 | 2024-10-03 04:59:04,488 [ DEBUG]: Python Version: 3.11.9 | 2024-10-03 04:59:04,488 [ DEBUG]: Platform: linux | 2024-10-03 04:59:04,490 [ INFO]: YAML File Parsed: search.yml | 2024-10-03 04:59:04,490 [ INFO]: Using Camply Provider: "RecreationDotGov" | 2024-10-03 04:59:04,491 [ INFO]: 3 booking nights selected for search, ranging from 2024-11-23 to 2024-11-25 | 2024-10-03 04:59:04,492 [ INFO]: Searching for availabilities with 3 consecutive night stays. | 2024-10-03 04:59:04,493 [ DEBUG]: Starting new HTTPS connection (1): ridb.recreation.gov:443 | 2024-10-03 04:59:06,115 [ DEBUG]: https://ridb.recreation.gov:443 "GET /api/v1/facilities/232449?full=True HTTP/1.1" 200 11240 | 2024-10-03 04:59:07,690 [ DEBUG]: https://ridb.recreation.gov:443 "GET /api/v1/facilities/232450?full=True HTTP/1.1" 200 10478 | 2024-10-03 04:59:09,195 [ DEBUG]: https://ridb.recreation.gov:443 "GET /api/v1/facilities/232447?full=True HTTP/1.1" 200 12287 | 2024-10-03 04:59:09,199 [ INFO]: 3 Matching Campgrounds Found | 2024-10-03 04:59:09,199 [ INFO]: ⛰ Yosemite National Park, CA (#2991) - 🏕 Lower Pines Campground (#232450) | 2024-10-03 04:59:09,199 [ INFO]: ⛰ Yosemite National Park, CA (#2991) - 🏕 North Pines Campground (#232449) | 2024-10-03 04:59:09,199 [ INFO]: ⛰ Yosemite National Park, CA (#2991) - 🏕 Upper Pines Campground (#232447) | 2024-10-03 04:59:09,200 [ INFO]: Filtering Campsites based on Equipment: RV | 2024-10-03 04:59:09,201 [ INFO]: Searching for campsites every 5 minutes. | 2024-10-03 04:59:09,202 [ INFO]: Notifications active via: <SilentNotifications>, <TelegramNotifications> | 2024-10-03 04:59:09,202 [ INFO]: Searching across 3 campgrounds | 2024-10-03 04:59:09,209 [ DEBUG]: Starting new HTTPS connection (1): www.recreation.gov:443 | 2024-10-03 04:59:09,276 [ DEBUG]: https://www.recreation.gov:443 "GET /api/search/campsites?start=0&size=1000&fq=asset_id%3A232447&include_non_site_specific_campsites=True HTTP/1.1" 200 None | 2024-10-03 04:59:09,397 [ DEBUG]: Starting new HTTPS connection (1): www.recreation.gov:443 | 2024-10-03 04:59:09,451 [ DEBUG]: https://www.recreation.gov:443 "GET /api/search/campsites?start=0&size=1000&fq=asset_id%3A232450&include_non_site_specific_campsites=True HTTP/1.1" 200 None | 2024-10-03 04:59:09,484 [ DEBUG]: Starting new HTTPS connection (1): www.recreation.gov:443 | 2024-10-03 04:59:09,545 [ DEBUG]: https://www.recreation.gov:443 "GET /api/search/campsites?start=0&size=1000&fq=asset_id%3A232449&include_non_site_specific_campsites=True HTTP/1.1" 200 None | 2024-10-03 04:59:09,717 [ INFO]: Metadata fetched for 414 campsites | 2024-10-03 04:59:09,717 [ INFO]: Searching Upper Pines Campground, Yosemite National Park, CA (232447) for availability: November, 2024 | 2024-10-03 04:59:10,208 [ DEBUG]: Starting new HTTPS connection (1): www.recreation.gov:443 | 2024-10-03 04:59:10,283 [ DEBUG]: https://www.recreation.gov:443 "GET /api/camps/availability/campground/232447/month?start_date=2024-11-01T00%3A00%3A00.000Z HTTP/1.1" 200 None | 2024-10-03 04:59:10,375 [ INFO]: ❌ 0 total sites found in month of November | 2024-10-03 04:59:11,396 [ INFO]: Searching Lower Pines Campground, Yosemite National Park, CA (232450) for availability: November, 2024 | 2024-10-03 04:59:11,401 [ DEBUG]: Starting new HTTPS connection (1): www.recreation.gov:443 | 2024-10-03 04:59:11,495 [ DEBUG]: https://www.recreation.gov:443 "GET /api/camps/availability/campground/232450/month?start_date=2024-11-01T00%3A00%3A00.000Z HTTP/1.1" 200 None | 2024-10-03 04:59:11,500 [ CAMPLY]: Exiting camply 👋 | ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ | │ /usr/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 0x7f46618cca40> │ │ | │ │ re = <module 're' from '/usr/local/lib/python3.11/re/__init__.py'> │ │ | │ │ sys = <module 'sys' (built-in)> │ │ | │ ╰─────────────────────────────────────────────────────────────────────╯ │ | │ │ | │ /usr/local/lib/python3.11/site-packages/camply/cli.py:883 in cli │ | │ │ | │ 880 │ Camply Command Line Utility Wrapper │ | │ 881 │ """ │ | │ 882 │ try: │ | │ ❱ 883 │ │ camply_command_line() │ | │ 884 │ except KeyboardInterrupt: │ | │ 885 │ │ logger.debug("Handling Exit Request") │ | │ 886 │ finally: │ | │ │ | │ /usr/local/lib/python3.11/site-packages/click/core.py:1157 in __call__ │ | │ │ | │ /usr/local/lib/python3.11/site-packages/rich_click/rich_group.py:21 in main │ | │ │ | │ /usr/local/lib/python3.11/site-packages/click/core.py:1078 in main │ | │ │ | │ /usr/local/lib/python3.11/site-packages/click/core.py:1688 in invoke │ | │ │ | │ /usr/local/lib/python3.11/site-packages/click/core.py:1434 in invoke │ | │ │ | │ /usr/local/lib/python3.11/site-packages/click/core.py:783 in invoke │ | │ │ | │ /usr/local/lib/python3.11/site-packages/click/decorators.py:45 in new_func │ | │ │ | │ /usr/local/lib/python3.11/site-packages/camply/cli.py:775 in campsites │ | │ │ | │ 772 │ │ ) │ | │ 773 │ provider_class: Type[BaseCampingSearch] = CAMPSITE_SEARCH_PROVIDER │ | │ 774 │ camping_finder: BaseCampingSearch = provider_class(**provider_kwar │ | │ ❱ 775 │ camping_finder.get_matching_campsites(**search_kwargs) │ | │ 776 │ | │ 777 │ | │ 778 @camply_command_line.command(cls=RichCommand) │ | │ │ | │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │ | │ │ campground = () │ │ | │ │ camping_finder = <camply.search.search_recreationdotgov.SearchRecr… │ │ | │ │ object at 0x7f466184f090> │ │ | │ │ 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 = 'RecreationDotGov' │ │ | │ │ provider_class = <class │ │ | │ │ 'camply.search.search_recreationdotgov.SearchRecr… │ │ | │ │ provider_kwargs = { │ │ | │ │ │ 'search_window': SearchWindow( │ │ | │ │ │ │ start_date=datetime.date(2024, 11, 23), │ │ | │ │ │ │ end_date=datetime.date(2024, 11, 26) │ │ | │ │ │ ), │ │ | │ │ │ 'recreation_area': None, │ │ | │ │ │ 'campgrounds': [232449, 232450, 232447], │ │ | │ │ │ 'campsites': None, │ │ | │ │ │ 'weekends_only': False, │ │ | │ │ │ 'days_of_the_week': None, │ │ | │ │ │ 'nights': 3, │ │ | │ │ │ 'equipment': [('RV', 25)], │ │ | │ │ │ 'offline_search': False, │ │ | │ │ │ 'offline_search_path': None │ │ | │ │ } │ │ | │ │ rec_area = () │ │ | │ │ search_forever = None │ │ | │ │ search_kwargs = { │ │ | │ │ │ 'log': True, │ │ | │ │ │ 'verbose': True, │ │ | │ │ │ 'continuous': True, │ │ | │ │ │ 'polling_interval': 5, │ │ | │ │ │ 'notify_first_try': False, │ │ | │ │ │ 'notification_provider': 'telegram', │ │ | │ │ │ 'search_forever': True, │ │ | │ │ │ 'search_once': False │ │ | │ │ } │ │ | │ │ search_once = False │ │ | │ │ start_date = () │ │ | │ │ weekends = False │ │ | │ │ yaml_config = '/home/camply/search.yml' │ │ | │ ╰──────────────────────────────────────────────────────────────────────────╯ │ | │ │ | │ /usr/local/lib/python3.11/site-packages/camply/search/base_search.py:588 in │ | │ get_matching_campsites │ | │ │ | │ 585 │ │ │ except Exception as e: │ | │ 586 │ │ │ │ if self.search_attempts >= 1: │ | │ 587 │ │ │ │ │ self.notifier.last_gasp(error=e) │ | │ ❱ 588 │ │ │ │ raise e │ | │ 589 │ │ else: │ | │ 590 │ │ │ starting_count = len(self.campsites_found) │ | │ 591 │ │ │ matching_campsites = self._search_matching_campsites_avai │ | │ │ | │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │ | │ │ continuous = True │ │ | │ │ log = True │ │ | │ │ notification_provider = 'telegram' │ │ | │ │ notify_first_try = False │ │ | │ │ polling_interval = 5 │ │ | │ │ search_forever = True │ │ | │ │ search_once = False │ │ | │ │ self = <camply.search.search_recreationdotgov.SearchRe… │ │ | │ │ object at 0x7f466184f090> │ │ | │ │ verbose = True │ │ | │ ╰──────────────────────────────────────────────────────────────────────────╯ │ | │ │ | │ /usr/local/lib/python3.11/site-packages/camply/search/base_search.py:576 in │ | │ get_matching_campsites │ | │ │ | │ 573 │ │ """ │ | │ 574 │ │ if continuous is True or search_once is True: │ | │ 575 │ │ │ try: │ | │ ❱ 576 │ │ │ │ self._search_campsites_continuous( │ | │ 577 │ │ │ │ │ log=log, │ | │ 578 │ │ │ │ │ verbose=verbose, │ | │ 579 │ │ │ │ │ polling_interval=polling_interval, │ | │ │ | │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │ | │ │ continuous = True │ │ | │ │ log = True │ │ | │ │ notification_provider = 'telegram' │ │ | │ │ notify_first_try = False │ │ | │ │ polling_interval = 5 │ │ | │ │ search_forever = True │ │ | │ │ search_once = False │ │ | │ │ self = <camply.search.search_recreationdotgov.SearchRe… │ │ | │ │ object at 0x7f466184f090> │ │ | │ │ verbose = True │ │ | │ ╰──────────────────────────────────────────────────────────────────────────╯ │ | │ │ | │ /usr/local/lib/python3.11/site-packages/camply/search/base_search.py:510 in │ | │ _search_campsites_continuous │ | │ │ | │ 507 │ │ continuous_search_attempts = 1 │ | │ 508 │ │ while continuous_search is True: │ | │ 509 │ │ │ starting_count = len(self.campsites_found) │ | │ ❱ 510 │ │ │ self._continuous_search_retry( │ | │ 511 │ │ │ │ log=log, │ | │ 512 │ │ │ │ verbose=verbose, │ | │ 513 │ │ │ │ polling_interval=polling_interval, │ | │ │ | │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │ | │ │ continuous_search = True │ │ | │ │ continuous_search_attempts = 1 │ │ | │ │ log = True │ │ | │ │ notification_provider = 'telegram' │ │ | │ │ notify_first_try = False │ │ | │ │ polling_interval = 5 │ │ | │ │ polling_interval_minutes = 5 │ │ | │ │ search_forever = True │ │ | │ │ search_once = False │ │ | │ │ self = <camply.search.search_recreationdotgov.Sea… │ │ | │ │ object at 0x7f466184f090> │ │ | │ │ starting_count = 0 │ │ | │ │ verbose = True │ │ | │ ╰──────────────────────────────────────────────────────────────────────────╯ │ | │ │ | │ /usr/local/lib/python3.11/site-packages/camply/search/base_search.py:356 in │ | │ _continuous_search_retry │ | │ │ | │ 353 │ │ │ retry=tenacity.retry_if_exception_type(CampsiteNotFoundEr │ | │ 354 │ │ │ wait=tenacity.wait.wait_fixed(int(polling_interval_minute │ | │ 355 │ │ ) │ | │ ❱ 356 │ │ matching_campsites = retryer.__call__( │ | │ 357 │ │ │ fn=self._search_matching_campsites_available, │ | │ 358 │ │ │ log=False, │ | │ 359 │ │ │ verbose=False, │ | │ │ | │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │ | │ │ continuous_search_attempts = 1 │ │ | │ │ log = True │ │ | │ │ notification_provider = 'telegram' │ │ | │ │ notify_first_try = False │ │ | │ │ polling_interval = 5 │ │ | │ │ polling_interval_minutes = 5 │ │ | │ │ retryer = <Retrying object at 0x7f46618ea950 │ │ | │ │ (stop=<tenacity.stop._stop_never object at │ │ | │ │ 0x7f468388f950>, │ │ | │ │ wait=<tenacity.wait.wait_fixed object at │ │ | │ │ 0x7f46618ebe50>, sleep=<function sleep at │ │ | │ │ 0x7f468500f2e0>, │ │ | │ │ retry=<tenacity.retry.retry_if_exception_t… │ │ | │ │ object at 0x7f46618ea690>, before=<function │ │ | │ │ before_nothing at 0x7f4683883920>, │ │ | │ │ after=<function after_nothing at │ │ | │ │ 0x7f46838ac860>)> │ │ | │ │ search_once = False │ │ | │ │ self = <camply.search.search_recreationdotgov.Sea… │ │ | │ │ object at 0x7f466184f090> │ │ | │ │ verbose = True │ │ | │ ╰──────────────────────────────────────────────────────────────────────────╯ │ | │ │ | │ /usr/local/lib/python3.11/site-packages/tenacity/__init__.py:379 in __call__ │ | │ │ | │ 376 │ │ │ | │ 377 │ │ retry_state = RetryCallState(retry_object=self, fn=fn, args=ar │ | │ 378 │ │ while True: │ | │ ❱ 379 │ │ │ do = self.iter(retry_state=retry_state) │ | │ 380 │ │ │ if isinstance(do, DoAttempt): │ | │ 381 │ │ │ │ try: │ | │ 382 │ │ │ │ │ result = fn(*args, **kwargs) │ | │ │ | │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │ | │ │ args = () │ │ | │ │ do = <tenacity.DoAttempt object at 0x7f46618ea7d0> │ │ | │ │ fn = <bound method │ │ | │ │ BaseCampingSearch._search_matching_campsites_available of │ │ | │ │ <camply.search.search_recreationdotgov.SearchRecreationDo… │ │ | │ │ object at 0x7f466184f090>> │ │ | │ │ kwargs = {'log': False, 'verbose': False, 'raise_error': True} │ │ | │ │ retry_state = <RetryCallState 139940261168208: attempt #1; slept for │ │ | │ │ 0.0; last result: failed (ValidationError 74 validation │ │ | │ │ errors for CampsiteAvailabilityResponse │ │ | │ │ campsites -> 906 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 907 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 908 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 909 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 910 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 911 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 912 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 913 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 914 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 915 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 916 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 917 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 918 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 919 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 920 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 921 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 922 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 923 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 924 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 925 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 926 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 927 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 928 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 929 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 930 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 931 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 932 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 933 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 934 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 935 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 936 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 937 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 938 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 939 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 940 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 941 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 942 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 943 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 944 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 945 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 946 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 947 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 948 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 949 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 950 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 951 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 952 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 953 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 954 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 955 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 956 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 957 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 958 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 959 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 960 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 961 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 962 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 963 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 964 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 965 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 966 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 967 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 968 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 969 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 970 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 971 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 972 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 973 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 974 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 975 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 976 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 978 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 979 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed) │ │ | │ │ campsites -> 980 -> availabilities │ │ | │ │ none is not an allowed value │ │ | │ │ (type=type_error.none.not_allowed))> │ │ | │ │ self = <Retrying object at 0x7f46618ea950 │ │ | │ │ (stop=<tenacity.stop._stop_never object at │ │ | │ │ 0x7f468388f950>, wait=<tenacity.wait.wait_fixed object at │ │ | │ │ 0x7f46618ebe50>, sleep=<function sleep at 0x7f468500f2e0>, │ │ | │ │ retry=<tenacity.retry.retry_if_exception_type object at │ │ | │ │ 0x7f46618ea690>, before=<function before_nothing at │ │ | │ │ 0x7f4683883920>, after=<function after_nothing at │ │ | │ │ 0x7f46838ac860>)> │ │ | │ ╰──────────────────────────────────────────────────────────────────────────╯ │ | │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │ | │ │ availabilities = { │ │ | │ │ │ 'campsites': { │ │ | │ │ │ │ '906': { │ │ | │ │ │ │ │ 'campsite_id': '906', │ │ | │ │ │ │ │ 'site': '003', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 0, │ │ | │ │ │ │ │ 'max_num_people': 6, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ '907': { │ │ | │ │ │ │ │ 'campsite_id': '907', │ │ | │ │ │ │ │ 'site': '004', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 0, │ │ | │ │ │ │ │ 'max_num_people': 6, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ '908': { │ │ | │ │ │ │ │ 'campsite_id': '908', │ │ | │ │ │ │ │ 'site': '005', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 0, │ │ | │ │ │ │ │ 'max_num_people': 6, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ '909': { │ │ | │ │ │ │ │ 'campsite_id': '909', │ │ | │ │ │ │ │ 'site': 'DBL1', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 7, │ │ | │ │ │ │ │ 'max_num_people': 12, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ '910': { │ │ | │ │ │ │ │ 'campsite_id': '910', │ │ | │ │ │ │ │ 'site': '007', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 0, │ │ | │ │ │ │ │ 'max_num_people': 6, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ '911': { │ │ | │ │ │ │ │ 'campsite_id': '911', │ │ | │ │ │ │ │ 'site': '012', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 1, │ │ | │ │ │ │ │ 'max_num_people': 6, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ '912': { │ │ | │ │ │ │ │ 'campsite_id': '912', │ │ | │ │ │ │ │ 'site': '013', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 0, │ │ | │ │ │ │ │ 'max_num_people': 6, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ '913': { │ │ | │ │ │ │ │ 'campsite_id': '913', │ │ | │ │ │ │ │ 'site': '014', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 0, │ │ | │ │ │ │ │ 'max_num_people': 6, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ '914': { │ │ | │ │ │ │ │ 'campsite_id': '914', │ │ | │ │ │ │ │ 'site': '017', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 0, │ │ | │ │ │ │ │ 'max_num_people': 6, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ '915': { │ │ | │ │ │ │ │ 'campsite_id': '915', │ │ | │ │ │ │ │ 'site': '018', │ │ | │ │ │ │ │ 'loop': 'Lower Pines', │ │ | │ │ │ │ │ 'campsite_reserve_type': 'Site-Specific', │ │ | │ │ │ │ │ 'availabilities': None, │ │ | │ │ │ │ │ 'quantities': None, │ │ | │ │ │ │ │ 'campsite_type': 'STANDARD NONELECTRIC', │ │ | │ │ │ │ │ 'type_of_use': 'Overnight', │ │ | │ │ │ │ │ 'min_num_people': 0, │ │ | │ │ │ │ │ 'max_num_people': 6, │ │ | │ │ │ │ │ ... +4 │ │ | │ │ │ │ }, │ │ | │ │ │ │ ... +64 │ │ | │ │ │ }, │ │ | │ │ │ 'count': 74 │ │ | │ │ } │ │ | │ │ campground = CampgroundFacility( │ │ | │ │ │ facility_name='Lower Pines Campground', │ │ | │ │ │ recreation_area='Yosemite National Park, CA', │ │ | │ │ │ facility_id=232450, │ │ | │ │ │ recreation_area_id=2991, │ │ | │ │ │ map_id=None, │ │ | │ │ │ coordinates=None │ │ | │ │ ) │ │ | │ │ campsites = [] │ │ | │ │ found_campsites = [] │ │ | │ │ index = 1 │ │ | │ │ month = datetime.date(2024, 11, 1) │ │ | │ │ self = <camply.search.search_recreationdotgov.SearchRecreati… │ │ | │ │ object at 0x7f466184f090> │ │ | │ ╰──────────────────────────────────────────────────────────────────────────╯ │
I am experiencing the same error searching for an open campground, but also on recreation.gov: provider: RecreationDotGov recreation_area: 2730 campgrounds: 232491 campsites: 4242
Describe the bug
Trying to search for campsites in North, Lower, and Upper pines and getting stuck with
I believe it is because North and Lower are closed for the season.
Yaml Config
Debug