-
-
Notifications
You must be signed in to change notification settings - Fork 126
Open
Labels
Description
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> │ │
| │ ╰──────────────────────────────────────────────────────────────────────────╯ │
Reactions are currently unavailable