ghostcrawl 2.2.3__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ghostcrawl-2.3.0/LICENSE +21 -0
- {ghostcrawl-2.2.3/ghostcrawl.egg-info → ghostcrawl-2.3.0}/PKG-INFO +86 -55
- ghostcrawl-2.3.0/README.md +191 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/v1_request_builder.py +0 -10
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/__init__.py +13 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/cli/main.py +1 -1
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/facade.py +154 -3
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0/ghostcrawl.egg-info}/PKG-INFO +86 -55
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl.egg-info/SOURCES.txt +0 -2
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/pyproject.toml +3 -3
- ghostcrawl-2.2.3/LICENSE +0 -46
- ghostcrawl-2.2.3/README.md +0 -160
- ghostcrawl-2.2.3/_generated/v1/binary/binary_request_builder.py +0 -33
- ghostcrawl-2.2.3/_generated/v1/binary/download/download_request_builder.py +0 -88
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/MANIFEST.in +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/ghostcrawl_client.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_actor_ip.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_actor_ip_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_actor_token_id.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_actor_token_id_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_actor_user_agent.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_actor_user_agent_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_actor_user_id.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_actor_user_id_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_metadata.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_org_id.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_org_id_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_target_id.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_target_id_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_target_kind.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_event_out_target_kind_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_events_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_events_response_next_cursor.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/audit_events_response_next_cursor_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_behavior_actions.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_behavior_actions_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_behavior_actions_member2.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_extraction_strategy.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_extraction_strategy_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_identity_country.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_identity_country_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_language.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_language_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_output_format.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_profile.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/batch_scrape_request_profile_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cdp_frame_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cdp_url_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/checkout_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/contact_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_domain.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_domain_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_expires.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_expires_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_http_only.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_http_only_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_path.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_path_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_same_site.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_same_site_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_secure.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_secure_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_url.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookie_dict_url_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookies_delete_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookies_delete_body_domain.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookies_delete_body_domain_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookies_delete_body_name.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookies_delete_body_name_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookies_delete_body_path.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookies_delete_body_path_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/cookies_set_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/deep_crawl_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/deep_crawl_body_webhook_url.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/deep_crawl_body_webhook_url_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/dom_snapshot_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/download_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/error_code.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/eval_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extend_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extend_body_ttl_seconds.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extend_body_ttl_seconds_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_behavior_actions.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_behavior_actions_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_behavior_actions_member2.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_engine.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_identity_country.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_identity_country_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_language.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_language_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_prompt.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_prompt_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_url.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_url_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_urls.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/extract_request_urls_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/filter_spec.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/h_t_t_p_validation_error.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/har_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_payload.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_claim_browser.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_claim_browser_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_claim_os.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_claim_os_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_device_model.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_device_model_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_locale.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_locale_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_proxy.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_proxy_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_source.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_source_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_timezone.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_timezone_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_viewport.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_request_viewport_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_response_expires_at.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_response_expires_at_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_response_identity_id.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_response_identity_id_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_response_workspace_id.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/identity_response_workspace_id_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/map_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/map_body_search.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/map_body_search_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/map_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/map_response_truncated_to_server_max.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/map_response_truncated_to_server_max_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/me_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/me_response_created_at.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/me_response_created_at_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/policy_upsert_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/policy_upsert_request_max_crawl_pages.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/policy_upsert_request_max_crawl_pages_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/policy_upsert_request_max_llm_calls.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/policy_upsert_request_max_llm_calls_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/policy_upsert_request_max_llm_tokens.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/policy_upsert_request_max_llm_tokens_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/problem_details.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/profile_create_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/profile_create_request_storage_state_id.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/profile_create_request_storage_state_id_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/profile_update_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/profile_update_request_name.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/profile_update_request_name_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/profile_update_request_storage_state_id.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/profile_update_request_storage_state_id_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/registry_token_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/retry_delivery_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/rotate_secret_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/schedule_create_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/schedule_create_request_job_params.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/schedule_create_request_notify_webhook.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/schedule_create_request_notify_webhook_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scorer_spec.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_batch_identity_mode.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_behavior_actions.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_behavior_actions_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_behavior_actions_member2.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_engine.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_format.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_identity.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_identity_country.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_identity_country_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_identity_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_language.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_language_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_profile.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_profile_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_proxy.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_proxy_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_screenshot_selector.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_screenshot_selector_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_session.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_session_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_url.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_url_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_urls.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scrape_request_urls_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scroll_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scroll_body_direction.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scroll_body_distance_px.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scroll_body_distance_px_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scroll_body_selector.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/scroll_body_selector_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/search_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/search_request_country.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/search_request_country_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/search_request_engine.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/search_request_engine_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/search_request_freshness.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/search_request_freshness_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/search_request_vertical.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/search_request_vertical_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/session_create_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/session_create_request_engine.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/session_create_request_profile.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/session_create_request_profile_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/storage_state_attach_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/storage_state_detach_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/takeover_action_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/team_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/tenant_context.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/upload_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/validation_error.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/validation_error_ctx.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/viewport_exact.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/wait_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/wait_body_selector.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/wait_body_selector_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_create_request.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_create_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_list_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_list_response_next_cursor.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_list_response_next_cursor_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_delivered_at.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_delivered_at_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_error_class.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_error_class_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_replay_of.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_replay_of_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_response_body_preview.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_response_body_preview_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_response_status.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_delivery_public_response_status_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_list_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_list_response_next_cursor.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_list_response_next_cursor_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_public.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_public_secret_rotated_at.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/models/webhook_public_secret_rotated_at_member1.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/audit/audit_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/audit/events/events_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/billing/billing_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/billing/checkout/checkout_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/billing/portal/portal_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/billing/subscription/subscription_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/billing/usage/usage_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/budgets/budgets_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/budgets/policy/item/item/with_scope_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/budgets/policy/item/with_scope_type_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/budgets/policy/policy_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/budgets/usage/usage_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/cdp/cdp_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/cdp/frame/frame_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/cdp/url/url_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/contact/contact_post_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/contact/contact_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/crawl/crawl_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/crawl/deep/deep_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/crawl/deep/item/with_run_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/crawl_runs/crawl_runs_post_request_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/crawl_runs/crawl_runs_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/crawl_runs/item/cancel/cancel_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/crawl_runs/item/resume/resume_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/crawl_runs/item/with_run_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/datasets/datasets_post_request_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/datasets/datasets_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/datasets/item/rows/append/append_post_request_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/datasets/item/rows/append/append_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/datasets/item/rows/rows_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/datasets/item/with_name_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/discovery/discovery_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/engines/engines_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/engines/manifest/manifest_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/extract/extract_post_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/extract/extract_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/identity/identity_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/kv/item/with_key_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/kv/item/with_key_put_request_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/kv/kv_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/map/map_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/me/export/export_get_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/me/export/export_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/me/me_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/me/usage/get_period_query_parameter_type.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/me/usage/usage_get_response.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/me/usage/usage_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/page/cookies/cookies_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/page/dom_snapshot/dom_snapshot_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/page/download/download_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/page/eval/eval_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/page/har/har_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/page/page_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/page/scroll/scroll_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/page/upload/upload_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/page/wait/wait_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/pricing/pricing_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/pricing/public/public_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/profiles/item/with_name_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/profiles/profiles_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/proxy_providers/proxy_providers_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/queues/item/ack/ack_post_request_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/queues/item/ack/ack_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/queues/item/pop/pop_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/queues/item/push/push_post_request_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/queues/item/push/push_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/queues/item/stats/stats_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/queues/item/with_name_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/queues/queues_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/recordings/item/recording_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/recordings/item/visual/frames/frames_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/recordings/item/visual/start/start_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/recordings/item/visual/stop/stop_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/recordings/item/visual/visual_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/recordings/recordings_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/registry/registry_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/registry/token/token_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/schedules/item/runs/runs_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/schedules/item/with_schedule_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/schedules/schedules_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/scrape/batch/batch_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/scrape/scrape_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/screenshot_blobs/item/with_ref_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/screenshot_blobs/screenshot_blobs_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/search/search_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/create/create_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/budget_stream/budget_stream_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/extend/extend_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/pin/pin_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/profile_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/recording/recording_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/recording/start/start_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/recording/stop/stop_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/release/release_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/takeover/takeover_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/takeover_release/takeover_release_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/item/takeover_token/takeover_token_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/sessions/sessions_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/storage_states/detach/detach_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/storage_states/item/attach/attach_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/storage_states/item/with_id_or_name_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/storage_states/storage_states_post_request_body.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/storage_states/storage_states_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/updates/updates_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/webhooks/item/deliveries/deliveries_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/webhooks/item/deliveries/item/retry/retry_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/webhooks/item/deliveries/item/with_delivery_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/webhooks/item/rotate_secret/rotate_secret_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/webhooks/item/with_webhook_item_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/_generated/v1/webhooks/webhooks_request_builder.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/_ghostcrawl.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/branded.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/cli/__init__.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/cli/_batch.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/cli/_config_store.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/cli/install.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/errors/__init__.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/errors/codes.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/errors/identity_errors.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/identity/__init__.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/identity/client.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/identity/types.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/mcp/__init__.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/mcp/wrapper.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/params.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/py.typed +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl/retry_policy.py +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl.egg-info/dependency_links.txt +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl.egg-info/entry_points.txt +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl.egg-info/requires.txt +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/ghostcrawl.egg-info/top_level.txt +0 -0
- {ghostcrawl-2.2.3 → ghostcrawl-2.3.0}/setup.cfg +0 -0
ghostcrawl-2.3.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 GhostCrawl, LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ghostcrawl
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: Official Python SDK for the Ghostcrawl local orchestration API.
|
|
5
5
|
Author: Ghostcrawl
|
|
6
|
-
License:
|
|
6
|
+
License: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/ghostcrawl/ghostcrawl
|
|
8
8
|
Keywords: ghostcrawl,scraping,browser,automation,agent
|
|
9
9
|
Classifier: Development Status :: 4 - Beta
|
|
10
10
|
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: License ::
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
@@ -45,26 +45,42 @@ pip install ghostcrawl
|
|
|
45
45
|
|
|
46
46
|
Requires Python 3.10+. Runtime dependencies: `httpx>=0.28.1`.
|
|
47
47
|
|
|
48
|
+
> The client is **async** — every request method is a coroutine. Call them with
|
|
49
|
+
> `await` inside an `async` function and drive it with `asyncio.run(...)`.
|
|
50
|
+
|
|
48
51
|
## Quickstart
|
|
49
52
|
|
|
50
53
|
```python
|
|
54
|
+
import asyncio
|
|
51
55
|
from ghostcrawl import GhostcrawlClient
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
# Scrape a URL
|
|
57
|
-
result = client.scrape(url="https://example.com", format="markdown")
|
|
58
|
-
print(result["content"])
|
|
59
|
-
|
|
60
|
-
# Start a crawl
|
|
61
|
-
run
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
57
|
+
async def main():
|
|
58
|
+
# Reads GHOSTCRAWL_API_KEY from environment, or pass token= explicitly
|
|
59
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
60
|
+
# Scrape a URL
|
|
61
|
+
result = await client.scrape(url="https://example.com", format="markdown")
|
|
62
|
+
print(result["content"])
|
|
63
|
+
|
|
64
|
+
# Start a crawl and wait for it to finish — EVENT-DRIVEN: the server
|
|
65
|
+
# blocks until the run is terminal (completed/failed/cancelled) or the
|
|
66
|
+
# timeout elapses, then returns the run. No client-side poll loop.
|
|
67
|
+
run = await client.crawl_runs.start(
|
|
68
|
+
url="https://example.com", max_depth=2, max_pages=50,
|
|
69
|
+
wait=True, wait_timeout=300,
|
|
70
|
+
)
|
|
71
|
+
print(run["run_id"], run["status"])
|
|
72
|
+
|
|
73
|
+
# Already have a run_id? Long-poll it to completion the same way:
|
|
74
|
+
# run = await client.crawl_runs.wait(run_id, timeout=300)
|
|
75
|
+
# Or skip waiting entirely and get notified via a webhook (see Webhooks)
|
|
76
|
+
# by omitting wait= and registering a delivery URL with client.webhooks.
|
|
77
|
+
|
|
78
|
+
# Web search
|
|
79
|
+
results = await client.search(query="latest AI research", engine="google", limit=10)
|
|
80
|
+
for r in results["results"]:
|
|
81
|
+
print(r["title"], r["url"])
|
|
82
|
+
|
|
83
|
+
asyncio.run(main())
|
|
68
84
|
```
|
|
69
85
|
|
|
70
86
|
## Authentication
|
|
@@ -86,71 +102,86 @@ Every request sends `Authorization: Bearer <token>`. This is the only auth schem
|
|
|
86
102
|
## Extract structured data
|
|
87
103
|
|
|
88
104
|
```python
|
|
105
|
+
import asyncio
|
|
89
106
|
from ghostcrawl import GhostcrawlClient
|
|
90
107
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
# Define a schema and extract matching data
|
|
94
|
-
data = client.extract(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
)
|
|
105
|
-
print(data["name"], data["price"])
|
|
108
|
+
async def main():
|
|
109
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
110
|
+
# Define a schema and extract matching data
|
|
111
|
+
data = await client.extract(
|
|
112
|
+
url="https://example.com/product",
|
|
113
|
+
schema={
|
|
114
|
+
"type": "object",
|
|
115
|
+
"properties": {
|
|
116
|
+
"name": {"type": "string"},
|
|
117
|
+
"price": {"type": "number"},
|
|
118
|
+
"description": {"type": "string"},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
)
|
|
122
|
+
print(data["name"], data["price"])
|
|
123
|
+
|
|
124
|
+
asyncio.run(main())
|
|
106
125
|
```
|
|
107
126
|
|
|
108
127
|
## Browser sessions
|
|
109
128
|
|
|
110
129
|
```python
|
|
130
|
+
import asyncio
|
|
111
131
|
from ghostcrawl import GhostcrawlClient
|
|
112
132
|
|
|
113
|
-
|
|
133
|
+
async def main():
|
|
134
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
135
|
+
# Create a session
|
|
136
|
+
session = await client.sessions.create(profile_name="my-profile")
|
|
137
|
+
session_id = session["session_id"]
|
|
114
138
|
|
|
115
|
-
#
|
|
116
|
-
|
|
117
|
-
|
|
139
|
+
# Extend and release
|
|
140
|
+
await client.sessions.extend(session_id, duration_seconds=600)
|
|
141
|
+
await client.sessions.release(session_id)
|
|
118
142
|
|
|
119
|
-
|
|
120
|
-
client.sessions.extend(session_id, duration_seconds=600)
|
|
121
|
-
client.sessions.release(session_id)
|
|
143
|
+
asyncio.run(main())
|
|
122
144
|
```
|
|
123
145
|
|
|
124
146
|
## Error handling
|
|
125
147
|
|
|
126
148
|
```python
|
|
149
|
+
import asyncio
|
|
127
150
|
from ghostcrawl import GhostcrawlClient, AuthenticationError, RateLimitError, APIError
|
|
128
151
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
try:
|
|
132
|
-
|
|
133
|
-
except AuthenticationError:
|
|
134
|
-
|
|
135
|
-
except RateLimitError:
|
|
136
|
-
|
|
137
|
-
except APIError as e:
|
|
138
|
-
|
|
152
|
+
async def main():
|
|
153
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
154
|
+
try:
|
|
155
|
+
result = await client.scrape(url="https://example.com")
|
|
156
|
+
except AuthenticationError:
|
|
157
|
+
print("Invalid API key — check your token")
|
|
158
|
+
except RateLimitError:
|
|
159
|
+
print("Rate limit reached — retry after a short delay")
|
|
160
|
+
except APIError as e:
|
|
161
|
+
print(f"Server error: {e.status_code}")
|
|
162
|
+
|
|
163
|
+
asyncio.run(main())
|
|
139
164
|
```
|
|
140
165
|
|
|
141
166
|
## Context manager
|
|
142
167
|
|
|
143
168
|
```python
|
|
169
|
+
import asyncio
|
|
144
170
|
from ghostcrawl import GhostcrawlClient
|
|
145
171
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
172
|
+
async def main():
|
|
173
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
174
|
+
result = await client.scrape(url="https://example.com")
|
|
175
|
+
print(result)
|
|
176
|
+
# HTTP connection is closed automatically
|
|
177
|
+
|
|
178
|
+
asyncio.run(main())
|
|
150
179
|
```
|
|
151
180
|
|
|
152
181
|
## All resources
|
|
153
182
|
|
|
183
|
+
Every operation below is a coroutine — prefix each call with `await` inside an `async` function.
|
|
184
|
+
|
|
154
185
|
| Resource | Client attribute | Key operations |
|
|
155
186
|
|----------|-----------------|----------------|
|
|
156
187
|
| Scraping | `client.scrape(url=…)` | Render and return page content |
|
|
@@ -158,7 +189,7 @@ with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
|
158
189
|
| Data extraction | `client.extract(url=…, schema=…)` | Structured JSON from any page |
|
|
159
190
|
| Deep crawl | `client.crawl(url=…)` | Crawl a site depth-first |
|
|
160
191
|
| URL map | `client.map(url=…)` | Discover all reachable URLs |
|
|
161
|
-
| Crawl runs | `client.crawl_runs` | start, list, get, cancel |
|
|
192
|
+
| Crawl runs | `client.crawl_runs` | start (`wait=True`), wait, list, get, cancel |
|
|
162
193
|
| Sessions | `client.sessions` | create, extend, release |
|
|
163
194
|
| Profiles | `client.profiles` | list, get, create, update, delete |
|
|
164
195
|
| Webhooks | `client.webhooks` | list, get, create, delete, rotate-secret |
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# ghostcrawl — Python SDK
|
|
2
|
+
|
|
3
|
+
The official Python client for the [GhostCrawl](https://ghostcrawl.io) API. Collect web data at scale — scrape, crawl, search, extract structured data, manage browser sessions, and automate the full data-collection pipeline.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install ghostcrawl
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Requires Python 3.10+. Runtime dependencies: `httpx>=0.28.1`.
|
|
12
|
+
|
|
13
|
+
> The client is **async** — every request method is a coroutine. Call them with
|
|
14
|
+
> `await` inside an `async` function and drive it with `asyncio.run(...)`.
|
|
15
|
+
|
|
16
|
+
## Quickstart
|
|
17
|
+
|
|
18
|
+
```python
|
|
19
|
+
import asyncio
|
|
20
|
+
from ghostcrawl import GhostcrawlClient
|
|
21
|
+
|
|
22
|
+
async def main():
|
|
23
|
+
# Reads GHOSTCRAWL_API_KEY from environment, or pass token= explicitly
|
|
24
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
25
|
+
# Scrape a URL
|
|
26
|
+
result = await client.scrape(url="https://example.com", format="markdown")
|
|
27
|
+
print(result["content"])
|
|
28
|
+
|
|
29
|
+
# Start a crawl and wait for it to finish — EVENT-DRIVEN: the server
|
|
30
|
+
# blocks until the run is terminal (completed/failed/cancelled) or the
|
|
31
|
+
# timeout elapses, then returns the run. No client-side poll loop.
|
|
32
|
+
run = await client.crawl_runs.start(
|
|
33
|
+
url="https://example.com", max_depth=2, max_pages=50,
|
|
34
|
+
wait=True, wait_timeout=300,
|
|
35
|
+
)
|
|
36
|
+
print(run["run_id"], run["status"])
|
|
37
|
+
|
|
38
|
+
# Already have a run_id? Long-poll it to completion the same way:
|
|
39
|
+
# run = await client.crawl_runs.wait(run_id, timeout=300)
|
|
40
|
+
# Or skip waiting entirely and get notified via a webhook (see Webhooks)
|
|
41
|
+
# by omitting wait= and registering a delivery URL with client.webhooks.
|
|
42
|
+
|
|
43
|
+
# Web search
|
|
44
|
+
results = await client.search(query="latest AI research", engine="google", limit=10)
|
|
45
|
+
for r in results["results"]:
|
|
46
|
+
print(r["title"], r["url"])
|
|
47
|
+
|
|
48
|
+
asyncio.run(main())
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Authentication
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
import os
|
|
55
|
+
from ghostcrawl import GhostcrawlClient
|
|
56
|
+
|
|
57
|
+
# Option 1: pass token directly
|
|
58
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
59
|
+
|
|
60
|
+
# Option 2: set environment variable (recommended for production)
|
|
61
|
+
os.environ["GHOSTCRAWL_API_KEY"] = "gck_live_YOUR_KEY"
|
|
62
|
+
client = GhostcrawlClient()
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Every request sends `Authorization: Bearer <token>`. This is the only auth scheme the API accepts.
|
|
66
|
+
|
|
67
|
+
## Extract structured data
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
import asyncio
|
|
71
|
+
from ghostcrawl import GhostcrawlClient
|
|
72
|
+
|
|
73
|
+
async def main():
|
|
74
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
75
|
+
# Define a schema and extract matching data
|
|
76
|
+
data = await client.extract(
|
|
77
|
+
url="https://example.com/product",
|
|
78
|
+
schema={
|
|
79
|
+
"type": "object",
|
|
80
|
+
"properties": {
|
|
81
|
+
"name": {"type": "string"},
|
|
82
|
+
"price": {"type": "number"},
|
|
83
|
+
"description": {"type": "string"},
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
)
|
|
87
|
+
print(data["name"], data["price"])
|
|
88
|
+
|
|
89
|
+
asyncio.run(main())
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Browser sessions
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
import asyncio
|
|
96
|
+
from ghostcrawl import GhostcrawlClient
|
|
97
|
+
|
|
98
|
+
async def main():
|
|
99
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
100
|
+
# Create a session
|
|
101
|
+
session = await client.sessions.create(profile_name="my-profile")
|
|
102
|
+
session_id = session["session_id"]
|
|
103
|
+
|
|
104
|
+
# Extend and release
|
|
105
|
+
await client.sessions.extend(session_id, duration_seconds=600)
|
|
106
|
+
await client.sessions.release(session_id)
|
|
107
|
+
|
|
108
|
+
asyncio.run(main())
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Error handling
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
import asyncio
|
|
115
|
+
from ghostcrawl import GhostcrawlClient, AuthenticationError, RateLimitError, APIError
|
|
116
|
+
|
|
117
|
+
async def main():
|
|
118
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
119
|
+
try:
|
|
120
|
+
result = await client.scrape(url="https://example.com")
|
|
121
|
+
except AuthenticationError:
|
|
122
|
+
print("Invalid API key — check your token")
|
|
123
|
+
except RateLimitError:
|
|
124
|
+
print("Rate limit reached — retry after a short delay")
|
|
125
|
+
except APIError as e:
|
|
126
|
+
print(f"Server error: {e.status_code}")
|
|
127
|
+
|
|
128
|
+
asyncio.run(main())
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Context manager
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
import asyncio
|
|
135
|
+
from ghostcrawl import GhostcrawlClient
|
|
136
|
+
|
|
137
|
+
async def main():
|
|
138
|
+
async with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
139
|
+
result = await client.scrape(url="https://example.com")
|
|
140
|
+
print(result)
|
|
141
|
+
# HTTP connection is closed automatically
|
|
142
|
+
|
|
143
|
+
asyncio.run(main())
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## All resources
|
|
147
|
+
|
|
148
|
+
Every operation below is a coroutine — prefix each call with `await` inside an `async` function.
|
|
149
|
+
|
|
150
|
+
| Resource | Client attribute | Key operations |
|
|
151
|
+
|----------|-----------------|----------------|
|
|
152
|
+
| Scraping | `client.scrape(url=…)` | Render and return page content |
|
|
153
|
+
| Web search | `client.search(query=…)` | Search Google, Bing, DuckDuckGo |
|
|
154
|
+
| Data extraction | `client.extract(url=…, schema=…)` | Structured JSON from any page |
|
|
155
|
+
| Deep crawl | `client.crawl(url=…)` | Crawl a site depth-first |
|
|
156
|
+
| URL map | `client.map(url=…)` | Discover all reachable URLs |
|
|
157
|
+
| Crawl runs | `client.crawl_runs` | start (`wait=True`), wait, list, get, cancel |
|
|
158
|
+
| Sessions | `client.sessions` | create, extend, release |
|
|
159
|
+
| Profiles | `client.profiles` | list, get, create, update, delete |
|
|
160
|
+
| Webhooks | `client.webhooks` | list, get, create, delete, rotate-secret |
|
|
161
|
+
| Schedules | `client.schedules` | list, get, create, delete |
|
|
162
|
+
| Datasets | `client.datasets` | list, get, create, delete, append rows |
|
|
163
|
+
| Recordings | `client.recordings` | list, get, delete |
|
|
164
|
+
| Key-Value Store | `client.kv` | get, set, delete |
|
|
165
|
+
| Account | `client.me()` | Get account info and usage |
|
|
166
|
+
|
|
167
|
+
## LangChain integration
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
pip install ghostcrawl-langchain
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
from ghostcrawl_langchain import GhostcrawlScrape, GhostcrawlSearch
|
|
175
|
+
|
|
176
|
+
scrape_tool = GhostcrawlScrape()
|
|
177
|
+
search_tool = GhostcrawlSearch()
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Self-hosted
|
|
181
|
+
|
|
182
|
+
```python
|
|
183
|
+
client = GhostcrawlClient(
|
|
184
|
+
token="gck_live_YOUR_KEY",
|
|
185
|
+
base_url="http://localhost:8080", # your self-hosted instance
|
|
186
|
+
)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
Proprietary — GhostCrawl Software License. See [LICENSE](LICENSE).
|
|
@@ -8,7 +8,6 @@ from typing import Any, Optional, TYPE_CHECKING, Union
|
|
|
8
8
|
if TYPE_CHECKING:
|
|
9
9
|
from .audit.audit_request_builder import AuditRequestBuilder
|
|
10
10
|
from .billing.billing_request_builder import BillingRequestBuilder
|
|
11
|
-
from .binary.binary_request_builder import BinaryRequestBuilder
|
|
12
11
|
from .budgets.budgets_request_builder import BudgetsRequestBuilder
|
|
13
12
|
from .cdp.cdp_request_builder import CdpRequestBuilder
|
|
14
13
|
from .contact.contact_request_builder import ContactRequestBuilder
|
|
@@ -69,15 +68,6 @@ class V1RequestBuilder(BaseRequestBuilder):
|
|
|
69
68
|
|
|
70
69
|
return BillingRequestBuilder(self.request_adapter, self.path_parameters)
|
|
71
70
|
|
|
72
|
-
@property
|
|
73
|
-
def binary(self) -> BinaryRequestBuilder:
|
|
74
|
-
"""
|
|
75
|
-
The binary property
|
|
76
|
-
"""
|
|
77
|
-
from .binary.binary_request_builder import BinaryRequestBuilder
|
|
78
|
-
|
|
79
|
-
return BinaryRequestBuilder(self.request_adapter, self.path_parameters)
|
|
80
|
-
|
|
81
71
|
@property
|
|
82
72
|
def budgets(self) -> BudgetsRequestBuilder:
|
|
83
73
|
"""
|
|
@@ -81,7 +81,20 @@ from .params import (
|
|
|
81
81
|
)
|
|
82
82
|
from .retry_policy import RetryPolicy, with_retries
|
|
83
83
|
|
|
84
|
+
# ---------------------------------------------------------------------------
|
|
85
|
+
# Package version — sourced from installed distribution metadata (single source
|
|
86
|
+
# of truth = pyproject.toml), so ``ghostcrawl.__version__`` never drifts from
|
|
87
|
+
# the published version. Falls back to "0.0.0" only for an uninstalled tree.
|
|
88
|
+
# ---------------------------------------------------------------------------
|
|
89
|
+
from importlib.metadata import version as _pkg_version, PackageNotFoundError
|
|
90
|
+
|
|
91
|
+
try:
|
|
92
|
+
__version__ = _pkg_version("ghostcrawl")
|
|
93
|
+
except PackageNotFoundError: # source tree not pip-installed
|
|
94
|
+
__version__ = "0.0.0"
|
|
95
|
+
|
|
84
96
|
__all__ = [
|
|
97
|
+
"__version__",
|
|
85
98
|
# Canonical client + aliases
|
|
86
99
|
"GhostcrawlClient",
|
|
87
100
|
"Ghostcrawl",
|
|
@@ -58,7 +58,7 @@ def _run(value: Any) -> Any:
|
|
|
58
58
|
# Top-level app
|
|
59
59
|
# ---------------------------------------------------------------------------
|
|
60
60
|
|
|
61
|
-
__version__ = "2.
|
|
61
|
+
__version__ = "2.3.0" # keep in sync with sdks/python/pyproject.toml (test_version_matches_pyproject guards drift)
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
def _version_callback(value: bool) -> None:
|