diff --git a/README.md b/README.md index 7cb4c28b..bb967edb 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,8 @@ client = Gitpod( bearer_token=os.environ.get("GITPOD_API_KEY"), # This is the default and can be omitted ) -runner = client.runners.create() -print(runner.access_token) +response = client.identity.get_authenticated_identity() +print(response.organization_id) ``` While you can provide a `bearer_token` keyword argument, @@ -55,8 +55,8 @@ client = AsyncGitpod( async def main() -> None: - runner = await client.runners.create() - print(runner.access_token) + response = await client.identity.get_authenticated_identity() + print(response.organization_id) asyncio.run(main()) @@ -84,12 +84,12 @@ from gitpod import Gitpod client = Gitpod() -all_services = [] +all_environments = [] # Automatically fetches more pages as needed. -for service in client.environments.automations.services.list(): - # Do something with service here - all_services.append(service) -print(all_services) +for environment in client.environments.list(): + # Do something with environment here + all_environments.append(environment) +print(all_environments) ``` Or, asynchronously: @@ -102,11 +102,11 @@ client = AsyncGitpod() async def main() -> None: - all_services = [] + all_environments = [] # Iterate through items across all pages, issuing requests as needed. - async for service in client.environments.automations.services.list(): - all_services.append(service) - print(all_services) + async for environment in client.environments.list(): + all_environments.append(environment) + print(all_environments) asyncio.run(main()) @@ -115,11 +115,11 @@ asyncio.run(main()) Alternatively, you can use the `.has_next_page()`, `.next_page_info()`, or `.get_next_page()` methods for more granular control working with pages: ```python -first_page = await client.environments.automations.services.list() +first_page = await client.environments.list() if first_page.has_next_page(): print(f"will fetch next page using these details: {first_page.next_page_info()}") next_page = await first_page.get_next_page() - print(f"number of items we just fetched: {len(next_page.services)}") + print(f"number of items we just fetched: {len(next_page.environments)}") # Remove `await` for non-async usage. ``` @@ -127,11 +127,11 @@ if first_page.has_next_page(): Or just work directly with the returned data: ```python -first_page = await client.environments.automations.services.list() +first_page = await client.environments.list() print(f"next page cursor: {first_page.pagination.next_token}") # => "next page cursor: ..." -for service in first_page.services: - print(service.id) +for environment in first_page.environments: + print(environment.id) # Remove `await` for non-async usage. ``` @@ -152,7 +152,7 @@ from gitpod import Gitpod client = Gitpod() try: - client.runners.create() + client.identity.get_authenticated_identity() except gitpod.APIConnectionError as e: print("The server could not be reached") print(e.__cause__) # an underlying Exception, likely raised within httpx. @@ -195,7 +195,7 @@ client = Gitpod( ) # Or, configure per-request: -client.with_options(max_retries=5).runners.create() +client.with_options(max_retries=5).identity.get_authenticated_identity() ``` ### Timeouts @@ -218,7 +218,7 @@ client = Gitpod( ) # Override per-request: -client.with_options(timeout=5.0).runners.create() +client.with_options(timeout=5.0).identity.get_authenticated_identity() ``` On timeout, an `APITimeoutError` is thrown. @@ -259,11 +259,11 @@ The "raw" Response object can be accessed by prefixing `.with_raw_response.` to from gitpod import Gitpod client = Gitpod() -response = client.runners.with_raw_response.create() +response = client.identity.with_raw_response.get_authenticated_identity() print(response.headers.get('X-My-Header')) -runner = response.parse() # get the object that `runners.create()` would have returned -print(runner.access_token) +identity = response.parse() # get the object that `identity.get_authenticated_identity()` would have returned +print(identity.organization_id) ``` These methods return an [`APIResponse`](https://github.com/gitpod-io/gitpod-sdk-python/tree/main/src/gitpod/_response.py) object. @@ -277,7 +277,7 @@ The above interface eagerly reads the full response body when you make the reque To stream the response body, use `.with_streaming_response` instead, which requires a context manager and only reads the response body once you call `.read()`, `.text()`, `.json()`, `.iter_bytes()`, `.iter_text()`, `.iter_lines()` or `.parse()`. In the async client, these are async methods. ```python -with client.runners.with_streaming_response.create() as response: +with client.identity.with_streaming_response.get_authenticated_identity() as response: print(response.headers.get("X-My-Header")) for line in response.iter_lines(): diff --git a/tests/test_client.py b/tests/test_client.py index 10ecf0c9..8eff504a 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -735,13 +735,13 @@ def test_parse_retry_after_header(self, remaining_retries: int, retry_after: str @mock.patch("gitpod._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout) @pytest.mark.respx(base_url=base_url) def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None: - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock( + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock( side_effect=httpx.TimeoutException("Test timeout error") ) with pytest.raises(APITimeoutError): self.client.post( - "/gitpod.v1.RunnerService/CreateRunner", + "/gitpod.v1.IdentityService/GetAuthenticatedIdentity", body=cast(object, dict()), cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}, @@ -752,11 +752,11 @@ def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> No @mock.patch("gitpod._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout) @pytest.mark.respx(base_url=base_url) def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None: - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock(return_value=httpx.Response(500)) + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock(return_value=httpx.Response(500)) with pytest.raises(APIStatusError): self.client.post( - "/gitpod.v1.RunnerService/CreateRunner", + "/gitpod.v1.IdentityService/GetAuthenticatedIdentity", body=cast(object, dict()), cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}, @@ -788,9 +788,9 @@ def retry_handler(_request: httpx.Request) -> httpx.Response: return httpx.Response(500) return httpx.Response(200) - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock(side_effect=retry_handler) + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock(side_effect=retry_handler) - response = client.runners.with_raw_response.create() + response = client.identity.with_raw_response.get_authenticated_identity() assert response.retries_taken == failures_before_success assert int(response.http_request.headers.get("x-stainless-retry-count")) == failures_before_success @@ -812,9 +812,11 @@ def retry_handler(_request: httpx.Request) -> httpx.Response: return httpx.Response(500) return httpx.Response(200) - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock(side_effect=retry_handler) + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock(side_effect=retry_handler) - response = client.runners.with_raw_response.create(extra_headers={"x-stainless-retry-count": Omit()}) + response = client.identity.with_raw_response.get_authenticated_identity( + extra_headers={"x-stainless-retry-count": Omit()} + ) assert len(response.http_request.headers.get_list("x-stainless-retry-count")) == 0 @@ -835,9 +837,11 @@ def retry_handler(_request: httpx.Request) -> httpx.Response: return httpx.Response(500) return httpx.Response(200) - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock(side_effect=retry_handler) + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock(side_effect=retry_handler) - response = client.runners.with_raw_response.create(extra_headers={"x-stainless-retry-count": "42"}) + response = client.identity.with_raw_response.get_authenticated_identity( + extra_headers={"x-stainless-retry-count": "42"} + ) assert response.http_request.headers.get("x-stainless-retry-count") == "42" @@ -1531,13 +1535,13 @@ async def test_parse_retry_after_header(self, remaining_retries: int, retry_afte @mock.patch("gitpod._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout) @pytest.mark.respx(base_url=base_url) async def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) -> None: - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock( + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock( side_effect=httpx.TimeoutException("Test timeout error") ) with pytest.raises(APITimeoutError): await self.client.post( - "/gitpod.v1.RunnerService/CreateRunner", + "/gitpod.v1.IdentityService/GetAuthenticatedIdentity", body=cast(object, dict()), cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}, @@ -1548,11 +1552,11 @@ async def test_retrying_timeout_errors_doesnt_leak(self, respx_mock: MockRouter) @mock.patch("gitpod._base_client.BaseClient._calculate_retry_timeout", _low_retry_timeout) @pytest.mark.respx(base_url=base_url) async def test_retrying_status_errors_doesnt_leak(self, respx_mock: MockRouter) -> None: - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock(return_value=httpx.Response(500)) + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock(return_value=httpx.Response(500)) with pytest.raises(APIStatusError): await self.client.post( - "/gitpod.v1.RunnerService/CreateRunner", + "/gitpod.v1.IdentityService/GetAuthenticatedIdentity", body=cast(object, dict()), cast_to=httpx.Response, options={"headers": {RAW_RESPONSE_HEADER: "stream"}}, @@ -1585,9 +1589,9 @@ def retry_handler(_request: httpx.Request) -> httpx.Response: return httpx.Response(500) return httpx.Response(200) - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock(side_effect=retry_handler) + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock(side_effect=retry_handler) - response = await client.runners.with_raw_response.create() + response = await client.identity.with_raw_response.get_authenticated_identity() assert response.retries_taken == failures_before_success assert int(response.http_request.headers.get("x-stainless-retry-count")) == failures_before_success @@ -1610,9 +1614,11 @@ def retry_handler(_request: httpx.Request) -> httpx.Response: return httpx.Response(500) return httpx.Response(200) - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock(side_effect=retry_handler) + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock(side_effect=retry_handler) - response = await client.runners.with_raw_response.create(extra_headers={"x-stainless-retry-count": Omit()}) + response = await client.identity.with_raw_response.get_authenticated_identity( + extra_headers={"x-stainless-retry-count": Omit()} + ) assert len(response.http_request.headers.get_list("x-stainless-retry-count")) == 0 @@ -1634,9 +1640,11 @@ def retry_handler(_request: httpx.Request) -> httpx.Response: return httpx.Response(500) return httpx.Response(200) - respx_mock.post("/gitpod.v1.RunnerService/CreateRunner").mock(side_effect=retry_handler) + respx_mock.post("/gitpod.v1.IdentityService/GetAuthenticatedIdentity").mock(side_effect=retry_handler) - response = await client.runners.with_raw_response.create(extra_headers={"x-stainless-retry-count": "42"}) + response = await client.identity.with_raw_response.get_authenticated_identity( + extra_headers={"x-stainless-retry-count": "42"} + ) assert response.http_request.headers.get("x-stainless-retry-count") == "42"