methodwebscan 0.0.159__py3-none-any.whl → 0.0.161__py3-none-any.whl

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 (194) hide show
  1. methodwebscan/__init__.py +2 -0
  2. methodwebscan/core/__init__.py +2 -0
  3. methodwebscan/core/pydantic_utilities.py +80 -119
  4. methodwebscan/core/serialization.py +7 -3
  5. methodwebscan/resources/__init__.py +2 -0
  6. methodwebscan/resources/common/__init__.py +2 -0
  7. methodwebscan/resources/common/resources/__init__.py +2 -0
  8. methodwebscan/resources/common/resources/config/__init__.py +2 -0
  9. methodwebscan/resources/common/resources/config/send_http_request_config.py +6 -6
  10. methodwebscan/resources/common/resources/http/__init__.py +2 -0
  11. methodwebscan/resources/common/resources/http/binary_body.py +3 -3
  12. methodwebscan/resources/common/resources/http/body.py +3 -2
  13. methodwebscan/resources/common/resources/http/form_body.py +2 -2
  14. methodwebscan/resources/common/resources/http/http_request.py +4 -4
  15. methodwebscan/resources/common/resources/http/http_request_params.py +3 -3
  16. methodwebscan/resources/common/resources/http/http_request_response.py +4 -4
  17. methodwebscan/resources/common/resources/http/http_response.py +3 -3
  18. methodwebscan/resources/common/resources/http/json_body.py +2 -2
  19. methodwebscan/resources/common/resources/http/multipart_body.py +3 -3
  20. methodwebscan/resources/common/resources/http/multipart_part.py +3 -3
  21. methodwebscan/resources/common/resources/http/text_body.py +2 -2
  22. methodwebscan/resources/common/resources/method/__init__.py +2 -0
  23. methodwebscan/resources/common/resources/method/browserbase_request_config.py +2 -2
  24. methodwebscan/resources/common/resources/method/browserbase_request_secrets.py +2 -2
  25. methodwebscan/resources/common/resources/method/headless_request_config.py +2 -2
  26. methodwebscan/resources/common/resources/nuclei/__init__.py +2 -0
  27. methodwebscan/resources/common/resources/nuclei/resources/__init__.py +2 -0
  28. methodwebscan/resources/common/resources/nuclei/resources/config/__init__.py +2 -0
  29. methodwebscan/resources/common/resources/nuclei/resources/config/nuclei_config.py +3 -3
  30. methodwebscan/resources/common/resources/nuclei/resources/config/nuclei_dast_config.py +3 -3
  31. methodwebscan/resources/common/resources/nuclei/resources/parameter/__init__.py +2 -0
  32. methodwebscan/resources/common/resources/nuclei/resources/parameter/request_parameter.py +3 -3
  33. methodwebscan/resources/common/resources/nuclei/resources/probe/__init__.py +2 -0
  34. methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_expected_matcher.py +2 -2
  35. methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_matcher_details.py +4 -4
  36. methodwebscan/resources/common/resources/nuclei/resources/probe/nuclei_probe.py +3 -3
  37. methodwebscan/resources/common/resources/nuclei/resources/report/__init__.py +2 -0
  38. methodwebscan/resources/common/resources/nuclei/resources/report/classification_details.py +4 -4
  39. methodwebscan/resources/common/resources/nuclei/resources/report/cve_details.py +2 -2
  40. methodwebscan/resources/common/resources/nuclei/resources/report/cwe_details.py +2 -2
  41. methodwebscan/resources/common/resources/nuclei/resources/report/nuclei_attempt_info.py +3 -3
  42. methodwebscan/resources/common/resources/nuclei/resources/report/nuclei_finding_info.py +3 -3
  43. methodwebscan/resources/common/resources/nuclei/resources/report/nuclei_target_info.py +3 -3
  44. methodwebscan/resources/discover/__init__.py +2 -0
  45. methodwebscan/resources/discover/resources/__init__.py +2 -0
  46. methodwebscan/resources/discover/resources/application/__init__.py +2 -0
  47. methodwebscan/resources/discover/resources/application/application_fingerprint_attempt.py +3 -3
  48. methodwebscan/resources/discover/resources/application/application_fingerprint_module.py +4 -4
  49. methodwebscan/resources/discover/resources/application/application_fingerprint_target.py +3 -3
  50. methodwebscan/resources/discover/resources/application/application_fingerprints.py +3 -3
  51. methodwebscan/resources/discover/resources/application/application_resource.py +4 -4
  52. methodwebscan/resources/discover/resources/application/application_resource_config_type.py +1 -0
  53. methodwebscan/resources/discover/resources/application/discover_application_config.py +3 -3
  54. methodwebscan/resources/discover/resources/application/discover_application_report.py +4 -4
  55. methodwebscan/resources/discover/resources/application/discover_application_result.py +3 -3
  56. methodwebscan/resources/discover/resources/directory/__init__.py +2 -0
  57. methodwebscan/resources/discover/resources/directory/directory_target_info.py +3 -3
  58. methodwebscan/resources/discover/resources/directory/discover_directory_config.py +4 -4
  59. methodwebscan/resources/discover/resources/directory/discover_directory_report.py +4 -4
  60. methodwebscan/resources/discover/resources/directory/discover_directory_result.py +3 -3
  61. methodwebscan/resources/discover/resources/page/__init__.py +2 -0
  62. methodwebscan/resources/discover/resources/page/discover_page_config.py +5 -5
  63. methodwebscan/resources/discover/resources/page/discover_page_report.py +4 -4
  64. methodwebscan/resources/discover/resources/page/discover_page_result.py +3 -3
  65. methodwebscan/resources/discover/resources/probe/__init__.py +2 -0
  66. methodwebscan/resources/discover/resources/probe/discover_probe_config.py +5 -5
  67. methodwebscan/resources/discover/resources/probe/discover_probe_report.py +4 -4
  68. methodwebscan/resources/discover/resources/probe/discover_probe_result.py +3 -3
  69. methodwebscan/resources/discover/resources/route/__init__.py +2 -0
  70. methodwebscan/resources/discover/resources/route/discover_route_config.py +5 -5
  71. methodwebscan/resources/discover/resources/route/discover_route_report.py +4 -4
  72. methodwebscan/resources/discover/resources/route/discover_route_result.py +3 -3
  73. methodwebscan/resources/discover/resources/route/route_body_param.py +2 -2
  74. methodwebscan/resources/discover/resources/route/route_details.py +4 -4
  75. methodwebscan/resources/discover/resources/route/route_query_param.py +2 -2
  76. methodwebscan/resources/discover/resources/saas/__init__.py +2 -0
  77. methodwebscan/resources/discover/resources/saas/discover_saas_config.py +4 -4
  78. methodwebscan/resources/discover/resources/saas/discover_saas_report.py +4 -4
  79. methodwebscan/resources/discover/resources/saas/discover_saas_result.py +3 -3
  80. methodwebscan/resources/discover/resources/saas/saas_active_attempt.py +3 -3
  81. methodwebscan/resources/discover/resources/saas/saas_active_company.py +3 -3
  82. methodwebscan/resources/discover/resources/saas/saas_active_finding.py +2 -2
  83. methodwebscan/resources/discover/resources/saas/saas_active_request.py +4 -4
  84. methodwebscan/resources/discover/resources/saas/saas_fingerprint_entry.py +4 -4
  85. methodwebscan/resources/discover/resources/saas/saas_fingerprint_file.py +3 -3
  86. methodwebscan/resources/discover/resources/saas/saas_fingerprint_profile.py +2 -2
  87. methodwebscan/resources/enumerate/__init__.py +2 -0
  88. methodwebscan/resources/enumerate/resources/__init__.py +2 -0
  89. methodwebscan/resources/enumerate/resources/apiapplication/__init__.py +4 -0
  90. methodwebscan/resources/enumerate/resources/apiapplication/resources/__init__.py +4 -0
  91. methodwebscan/resources/enumerate/resources/apiapplication/resources/common/__init__.py +2 -0
  92. methodwebscan/resources/enumerate/resources/apiapplication/resources/common/api_application_route_details.py +9 -9
  93. methodwebscan/resources/enumerate/resources/apiapplication/resources/common/o_auth_flow.py +3 -3
  94. methodwebscan/resources/enumerate/resources/apiapplication/resources/common/o_auth_flow_details.py +2 -2
  95. methodwebscan/resources/enumerate/resources/apiapplication/resources/common/request_schema.py +4 -5
  96. methodwebscan/resources/enumerate/resources/apiapplication/resources/common/schema_property.py +4 -5
  97. methodwebscan/resources/enumerate/resources/apiapplication/resources/common/security_requirement.py +2 -2
  98. methodwebscan/resources/enumerate/resources/apiapplication/resources/common/security_scheme.py +3 -3
  99. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/__init__.py +4 -0
  100. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_config.py +2 -2
  101. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_data.py +40 -0
  102. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_report.py +9 -9
  103. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/enumerate_graphql_result.py +10 -24
  104. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_data.py +3 -3
  105. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_field.py +2 -2
  106. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_query.py +2 -2
  107. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_schema.py +3 -3
  108. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_schema_data.py +3 -3
  109. methodwebscan/resources/enumerate/resources/apiapplication/resources/graphql/graph_ql_type.py +3 -3
  110. methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/__init__.py +2 -0
  111. methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/enumerate_swagger_config.py +2 -2
  112. methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/enumerate_swagger_report.py +9 -9
  113. methodwebscan/resources/enumerate/resources/apiapplication/resources/swagger/enumerate_swagger_result.py +10 -10
  114. methodwebscan/resources/enumerate/resources/cms/__init__.py +2 -0
  115. methodwebscan/resources/enumerate/resources/cms/resources/__init__.py +2 -0
  116. methodwebscan/resources/enumerate/resources/cms/resources/wordpress/__init__.py +2 -0
  117. methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/__init__.py +2 -0
  118. methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/__init__.py +2 -0
  119. methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/enumerate_wordpress_plugins_config.py +3 -3
  120. methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/enumerate_wordpress_plugins_report.py +4 -4
  121. methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/enumerate_wordpress_plugins_result.py +3 -3
  122. methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/wordpress_api_response.py +2 -2
  123. methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/wordpress_plugin_details.py +3 -3
  124. methodwebscan/resources/enumerate/resources/cms/resources/wordpress/resources/plugins/wordpress_plugins_target.py +3 -3
  125. methodwebscan/resources/enumerate/resources/general/__init__.py +2 -0
  126. methodwebscan/resources/enumerate/resources/general/resources/__init__.py +2 -0
  127. methodwebscan/resources/enumerate/resources/general/resources/ratelimit/__init__.py +2 -0
  128. methodwebscan/resources/enumerate/resources/general/resources/ratelimit/enumerate_rate_limit_config.py +2 -2
  129. methodwebscan/resources/enumerate/resources/general/resources/ratelimit/enumerate_rate_limit_report.py +4 -4
  130. methodwebscan/resources/enumerate/resources/general/resources/ratelimit/enumerate_rate_limit_result.py +3 -3
  131. methodwebscan/resources/enumerate/resources/general/resources/ratelimit/rate_limit_attempt.py +4 -4
  132. methodwebscan/resources/enumerate/resources/general/resources/ratelimit/rate_limit_target.py +3 -3
  133. methodwebscan/resources/enumerate/resources/kube/__init__.py +2 -0
  134. methodwebscan/resources/enumerate/resources/kube/resources/__init__.py +2 -0
  135. methodwebscan/resources/enumerate/resources/kube/resources/kube/__init__.py +2 -0
  136. methodwebscan/resources/enumerate/resources/kube/resources/kube/enumerate_kube_config.py +3 -3
  137. methodwebscan/resources/enumerate/resources/kube/resources/kube/enumerate_kube_report.py +4 -4
  138. methodwebscan/resources/enumerate/resources/kube/resources/kube/enumerate_kube_result.py +3 -3
  139. methodwebscan/resources/pentest/__init__.py +2 -0
  140. methodwebscan/resources/pentest/resources/__init__.py +2 -0
  141. methodwebscan/resources/pentest/resources/application/__init__.py +2 -0
  142. methodwebscan/resources/pentest/resources/application/resources/__init__.py +2 -0
  143. methodwebscan/resources/pentest/resources/application/resources/dast/__init__.py +2 -0
  144. methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_config.py +4 -4
  145. methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_report.py +4 -4
  146. methodwebscan/resources/pentest/resources/application/resources/dast/pentest_application_dast_result.py +3 -3
  147. methodwebscan/resources/pentest/resources/application/resources/scan/__init__.py +2 -0
  148. methodwebscan/resources/pentest/resources/application/resources/scan/resources/__init__.py +2 -0
  149. methodwebscan/resources/pentest/resources/application/resources/scan/resources/cve/__init__.py +2 -0
  150. methodwebscan/resources/pentest/resources/application/resources/scan/resources/cve/pentest_application_cve_config.py +2 -2
  151. methodwebscan/resources/pentest/resources/application/resources/scan/resources/cve/pentest_application_cve_report.py +4 -4
  152. methodwebscan/resources/pentest/resources/application/resources/scan/resources/cve/pentest_application_cve_result.py +3 -3
  153. methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/__init__.py +2 -0
  154. methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/pentest_application_misconfiguration_config.py +3 -3
  155. methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/pentest_application_misconfiguration_report.py +4 -4
  156. methodwebscan/resources/pentest/resources/application/resources/scan/resources/misconfiguration/pentest_application_misconfiguration_result.py +3 -3
  157. methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/__init__.py +2 -0
  158. methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/pentest_application_technology_config.py +3 -3
  159. methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/pentest_application_technology_report.py +4 -4
  160. methodwebscan/resources/pentest/resources/application/resources/scan/resources/technology/pentest_application_technology_result.py +3 -3
  161. methodwebscan/resources/pentest/resources/cms/__init__.py +2 -0
  162. methodwebscan/resources/pentest/resources/cms/resources/__init__.py +2 -0
  163. methodwebscan/resources/pentest/resources/cms/resources/wordpress/__init__.py +2 -0
  164. methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/__init__.py +2 -0
  165. methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/__init__.py +2 -0
  166. methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/pentest_cms_wordpress_xmlrpc_functions_exposed_config.py +2 -2
  167. methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/pentest_cms_wordpress_xmlrpc_functions_exposed_report.py +4 -4
  168. methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/xmlrpc_functions_exposed_attempt.py +3 -3
  169. methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/xmlrpc_functions_exposed_result.py +3 -3
  170. methodwebscan/resources/pentest/resources/cms/resources/wordpress/resources/xmlrpcfunctionsexposed/xmlrpc_functions_exposed_target.py +4 -4
  171. methodwebscan/resources/pentest/resources/route/__init__.py +2 -0
  172. methodwebscan/resources/pentest/resources/route/resources/__init__.py +2 -0
  173. methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/__init__.py +2 -0
  174. methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/pentest_route_static_asset_takeover_config.py +4 -4
  175. methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/pentest_route_static_asset_takeover_report.py +4 -4
  176. methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/pentest_route_static_asset_takeover_result.py +3 -3
  177. methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_fingerprint.py +2 -2
  178. methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_static_request.py +3 -3
  179. methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_test.py +3 -3
  180. methodwebscan/resources/pentest/resources/route/resources/staticassettakeover/static_asset_takeover_vulnerable_details.py +3 -3
  181. methodwebscan/resources/pentest/resources/waf/__init__.py +2 -0
  182. methodwebscan/resources/pentest/resources/waf/resources/__init__.py +2 -0
  183. methodwebscan/resources/pentest/resources/waf/resources/detect/__init__.py +2 -0
  184. methodwebscan/resources/pentest/resources/waf/resources/detect/pentest_waf_detect_config.py +3 -3
  185. methodwebscan/resources/pentest/resources/waf/resources/detect/pentest_waf_detect_report.py +4 -4
  186. methodwebscan/resources/pentest/resources/waf/resources/detect/waf_body.py +3 -3
  187. methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detect_attempt.py +4 -4
  188. methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detect_result.py +3 -3
  189. methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detect_target.py +3 -3
  190. methodwebscan/resources/pentest/resources/waf/resources/detect/waf_detected.py +5 -5
  191. methodwebscan/resources/pentest/resources/waf/resources/detect/waf_fingerprint.py +3 -3
  192. {methodwebscan-0.0.159.dist-info → methodwebscan-0.0.161.dist-info}/METADATA +3 -2
  193. {methodwebscan-0.0.159.dist-info → methodwebscan-0.0.161.dist-info}/RECORD +194 -193
  194. {methodwebscan-0.0.159.dist-info → methodwebscan-0.0.161.dist-info}/WHEEL +1 -1
methodwebscan/__init__.py CHANGED
@@ -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,
@@ -2,76 +2,52 @@
2
2
 
3
3
  # nopycln: file
4
4
  import datetime as dt
5
- import typing
6
5
  from collections import defaultdict
7
-
8
- import typing_extensions
6
+ from typing import Any, Callable, Dict, List, Mapping, Tuple, Type, TypeVar, Union, cast
9
7
 
10
8
  import pydantic
11
9
 
12
- from .datetime_utils import serialize_datetime
13
-
14
10
  IS_PYDANTIC_V2 = pydantic.VERSION.startswith("2.")
15
11
 
16
12
  if IS_PYDANTIC_V2:
17
- # isort will try to reformat the comments on these imports, which breaks mypy
18
- # isort: off
19
- from pydantic.v1.datetime_parse import ( # type: ignore # pyright: ignore[reportMissingImports] # Pydantic v2
20
- parse_date as parse_date,
21
- )
22
- from pydantic.v1.datetime_parse import ( # pyright: ignore[reportMissingImports] # Pydantic v2
23
- parse_datetime as parse_datetime,
24
- )
25
- from pydantic.v1.json import ( # type: ignore # pyright: ignore[reportMissingImports] # Pydantic v2
26
- ENCODERS_BY_TYPE as encoders_by_type,
27
- )
28
- from pydantic.v1.typing import ( # type: ignore # pyright: ignore[reportMissingImports] # Pydantic v2
29
- get_args as get_args,
30
- )
31
- from pydantic.v1.typing import ( # pyright: ignore[reportMissingImports] # Pydantic v2
32
- get_origin as get_origin,
33
- )
34
- from pydantic.v1.typing import ( # pyright: ignore[reportMissingImports] # Pydantic v2
35
- is_literal_type as is_literal_type,
36
- )
37
- from pydantic.v1.typing import ( # pyright: ignore[reportMissingImports] # Pydantic v2
38
- is_union as is_union,
39
- )
40
- from pydantic.v1.fields import ModelField as ModelField # type: ignore # pyright: ignore[reportMissingImports] # 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
41
21
  else:
42
- from pydantic.datetime_parse import parse_date as parse_date # type: ignore # Pydantic v1
43
- from pydantic.datetime_parse import parse_datetime as parse_datetime # type: ignore # Pydantic v1
44
- from pydantic.fields import ModelField as ModelField # type: ignore # Pydantic v1
45
- from pydantic.json import ENCODERS_BY_TYPE as encoders_by_type # type: ignore # Pydantic v1
46
- from pydantic.typing import get_args as get_args # type: ignore # Pydantic v1
47
- from pydantic.typing import get_origin as get_origin # type: ignore # Pydantic v1
48
- from pydantic.typing import is_literal_type as is_literal_type # type: ignore # Pydantic v1
49
- from pydantic.typing import is_union as is_union # type: ignore # Pydantic v1
50
-
51
- # isort: on
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]
52
30
 
31
+ from .datetime_utils import serialize_datetime
32
+ from typing_extensions import TypeAlias
53
33
 
54
- T = typing.TypeVar("T")
55
- Model = typing.TypeVar("Model", bound=pydantic.BaseModel)
34
+ T = TypeVar("T")
35
+ Model = TypeVar("Model", bound=pydantic.BaseModel)
56
36
 
57
37
 
58
- def parse_obj_as(type_: typing.Type[T], object_: typing.Any) -> T:
38
+ def parse_obj_as(type_: Type[T], object_: Any) -> T:
59
39
  if IS_PYDANTIC_V2:
60
- adapter = pydantic.TypeAdapter(type_) # type: ignore # Pydantic v2
40
+ adapter = pydantic.TypeAdapter(type_) # type: ignore[attr-defined]
61
41
  return adapter.validate_python(object_)
62
- else:
63
- return pydantic.parse_obj_as(type_, object_)
42
+ return pydantic.parse_obj_as(type_, object_)
64
43
 
65
44
 
66
- def to_jsonable_with_fallback(
67
- obj: typing.Any, fallback_serializer: typing.Callable[[typing.Any], typing.Any]
68
- ) -> typing.Any:
45
+ def to_jsonable_with_fallback(obj: Any, fallback_serializer: Callable[[Any], Any]) -> Any:
69
46
  if IS_PYDANTIC_V2:
70
47
  from pydantic_core import to_jsonable_python
71
48
 
72
49
  return to_jsonable_python(obj, fallback=fallback_serializer)
73
- else:
74
- return fallback_serializer(obj)
50
+ return fallback_serializer(obj)
75
51
 
76
52
 
77
53
  class UniversalBaseModel(pydantic.BaseModel):
@@ -80,81 +56,77 @@ class UniversalBaseModel(pydantic.BaseModel):
80
56
  smart_union = True
81
57
  allow_population_by_field_name = True
82
58
  json_encoders = {dt.datetime: serialize_datetime}
83
- # Allow fields begining with `model_` to be used in the model
59
+ # Allow fields beginning with `model_` to be used in the model
84
60
  protected_namespaces = ()
85
61
 
86
- def json(self, **kwargs: typing.Any) -> str:
87
- kwargs_with_defaults: typing.Any = {
62
+ def json(self, **kwargs: Any) -> str:
63
+ kwargs_with_defaults = {
88
64
  "by_alias": True,
89
65
  "exclude_unset": True,
90
66
  **kwargs,
91
67
  }
92
68
  if IS_PYDANTIC_V2:
93
- return super().model_dump_json(**kwargs_with_defaults) # type: ignore # Pydantic v2
94
- else:
95
- return super().json(**kwargs_with_defaults)
69
+ return super().model_dump_json(**kwargs_with_defaults) # type: ignore[misc]
70
+ return super().json(**kwargs_with_defaults)
96
71
 
97
- def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
72
+ def dict(self, **kwargs: Any) -> Dict[str, Any]:
98
73
  """
99
74
  Override the default dict method to `exclude_unset` by default. This function patches
100
75
  `exclude_unset` to work include fields within non-None default values.
101
76
  """
102
- # Note: the logic here is multi-plexed given the levers exposed in Pydantic V1 vs V2
77
+ # Note: the logic here is multiplexed given the levers exposed in Pydantic V1 vs V2
103
78
  # Pydantic V1's .dict can be extremely slow, so we do not want to call it twice.
104
79
  #
105
80
  # We'd ideally do the same for Pydantic V2, but it shells out to a library to serialize models
106
81
  # that we have less control over, and this is less intrusive than custom serializers for now.
107
82
  if IS_PYDANTIC_V2:
108
- kwargs_with_defaults_exclude_unset: typing.Any = {
83
+ kwargs_with_defaults_exclude_unset = {
109
84
  **kwargs,
110
85
  "by_alias": True,
111
86
  "exclude_unset": True,
112
87
  "exclude_none": False,
113
88
  }
114
- kwargs_with_defaults_exclude_none: typing.Any = {
89
+ kwargs_with_defaults_exclude_none = {
115
90
  **kwargs,
116
91
  "by_alias": True,
117
92
  "exclude_none": True,
118
93
  "exclude_unset": False,
119
94
  }
120
95
  return deep_union_pydantic_dicts(
121
- super().model_dump(**kwargs_with_defaults_exclude_unset), # type: ignore # Pydantic v2
122
- super().model_dump(**kwargs_with_defaults_exclude_none), # type: ignore # Pydantic v2
96
+ super().model_dump(**kwargs_with_defaults_exclude_unset), # type: ignore[misc]
97
+ super().model_dump(**kwargs_with_defaults_exclude_none), # type: ignore[misc]
123
98
  )
124
99
 
125
- else:
126
- _fields_set = self.__fields_set__.copy()
100
+ _fields_set = self.__fields_set__.copy()
127
101
 
128
- fields = _get_model_fields(self.__class__)
129
- for name, field in fields.items():
130
- if name not in _fields_set:
131
- default = _get_field_default(field)
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)
132
106
 
133
- # If the default values are non-null act like they've been set
134
- # This effectively allows exclude_unset to work like exclude_none where
135
- # the latter passes through intentionally set none values.
136
- if default is not None or ("exclude_unset" in kwargs and not kwargs["exclude_unset"]):
137
- _fields_set.add(name)
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)
138
112
 
139
- if default is not None:
140
- self.__fields_set__.add(name)
113
+ if default is not None:
114
+ self.__fields_set__.add(name)
141
115
 
142
- kwargs_with_defaults_exclude_unset_include_fields: typing.Any = {
143
- "by_alias": True,
144
- "exclude_unset": True,
145
- "include": _fields_set,
146
- **kwargs,
147
- }
116
+ kwargs_with_defaults_exclude_unset_include_fields = {
117
+ "by_alias": True,
118
+ "exclude_unset": True,
119
+ "include": _fields_set,
120
+ **kwargs,
121
+ }
148
122
 
149
- return super().dict(**kwargs_with_defaults_exclude_unset_include_fields)
123
+ return super().dict(**kwargs_with_defaults_exclude_unset_include_fields)
150
124
 
151
125
 
152
- def _union_list_of_pydantic_dicts(
153
- source: typing.List[typing.Any], destination: typing.List[typing.Any]
154
- ) -> typing.List[typing.Any]:
155
- converted_list: typing.List[typing.Any] = []
126
+ def _union_list_of_pydantic_dicts(source: List[Any], destination: List[Any]) -> List[Any]:
127
+ converted_list: List[Any] = []
156
128
  for i, item in enumerate(source):
157
- destination_value = destination[i] # type: ignore
129
+ destination_value = destination[i]
158
130
  if isinstance(item, dict):
159
131
  converted_list.append(deep_union_pydantic_dicts(item, destination_value))
160
132
  elif isinstance(item, list):
@@ -164,9 +136,7 @@ def _union_list_of_pydantic_dicts(
164
136
  return converted_list
165
137
 
166
138
 
167
- def deep_union_pydantic_dicts(
168
- source: typing.Dict[str, typing.Any], destination: typing.Dict[str, typing.Any]
169
- ) -> typing.Dict[str, typing.Any]:
139
+ def deep_union_pydantic_dicts(source: Dict[str, Any], destination: Dict[str, Any]) -> Dict[str, Any]:
170
140
  for key, value in source.items():
171
141
  node = destination.setdefault(key, {})
172
142
  if isinstance(value, dict):
@@ -184,18 +154,16 @@ def deep_union_pydantic_dicts(
184
154
 
185
155
  if IS_PYDANTIC_V2:
186
156
 
187
- class V2RootModel(UniversalBaseModel, pydantic.RootModel): # type: ignore # Pydantic v2
157
+ class V2RootModel(UniversalBaseModel, pydantic.RootModel): # type: ignore[name-defined, type-arg]
188
158
  pass
189
159
 
190
- UniversalRootModel: typing_extensions.TypeAlias = V2RootModel # type: ignore
160
+ UniversalRootModel: TypeAlias = V2RootModel
191
161
  else:
192
- UniversalRootModel: typing_extensions.TypeAlias = UniversalBaseModel # type: ignore
162
+ UniversalRootModel: TypeAlias = UniversalBaseModel # type: ignore[misc, no-redef]
193
163
 
194
164
 
195
- def encode_by_type(o: typing.Any) -> typing.Any:
196
- encoders_by_class_tuples: typing.Dict[typing.Callable[[typing.Any], typing.Any], typing.Tuple[typing.Any, ...]] = (
197
- defaultdict(tuple)
198
- )
165
+ def encode_by_type(o: Any) -> Any:
166
+ encoders_by_class_tuples: Dict[Callable[[Any], Any], Tuple[Any, ...]] = defaultdict(tuple)
199
167
  for type_, encoder in encoders_by_type.items():
200
168
  encoders_by_class_tuples[encoder] += (type_,)
201
169
 
@@ -206,54 +174,47 @@ def encode_by_type(o: typing.Any) -> typing.Any:
206
174
  return encoder(o)
207
175
 
208
176
 
209
- def update_forward_refs(model: typing.Type["Model"], **localns: typing.Any) -> None:
177
+ def update_forward_refs(model: Type["Model"], **localns: Any) -> None:
210
178
  if IS_PYDANTIC_V2:
211
- model.model_rebuild(raise_errors=False) # type: ignore # Pydantic v2
179
+ model.model_rebuild(raise_errors=False) # type: ignore[attr-defined]
212
180
  else:
213
181
  model.update_forward_refs(**localns)
214
182
 
215
183
 
216
184
  # Mirrors Pydantic's internal typing
217
- AnyCallable = typing.Callable[..., typing.Any]
185
+ AnyCallable = Callable[..., Any]
218
186
 
219
187
 
220
- def universal_root_validator(
221
- pre: bool = False,
222
- ) -> typing.Callable[[AnyCallable], AnyCallable]:
188
+ def universal_root_validator(pre: bool = False) -> Callable[[AnyCallable], AnyCallable]:
223
189
  def decorator(func: AnyCallable) -> AnyCallable:
224
190
  if IS_PYDANTIC_V2:
225
- return pydantic.model_validator(mode="before" if pre else "after")(func) # type: ignore # Pydantic v2
226
- else:
227
- return pydantic.root_validator(pre=pre)(func) # type: ignore # Pydantic v1
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]
228
193
 
229
194
  return decorator
230
195
 
231
196
 
232
- def universal_field_validator(field_name: str, pre: bool = False) -> typing.Callable[[AnyCallable], AnyCallable]:
197
+ def universal_field_validator(field_name: str, pre: bool = False) -> Callable[[AnyCallable], AnyCallable]:
233
198
  def decorator(func: AnyCallable) -> AnyCallable:
234
199
  if IS_PYDANTIC_V2:
235
- return pydantic.field_validator(field_name, mode="before" if pre else "after")(func) # type: ignore # Pydantic v2
236
- else:
237
- return pydantic.validator(field_name, pre=pre)(func) # type: ignore # Pydantic v1
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))
238
202
 
239
203
  return decorator
240
204
 
241
205
 
242
- PydanticField = typing.Union[ModelField, pydantic.fields.FieldInfo]
206
+ PydanticField = Union[ModelField, pydantic.fields.FieldInfo]
243
207
 
244
208
 
245
- def _get_model_fields(
246
- model: typing.Type["Model"],
247
- ) -> typing.Mapping[str, PydanticField]:
209
+ def _get_model_fields(model: Type["Model"]) -> Mapping[str, PydanticField]:
248
210
  if IS_PYDANTIC_V2:
249
- return model.model_fields # type: ignore # Pydantic v2
250
- else:
251
- return model.__fields__ # type: ignore # Pydantic v1
211
+ return cast(Mapping[str, PydanticField], model.model_fields) # type: ignore[attr-defined]
212
+ return cast(Mapping[str, PydanticField], model.__fields__)
252
213
 
253
214
 
254
- def _get_field_default(field: PydanticField) -> typing.Any:
215
+ def _get_field_default(field: PydanticField) -> Any:
255
216
  try:
256
- value = field.get_default() # type: ignore # Pydantic < v1.10.15
217
+ value = field.get_default() # type: ignore[union-attr]
257
218
  except:
258
219
  value = field.default
259
220
  if IS_PYDANTIC_V2:
@@ -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,