Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .fern/metadata.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"cliVersion": "5.50.0",
"generatorName": "fernapi/fern-python-sdk",
"generatorVersion": "5.29.3",
"generatorVersion": "5.29.4",
"generatorConfig": {
"inline_request_params": true,
"client": {
Expand All @@ -23,10 +23,10 @@
}
]
},
"originGitCommit": "31f498c0a9babdc0eec5ae88e1212a254b2f2561",
"originGitCommit": "a79351b3e09fa9821e0727a5fbe602b45ec24360",
"originGitCommitIsDirty": false,
"invokedBy": "ci",
"requestedVersion": "1.3.5",
"requestedVersion": "1.3.6",
"ciProvider": "github",
"sdkVersion": "1.3.5"
"sdkVersion": "1.3.6"
}
8 changes: 7 additions & 1 deletion .fern/replay.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ dynamic = ["version"]

[tool.poetry]
name = "schematichq"
version = "1.3.5"
version = "1.3.6"
description = ""
readme = "README.md"
authors = []
Expand Down
6 changes: 6 additions & 0 deletions src/schematic/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,8 @@
SegmentStatusResp,
SkippedEntitlementErrorResponseData,
SkippedEntitlementResponseData,
SlackConnectInviteStatus,
SlackConnectInviteView,
SortDirection,
StripeEmbedInfo,
StripeIntegrationConfig,
Expand Down Expand Up @@ -1694,6 +1696,8 @@
"SendTestWebhookActionResponse": ".webhooks",
"SkippedEntitlementErrorResponseData": ".types",
"SkippedEntitlementResponseData": ".types",
"SlackConnectInviteStatus": ".types",
"SlackConnectInviteView": ".types",
"SoftDeleteBillingCreditResponse": ".credits",
"SortDirection": ".types",
"StartDataImportResponse": ".integrationsapi",
Expand Down Expand Up @@ -2613,6 +2617,8 @@ def __dir__():
"SendTestWebhookActionResponse",
"SkippedEntitlementErrorResponseData",
"SkippedEntitlementResponseData",
"SlackConnectInviteStatus",
"SlackConnectInviteView",
"SoftDeleteBillingCreditResponse",
"SortDirection",
"StartDataImportResponse",
Expand Down
4 changes: 2 additions & 2 deletions src/schematic/core/client_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ def get_headers(self) -> typing.Dict[str, str]:
import platform

headers: typing.Dict[str, str] = {
"User-Agent": "schematichq/1.3.5",
"User-Agent": "schematichq/1.3.6",
"X-Fern-Language": "Python",
"X-Fern-Runtime": f"python/{platform.python_version()}",
"X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}",
"X-Fern-SDK-Name": "schematichq",
"X-Fern-SDK-Version": "1.3.5",
"X-Fern-SDK-Version": "1.3.6",
**(self.get_custom_headers() or {}),
}
headers["X-Schematic-Api-Key"] = self.api_key
Expand Down
6 changes: 6 additions & 0 deletions src/schematic/types/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,8 @@
from .segment_status_resp import SegmentStatusResp
from .skipped_entitlement_error_response_data import SkippedEntitlementErrorResponseData
from .skipped_entitlement_response_data import SkippedEntitlementResponseData
from .slack_connect_invite_status import SlackConnectInviteStatus
from .slack_connect_invite_view import SlackConnectInviteView
from .sort_direction import SortDirection
from .stripe_embed_info import StripeEmbedInfo
from .stripe_integration_config import StripeIntegrationConfig
Expand Down Expand Up @@ -891,6 +893,8 @@
"SegmentStatusResp": ".segment_status_resp",
"SkippedEntitlementErrorResponseData": ".skipped_entitlement_error_response_data",
"SkippedEntitlementResponseData": ".skipped_entitlement_response_data",
"SlackConnectInviteStatus": ".slack_connect_invite_status",
"SlackConnectInviteView": ".slack_connect_invite_view",
"SortDirection": ".sort_direction",
"StripeEmbedInfo": ".stripe_embed_info",
"StripeIntegrationConfig": ".stripe_integration_config",
Expand Down Expand Up @@ -1385,6 +1389,8 @@ def __dir__():
"SegmentStatusResp",
"SkippedEntitlementErrorResponseData",
"SkippedEntitlementResponseData",
"SlackConnectInviteStatus",
"SlackConnectInviteView",
"SortDirection",
"StripeEmbedInfo",
"StripeIntegrationConfig",
Expand Down
2 changes: 2 additions & 0 deletions src/schematic/types/get_onboarding_state_resp.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from .onboarding_requirement_view import OnboardingRequirementView
from .onboarding_stripe_import import OnboardingStripeImport
from .onboarding_track import OnboardingTrack
from .slack_connect_invite_view import SlackConnectInviteView


class GetOnboardingStateResp(UniversalBaseModel):
Expand All @@ -22,6 +23,7 @@ class GetOnboardingStateResp(UniversalBaseModel):
path: typing.Optional[OnboardingPath] = None
pricing_page_url: typing.Optional[str] = None
requirements: typing.List[OnboardingRequirementView]
slack_connect: typing.Optional[SlackConnectInviteView] = None
stripe_import: typing.Optional[OnboardingStripeImport] = None
suggested_next: typing.List[OnboardingRequirement]
track: typing.Optional[OnboardingTrack] = None
Expand Down
7 changes: 7 additions & 0 deletions src/schematic/types/slack_connect_invite_status.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# This file was auto-generated by Fern from our API Definition.

import typing

SlackConnectInviteStatus = typing.Union[
typing.Literal["accepted", "declined", "dismissed", "expired", "pending"], typing.Any
]
24 changes: 24 additions & 0 deletions src/schematic/types/slack_connect_invite_view.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# This file was auto-generated by Fern from our API Definition.

import datetime as dt
import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .slack_connect_invite_status import SlackConnectInviteStatus


class SlackConnectInviteView(UniversalBaseModel):
can_resend_at: typing.Optional[dt.datetime] = None
email: str
sent_at: dt.datetime
status: SlackConnectInviteStatus

if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:

class Config:
frozen = True
smart_union = True
extra = pydantic.Extra.allow
20 changes: 6 additions & 14 deletions tests/utils/test_http_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -734,28 +734,20 @@ def _make_response(status_code: int) -> httpx.Response:
return httpx.Response(status_code=status_code, content=b"")


@pytest.mark.parametrize(
"status_code",
[408, 409, 429, 500, 501, 502, 503, 504, 599],
)
RETRYABLE_STATUS_CODES = [408, 409, 429, 500, 501, 502, 503, 504, 599]
NON_RETRYABLE_STATUS_CODES = [200, 201, 301, 400, 401, 403, 404]


@pytest.mark.parametrize("status_code", RETRYABLE_STATUS_CODES)
def test_should_retry_retryable_status_codes(status_code: int) -> None:
"""Legacy mode: retries on 408, 409, 429, and all >= 500."""
assert _should_retry(_make_response(status_code)) is True


@pytest.mark.parametrize(
"status_code",
[200, 201, 301, 400, 401, 403, 404],
)
@pytest.mark.parametrize("status_code", NON_RETRYABLE_STATUS_CODES)
def test_should_not_retry_non_retryable_status_codes(status_code: int) -> None:
assert _should_retry(_make_response(status_code)) is False


def test_should_retry_599_upper_boundary() -> None:
"""Legacy mode retries on >= 500, which includes 599."""
assert _should_retry(_make_response(599)) is True


# ---------------------------------------------------------------------------
# RequestOptions timeout resolution tests (timeout / deprecated timeout_in_seconds)
# ---------------------------------------------------------------------------
Expand Down
Loading