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.
Files changed (220) hide show
  1. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/PKG-INFO +3 -2
  2. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/pyproject.toml +28 -5
  3. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/__init__.py +2 -0
  4. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/core/__init__.py +2 -0
  5. methodwebscan-0.0.191/src/methodwebscan/core/pydantic_utilities.py +226 -0
  6. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/core/serialization.py +7 -3
  7. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/__init__.py +2 -0
  8. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/__init__.py +2 -0
  9. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/__init__.py +2 -0
  10. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/config/__init__.py +2 -0
  11. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/config/send_http_request_config.py +6 -6
  12. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/__init__.py +2 -0
  13. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/binary_body.py +3 -3
  14. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/body.py +3 -2
  15. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/form_body.py +2 -2
  16. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_request.py +4 -4
  17. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_request_params.py +3 -3
  18. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_request_response.py +4 -4
  19. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_response.py +3 -3
  20. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/json_body.py +2 -2
  21. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/multipart_body.py +3 -3
  22. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/multipart_part.py +3 -3
  23. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/text_body.py +2 -2
  24. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/__init__.py +2 -0
  25. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/browserbase_request_config.py +2 -2
  26. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/browserbase_request_secrets.py +2 -2
  27. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/headless_request_config.py +2 -2
  28. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/__init__.py +2 -0
  29. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/__init__.py +2 -0
  30. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/config/__init__.py +2 -0
  31. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/config/nuclei_config.py +4 -3
  32. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/config/nuclei_dast_config.py +3 -3
  33. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/parameter/__init__.py +2 -0
  34. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/parameter/request_parameter.py +3 -3
  35. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/__init__.py +2 -0
  36. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_expected_matcher.py +2 -2
  37. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_matcher_details.py +4 -4
  38. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_probe.py +3 -3
  39. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/__init__.py +2 -0
  40. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/classification_details.py +4 -4
  41. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/cve_details.py +2 -2
  42. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/cwe_details.py +2 -2
  43. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/nuclei_attempt_info.py +3 -3
  44. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/nuclei_finding_info.py +4 -3
  45. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/report/nuclei_target_info.py +3 -3
  46. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/__init__.py +4 -6
  47. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/__init__.py +4 -6
  48. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/__init__.py +4 -6
  49. methodwebscan-0.0.191/src/methodwebscan/resources/discover/resources/application/application_detection_state.py +10 -0
  50. methodwebscan-0.0.191/src/methodwebscan/resources/discover/resources/application/application_fingerprint_attempt.py +26 -0
  51. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/application_fingerprint_target.py +3 -3
  52. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/application_resource_config_type.py +1 -0
  53. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/application_resource_type.py +9 -2
  54. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/discover_application_config.py +6 -6
  55. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/discover_application_report.py +4 -4
  56. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/discover_application_result.py +3 -3
  57. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/__init__.py +2 -0
  58. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/directory_target_info.py +3 -3
  59. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/discover_directory_config.py +4 -4
  60. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/discover_directory_report.py +4 -4
  61. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/discover_directory_result.py +3 -3
  62. methodwebscan-0.0.191/src/methodwebscan/resources/discover/resources/directory/wordlist_size.py +5 -0
  63. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/page/__init__.py +2 -0
  64. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/page/discover_page_config.py +5 -5
  65. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/page/discover_page_report.py +4 -4
  66. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/page/discover_page_result.py +3 -3
  67. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/probe/__init__.py +2 -0
  68. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/probe/discover_probe_config.py +5 -5
  69. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/probe/discover_probe_report.py +4 -4
  70. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/probe/discover_probe_result.py +3 -3
  71. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/__init__.py +2 -0
  72. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/discover_route_config.py +5 -5
  73. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/discover_route_report.py +4 -4
  74. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/discover_route_result.py +3 -3
  75. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/route_body_param.py +2 -2
  76. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/route_details.py +4 -4
  77. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/route/route_query_param.py +2 -2
  78. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/__init__.py +2 -0
  79. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/discover_saas_config.py +4 -4
  80. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/discover_saas_report.py +4 -4
  81. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/discover_saas_result.py +3 -3
  82. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_active_attempt.py +3 -3
  83. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_active_company.py +3 -3
  84. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_active_finding.py +2 -2
  85. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_active_request.py +5 -4
  86. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_fingerprint_entry.py +4 -4
  87. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_fingerprint_file.py +3 -3
  88. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/saas/saas_fingerprint_profile.py +2 -2
  89. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/__init__.py +2 -0
  90. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/__init__.py +2 -0
  91. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/__init__.py +4 -0
  92. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/__init__.py +4 -0
  93. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/__init__.py +2 -0
  94. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/api_application_route_details.py +9 -9
  95. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/o_auth_flow.py +3 -3
  96. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/o_auth_flow_details.py +2 -2
  97. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/request_schema.py +4 -5
  98. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/schema_property.py +4 -5
  99. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/security_requirement.py +2 -2
  100. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/security_scheme.py +3 -3
  101. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/__init__.py +4 -0
  102. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_config.py +2 -2
  103. 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
  104. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_report.py +9 -9
  105. methodwebscan-0.0.191/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_result.py +26 -0
  106. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_data.py +3 -3
  107. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_field.py +2 -2
  108. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_query.py +2 -2
  109. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_schema.py +3 -3
  110. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_schema_data.py +3 -3
  111. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_type.py +3 -3
  112. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/__init__.py +2 -0
  113. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/enumerate_swagger_config.py +2 -2
  114. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/enumerate_swagger_report.py +9 -9
  115. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/enumerate_swagger_result.py +10 -10
  116. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/__init__.py +2 -0
  117. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/__init__.py +2 -0
  118. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/__init__.py +2 -0
  119. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/__init__.py +2 -0
  120. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/__init__.py +2 -0
  121. {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
  122. {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
  123. {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
  124. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/wordpress_api_response.py +2 -2
  125. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/wordpress_plugin_details.py +3 -3
  126. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/wordpress_plugins_target.py +3 -3
  127. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/__init__.py +2 -0
  128. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/__init__.py +2 -0
  129. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/__init__.py +2 -0
  130. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/enumerate_rate_limit_config.py +2 -2
  131. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/enumerate_rate_limit_report.py +4 -4
  132. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/enumerate_rate_limit_result.py +3 -3
  133. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/rate_limit_attempt.py +4 -4
  134. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/general/resources/ratelimit/rate_limit_target.py +3 -3
  135. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/__init__.py +2 -0
  136. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/__init__.py +2 -0
  137. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/kube/__init__.py +2 -0
  138. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/kube/enumerate_kube_config.py +3 -3
  139. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/kube/enumerate_kube_report.py +4 -4
  140. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/kube/resources/kube/enumerate_kube_result.py +3 -3
  141. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/__init__.py +2 -0
  142. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/__init__.py +2 -0
  143. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/__init__.py +2 -0
  144. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/__init__.py +2 -0
  145. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/dast/__init__.py +2 -0
  146. methodwebscan-0.0.191/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_category.py +7 -0
  147. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_config.py +5 -4
  148. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_report.py +4 -4
  149. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_result.py +3 -3
  150. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/__init__.py +2 -0
  151. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/__init__.py +2 -0
  152. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/cve/__init__.py +2 -0
  153. {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
  154. {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
  155. {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
  156. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/__init__.py +2 -0
  157. {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
  158. {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
  159. {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
  160. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/__init__.py +2 -0
  161. {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
  162. {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
  163. {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
  164. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/__init__.py +2 -0
  165. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/__init__.py +2 -0
  166. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/__init__.py +2 -0
  167. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/__init__.py +2 -0
  168. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/__init__.py +2 -0
  169. {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
  170. {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
  171. {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
  172. {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
  173. {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
  174. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/__init__.py +2 -0
  175. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/__init__.py +2 -0
  176. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/__init__.py +2 -0
  177. {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
  178. {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
  179. {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
  180. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_fingerprint.py +3 -3
  181. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_static_request.py +3 -3
  182. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_test.py +3 -3
  183. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_vulnerable_details.py +3 -3
  184. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/__init__.py +2 -0
  185. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/__init__.py +2 -0
  186. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/__init__.py +2 -0
  187. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/pentest_waf_detect_config.py +4 -3
  188. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/pentest_waf_detect_report.py +4 -4
  189. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_body.py +3 -3
  190. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detect_attempt.py +4 -4
  191. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detect_result.py +3 -3
  192. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detect_target.py +3 -3
  193. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detected.py +5 -5
  194. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_fingerprint.py +3 -3
  195. methodwebscan-0.0.152/src/methodwebscan/core/pydantic_utilities.py +0 -265
  196. methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/application/application_fingerprint_attempt.py +0 -22
  197. methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/application/application_fingerprint_module.py +0 -26
  198. methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/application/application_fingerprints.py +0 -18
  199. methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/application/application_resource.py +0 -20
  200. methodwebscan-0.0.152/src/methodwebscan/resources/discover/resources/directory/wordlist_size.py +0 -5
  201. methodwebscan-0.0.152/src/methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_category.py +0 -8
  202. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/README.md +0 -0
  203. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/core/datetime_utils.py +0 -0
  204. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/py.typed +0 -0
  205. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/http_method.py +0 -0
  206. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/http/web_protocol.py +0 -0
  207. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/method/request_method.py +0 -0
  208. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/config/nuclei_run_mode.py +0 -0
  209. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/parameter/request_parameter_location.py +0 -0
  210. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_matcher_condition_enum.py +0 -0
  211. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/application/application_resource_type_all.py +0 -0
  212. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/discover/resources/directory/wordlist_type.py +0 -0
  213. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/api_type.py +0 -0
  214. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/apiapplication/resources/common/security_scheme_type.py +0 -0
  215. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/detection_source.py +0 -0
  216. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/plugins_file_size.py +0 -0
  217. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/misconfiguration_category.py +0 -0
  218. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/technology_type.py +0 -0
  219. {methodwebscan-0.0.152 → methodwebscan-0.0.191}/src/methodwebscan/resources/pentest/resources/waf/resources/detect/waf_provider_enum.py +0 -0
  220. {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.152
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,<3.0.0)
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.152"
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 = "^2.18.2"
36
+ pydantic-core = ">=2.18.2"
34
37
 
35
- [tool.poetry.dev-dependencies]
36
- mypy = "1.0.1"
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 = "^0.5.6"
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"]
@@ -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 .resources import common, discover, enumerate, pentest
4
6
 
5
7
  __all__ = ["common", "discover", "enumerate", "pentest"]
@@ -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 .datetime_utils import serialize_datetime
4
6
  from .pydantic_utilities import (
5
7
  IS_PYDANTIC_V2,
@@ -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
- annotations = typing_extensions.get_type_hints(expected_type, include_extras=True)
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,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 common, discover, enumerate, pentest
4
6
 
5
7
  __all__ = ["common", "discover", "enumerate", "pentest"]
@@ -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 .resources import (
4
6
  BinaryBody,
5
7
  Body,
@@ -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, http, method, nuclei
4
6
  from .config import SendHttpRequestConfig
5
7
  from .http import (
@@ -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 .send_http_request_config import SendHttpRequestConfig
4
6
 
5
7
  __all__ = ["SendHttpRequestConfig"]
@@ -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
- from ..method.headless_request_config import HeadlessRequestConfig
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 .....core.pydantic_utilities import IS_PYDANTIC_V2
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,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 .binary_body import BinaryBody
4
6
  from .body import Body, Body_Binary, Body_Form, Body_Json, Body_Multipart, Body_Text
5
7
  from .form_body import FormBody
@@ -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
- from .....core.pydantic_utilities import IS_PYDANTIC_V2
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
- from .....core.pydantic_utilities import UniversalBaseModel
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
- from .....core.pydantic_utilities import UniversalBaseModel
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
- from .body import Body
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
- from .http_response import HttpResponse
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
- from .....core.pydantic_utilities import UniversalBaseModel
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
- from .multipart_part import MultipartPart
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
- from .binary_body import BinaryBody
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
- from .....core.pydantic_utilities import IS_PYDANTIC_V2
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 .resources import (
4
6
  ClassificationDetails,
5
7
  CveDetails,
@@ -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
@@ -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 .nuclei_config import NucleiConfig
4
6
  from .nuclei_dast_config import NucleiDastConfig
5
7
  from .nuclei_run_mode import NucleiRunMode