methodwebscan 0.0.152__tar.gz → 0.0.191__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.
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/PKG-INFO +3 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/pyproject.toml +28 -5
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/core/__init__.py +2 -0
- methodwebscan-0.0.191/src/methodwebscan/core/pydantic_utilities.py +226 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/core/serialization.py +7 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/config/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/config/send_http_request_config.py +6 -6
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/binary_body.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/body.py +3 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/form_body.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_request.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_request_params.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_request_response.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_response.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/json_body.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/multipart_body.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/multipart_part.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/text_body.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/browserbase_request_config.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/browserbase_request_secrets.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/headless_request_config.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/config/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/config/nuclei_config.py +4 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/config/nuclei_dast_config.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/parameter/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/parameter/request_parameter.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_expected_matcher.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_matcher_details.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_probe.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/classification_details.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/cve_details.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/cwe_details.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/nuclei_attempt_info.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/nuclei_finding_info.py +4 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/nuclei_target_info.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/__init__.py +4 -6
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/__init__.py +4 -6
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/__init__.py +4 -6
- methodwebscan-0.0.191/src/methodwebscan/resources/discover/resources/application/application_detection_state.py +10 -0
- methodwebscan-0.0.191/src/methodwebscan/resources/discover/resources/application/application_fingerprint_attempt.py +26 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/application_fingerprint_target.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/application_resource_config_type.py +1 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/application_resource_type.py +9 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/discover_application_config.py +6 -6
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/discover_application_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/discover_application_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/directory_target_info.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/discover_directory_config.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/discover_directory_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/discover_directory_result.py +3 -3
- methodwebscan-0.0.191/src/methodwebscan/resources/discover/resources/directory/wordlist_size.py +5 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/page/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/page/discover_page_config.py +5 -5
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/page/discover_page_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/page/discover_page_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/probe/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/probe/discover_probe_config.py +5 -5
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/probe/discover_probe_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/probe/discover_probe_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/discover_route_config.py +5 -5
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/discover_route_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/discover_route_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/route_body_param.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/route_details.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/route_query_param.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/discover_saas_config.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/discover_saas_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/discover_saas_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_active_attempt.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_active_company.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_active_finding.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_active_request.py +5 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_fingerprint_entry.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_fingerprint_file.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_fingerprint_profile.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/__init__.py +4 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/__init__.py +4 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/api_application_route_details.py +9 -9
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/o_auth_flow.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/o_auth_flow_details.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/request_schema.py +4 -5
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/schema_property.py +4 -5
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/security_requirement.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/security_scheme.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/__init__.py +4 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_config.py +2 -2
- methodwebscan-0.0.152/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_result.py → methodwebscan-0.0.191/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_data.py +11 -11
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_report.py +9 -9
- methodwebscan-0.0.191/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_result.py +26 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_data.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_field.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_query.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_schema.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_schema_data.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_type.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/enumerate_swagger_config.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/enumerate_swagger_report.py +9 -9
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/enumerate_swagger_result.py +10 -10
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/enumerate_wordpress_plugins_config.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/enumerate_wordpress_plugins_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/enumerate_wordpress_plugins_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/wordpress_api_response.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/wordpress_plugin_details.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/wordpress_plugins_target.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/enumerate_rate_limit_config.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/enumerate_rate_limit_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/enumerate_rate_limit_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/rate_limit_attempt.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/rate_limit_target.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/kube/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/kube/enumerate_kube_config.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/kube/enumerate_kube_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/kube/enumerate_kube_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/dast/__init__.py +2 -0
- methodwebscan-0.0.191/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_category.py +7 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_config.py +5 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/cve/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/cve/pentest_application_cve_config.py +3 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/cve/pentest_application_cve_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/cve/pentest_application_cve_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/pentest_application_misconfiguration_config.py +4 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/pentest_application_misconfiguration_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/pentest_application_misconfiguration_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/pentest_application_technology_config.py +4 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/pentest_application_technology_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/pentest_application_technology_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/pentest_cms_wordpress_xmlrpc_functions_exposed_config.py +2 -2
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/pentest_cms_wordpress_xmlrpc_functions_exposed_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/xmlrpc_functions_exposed_attempt.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/xmlrpc_functions_exposed_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/xmlrpc_functions_exposed_target.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/pentest_route_static_asset_takeover_config.py +5 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/pentest_route_static_asset_takeover_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/pentest_route_static_asset_takeover_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_fingerprint.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_static_request.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_test.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_vulnerable_details.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/__init__.py +2 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/pentest_waf_detect_config.py +4 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/pentest_waf_detect_report.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_body.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detect_attempt.py +4 -4
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detect_result.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detect_target.py +3 -3
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detected.py +5 -5
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_fingerprint.py +3 -3
- methodwebscan-0.0.152/src/methodwebscan/core/pydantic_utilities.py +0 -265
- methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/application/application_fingerprint_attempt.py +0 -22
- methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/application/application_fingerprint_module.py +0 -26
- methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/application/application_fingerprints.py +0 -18
- methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/application/application_resource.py +0 -20
- methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/directory/wordlist_size.py +0 -5
- methodwebscan-0.0.152/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_category.py +0 -8
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/README.md +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/core/datetime_utils.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/py.typed +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_method.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/web_protocol.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/request_method.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/config/nuclei_run_mode.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/parameter/request_parameter_location.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_matcher_condition_enum.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/application_resource_type_all.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/wordlist_type.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/api_type.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/security_scheme_type.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/detection_source.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/plugins_file_size.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/misconfiguration_category.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/technology_type.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_provider_enum.py +0 -0
- {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_rule_category_enum.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: methodwebscan
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.191
|
|
4
4
|
Summary:
|
|
5
5
|
Requires-Python: >=3.8,<4.0
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -16,10 +16,11 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
21
|
Classifier: Typing :: Typed
|
|
21
22
|
Requires-Dist: pydantic (>=1.9.2)
|
|
22
|
-
Requires-Dist: pydantic-core (>=2.18.2
|
|
23
|
+
Requires-Dist: pydantic-core (>=2.18.2)
|
|
23
24
|
Description-Content-Type: text/markdown
|
|
24
25
|
|
|
25
26
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "methodwebscan"
|
|
3
|
+
|
|
1
4
|
[tool.poetry]
|
|
2
5
|
name = "methodwebscan"
|
|
3
|
-
version = "v0.0.
|
|
6
|
+
version = "v0.0.191"
|
|
4
7
|
description = ""
|
|
5
8
|
readme = "README.md"
|
|
6
9
|
authors = []
|
|
@@ -30,15 +33,15 @@ packages = [
|
|
|
30
33
|
[tool.poetry.dependencies]
|
|
31
34
|
python = "^3.8"
|
|
32
35
|
pydantic = ">= 1.9.2"
|
|
33
|
-
pydantic-core = "
|
|
36
|
+
pydantic-core = ">=2.18.2"
|
|
34
37
|
|
|
35
|
-
[tool.poetry.dev
|
|
36
|
-
mypy = "1.0
|
|
38
|
+
[tool.poetry.group.dev.dependencies]
|
|
39
|
+
mypy = "==1.13.0"
|
|
37
40
|
pytest = "^7.4.0"
|
|
38
41
|
pytest-asyncio = "^0.23.5"
|
|
39
42
|
python-dateutil = "^2.9.0"
|
|
40
43
|
types-python-dateutil = "^2.9.0.20240316"
|
|
41
|
-
ruff = "
|
|
44
|
+
ruff = "==0.11.5"
|
|
42
45
|
|
|
43
46
|
[tool.pytest.ini_options]
|
|
44
47
|
testpaths = [ "tests" ]
|
|
@@ -50,6 +53,26 @@ plugins = ["pydantic.mypy"]
|
|
|
50
53
|
[tool.ruff]
|
|
51
54
|
line-length = 120
|
|
52
55
|
|
|
56
|
+
[tool.ruff.lint]
|
|
57
|
+
select = [
|
|
58
|
+
"E", # pycodestyle errors
|
|
59
|
+
"F", # pyflakes
|
|
60
|
+
"I", # isort
|
|
61
|
+
]
|
|
62
|
+
ignore = [
|
|
63
|
+
"E402", # Module level import not at top of file
|
|
64
|
+
"E501", # Line too long
|
|
65
|
+
"E711", # Comparison to `None` should be `cond is not None`
|
|
66
|
+
"E712", # Avoid equality comparisons to `True`; use `if ...:` checks
|
|
67
|
+
"E721", # Use `is` and `is not` for type comparisons, or `isinstance()` for insinstance checks
|
|
68
|
+
"E722", # Do not use bare `except`
|
|
69
|
+
"E731", # Do not assign a `lambda` expression, use a `def`
|
|
70
|
+
"F821", # Undefined name
|
|
71
|
+
"F841" # Local variable ... is assigned to but never used
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
[tool.ruff.lint.isort]
|
|
75
|
+
section-order = ["future", "standard-library", "third-party", "first-party"]
|
|
53
76
|
|
|
54
77
|
[build-system]
|
|
55
78
|
requires = ["poetry-core"]
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
# nopycln: file
|
|
4
|
+
import datetime as dt
|
|
5
|
+
from collections import defaultdict
|
|
6
|
+
from typing import Any, Callable, Dict, List, Mapping, Tuple, Type, TypeVar, Union, cast
|
|
7
|
+
|
|
8
|
+
import pydantic
|
|
9
|
+
|
|
10
|
+
IS_PYDANTIC_V2 = pydantic.VERSION.startswith("2.")
|
|
11
|
+
|
|
12
|
+
if IS_PYDANTIC_V2:
|
|
13
|
+
from pydantic.v1.datetime_parse import parse_date as parse_date
|
|
14
|
+
from pydantic.v1.datetime_parse import parse_datetime as parse_datetime
|
|
15
|
+
from pydantic.v1.fields import ModelField as ModelField
|
|
16
|
+
from pydantic.v1.json import ENCODERS_BY_TYPE as encoders_by_type # type: ignore[attr-defined]
|
|
17
|
+
from pydantic.v1.typing import get_args as get_args
|
|
18
|
+
from pydantic.v1.typing import get_origin as get_origin
|
|
19
|
+
from pydantic.v1.typing import is_literal_type as is_literal_type
|
|
20
|
+
from pydantic.v1.typing import is_union as is_union
|
|
21
|
+
else:
|
|
22
|
+
from pydantic.datetime_parse import parse_date as parse_date # type: ignore[no-redef]
|
|
23
|
+
from pydantic.datetime_parse import parse_datetime as parse_datetime # type: ignore[no-redef]
|
|
24
|
+
from pydantic.fields import ModelField as ModelField # type: ignore[attr-defined, no-redef]
|
|
25
|
+
from pydantic.json import ENCODERS_BY_TYPE as encoders_by_type # type: ignore[no-redef]
|
|
26
|
+
from pydantic.typing import get_args as get_args # type: ignore[no-redef]
|
|
27
|
+
from pydantic.typing import get_origin as get_origin # type: ignore[no-redef]
|
|
28
|
+
from pydantic.typing import is_literal_type as is_literal_type # type: ignore[no-redef]
|
|
29
|
+
from pydantic.typing import is_union as is_union # type: ignore[no-redef]
|
|
30
|
+
|
|
31
|
+
from .datetime_utils import serialize_datetime
|
|
32
|
+
from typing_extensions import TypeAlias
|
|
33
|
+
|
|
34
|
+
T = TypeVar("T")
|
|
35
|
+
Model = TypeVar("Model", bound=pydantic.BaseModel)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def parse_obj_as(type_: Type[T], object_: Any) -> T:
|
|
39
|
+
if IS_PYDANTIC_V2:
|
|
40
|
+
adapter = pydantic.TypeAdapter(type_) # type: ignore[attr-defined]
|
|
41
|
+
return adapter.validate_python(object_)
|
|
42
|
+
return pydantic.parse_obj_as(type_, object_)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def to_jsonable_with_fallback(obj: Any, fallback_serializer: Callable[[Any], Any]) -> Any:
|
|
46
|
+
if IS_PYDANTIC_V2:
|
|
47
|
+
from pydantic_core import to_jsonable_python
|
|
48
|
+
|
|
49
|
+
return to_jsonable_python(obj, fallback=fallback_serializer)
|
|
50
|
+
return fallback_serializer(obj)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class UniversalBaseModel(pydantic.BaseModel):
|
|
54
|
+
class Config:
|
|
55
|
+
populate_by_name = True
|
|
56
|
+
smart_union = True
|
|
57
|
+
allow_population_by_field_name = True
|
|
58
|
+
json_encoders = {dt.datetime: serialize_datetime}
|
|
59
|
+
# Allow fields beginning with `model_` to be used in the model
|
|
60
|
+
protected_namespaces = ()
|
|
61
|
+
|
|
62
|
+
def json(self, **kwargs: Any) -> str:
|
|
63
|
+
kwargs_with_defaults = {
|
|
64
|
+
"by_alias": True,
|
|
65
|
+
"exclude_unset": True,
|
|
66
|
+
**kwargs,
|
|
67
|
+
}
|
|
68
|
+
if IS_PYDANTIC_V2:
|
|
69
|
+
return super().model_dump_json(**kwargs_with_defaults) # type: ignore[misc]
|
|
70
|
+
return super().json(**kwargs_with_defaults)
|
|
71
|
+
|
|
72
|
+
def dict(self, **kwargs: Any) -> Dict[str, Any]:
|
|
73
|
+
"""
|
|
74
|
+
Override the default dict method to `exclude_unset` by default. This function patches
|
|
75
|
+
`exclude_unset` to work include fields within non-None default values.
|
|
76
|
+
"""
|
|
77
|
+
# Note: the logic here is multiplexed given the levers exposed in Pydantic V1 vs V2
|
|
78
|
+
# Pydantic V1's .dict can be extremely slow, so we do not want to call it twice.
|
|
79
|
+
#
|
|
80
|
+
# We'd ideally do the same for Pydantic V2, but it shells out to a library to serialize models
|
|
81
|
+
# that we have less control over, and this is less intrusive than custom serializers for now.
|
|
82
|
+
if IS_PYDANTIC_V2:
|
|
83
|
+
kwargs_with_defaults_exclude_unset = {
|
|
84
|
+
**kwargs,
|
|
85
|
+
"by_alias": True,
|
|
86
|
+
"exclude_unset": True,
|
|
87
|
+
"exclude_none": False,
|
|
88
|
+
}
|
|
89
|
+
kwargs_with_defaults_exclude_none = {
|
|
90
|
+
**kwargs,
|
|
91
|
+
"by_alias": True,
|
|
92
|
+
"exclude_none": True,
|
|
93
|
+
"exclude_unset": False,
|
|
94
|
+
}
|
|
95
|
+
return deep_union_pydantic_dicts(
|
|
96
|
+
super().model_dump(**kwargs_with_defaults_exclude_unset), # type: ignore[misc]
|
|
97
|
+
super().model_dump(**kwargs_with_defaults_exclude_none), # type: ignore[misc]
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
_fields_set = self.__fields_set__.copy()
|
|
101
|
+
|
|
102
|
+
fields = _get_model_fields(self.__class__)
|
|
103
|
+
for name, field in fields.items():
|
|
104
|
+
if name not in _fields_set:
|
|
105
|
+
default = _get_field_default(field)
|
|
106
|
+
|
|
107
|
+
# If the default values are non-null act like they've been set
|
|
108
|
+
# This effectively allows exclude_unset to work like exclude_none where
|
|
109
|
+
# the latter passes through intentionally set none values.
|
|
110
|
+
if default is not None or ("exclude_unset" in kwargs and not kwargs["exclude_unset"]):
|
|
111
|
+
_fields_set.add(name)
|
|
112
|
+
|
|
113
|
+
if default is not None:
|
|
114
|
+
self.__fields_set__.add(name)
|
|
115
|
+
|
|
116
|
+
kwargs_with_defaults_exclude_unset_include_fields = {
|
|
117
|
+
"by_alias": True,
|
|
118
|
+
"exclude_unset": True,
|
|
119
|
+
"include": _fields_set,
|
|
120
|
+
**kwargs,
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return super().dict(**kwargs_with_defaults_exclude_unset_include_fields)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def _union_list_of_pydantic_dicts(source: List[Any], destination: List[Any]) -> List[Any]:
|
|
127
|
+
converted_list: List[Any] = []
|
|
128
|
+
for i, item in enumerate(source):
|
|
129
|
+
destination_value = destination[i]
|
|
130
|
+
if isinstance(item, dict):
|
|
131
|
+
converted_list.append(deep_union_pydantic_dicts(item, destination_value))
|
|
132
|
+
elif isinstance(item, list):
|
|
133
|
+
converted_list.append(_union_list_of_pydantic_dicts(item, destination_value))
|
|
134
|
+
else:
|
|
135
|
+
converted_list.append(item)
|
|
136
|
+
return converted_list
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def deep_union_pydantic_dicts(source: Dict[str, Any], destination: Dict[str, Any]) -> Dict[str, Any]:
|
|
140
|
+
for key, value in source.items():
|
|
141
|
+
node = destination.setdefault(key, {})
|
|
142
|
+
if isinstance(value, dict):
|
|
143
|
+
deep_union_pydantic_dicts(value, node)
|
|
144
|
+
# Note: we do not do this same processing for sets given we do not have sets of models
|
|
145
|
+
# and given the sets are unordered, the processing of the set and matching objects would
|
|
146
|
+
# be non-trivial.
|
|
147
|
+
elif isinstance(value, list):
|
|
148
|
+
destination[key] = _union_list_of_pydantic_dicts(value, node)
|
|
149
|
+
else:
|
|
150
|
+
destination[key] = value
|
|
151
|
+
|
|
152
|
+
return destination
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
if IS_PYDANTIC_V2:
|
|
156
|
+
|
|
157
|
+
class V2RootModel(UniversalBaseModel, pydantic.RootModel): # type: ignore[name-defined, type-arg]
|
|
158
|
+
pass
|
|
159
|
+
|
|
160
|
+
UniversalRootModel: TypeAlias = V2RootModel
|
|
161
|
+
else:
|
|
162
|
+
UniversalRootModel: TypeAlias = UniversalBaseModel # type: ignore[misc, no-redef]
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def encode_by_type(o: Any) -> Any:
|
|
166
|
+
encoders_by_class_tuples: Dict[Callable[[Any], Any], Tuple[Any, ...]] = defaultdict(tuple)
|
|
167
|
+
for type_, encoder in encoders_by_type.items():
|
|
168
|
+
encoders_by_class_tuples[encoder] += (type_,)
|
|
169
|
+
|
|
170
|
+
if type(o) in encoders_by_type:
|
|
171
|
+
return encoders_by_type[type(o)](o)
|
|
172
|
+
for encoder, classes_tuple in encoders_by_class_tuples.items():
|
|
173
|
+
if isinstance(o, classes_tuple):
|
|
174
|
+
return encoder(o)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def update_forward_refs(model: Type["Model"], **localns: Any) -> None:
|
|
178
|
+
if IS_PYDANTIC_V2:
|
|
179
|
+
model.model_rebuild(raise_errors=False) # type: ignore[attr-defined]
|
|
180
|
+
else:
|
|
181
|
+
model.update_forward_refs(**localns)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
# Mirrors Pydantic's internal typing
|
|
185
|
+
AnyCallable = Callable[..., Any]
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def universal_root_validator(pre: bool = False) -> Callable[[AnyCallable], AnyCallable]:
|
|
189
|
+
def decorator(func: AnyCallable) -> AnyCallable:
|
|
190
|
+
if IS_PYDANTIC_V2:
|
|
191
|
+
return cast(AnyCallable, pydantic.model_validator(mode="before" if pre else "after")(func)) # type: ignore[attr-defined]
|
|
192
|
+
return cast(AnyCallable, pydantic.root_validator(pre=pre)(func)) # type: ignore[call-overload]
|
|
193
|
+
|
|
194
|
+
return decorator
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def universal_field_validator(field_name: str, pre: bool = False) -> Callable[[AnyCallable], AnyCallable]:
|
|
198
|
+
def decorator(func: AnyCallable) -> AnyCallable:
|
|
199
|
+
if IS_PYDANTIC_V2:
|
|
200
|
+
return cast(AnyCallable, pydantic.field_validator(field_name, mode="before" if pre else "after")(func)) # type: ignore[attr-defined]
|
|
201
|
+
return cast(AnyCallable, pydantic.validator(field_name, pre=pre)(func))
|
|
202
|
+
|
|
203
|
+
return decorator
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
PydanticField = Union[ModelField, pydantic.fields.FieldInfo]
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def _get_model_fields(model: Type["Model"]) -> Mapping[str, PydanticField]:
|
|
210
|
+
if IS_PYDANTIC_V2:
|
|
211
|
+
return cast(Mapping[str, PydanticField], model.model_fields) # type: ignore[attr-defined]
|
|
212
|
+
return cast(Mapping[str, PydanticField], model.__fields__)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def _get_field_default(field: PydanticField) -> Any:
|
|
216
|
+
try:
|
|
217
|
+
value = field.get_default() # type: ignore[union-attr]
|
|
218
|
+
except:
|
|
219
|
+
value = field.default
|
|
220
|
+
if IS_PYDANTIC_V2:
|
|
221
|
+
from pydantic_core import PydanticUndefined
|
|
222
|
+
|
|
223
|
+
if value == PydanticUndefined:
|
|
224
|
+
return None
|
|
225
|
+
return value
|
|
226
|
+
return value
|
|
@@ -4,9 +4,8 @@ import collections
|
|
|
4
4
|
import inspect
|
|
5
5
|
import typing
|
|
6
6
|
|
|
7
|
-
import typing_extensions
|
|
8
|
-
|
|
9
7
|
import pydantic
|
|
8
|
+
import typing_extensions
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
class FieldMetadata:
|
|
@@ -161,7 +160,12 @@ def _convert_mapping(
|
|
|
161
160
|
direction: typing.Literal["read", "write"],
|
|
162
161
|
) -> typing.Mapping[str, object]:
|
|
163
162
|
converted_object: typing.Dict[str, object] = {}
|
|
164
|
-
|
|
163
|
+
try:
|
|
164
|
+
annotations = typing_extensions.get_type_hints(expected_type, include_extras=True)
|
|
165
|
+
except NameError:
|
|
166
|
+
# The TypedDict contains a circular reference, so
|
|
167
|
+
# we use the __annotations__ attribute directly.
|
|
168
|
+
annotations = getattr(expected_type, "__annotations__", {})
|
|
165
169
|
aliases_to_field_names = _get_alias_to_field_name(annotations)
|
|
166
170
|
for key, value in object_.items():
|
|
167
171
|
if direction == "read" and key in aliases_to_field_names:
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
|
-
from ..http.http_request import HttpRequest
|
|
5
|
-
import pydantic
|
|
6
|
-
from ..method.request_method import RequestMethod
|
|
7
3
|
import typing
|
|
8
|
-
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from ..http.http_request import HttpRequest
|
|
9
8
|
from ..method.browserbase_request_config import BrowserbaseRequestConfig
|
|
10
9
|
from ..method.browserbase_request_secrets import BrowserbaseRequestSecrets
|
|
11
|
-
from
|
|
10
|
+
from ..method.headless_request_config import HeadlessRequestConfig
|
|
11
|
+
from ..method.request_method import RequestMethod
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class SendHttpRequestConfig(UniversalBaseModel):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
|
-
import pydantic
|
|
5
3
|
import typing
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class BinaryBody(UniversalBaseModel):
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
import typing
|
|
6
|
+
|
|
6
7
|
import pydantic
|
|
7
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
8
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
8
9
|
from .multipart_part import MultipartPart
|
|
9
10
|
|
|
10
11
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
3
|
import typing
|
|
4
|
+
|
|
5
5
|
import pydantic
|
|
6
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class FormBody(UniversalBaseModel):
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import datetime as dt
|
|
4
|
+
import typing
|
|
5
|
+
|
|
4
6
|
import pydantic
|
|
7
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
5
8
|
from .http_method import HttpMethod
|
|
6
|
-
import typing
|
|
7
9
|
from .http_request_params import HttpRequestParams
|
|
8
|
-
import datetime as dt
|
|
9
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class HttpRequest(UniversalBaseModel):
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
3
|
import typing
|
|
5
|
-
|
|
6
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
4
|
+
|
|
7
5
|
import pydantic
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .body import Body
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class HttpRequestParams(UniversalBaseModel):
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
|
-
from .http_request import HttpRequest
|
|
5
3
|
import typing
|
|
6
|
-
|
|
7
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
4
|
+
|
|
8
5
|
import pydantic
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .http_request import HttpRequest
|
|
8
|
+
from .http_response import HttpResponse
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class HttpRequestResponse(UniversalBaseModel):
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import datetime as dt
|
|
4
4
|
import typing
|
|
5
|
+
|
|
5
6
|
import pydantic
|
|
7
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
6
8
|
from .body import Body
|
|
7
|
-
import datetime as dt
|
|
8
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class HttpResponse(UniversalBaseModel):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
3
|
import typing
|
|
4
|
+
|
|
5
5
|
import pydantic
|
|
6
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class JsonBody(UniversalBaseModel):
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
3
|
import typing
|
|
5
|
-
|
|
4
|
+
|
|
6
5
|
import pydantic
|
|
7
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .multipart_part import MultipartPart
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class MultipartBody(UniversalBaseModel):
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
3
|
import typing
|
|
5
|
-
|
|
6
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
4
|
+
|
|
7
5
|
import pydantic
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
|
+
from .binary_body import BinaryBody
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class MultipartPart(UniversalBaseModel):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
3
|
import typing
|
|
4
|
+
|
|
5
5
|
import pydantic
|
|
6
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class TextBody(UniversalBaseModel):
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
+
# isort: skip_file
|
|
4
|
+
|
|
3
5
|
from .browserbase_request_config import BrowserbaseRequestConfig
|
|
4
6
|
from .browserbase_request_secrets import BrowserbaseRequestSecrets
|
|
5
7
|
from .headless_request_config import HeadlessRequestConfig
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
3
|
import typing
|
|
5
|
-
|
|
4
|
+
|
|
6
5
|
import pydantic
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class BrowserbaseRequestConfig(UniversalBaseModel):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
5
3
|
import typing
|
|
4
|
+
|
|
6
5
|
import pydantic
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class BrowserbaseRequestSecrets(UniversalBaseModel):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
-
from .....core.pydantic_utilities import UniversalBaseModel
|
|
4
3
|
import typing
|
|
4
|
+
|
|
5
5
|
import pydantic
|
|
6
|
-
from .....core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
from .....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class HeadlessRequestConfig(UniversalBaseModel):
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
|
+
# isort: skip_file
|
|
4
|
+
|
|
3
5
|
from . import config, parameter, probe, report
|
|
4
6
|
from .config import NucleiConfig, NucleiDastConfig, NucleiRunMode
|
|
5
7
|
from .parameter import RequestParameter, RequestParameterLocation
|