perplexityai 0.4.0__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of perplexityai might be problematic. Click here for more details.

Files changed (70) hide show
  1. perplexityai-0.5.0/.release-please-manifest.json +3 -0
  2. {perplexityai-0.4.0 → perplexityai-0.5.0}/CHANGELOG.md +8 -0
  3. {perplexityai-0.4.0 → perplexityai-0.5.0}/PKG-INFO +7 -7
  4. {perplexityai-0.4.0 → perplexityai-0.5.0}/README.md +6 -6
  5. {perplexityai-0.4.0 → perplexityai-0.5.0}/pyproject.toml +1 -1
  6. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_client.py +24 -24
  7. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_version.py +1 -1
  8. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/conftest.py +3 -3
  9. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_client.py +63 -101
  10. perplexityai-0.4.0/.release-please-manifest.json +0 -3
  11. {perplexityai-0.4.0 → perplexityai-0.5.0}/.gitignore +0 -0
  12. {perplexityai-0.4.0 → perplexityai-0.5.0}/CONTRIBUTING.md +0 -0
  13. {perplexityai-0.4.0 → perplexityai-0.5.0}/LICENSE +0 -0
  14. {perplexityai-0.4.0 → perplexityai-0.5.0}/SECURITY.md +0 -0
  15. {perplexityai-0.4.0 → perplexityai-0.5.0}/api.md +0 -0
  16. {perplexityai-0.4.0 → perplexityai-0.5.0}/bin/check-release-environment +0 -0
  17. {perplexityai-0.4.0 → perplexityai-0.5.0}/bin/publish-pypi +0 -0
  18. {perplexityai-0.4.0 → perplexityai-0.5.0}/examples/.keep +0 -0
  19. {perplexityai-0.4.0 → perplexityai-0.5.0}/noxfile.py +0 -0
  20. {perplexityai-0.4.0 → perplexityai-0.5.0}/release-please-config.json +0 -0
  21. {perplexityai-0.4.0 → perplexityai-0.5.0}/requirements-dev.lock +0 -0
  22. {perplexityai-0.4.0 → perplexityai-0.5.0}/requirements.lock +0 -0
  23. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/__init__.py +0 -0
  24. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_base_client.py +0 -0
  25. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_compat.py +0 -0
  26. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_constants.py +0 -0
  27. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_exceptions.py +0 -0
  28. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_files.py +0 -0
  29. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_models.py +0 -0
  30. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_qs.py +0 -0
  31. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_resource.py +0 -0
  32. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_response.py +0 -0
  33. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_streaming.py +0 -0
  34. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_types.py +0 -0
  35. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/__init__.py +0 -0
  36. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_compat.py +0 -0
  37. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_datetime_parse.py +0 -0
  38. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_logs.py +0 -0
  39. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_proxy.py +0 -0
  40. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_reflection.py +0 -0
  41. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_resources_proxy.py +0 -0
  42. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_streams.py +0 -0
  43. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_sync.py +0 -0
  44. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_transform.py +0 -0
  45. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_typing.py +0 -0
  46. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/_utils/_utils.py +0 -0
  47. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/lib/.keep +0 -0
  48. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/py.typed +0 -0
  49. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/resources/__init__.py +0 -0
  50. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/resources/search.py +0 -0
  51. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/types/__init__.py +0 -0
  52. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/types/search_create_params.py +0 -0
  53. {perplexityai-0.4.0 → perplexityai-0.5.0}/src/perplexity/types/search_create_response.py +0 -0
  54. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/__init__.py +0 -0
  55. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/api_resources/__init__.py +0 -0
  56. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/api_resources/test_search.py +0 -0
  57. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/sample_file.txt +0 -0
  58. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_deepcopy.py +0 -0
  59. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_extract_files.py +0 -0
  60. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_files.py +0 -0
  61. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_models.py +0 -0
  62. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_qs.py +0 -0
  63. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_required_args.py +0 -0
  64. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_response.py +0 -0
  65. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_streaming.py +0 -0
  66. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_transform.py +0 -0
  67. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_utils/test_datetime_parse.py +0 -0
  68. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_utils/test_proxy.py +0 -0
  69. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/test_utils/test_typing.py +0 -0
  70. {perplexityai-0.4.0 → perplexityai-0.5.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.5.0"
3
+ }
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0 (2025-09-08)
4
+
5
+ Full Changelog: [v0.4.0...v0.5.0](https://github.com/ppl-ai/perplexity-py/compare/v0.4.0...v0.5.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** change bearer_token to api_key ([875bba1](https://github.com/ppl-ai/perplexity-py/commit/875bba126072093d572f00818746b0637a1a56a6))
10
+
3
11
  ## 0.4.0 (2025-09-07)
4
12
 
5
13
  Full Changelog: [v0.3.0...v0.4.0](https://github.com/ppl-ai/perplexity-py/compare/v0.3.0...v0.4.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: perplexityai
3
- Version: 0.4.0
3
+ Version: 0.5.0
4
4
  Summary: The official Python library for the perplexity API
5
5
  Project-URL: Homepage, https://github.com/ppl-ai/perplexity-py
6
6
  Project-URL: Repository, https://github.com/ppl-ai/perplexity-py
@@ -64,7 +64,7 @@ import os
64
64
  from perplexity import Perplexity
65
65
 
66
66
  client = Perplexity(
67
- bearer_token=os.environ.get("PERPLEXITY_API_KEY"), # This is the default and can be omitted
67
+ api_key=os.environ.get("PERPLEXITY_API_KEY"), # This is the default and can be omitted
68
68
  )
69
69
 
70
70
  search = client.search.create(
@@ -73,10 +73,10 @@ search = client.search.create(
73
73
  print(search.id)
74
74
  ```
75
75
 
76
- While you can provide a `bearer_token` keyword argument,
76
+ While you can provide an `api_key` keyword argument,
77
77
  we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
78
- to add `PERPLEXITY_API_KEY="My Bearer Token"` to your `.env` file
79
- so that your Bearer Token is not stored in source control.
78
+ to add `PERPLEXITY_API_KEY="My API Key"` to your `.env` file
79
+ so that your API Key is not stored in source control.
80
80
 
81
81
  ## Async usage
82
82
 
@@ -88,7 +88,7 @@ import asyncio
88
88
  from perplexity import AsyncPerplexity
89
89
 
90
90
  client = AsyncPerplexity(
91
- bearer_token=os.environ.get("PERPLEXITY_API_KEY"), # This is the default and can be omitted
91
+ api_key=os.environ.get("PERPLEXITY_API_KEY"), # This is the default and can be omitted
92
92
  )
93
93
 
94
94
 
@@ -125,7 +125,7 @@ from perplexity import AsyncPerplexity
125
125
 
126
126
  async def main() -> None:
127
127
  async with AsyncPerplexity(
128
- bearer_token="My Bearer Token",
128
+ api_key="My API Key",
129
129
  http_client=DefaultAioHttpClient(),
130
130
  ) as client:
131
131
  search = await client.search.create(
@@ -29,7 +29,7 @@ import os
29
29
  from perplexity import Perplexity
30
30
 
31
31
  client = Perplexity(
32
- bearer_token=os.environ.get("PERPLEXITY_API_KEY"), # This is the default and can be omitted
32
+ api_key=os.environ.get("PERPLEXITY_API_KEY"), # This is the default and can be omitted
33
33
  )
34
34
 
35
35
  search = client.search.create(
@@ -38,10 +38,10 @@ search = client.search.create(
38
38
  print(search.id)
39
39
  ```
40
40
 
41
- While you can provide a `bearer_token` keyword argument,
41
+ While you can provide an `api_key` keyword argument,
42
42
  we recommend using [python-dotenv](https://pypi.org/project/python-dotenv/)
43
- to add `PERPLEXITY_API_KEY="My Bearer Token"` to your `.env` file
44
- so that your Bearer Token is not stored in source control.
43
+ to add `PERPLEXITY_API_KEY="My API Key"` to your `.env` file
44
+ so that your API Key is not stored in source control.
45
45
 
46
46
  ## Async usage
47
47
 
@@ -53,7 +53,7 @@ import asyncio
53
53
  from perplexity import AsyncPerplexity
54
54
 
55
55
  client = AsyncPerplexity(
56
- bearer_token=os.environ.get("PERPLEXITY_API_KEY"), # This is the default and can be omitted
56
+ api_key=os.environ.get("PERPLEXITY_API_KEY"), # This is the default and can be omitted
57
57
  )
58
58
 
59
59
 
@@ -90,7 +90,7 @@ from perplexity import AsyncPerplexity
90
90
 
91
91
  async def main() -> None:
92
92
  async with AsyncPerplexity(
93
- bearer_token="My Bearer Token",
93
+ api_key="My API Key",
94
94
  http_client=DefaultAioHttpClient(),
95
95
  ) as client:
96
96
  search = await client.search.create(
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "perplexityai"
3
- version = "0.4.0"
3
+ version = "0.5.0"
4
4
  description = "The official Python library for the perplexity API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -48,12 +48,12 @@ class Perplexity(SyncAPIClient):
48
48
  with_streaming_response: PerplexityWithStreamedResponse
49
49
 
50
50
  # client options
51
- bearer_token: str
51
+ api_key: str
52
52
 
53
53
  def __init__(
54
54
  self,
55
55
  *,
56
- bearer_token: str | None = None,
56
+ api_key: str | None = None,
57
57
  base_url: str | httpx.URL | None = None,
58
58
  timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN,
59
59
  max_retries: int = DEFAULT_MAX_RETRIES,
@@ -75,15 +75,15 @@ class Perplexity(SyncAPIClient):
75
75
  ) -> None:
76
76
  """Construct a new synchronous Perplexity client instance.
77
77
 
78
- This automatically infers the `bearer_token` argument from the `PERPLEXITY_API_KEY` environment variable if it is not provided.
78
+ This automatically infers the `api_key` argument from the `PERPLEXITY_API_KEY` environment variable if it is not provided.
79
79
  """
80
- if bearer_token is None:
81
- bearer_token = os.environ.get("PERPLEXITY_API_KEY")
82
- if bearer_token is None:
80
+ if api_key is None:
81
+ api_key = os.environ.get("PERPLEXITY_API_KEY")
82
+ if api_key is None:
83
83
  raise PerplexityError(
84
- "The bearer_token client option must be set either by passing bearer_token to the client or by setting the PERPLEXITY_API_KEY environment variable"
84
+ "The api_key client option must be set either by passing api_key to the client or by setting the PERPLEXITY_API_KEY environment variable"
85
85
  )
86
- self.bearer_token = bearer_token
86
+ self.api_key = api_key
87
87
 
88
88
  if base_url is None:
89
89
  base_url = os.environ.get("PERPLEXITY_BASE_URL")
@@ -113,8 +113,8 @@ class Perplexity(SyncAPIClient):
113
113
  @property
114
114
  @override
115
115
  def auth_headers(self) -> dict[str, str]:
116
- bearer_token = self.bearer_token
117
- return {"Authorization": f"Bearer {bearer_token}"}
116
+ api_key = self.api_key
117
+ return {"Authorization": f"Bearer {api_key}"}
118
118
 
119
119
  @property
120
120
  @override
@@ -128,7 +128,7 @@ class Perplexity(SyncAPIClient):
128
128
  def copy(
129
129
  self,
130
130
  *,
131
- bearer_token: str | None = None,
131
+ api_key: str | None = None,
132
132
  base_url: str | httpx.URL | None = None,
133
133
  timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
134
134
  http_client: httpx.Client | None = None,
@@ -162,7 +162,7 @@ class Perplexity(SyncAPIClient):
162
162
 
163
163
  http_client = http_client or self._client
164
164
  return self.__class__(
165
- bearer_token=bearer_token or self.bearer_token,
165
+ api_key=api_key or self.api_key,
166
166
  base_url=base_url or self.base_url,
167
167
  timeout=self.timeout if isinstance(timeout, NotGiven) else timeout,
168
168
  http_client=http_client,
@@ -216,12 +216,12 @@ class AsyncPerplexity(AsyncAPIClient):
216
216
  with_streaming_response: AsyncPerplexityWithStreamedResponse
217
217
 
218
218
  # client options
219
- bearer_token: str
219
+ api_key: str
220
220
 
221
221
  def __init__(
222
222
  self,
223
223
  *,
224
- bearer_token: str | None = None,
224
+ api_key: str | None = None,
225
225
  base_url: str | httpx.URL | None = None,
226
226
  timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN,
227
227
  max_retries: int = DEFAULT_MAX_RETRIES,
@@ -243,15 +243,15 @@ class AsyncPerplexity(AsyncAPIClient):
243
243
  ) -> None:
244
244
  """Construct a new async AsyncPerplexity client instance.
245
245
 
246
- This automatically infers the `bearer_token` argument from the `PERPLEXITY_API_KEY` environment variable if it is not provided.
246
+ This automatically infers the `api_key` argument from the `PERPLEXITY_API_KEY` environment variable if it is not provided.
247
247
  """
248
- if bearer_token is None:
249
- bearer_token = os.environ.get("PERPLEXITY_API_KEY")
250
- if bearer_token is None:
248
+ if api_key is None:
249
+ api_key = os.environ.get("PERPLEXITY_API_KEY")
250
+ if api_key is None:
251
251
  raise PerplexityError(
252
- "The bearer_token client option must be set either by passing bearer_token to the client or by setting the PERPLEXITY_API_KEY environment variable"
252
+ "The api_key client option must be set either by passing api_key to the client or by setting the PERPLEXITY_API_KEY environment variable"
253
253
  )
254
- self.bearer_token = bearer_token
254
+ self.api_key = api_key
255
255
 
256
256
  if base_url is None:
257
257
  base_url = os.environ.get("PERPLEXITY_BASE_URL")
@@ -281,8 +281,8 @@ class AsyncPerplexity(AsyncAPIClient):
281
281
  @property
282
282
  @override
283
283
  def auth_headers(self) -> dict[str, str]:
284
- bearer_token = self.bearer_token
285
- return {"Authorization": f"Bearer {bearer_token}"}
284
+ api_key = self.api_key
285
+ return {"Authorization": f"Bearer {api_key}"}
286
286
 
287
287
  @property
288
288
  @override
@@ -296,7 +296,7 @@ class AsyncPerplexity(AsyncAPIClient):
296
296
  def copy(
297
297
  self,
298
298
  *,
299
- bearer_token: str | None = None,
299
+ api_key: str | None = None,
300
300
  base_url: str | httpx.URL | None = None,
301
301
  timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
302
302
  http_client: httpx.AsyncClient | None = None,
@@ -330,7 +330,7 @@ class AsyncPerplexity(AsyncAPIClient):
330
330
 
331
331
  http_client = http_client or self._client
332
332
  return self.__class__(
333
- bearer_token=bearer_token or self.bearer_token,
333
+ api_key=api_key or self.api_key,
334
334
  base_url=base_url or self.base_url,
335
335
  timeout=self.timeout if isinstance(timeout, NotGiven) else timeout,
336
336
  http_client=http_client,
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "perplexity"
4
- __version__ = "0.4.0" # x-release-please-version
4
+ __version__ = "0.5.0" # x-release-please-version
@@ -45,7 +45,7 @@ def pytest_collection_modifyitems(items: list[pytest.Function]) -> None:
45
45
 
46
46
  base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
47
47
 
48
- bearer_token = "My Bearer Token"
48
+ api_key = "My API Key"
49
49
 
50
50
 
51
51
  @pytest.fixture(scope="session")
@@ -54,7 +54,7 @@ def client(request: FixtureRequest) -> Iterator[Perplexity]:
54
54
  if not isinstance(strict, bool):
55
55
  raise TypeError(f"Unexpected fixture parameter type {type(strict)}, expected {bool}")
56
56
 
57
- with Perplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=strict) as client:
57
+ with Perplexity(base_url=base_url, api_key=api_key, _strict_response_validation=strict) as client:
58
58
  yield client
59
59
 
60
60
 
@@ -79,6 +79,6 @@ async def async_client(request: FixtureRequest) -> AsyncIterator[AsyncPerplexity
79
79
  raise TypeError(f"Unexpected fixture parameter type {type(param)}, expected bool or dict")
80
80
 
81
81
  async with AsyncPerplexity(
82
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=strict, http_client=http_client
82
+ base_url=base_url, api_key=api_key, _strict_response_validation=strict, http_client=http_client
83
83
  ) as client:
84
84
  yield client
@@ -37,7 +37,7 @@ from perplexity._base_client import (
37
37
  from .utils import update_env
38
38
 
39
39
  base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
40
- bearer_token = "My Bearer Token"
40
+ api_key = "My API Key"
41
41
 
42
42
 
43
43
  def _get_params(client: BaseClient[Any, Any]) -> dict[str, str]:
@@ -59,7 +59,7 @@ def _get_open_connections(client: Perplexity | AsyncPerplexity) -> int:
59
59
 
60
60
 
61
61
  class TestPerplexity:
62
- client = Perplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
62
+ client = Perplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
63
63
 
64
64
  @pytest.mark.respx(base_url=base_url)
65
65
  def test_raw_response(self, respx_mock: MockRouter) -> None:
@@ -85,9 +85,9 @@ class TestPerplexity:
85
85
  copied = self.client.copy()
86
86
  assert id(copied) != id(self.client)
87
87
 
88
- copied = self.client.copy(bearer_token="another My Bearer Token")
89
- assert copied.bearer_token == "another My Bearer Token"
90
- assert self.client.bearer_token == "My Bearer Token"
88
+ copied = self.client.copy(api_key="another My API Key")
89
+ assert copied.api_key == "another My API Key"
90
+ assert self.client.api_key == "My API Key"
91
91
 
92
92
  def test_copy_default_options(self) -> None:
93
93
  # options that have a default are overridden correctly
@@ -107,10 +107,7 @@ class TestPerplexity:
107
107
 
108
108
  def test_copy_default_headers(self) -> None:
109
109
  client = Perplexity(
110
- base_url=base_url,
111
- bearer_token=bearer_token,
112
- _strict_response_validation=True,
113
- default_headers={"X-Foo": "bar"},
110
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, default_headers={"X-Foo": "bar"}
114
111
  )
115
112
  assert client.default_headers["X-Foo"] == "bar"
116
113
 
@@ -144,7 +141,7 @@ class TestPerplexity:
144
141
 
145
142
  def test_copy_default_query(self) -> None:
146
143
  client = Perplexity(
147
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, default_query={"foo": "bar"}
144
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, default_query={"foo": "bar"}
148
145
  )
149
146
  assert _get_params(client)["foo"] == "bar"
150
147
 
@@ -270,7 +267,7 @@ class TestPerplexity:
270
267
 
271
268
  def test_client_timeout_option(self) -> None:
272
269
  client = Perplexity(
273
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, timeout=httpx.Timeout(0)
270
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, timeout=httpx.Timeout(0)
274
271
  )
275
272
 
276
273
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
@@ -281,7 +278,7 @@ class TestPerplexity:
281
278
  # custom timeout given to the httpx client should be used
282
279
  with httpx.Client(timeout=None) as http_client:
283
280
  client = Perplexity(
284
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, http_client=http_client
281
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, http_client=http_client
285
282
  )
286
283
 
287
284
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
@@ -291,7 +288,7 @@ class TestPerplexity:
291
288
  # no timeout given to the httpx client should not use the httpx default
292
289
  with httpx.Client() as http_client:
293
290
  client = Perplexity(
294
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, http_client=http_client
291
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, http_client=http_client
295
292
  )
296
293
 
297
294
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
@@ -301,7 +298,7 @@ class TestPerplexity:
301
298
  # explicitly passing the default timeout currently results in it being ignored
302
299
  with httpx.Client(timeout=HTTPX_DEFAULT_TIMEOUT) as http_client:
303
300
  client = Perplexity(
304
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, http_client=http_client
301
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, http_client=http_client
305
302
  )
306
303
 
307
304
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
@@ -313,17 +310,14 @@ class TestPerplexity:
313
310
  async with httpx.AsyncClient() as http_client:
314
311
  Perplexity(
315
312
  base_url=base_url,
316
- bearer_token=bearer_token,
313
+ api_key=api_key,
317
314
  _strict_response_validation=True,
318
315
  http_client=cast(Any, http_client),
319
316
  )
320
317
 
321
318
  def test_default_headers_option(self) -> None:
322
319
  client = Perplexity(
323
- base_url=base_url,
324
- bearer_token=bearer_token,
325
- _strict_response_validation=True,
326
- default_headers={"X-Foo": "bar"},
320
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, default_headers={"X-Foo": "bar"}
327
321
  )
328
322
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
329
323
  assert request.headers.get("x-foo") == "bar"
@@ -331,7 +325,7 @@ class TestPerplexity:
331
325
 
332
326
  client2 = Perplexity(
333
327
  base_url=base_url,
334
- bearer_token=bearer_token,
328
+ api_key=api_key,
335
329
  _strict_response_validation=True,
336
330
  default_headers={
337
331
  "X-Foo": "stainless",
@@ -343,21 +337,18 @@ class TestPerplexity:
343
337
  assert request.headers.get("x-stainless-lang") == "my-overriding-header"
344
338
 
345
339
  def test_validate_headers(self) -> None:
346
- client = Perplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
340
+ client = Perplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
347
341
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
348
- assert request.headers.get("Authorization") == f"Bearer {bearer_token}"
342
+ assert request.headers.get("Authorization") == f"Bearer {api_key}"
349
343
 
350
344
  with pytest.raises(PerplexityError):
351
345
  with update_env(**{"PERPLEXITY_API_KEY": Omit()}):
352
- client2 = Perplexity(base_url=base_url, bearer_token=None, _strict_response_validation=True)
346
+ client2 = Perplexity(base_url=base_url, api_key=None, _strict_response_validation=True)
353
347
  _ = client2
354
348
 
355
349
  def test_default_query_option(self) -> None:
356
350
  client = Perplexity(
357
- base_url=base_url,
358
- bearer_token=bearer_token,
359
- _strict_response_validation=True,
360
- default_query={"query_param": "bar"},
351
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, default_query={"query_param": "bar"}
361
352
  )
362
353
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
363
354
  url = httpx.URL(request.url)
@@ -557,9 +548,7 @@ class TestPerplexity:
557
548
  assert response.foo == 2
558
549
 
559
550
  def test_base_url_setter(self) -> None:
560
- client = Perplexity(
561
- base_url="https://example.com/from_init", bearer_token=bearer_token, _strict_response_validation=True
562
- )
551
+ client = Perplexity(base_url="https://example.com/from_init", api_key=api_key, _strict_response_validation=True)
563
552
  assert client.base_url == "https://example.com/from_init/"
564
553
 
565
554
  client.base_url = "https://example.com/from_setter" # type: ignore[assignment]
@@ -568,20 +557,18 @@ class TestPerplexity:
568
557
 
569
558
  def test_base_url_env(self) -> None:
570
559
  with update_env(PERPLEXITY_BASE_URL="http://localhost:5000/from/env"):
571
- client = Perplexity(bearer_token=bearer_token, _strict_response_validation=True)
560
+ client = Perplexity(api_key=api_key, _strict_response_validation=True)
572
561
  assert client.base_url == "http://localhost:5000/from/env/"
573
562
 
574
563
  @pytest.mark.parametrize(
575
564
  "client",
576
565
  [
577
566
  Perplexity(
578
- base_url="http://localhost:5000/custom/path/",
579
- bearer_token=bearer_token,
580
- _strict_response_validation=True,
567
+ base_url="http://localhost:5000/custom/path/", api_key=api_key, _strict_response_validation=True
581
568
  ),
582
569
  Perplexity(
583
570
  base_url="http://localhost:5000/custom/path/",
584
- bearer_token=bearer_token,
571
+ api_key=api_key,
585
572
  _strict_response_validation=True,
586
573
  http_client=httpx.Client(),
587
574
  ),
@@ -602,13 +589,11 @@ class TestPerplexity:
602
589
  "client",
603
590
  [
604
591
  Perplexity(
605
- base_url="http://localhost:5000/custom/path/",
606
- bearer_token=bearer_token,
607
- _strict_response_validation=True,
592
+ base_url="http://localhost:5000/custom/path/", api_key=api_key, _strict_response_validation=True
608
593
  ),
609
594
  Perplexity(
610
595
  base_url="http://localhost:5000/custom/path/",
611
- bearer_token=bearer_token,
596
+ api_key=api_key,
612
597
  _strict_response_validation=True,
613
598
  http_client=httpx.Client(),
614
599
  ),
@@ -629,13 +614,11 @@ class TestPerplexity:
629
614
  "client",
630
615
  [
631
616
  Perplexity(
632
- base_url="http://localhost:5000/custom/path/",
633
- bearer_token=bearer_token,
634
- _strict_response_validation=True,
617
+ base_url="http://localhost:5000/custom/path/", api_key=api_key, _strict_response_validation=True
635
618
  ),
636
619
  Perplexity(
637
620
  base_url="http://localhost:5000/custom/path/",
638
- bearer_token=bearer_token,
621
+ api_key=api_key,
639
622
  _strict_response_validation=True,
640
623
  http_client=httpx.Client(),
641
624
  ),
@@ -653,7 +636,7 @@ class TestPerplexity:
653
636
  assert request.url == "https://myapi.com/foo"
654
637
 
655
638
  def test_copied_client_does_not_close_http(self) -> None:
656
- client = Perplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
639
+ client = Perplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
657
640
  assert not client.is_closed()
658
641
 
659
642
  copied = client.copy()
@@ -664,7 +647,7 @@ class TestPerplexity:
664
647
  assert not client.is_closed()
665
648
 
666
649
  def test_client_context_manager(self) -> None:
667
- client = Perplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
650
+ client = Perplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
668
651
  with client as c2:
669
652
  assert c2 is client
670
653
  assert not c2.is_closed()
@@ -686,10 +669,7 @@ class TestPerplexity:
686
669
  def test_client_max_retries_validation(self) -> None:
687
670
  with pytest.raises(TypeError, match=r"max_retries cannot be None"):
688
671
  Perplexity(
689
- base_url=base_url,
690
- bearer_token=bearer_token,
691
- _strict_response_validation=True,
692
- max_retries=cast(Any, None),
672
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, max_retries=cast(Any, None)
693
673
  )
694
674
 
695
675
  @pytest.mark.respx(base_url=base_url)
@@ -699,12 +679,12 @@ class TestPerplexity:
699
679
 
700
680
  respx_mock.get("/foo").mock(return_value=httpx.Response(200, text="my-custom-format"))
701
681
 
702
- strict_client = Perplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
682
+ strict_client = Perplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
703
683
 
704
684
  with pytest.raises(APIResponseValidationError):
705
685
  strict_client.get("/foo", cast_to=Model)
706
686
 
707
- client = Perplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=False)
687
+ client = Perplexity(base_url=base_url, api_key=api_key, _strict_response_validation=False)
708
688
 
709
689
  response = client.get("/foo", cast_to=Model)
710
690
  assert isinstance(response, str) # type: ignore[unreachable]
@@ -732,7 +712,7 @@ class TestPerplexity:
732
712
  )
733
713
  @mock.patch("time.time", mock.MagicMock(return_value=1696004797))
734
714
  def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str, timeout: float) -> None:
735
- client = Perplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
715
+ client = Perplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
736
716
 
737
717
  headers = httpx.Headers({"retry-after": retry_after})
738
718
  options = FinalRequestOptions(method="get", url="/foo", max_retries=3)
@@ -890,7 +870,7 @@ class TestPerplexity:
890
870
 
891
871
 
892
872
  class TestAsyncPerplexity:
893
- client = AsyncPerplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
873
+ client = AsyncPerplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
894
874
 
895
875
  @pytest.mark.respx(base_url=base_url)
896
876
  @pytest.mark.asyncio
@@ -918,9 +898,9 @@ class TestAsyncPerplexity:
918
898
  copied = self.client.copy()
919
899
  assert id(copied) != id(self.client)
920
900
 
921
- copied = self.client.copy(bearer_token="another My Bearer Token")
922
- assert copied.bearer_token == "another My Bearer Token"
923
- assert self.client.bearer_token == "My Bearer Token"
901
+ copied = self.client.copy(api_key="another My API Key")
902
+ assert copied.api_key == "another My API Key"
903
+ assert self.client.api_key == "My API Key"
924
904
 
925
905
  def test_copy_default_options(self) -> None:
926
906
  # options that have a default are overridden correctly
@@ -940,10 +920,7 @@ class TestAsyncPerplexity:
940
920
 
941
921
  def test_copy_default_headers(self) -> None:
942
922
  client = AsyncPerplexity(
943
- base_url=base_url,
944
- bearer_token=bearer_token,
945
- _strict_response_validation=True,
946
- default_headers={"X-Foo": "bar"},
923
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, default_headers={"X-Foo": "bar"}
947
924
  )
948
925
  assert client.default_headers["X-Foo"] == "bar"
949
926
 
@@ -977,7 +954,7 @@ class TestAsyncPerplexity:
977
954
 
978
955
  def test_copy_default_query(self) -> None:
979
956
  client = AsyncPerplexity(
980
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, default_query={"foo": "bar"}
957
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, default_query={"foo": "bar"}
981
958
  )
982
959
  assert _get_params(client)["foo"] == "bar"
983
960
 
@@ -1103,7 +1080,7 @@ class TestAsyncPerplexity:
1103
1080
 
1104
1081
  async def test_client_timeout_option(self) -> None:
1105
1082
  client = AsyncPerplexity(
1106
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, timeout=httpx.Timeout(0)
1083
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, timeout=httpx.Timeout(0)
1107
1084
  )
1108
1085
 
1109
1086
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
@@ -1114,7 +1091,7 @@ class TestAsyncPerplexity:
1114
1091
  # custom timeout given to the httpx client should be used
1115
1092
  async with httpx.AsyncClient(timeout=None) as http_client:
1116
1093
  client = AsyncPerplexity(
1117
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, http_client=http_client
1094
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, http_client=http_client
1118
1095
  )
1119
1096
 
1120
1097
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
@@ -1124,7 +1101,7 @@ class TestAsyncPerplexity:
1124
1101
  # no timeout given to the httpx client should not use the httpx default
1125
1102
  async with httpx.AsyncClient() as http_client:
1126
1103
  client = AsyncPerplexity(
1127
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, http_client=http_client
1104
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, http_client=http_client
1128
1105
  )
1129
1106
 
1130
1107
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
@@ -1134,7 +1111,7 @@ class TestAsyncPerplexity:
1134
1111
  # explicitly passing the default timeout currently results in it being ignored
1135
1112
  async with httpx.AsyncClient(timeout=HTTPX_DEFAULT_TIMEOUT) as http_client:
1136
1113
  client = AsyncPerplexity(
1137
- base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True, http_client=http_client
1114
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, http_client=http_client
1138
1115
  )
1139
1116
 
1140
1117
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
@@ -1146,17 +1123,14 @@ class TestAsyncPerplexity:
1146
1123
  with httpx.Client() as http_client:
1147
1124
  AsyncPerplexity(
1148
1125
  base_url=base_url,
1149
- bearer_token=bearer_token,
1126
+ api_key=api_key,
1150
1127
  _strict_response_validation=True,
1151
1128
  http_client=cast(Any, http_client),
1152
1129
  )
1153
1130
 
1154
1131
  def test_default_headers_option(self) -> None:
1155
1132
  client = AsyncPerplexity(
1156
- base_url=base_url,
1157
- bearer_token=bearer_token,
1158
- _strict_response_validation=True,
1159
- default_headers={"X-Foo": "bar"},
1133
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, default_headers={"X-Foo": "bar"}
1160
1134
  )
1161
1135
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
1162
1136
  assert request.headers.get("x-foo") == "bar"
@@ -1164,7 +1138,7 @@ class TestAsyncPerplexity:
1164
1138
 
1165
1139
  client2 = AsyncPerplexity(
1166
1140
  base_url=base_url,
1167
- bearer_token=bearer_token,
1141
+ api_key=api_key,
1168
1142
  _strict_response_validation=True,
1169
1143
  default_headers={
1170
1144
  "X-Foo": "stainless",
@@ -1176,21 +1150,18 @@ class TestAsyncPerplexity:
1176
1150
  assert request.headers.get("x-stainless-lang") == "my-overriding-header"
1177
1151
 
1178
1152
  def test_validate_headers(self) -> None:
1179
- client = AsyncPerplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
1153
+ client = AsyncPerplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
1180
1154
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
1181
- assert request.headers.get("Authorization") == f"Bearer {bearer_token}"
1155
+ assert request.headers.get("Authorization") == f"Bearer {api_key}"
1182
1156
 
1183
1157
  with pytest.raises(PerplexityError):
1184
1158
  with update_env(**{"PERPLEXITY_API_KEY": Omit()}):
1185
- client2 = AsyncPerplexity(base_url=base_url, bearer_token=None, _strict_response_validation=True)
1159
+ client2 = AsyncPerplexity(base_url=base_url, api_key=None, _strict_response_validation=True)
1186
1160
  _ = client2
1187
1161
 
1188
1162
  def test_default_query_option(self) -> None:
1189
1163
  client = AsyncPerplexity(
1190
- base_url=base_url,
1191
- bearer_token=bearer_token,
1192
- _strict_response_validation=True,
1193
- default_query={"query_param": "bar"},
1164
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, default_query={"query_param": "bar"}
1194
1165
  )
1195
1166
  request = client._build_request(FinalRequestOptions(method="get", url="/foo"))
1196
1167
  url = httpx.URL(request.url)
@@ -1391,7 +1362,7 @@ class TestAsyncPerplexity:
1391
1362
 
1392
1363
  def test_base_url_setter(self) -> None:
1393
1364
  client = AsyncPerplexity(
1394
- base_url="https://example.com/from_init", bearer_token=bearer_token, _strict_response_validation=True
1365
+ base_url="https://example.com/from_init", api_key=api_key, _strict_response_validation=True
1395
1366
  )
1396
1367
  assert client.base_url == "https://example.com/from_init/"
1397
1368
 
@@ -1401,20 +1372,18 @@ class TestAsyncPerplexity:
1401
1372
 
1402
1373
  def test_base_url_env(self) -> None:
1403
1374
  with update_env(PERPLEXITY_BASE_URL="http://localhost:5000/from/env"):
1404
- client = AsyncPerplexity(bearer_token=bearer_token, _strict_response_validation=True)
1375
+ client = AsyncPerplexity(api_key=api_key, _strict_response_validation=True)
1405
1376
  assert client.base_url == "http://localhost:5000/from/env/"
1406
1377
 
1407
1378
  @pytest.mark.parametrize(
1408
1379
  "client",
1409
1380
  [
1410
1381
  AsyncPerplexity(
1411
- base_url="http://localhost:5000/custom/path/",
1412
- bearer_token=bearer_token,
1413
- _strict_response_validation=True,
1382
+ base_url="http://localhost:5000/custom/path/", api_key=api_key, _strict_response_validation=True
1414
1383
  ),
1415
1384
  AsyncPerplexity(
1416
1385
  base_url="http://localhost:5000/custom/path/",
1417
- bearer_token=bearer_token,
1386
+ api_key=api_key,
1418
1387
  _strict_response_validation=True,
1419
1388
  http_client=httpx.AsyncClient(),
1420
1389
  ),
@@ -1435,13 +1404,11 @@ class TestAsyncPerplexity:
1435
1404
  "client",
1436
1405
  [
1437
1406
  AsyncPerplexity(
1438
- base_url="http://localhost:5000/custom/path/",
1439
- bearer_token=bearer_token,
1440
- _strict_response_validation=True,
1407
+ base_url="http://localhost:5000/custom/path/", api_key=api_key, _strict_response_validation=True
1441
1408
  ),
1442
1409
  AsyncPerplexity(
1443
1410
  base_url="http://localhost:5000/custom/path/",
1444
- bearer_token=bearer_token,
1411
+ api_key=api_key,
1445
1412
  _strict_response_validation=True,
1446
1413
  http_client=httpx.AsyncClient(),
1447
1414
  ),
@@ -1462,13 +1429,11 @@ class TestAsyncPerplexity:
1462
1429
  "client",
1463
1430
  [
1464
1431
  AsyncPerplexity(
1465
- base_url="http://localhost:5000/custom/path/",
1466
- bearer_token=bearer_token,
1467
- _strict_response_validation=True,
1432
+ base_url="http://localhost:5000/custom/path/", api_key=api_key, _strict_response_validation=True
1468
1433
  ),
1469
1434
  AsyncPerplexity(
1470
1435
  base_url="http://localhost:5000/custom/path/",
1471
- bearer_token=bearer_token,
1436
+ api_key=api_key,
1472
1437
  _strict_response_validation=True,
1473
1438
  http_client=httpx.AsyncClient(),
1474
1439
  ),
@@ -1486,7 +1451,7 @@ class TestAsyncPerplexity:
1486
1451
  assert request.url == "https://myapi.com/foo"
1487
1452
 
1488
1453
  async def test_copied_client_does_not_close_http(self) -> None:
1489
- client = AsyncPerplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
1454
+ client = AsyncPerplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
1490
1455
  assert not client.is_closed()
1491
1456
 
1492
1457
  copied = client.copy()
@@ -1498,7 +1463,7 @@ class TestAsyncPerplexity:
1498
1463
  assert not client.is_closed()
1499
1464
 
1500
1465
  async def test_client_context_manager(self) -> None:
1501
- client = AsyncPerplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
1466
+ client = AsyncPerplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
1502
1467
  async with client as c2:
1503
1468
  assert c2 is client
1504
1469
  assert not c2.is_closed()
@@ -1521,10 +1486,7 @@ class TestAsyncPerplexity:
1521
1486
  async def test_client_max_retries_validation(self) -> None:
1522
1487
  with pytest.raises(TypeError, match=r"max_retries cannot be None"):
1523
1488
  AsyncPerplexity(
1524
- base_url=base_url,
1525
- bearer_token=bearer_token,
1526
- _strict_response_validation=True,
1527
- max_retries=cast(Any, None),
1489
+ base_url=base_url, api_key=api_key, _strict_response_validation=True, max_retries=cast(Any, None)
1528
1490
  )
1529
1491
 
1530
1492
  @pytest.mark.respx(base_url=base_url)
@@ -1535,12 +1497,12 @@ class TestAsyncPerplexity:
1535
1497
 
1536
1498
  respx_mock.get("/foo").mock(return_value=httpx.Response(200, text="my-custom-format"))
1537
1499
 
1538
- strict_client = AsyncPerplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
1500
+ strict_client = AsyncPerplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
1539
1501
 
1540
1502
  with pytest.raises(APIResponseValidationError):
1541
1503
  await strict_client.get("/foo", cast_to=Model)
1542
1504
 
1543
- client = AsyncPerplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=False)
1505
+ client = AsyncPerplexity(base_url=base_url, api_key=api_key, _strict_response_validation=False)
1544
1506
 
1545
1507
  response = await client.get("/foo", cast_to=Model)
1546
1508
  assert isinstance(response, str) # type: ignore[unreachable]
@@ -1569,7 +1531,7 @@ class TestAsyncPerplexity:
1569
1531
  @mock.patch("time.time", mock.MagicMock(return_value=1696004797))
1570
1532
  @pytest.mark.asyncio
1571
1533
  async def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str, timeout: float) -> None:
1572
- client = AsyncPerplexity(base_url=base_url, bearer_token=bearer_token, _strict_response_validation=True)
1534
+ client = AsyncPerplexity(base_url=base_url, api_key=api_key, _strict_response_validation=True)
1573
1535
 
1574
1536
  headers = httpx.Headers({"retry-after": retry_after})
1575
1537
  options = FinalRequestOptions(method="get", url="/foo", max_retries=3)
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.4.0"
3
- }
File without changes
File without changes
File without changes
File without changes
File without changes