diff --git a/fern/products/sdks/overview/go/changelog/2024-09-08.mdx b/fern/products/sdks/overview/go/changelog/2024-09-08.mdx deleted file mode 100644 index 0b32d2e8f..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-09-08.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.24.0 -**`(feat):`** Add support for reading headers from environment variables (e.g. `X-API-Version`). - diff --git a/fern/products/sdks/overview/go/changelog/2024-09-09.mdx b/fern/products/sdks/overview/go/changelog/2024-09-09.mdx deleted file mode 100644 index 606ea4641..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-09-09.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.25.0 -**`(feat):`** Add support for sending extra body properties and query parameters via `RequestOption`. - diff --git a/fern/products/sdks/overview/go/changelog/2024-09-26.mdx b/fern/products/sdks/overview/go/changelog/2024-09-26.mdx deleted file mode 100644 index 472ac93c9..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-09-26.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.26.0 -**`(feat):`** Add support for sending custom Content-Type header values defined in the API. - diff --git a/fern/products/sdks/overview/go/changelog/2024-09-29.mdx b/fern/products/sdks/overview/go/changelog/2024-09-29.mdx deleted file mode 100644 index 55f4b4282..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-09-29.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.27.0 -**`(feat):`** Add support for SSE (Server-Sent Events) streaming responses. The user-facing interface for streaming responses remains the same between standard HTTP streaming and SSE. - diff --git a/fern/products/sdks/overview/go/changelog/2024-10-25.mdx b/fern/products/sdks/overview/go/changelog/2024-10-25.mdx deleted file mode 100644 index 018ab7ee5..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-10-25.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 0.28.0 -**`(feat):`** Add support for the exportedClientName configuration, which can be used to customize the generated client name and constructor included in snippets. -Note that this configuration option assumes that the SDK includes a hand-written client constructor defined in the client package. - diff --git a/fern/products/sdks/overview/go/changelog/2024-10-29.mdx b/fern/products/sdks/overview/go/changelog/2024-10-29.mdx deleted file mode 100644 index 43ea2c929..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-10-29.mdx +++ /dev/null @@ -1,7 +0,0 @@ -## 0.28.1 -**`(fix):`** Fix an issue where optional, allow-multiple query parameter snippets were not rendered. - -**`(fix):`** Fix an issue where service headers were not included in the generated in-lined request. - -**`(fix):`** Fix an issue where literal types were included as path parameter arguments. - diff --git a/fern/products/sdks/overview/go/changelog/2024-11-06.mdx b/fern/products/sdks/overview/go/changelog/2024-11-06.mdx deleted file mode 100644 index 84e7c3715..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-11-06.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.28.2 -**`(fix):`** Fix an issue where undiscriminated unions were not round-trippable whenever the union is the zero value of the type (e.g. `0` for `int`). - diff --git a/fern/products/sdks/overview/go/changelog/2024-11-07.mdx b/fern/products/sdks/overview/go/changelog/2024-11-07.mdx deleted file mode 100644 index b611ebbc3..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-11-07.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.28.3 -**`(internal):`** Upgrade to IRv53. - diff --git a/fern/products/sdks/overview/go/changelog/2024-11-08.mdx b/fern/products/sdks/overview/go/changelog/2024-11-08.mdx deleted file mode 100644 index 4e6f7b4ef..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-11-08.mdx +++ /dev/null @@ -1,10 +0,0 @@ -## 0.30.0 -**`(feat):`** Add support for nil-safe getter methods. Callers can more easily access nested properties by chaining together getter method calls instead of a long series of `!= nil` checks. - -## 0.29.0 -**`(feat):`** All SDKs now include an exported `FileParam` type that can be used to configure the `Content-Type` of file upload properties. - -**`(fix):`** Resolves an issue where multipart/form-data lists were incorrectly serialized as JSON. They are now added as individual parts. - -**`(internal):`** Refactor file upload endpoint generation with the new `core.MultipartWriter`. This significantly improves the aesthetics of the generated code. - diff --git a/fern/products/sdks/overview/go/changelog/2024-11-14.mdx b/fern/products/sdks/overview/go/changelog/2024-11-14.mdx deleted file mode 100644 index eb0300038..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-11-14.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 0.31.0 -**`(feat):`** Improves type file layout with zero impact on backwards compatibility. -Shared types are now more accurately placed in the `types.go` file, whereas types referenced by a single service are now placed in a file that matches the service's filename (e.g. user.go). - diff --git a/fern/products/sdks/overview/go/changelog/2024-11-15.mdx b/fern/products/sdks/overview/go/changelog/2024-11-15.mdx deleted file mode 100644 index 58857e1db..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-11-15.mdx +++ /dev/null @@ -1,9 +0,0 @@ -## 0.31.2 -**`(internal):`** Add an `internal` package, which now contains the internal functionality previously included in the `core` package (e.g. `core.Caller` -> `internal.Caller`). -Although technically a breaking change in terms of the module itself, this change was always the intention, and should have zero impact on users. -Any `core` type that is meant for public consumption remains in the exported `core` package (e.g. `core.APIError` and `core.RequestOption`). - -## 0.31.1 -**`(internal):`** Adds additional tests to confirm the behavior of the `core.Retrier`. -No functional, user-facing changes are included. - diff --git a/fern/products/sdks/overview/go/changelog/2024-11-18.mdx b/fern/products/sdks/overview/go/changelog/2024-11-18.mdx deleted file mode 100644 index 4bd90799f..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-11-18.mdx +++ /dev/null @@ -1,16 +0,0 @@ -## 0.32.0 -**`(feat):`** Add support for the `inlineFileProperties` configuration option, which generates file properties in the generated request type instead of as separate positional parameters. -```yaml # generators.yml -- name: fern-api/fern-go-sdk - version: 0.32.0 - config: - inlineFileProperties: true -``` - -**`(fix):`** Fixes an issue where the new `core.MultipartWriter` was generated for SDKs that didn't define any file upload endpoints. - -**`(internal):`** Simplify the generated code from the new `core.MultipartWriter` introduced in 0.29.0 by refactoring `internal.WithMultipartContentType` as `internal.WithDefaultContentType`. - -## 0.31.3 -**`(fix):`** Updates the retrier to stop retrying on `409 Conflict` HTTP status codes by default. - diff --git a/fern/products/sdks/overview/go/changelog/2024-11-20.mdx b/fern/products/sdks/overview/go/changelog/2024-11-20.mdx deleted file mode 100644 index a95885838..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-11-20.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.32.1 -**`(internal):`** Improve the aesthetics of the generated code, and reduce the amount of repetition in each of the generated endpoints. This change has zero impact on the behavior of the generated SDK. - diff --git a/fern/products/sdks/overview/go/changelog/2024-11-21.mdx b/fern/products/sdks/overview/go/changelog/2024-11-21.mdx deleted file mode 100644 index 4ccfa6238..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-11-21.mdx +++ /dev/null @@ -1,9 +0,0 @@ -## 0.33.0 -**`(feat):`** Add support for the `inlinePathParameters` configuration option, which generates path parameters in the generated request type (if any) instead of as separate positional parameters. -```yaml # generators.yml -- name: fern-api/fern-go-sdk - version: 0.33.0 - config: - inlinePathParameters: true -``` - diff --git a/fern/products/sdks/overview/go/changelog/2024-12-12.mdx b/fern/products/sdks/overview/go/changelog/2024-12-12.mdx deleted file mode 100644 index beb183e21..000000000 --- a/fern/products/sdks/overview/go/changelog/2024-12-12.mdx +++ /dev/null @@ -1,21 +0,0 @@ -## 0.35.0 -**`(feat):`** Add runtime validation for discriminated unions to prevent users from accidentally sending the wrong type of value. With this, users will be expected to set exactly one of the union's values like so: -```go package example -type Animal struct { - Type string - Cat *Cat - Dog *Dog -} -func do() { - union := &Animal{ - Cat: &Cat{ - Name: "Fluffy", - }, - } -} ``` -If the user sets _both_ `Cat` and `Dog`, the user will receive an error when the type is serialized to JSON (i.e. in the `json.Marshaler` implementation). - -## 0.34.0 -**`(feat):`** Add support for sending the `User-Agent` header on every request. Go packages are uniquely identified by their full module path, so the `User-Agent` header is generated in the `/` format, e.g. -``` User-Agent: github.com/acme/acme-go/1.0.0 ``` - diff --git a/fern/products/sdks/overview/go/changelog/2025-01-03.mdx b/fern/products/sdks/overview/go/changelog/2025-01-03.mdx deleted file mode 100644 index 6cceb9ccc..000000000 --- a/fern/products/sdks/overview/go/changelog/2025-01-03.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.35.1 -**`(fix):`** Fixes an issue where the delimiter length was included during stream data read, even when the delimiter was missing, leading to a `bufio.ErrAdvanceTooFar` error - diff --git a/fern/products/sdks/overview/go/changelog/2025-01-17.mdx b/fern/products/sdks/overview/go/changelog/2025-01-17.mdx deleted file mode 100644 index 411881ee3..000000000 --- a/fern/products/sdks/overview/go/changelog/2025-01-17.mdx +++ /dev/null @@ -1,5 +0,0 @@ -## 0.35.2 -**`(fix):`** Fixes an issue where certain literal string values were incorrectly generated in undiscriminated unions. - -**`(fix):`** Fixes an issue where custom names applied to a basic auth scheme were not preserved. - diff --git a/fern/products/sdks/overview/go/changelog/2025-01-22.mdx b/fern/products/sdks/overview/go/changelog/2025-01-22.mdx deleted file mode 100644 index c0ebb9794..000000000 --- a/fern/products/sdks/overview/go/changelog/2025-01-22.mdx +++ /dev/null @@ -1,31 +0,0 @@ -## 0.36.0 -**`(feat):`** Adds support for a few new configuration options, all of which are shown below: -```yaml - name: fern-api/fern-go-sdk - version: 0.36.0 - config: - packageLayout: flat - clientName: Acme - clientConstructorName: New -``` -With this, the generated SDK will all be deposited at the root of the module, and the client can be constructed like so: -```go package main -import ( - "context" - "fmt" - "log" - acme "github.com/acme/acme-go" -) -func main() { - client := acme.New() - response, err := client.GetUser( - context.Background(), - &acme.GetUserRequest{ - ID: "85307b0b-094b-41b5-b61d-347ca15e5da2", - }, - ) - if err != nil { - log.Fatal(err) - } - fmt.Println(response) -} ``` - diff --git a/fern/products/sdks/overview/go/changelog/2025-01-23.mdx b/fern/products/sdks/overview/go/changelog/2025-01-23.mdx deleted file mode 100644 index 787a0cf6d..000000000 --- a/fern/products/sdks/overview/go/changelog/2025-01-23.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.36.1 -**`(fix):`** Fix offset pagination method generation for non-integer offset parameters (e.g. `float64`). - diff --git a/fern/products/sdks/overview/go/changelog/2025-01-26.mdx b/fern/products/sdks/overview/go/changelog/2025-01-26.mdx deleted file mode 100644 index 65838bd78..000000000 --- a/fern/products/sdks/overview/go/changelog/2025-01-26.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.36.2 -**`(fix):`** Fix cursor pagination stopping condition when the cursor types do not match (e.g. a `*string` cursor type with a `string` next cursor type). - diff --git a/fern/products/sdks/overview/go/changelog/2025-02-04.mdx b/fern/products/sdks/overview/go/changelog/2025-02-04.mdx deleted file mode 100644 index 086a56e17..000000000 --- a/fern/products/sdks/overview/go/changelog/2025-02-04.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.36.3 -**`(fix):`** Fix an issue where the version header specified by the user wasn't being used. - diff --git a/fern/products/sdks/overview/go/changelog/2025-02-05.mdx b/fern/products/sdks/overview/go/changelog/2025-02-05.mdx deleted file mode 100644 index 2f4632c87..000000000 --- a/fern/products/sdks/overview/go/changelog/2025-02-05.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.36.4 -**`(fix):`** Fix an issue where the `go-v2` generator call prevented the `go` generator from succeeding in remote code generation environments. - diff --git a/fern/products/sdks/overview/go/changelog/2025-02-17.mdx b/fern/products/sdks/overview/go/changelog/2025-02-17.mdx deleted file mode 100644 index c44843e7b..000000000 --- a/fern/products/sdks/overview/go/changelog/2025-02-17.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.36.5 -**`(fix):`** Fix an issue where `map` values were not correctly serialized as deep object query parameters. - diff --git a/fern/products/sdks/overview/go/changelog/2025-03-13.mdx b/fern/products/sdks/overview/go/changelog/2025-03-13.mdx deleted file mode 100644 index ecd0a7c6c..000000000 --- a/fern/products/sdks/overview/go/changelog/2025-03-13.mdx +++ /dev/null @@ -1,11 +0,0 @@ -## 0.37.2 -**`(fix):`** Fix an issue where the `go-v2` generator call prevented the `go` generator from succeeding in remote code generation environments. - -## 0.37.1 -**`(fix):`** Fix an issue where the primary Go files were not being written due to README.md generation. - -## 0.37.0 -**`(internal):`** Upgrade to IRv57. - -**`(feat):`** Add support for automatic `README.md` generation. - diff --git a/fern/products/sdks/overview/go/changelog/2025-07-24.mdx b/fern/products/sdks/overview/go/changelog/2025-07-24.mdx new file mode 100644 index 000000000..053b76c34 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-07-24.mdx @@ -0,0 +1,166 @@ +## 0.37.2 +**`(fix):`** Fix an issue where the `go-v2` generator call prevented the `go` generator from succeeding in remote code generation environments. + +## 0.37.1 +**`(fix):`** Fix an issue where the primary Go files were not being written due to README.md generation. + +## 0.37.0 +**`(internal):`** Upgrade to IRv57. + +**`(feat):`** Add support for automatic `README.md` generation. + +## 0.36.5 +**`(fix):`** Fix an issue where `map` values were not correctly serialized as deep object query parameters. + +## 0.36.4 +**`(fix):`** Fix an issue where the `go-v2` generator call prevented the `go` generator from succeeding in remote code generation environments. + +## 0.36.3 +**`(fix):`** Fix an issue where the version header specified by the user wasn't being used. + +## 0.36.2 +**`(fix):`** Fix cursor pagination stopping condition when the cursor types do not match (e.g. a `*string` cursor type with a `string` next cursor type). + +## 0.36.1 +**`(fix):`** Fix offset pagination method generation for non-integer offset parameters (e.g. `float64`). + +## 0.36.0 +**`(feat):`** Adds support for a few new configuration options, all of which are shown below: +```yaml - name: fern-api/fern-go-sdk + version: 0.36.0 + config: + packageLayout: flat + clientName: Acme + clientConstructorName: New +``` +With this, the generated SDK will all be deposited at the root of the module, and the client can be constructed like so: +```go package main +import ( + "context" + "fmt" + "log" + acme "github.com/acme/acme-go" +) +func main() { + client := acme.New() + response, err := client.GetUser( + context.Background(), + &acme.GetUserRequest{ + ID: "85307b0b-094b-41b5-b61d-347ca15e5da2", + }, + ) + if err != nil { + log.Fatal(err) + } + fmt.Println(response) +} ``` + +## 0.35.2 +**`(fix):`** Fixes an issue where certain literal string values were incorrectly generated in undiscriminated unions. + +**`(fix):`** Fixes an issue where custom names applied to a basic auth scheme were not preserved. + +## 0.35.1 +**`(fix):`** Fixes an issue where the delimiter length was included during stream data read, even when the delimiter was missing, leading to a `bufio.ErrAdvanceTooFar` error + +## 0.35.0 +**`(feat):`** Add runtime validation for discriminated unions to prevent users from accidentally sending the wrong type of value. With this, users will be expected to set exactly one of the union's values like so: +```go package example +type Animal struct { + Type string + Cat *Cat + Dog *Dog +} +func do() { + union := &Animal{ + Cat: &Cat{ + Name: "Fluffy", + }, + } +} ``` +If the user sets _both_ `Cat` and `Dog`, the user will receive an error when the type is serialized to JSON (i.e. in the `json.Marshaler` implementation). + +## 0.34.0 +**`(feat):`** Add support for sending the `User-Agent` header on every request. Go packages are uniquely identified by their full module path, so the `User-Agent` header is generated in the `/` format, e.g. +``` User-Agent: github.com/acme/acme-go/1.0.0 ``` + +## 0.33.0 +**`(feat):`** Add support for the `inlinePathParameters` configuration option, which generates path parameters in the generated request type (if any) instead of as separate positional parameters. +```yaml # generators.yml +- name: fern-api/fern-go-sdk + version: 0.33.0 + config: + inlinePathParameters: true +``` + +## 0.32.1 +**`(internal):`** Improve the aesthetics of the generated code, and reduce the amount of repetition in each of the generated endpoints. This change has zero impact on the behavior of the generated SDK. + +## 0.32.0 +**`(feat):`** Add support for the `inlineFileProperties` configuration option, which generates file properties in the generated request type instead of as separate positional parameters. +```yaml # generators.yml +- name: fern-api/fern-go-sdk + version: 0.32.0 + config: + inlineFileProperties: true +``` + +**`(fix):`** Fixes an issue where the new `core.MultipartWriter` was generated for SDKs that didn't define any file upload endpoints. + +**`(internal):`** Simplify the generated code from the new `core.MultipartWriter` introduced in 0.29.0 by refactoring `internal.WithMultipartContentType` as `internal.WithDefaultContentType`. + +## 0.31.3 +**`(fix):`** Updates the retrier to stop retrying on `409 Conflict` HTTP status codes by default. + +## 0.31.2 +**`(internal):`** Add an `internal` package, which now contains the internal functionality previously included in the `core` package (e.g. `core.Caller` -> `internal.Caller`). +Although technically a breaking change in terms of the module itself, this change was always the intention, and should have zero impact on users. +Any `core` type that is meant for public consumption remains in the exported `core` package (e.g. `core.APIError` and `core.RequestOption`). + +## 0.31.1 +**`(internal):`** Adds additional tests to confirm the behavior of the `core.Retrier`. +No functional, user-facing changes are included. + +## 0.31.0 +**`(feat):`** Improves type file layout with zero impact on backwards compatibility. +Shared types are now more accurately placed in the `types.go` file, whereas types referenced by a single service are now placed in a file that matches the service's filename (e.g. user.go). + +## 0.30.0 +**`(feat):`** Add support for nil-safe getter methods. Callers can more easily access nested properties by chaining together getter method calls instead of a long series of `!= nil` checks. + +## 0.29.0 +**`(feat):`** All SDKs now include an exported `FileParam` type that can be used to configure the `Content-Type` of file upload properties. + +**`(fix):`** Resolves an issue where multipart/form-data lists were incorrectly serialized as JSON. They are now added as individual parts. + +**`(internal):`** Refactor file upload endpoint generation with the new `core.MultipartWriter`. This significantly improves the aesthetics of the generated code. + +## 0.28.3 +**`(internal):`** Upgrade to IRv53. + +## 0.28.2 +**`(fix):`** Fix an issue where undiscriminated unions were not round-trippable whenever the union is the zero value of the type (e.g. `0` for `int`). + +## 0.28.1 +**`(fix):`** Fix an issue where optional, allow-multiple query parameter snippets were not rendered. + +**`(fix):`** Fix an issue where service headers were not included in the generated in-lined request. + +**`(fix):`** Fix an issue where literal types were included as path parameter arguments. + +## 0.28.0 +**`(feat):`** Add support for the exportedClientName configuration, which can be used to customize the generated client name and constructor included in snippets. +Note that this configuration option assumes that the SDK includes a hand-written client constructor defined in the client package. + +## 0.27.0 +**`(feat):`** Add support for SSE (Server-Sent Events) streaming responses. The user-facing interface for streaming responses remains the same between standard HTTP streaming and SSE. + +## 0.26.0 +**`(feat):`** Add support for sending custom Content-Type header values defined in the API. + +## 0.25.0 +**`(feat):`** Add support for sending extra body properties and query parameters via `RequestOption`. + +## 0.24.0 +**`(feat):`** Add support for reading headers from environment variables (e.g. `X-API-Version`). + diff --git a/fern/products/sdks/overview/java/changelog/2025-07-24.mdx b/fern/products/sdks/overview/java/changelog/2025-07-24.mdx new file mode 100644 index 000000000..950e1d8d6 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-07-24.mdx @@ -0,0 +1,7 @@ +## 2.39.0 +**`(feat):`** Enable builder extensibility for generated SDK clients. Builders are no longer marked as final, allowing users to extend them +and customize client behavior. Added protected buildClientOptions() method for customization hooks and static from() method +to ClientOptions.Builder for copying existing configurations. This enables use cases like environment variable expansion +in URLs and custom authentication methods. + + diff --git a/fern/products/sdks/overview/php/changelog/2024-09-24.mdx b/fern/products/sdks/overview/php/changelog/2024-09-24.mdx deleted file mode 100644 index 9f00bfb50..000000000 --- a/fern/products/sdks/overview/php/changelog/2024-09-24.mdx +++ /dev/null @@ -1,6 +0,0 @@ -## 0.1.1 -**`(fix):`** The generated `.github/workflows/ci.yml` file now uses 'shivammathur/setup-php@v2' to install `php` and `composer`. - -## 0.1.0 -**`(feat):`** Initial release. - diff --git a/fern/products/sdks/overview/php/changelog/2024-09-25.mdx b/fern/products/sdks/overview/php/changelog/2024-09-25.mdx deleted file mode 100644 index f909a1d3f..000000000 --- a/fern/products/sdks/overview/php/changelog/2024-09-25.mdx +++ /dev/null @@ -1,9 +0,0 @@ -## 0.1.2 -**`(feat):`** Represent enums in objects as strings. - -**`(fix):`** Generated wrapped requests now implement `JsonSerializableType`. - -**`(fix):`** Fix a bug where we don't set the request options baseurl properly. - -**`(fix):`** Fix bugs in our numeric type serde and add tests. - diff --git a/fern/products/sdks/overview/php/changelog/2024-10-03.mdx b/fern/products/sdks/overview/php/changelog/2024-10-03.mdx deleted file mode 100644 index 3380fb16b..000000000 --- a/fern/products/sdks/overview/php/changelog/2024-10-03.mdx +++ /dev/null @@ -1,12 +0,0 @@ -## 0.1.4 -**`(fix):`** Add `null` to annotations for optional undiscriminated unions. - -## 0.1.3 -**`(feat):`** Support inheritance for types and inlined requests. - -**`(feat):`** Support undiscriminated unions. - -**`(fix):`** Fix ci.yml `php-version` field name. - -**`(feat):`** We now allow an empty constructor on types with no required properties. - diff --git a/fern/products/sdks/overview/php/changelog/2024-10-30.mdx b/fern/products/sdks/overview/php/changelog/2024-10-30.mdx deleted file mode 100644 index 05b6af6aa..000000000 --- a/fern/products/sdks/overview/php/changelog/2024-10-30.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.0 -**`(feat):`** Add support for multipart file uploads. - diff --git a/fern/products/sdks/overview/php/changelog/2024-11-20.mdx b/fern/products/sdks/overview/php/changelog/2024-11-20.mdx deleted file mode 100644 index 94c376ab0..000000000 --- a/fern/products/sdks/overview/php/changelog/2024-11-20.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.1 -**`(fix):`** Override escaped method names in the generated client. - diff --git a/fern/products/sdks/overview/php/changelog/2024-12-12.mdx b/fern/products/sdks/overview/php/changelog/2024-12-12.mdx deleted file mode 100644 index c131f3473..000000000 --- a/fern/products/sdks/overview/php/changelog/2024-12-12.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.2.2 -**`(fix):`** Handle cross package type name deconfliction - diff --git a/fern/products/sdks/overview/php/changelog/2025-02-03.mdx b/fern/products/sdks/overview/php/changelog/2025-02-03.mdx deleted file mode 100644 index 1311bbef8..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-02-03.mdx +++ /dev/null @@ -1,15 +0,0 @@ -## 0.3.0 -**`(feat):`** Add support for customizing the package name, which is used in the `User-Agent` header. Users can configure this like so: -```yaml - name: fernapi/fern-php-sdk - version: 0.3.0 - config: - packageName: acme/acme-php -``` - -## 0.2.3 -**`(fix):`** Updates a variety of properties in the generated composer.json file, including: - - - Pin guzzlehttp/guzzle to version ^7.4. - - Custom license support. - - Set `memory-limit` to 1G in the `analyze` script. - diff --git a/fern/products/sdks/overview/php/changelog/2025-02-05.mdx b/fern/products/sdks/overview/php/changelog/2025-02-05.mdx deleted file mode 100644 index 816ee3a6e..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-02-05.mdx +++ /dev/null @@ -1,25 +0,0 @@ -## 0.4.0 -**`(feat):`** Retry HTTP requests on status codes 408, 429, 5XX. You can configure the maximum number of retries like this: -```php $client = new FooClient("token", ['maxRetries' => 3]) $client->bar($request, ['maxRetries' => 5]); ``` -The default for `maxRetries` is 2, meaning up to 3 HTTP requests may be sent. Set `maxRetries` to 0 to disable retries. -If you create your own HTTP client and pass it to the root client, you must add the desired middlewares yourself. Here's how you would add the `RetryMiddleware` to a custom HTTP client: -```php $handlerStack = HandlerStack::create(); $handlerStack->push(RetryMiddleware::create()); $httpClient = new Client(['handler' => $handlerStack]); $client = new FooClient(['client' => $client]); ``` - -## 0.3.2 -**`(internal):`** Upgrade to IRv55 to recognize nullable types. - -## 0.3.1 -**`(fix):`** Improve multiline parameter docs by writing them above the tag, e.g. -```php class UpdateUserRequest extends JsonSerializableType { - /** - * The user to update. - * - * See [User](https://acme.co/user) for more information. - * - * @var ?User $user - */ - public ?User $user; -} ``` - -**`(fix):`** Add .idea to the generated .gitignore file. - diff --git a/fern/products/sdks/overview/php/changelog/2025-02-07.mdx b/fern/products/sdks/overview/php/changelog/2025-02-07.mdx deleted file mode 100644 index 9cf5e020b..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-02-07.mdx +++ /dev/null @@ -1,6 +0,0 @@ -## 0.5.1 -**`(fix):`** Catch HTTP request exceptions and rethrow it as a FooApiException. - -## 0.5.0 -**`(feat):`** Add the `__toString()` magic method to all generated class types. - diff --git a/fern/products/sdks/overview/php/changelog/2025-02-09.mdx b/fern/products/sdks/overview/php/changelog/2025-02-09.mdx deleted file mode 100644 index 37b7ca528..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-02-09.mdx +++ /dev/null @@ -1,33 +0,0 @@ -## 0.7.0 -**`(feat):`** The SDK now supports inline path parameters in the generated request class like so: -```php class GetUserRequest extends JsonSerializableType { - /** - * @var string $userId - */ - public string $userId; -} ``` -You can configure this in your `generators.yml` like so: -```yaml - name: fernapi/fern-php-sdk - version: 0.7.0 - config: - inlinePathParameters: true -``` - -## 0.6.0 -**`(feat):`** You can now configure the generated class property access to be `public` or `private`. - - - When the access is public, both the getter and setter methods are omitted (default). - - When the access is private, both the getter and setter methods are generated. - -You can configure this in your `generators.yml` like so: -```yaml - name: fernapi/fern-php-sdk - version: 0.6.0 - config: - propertyAccess: private -``` - -## 0.5.2 -**`(fix):`** Update the endpoint generator to not require the in-lined request wrapper if it's only composed of optional properties. - -**`(fix):`** Update optional query parameters lists to be generated as an optional array instead of an array of optional values. - diff --git a/fern/products/sdks/overview/php/changelog/2025-02-11.mdx b/fern/products/sdks/overview/php/changelog/2025-02-11.mdx deleted file mode 100644 index 0d730dc22..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-02-11.mdx +++ /dev/null @@ -1,53 +0,0 @@ -## 0.10.0 -**`(feat):`** You can now modify the generated `composer.json` file by adding a `composerJson` property to your generator configuration. -Here's an example of the `generators.yml` file with the `composerJson` property: -```yaml generators.yml ... groups: - php-sdk: - generators: - - name: fernapi/fern-php-sdk - ... - config: - composerJson: - description: This is my PHP library - keywords: - - myCustomTag - license: - - "LGPL-2.1-only" - - "GPL-3.0-or-later" - scripts: - hello: echo hello -``` -Which will result in the following composer.json file: -```jsonc composer.json { - // ..., - "description": "This is my PHP library", - "keywords": [ - "myCustomTag", - // ..., - ], - "license": [ - "LGPL-2.1-only", - "GPL-3.0-or-later" - ], - // ..., - "scripts": { - // ..., - "hello": "echo hello" - } -} ``` - -## 0.9.0 -**`(feat):`** Add the ability to access alpha or undocumented response properties from every class. Users can access the additional properties like so: -```php $response = $client->users->get(...); $additionalProperties = $response->getAdditionalProperties(); ``` - -## 0.8.0 -**`(feat):`** Add automatic pagination support for endpoints that return a paginated response. -Here's an example of how users can use paginated endpoints: -```php $items = $client->list($request); foreach($items as $item){ - echo $item; -} $pages = $items->getPages(); foreach($pages as $page){ - foreach($page as $item){ - echo $item; - } -} ``` - diff --git a/fern/products/sdks/overview/php/changelog/2025-02-12.mdx b/fern/products/sdks/overview/php/changelog/2025-02-12.mdx deleted file mode 100644 index ee64ede15..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-02-12.mdx +++ /dev/null @@ -1,13 +0,0 @@ -## 0.11.0 -**`(feat):`** The SDK now supports a `bodyProperties` and `queryParameters` request option, which can be used to add arbitrary properties to the request. This is useful for interacting with alpha or undocumented functionality. -```php $response = $client->users->list( - new ListUsersRequest([ - ... - ]), - [ - 'queryParameters' => [ - 'limit' => 100, - ], - ] -); ``` - diff --git a/fern/products/sdks/overview/php/changelog/2025-02-13.mdx b/fern/products/sdks/overview/php/changelog/2025-02-13.mdx deleted file mode 100644 index f0092eb18..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-02-13.mdx +++ /dev/null @@ -1,32 +0,0 @@ -## 0.14.0 -**`(feat):`** Support literal types - -## 0.13.7 -**`(fix):`** Make constructor private for union types and remove static unknown constructor - -## 0.13.6 -**`(fix):`** Fix an issue where the value field of the deserialized discriminated union was null. - -## 0.13.5 -**`(fix):`** Change discriminated union method name from `->getvalue()` to `->getValue()`. - -## 0.13.4 -**`(fix):`** Flatten test directory structure from `tests/package-name/**` to `tests/**` so it matches the psr-4 structure defined in composer.json. Without this change, you cannot reference classes within the `tests` directory from your tests, for example, a `Helpers` class for common test utilities. - -## 0.13.3 -**`(fix):`** Fix issue where an empty request would be JSON serialized as an empty array instead of an empty object. - -## 0.13.2 -**`(fix):`** Fix a bug where literal global headers could not be overridden in the root client constructor. - -## 0.13.1 -**`(fix):`** Render union references as their type references rather than mixed. - -## 0.13.0 -**`(feat):`** Add support for configuring a request timeout. - -**`(fix):`** Fix a bug where the private pagination method helpers collided with magic methods (e.g. `__get`). - -## 0.12.0 -**`(feat):`** Add support for discriminated unions. - diff --git a/fern/products/sdks/overview/php/changelog/2025-03-04.mdx b/fern/products/sdks/overview/php/changelog/2025-03-04.mdx deleted file mode 100644 index dd0f795d1..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-03-04.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.14.1 -**`(internal):`** Upgrade to IRv57. - diff --git a/fern/products/sdks/overview/php/changelog/2025-04-08.mdx b/fern/products/sdks/overview/php/changelog/2025-04-08.mdx deleted file mode 100644 index e1aa21cd9..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-04-08.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 0.14.2 -**`(fix):`** This updates the PHP generator to better support undiscriminated unions that define one or more `optional` types. -With this, the generator unwraps each of the optional types, and includes a `|null` variant (e.g. `array|Metadata|null`). - diff --git a/fern/products/sdks/overview/php/changelog/2025-04-29.mdx b/fern/products/sdks/overview/php/changelog/2025-04-29.mdx deleted file mode 100644 index a98ce5d16..000000000 --- a/fern/products/sdks/overview/php/changelog/2025-04-29.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 0.15.0 -**`(feat):`** Support custom package path - diff --git a/fern/products/sdks/overview/php/changelog/2025-07-24.mdx b/fern/products/sdks/overview/php/changelog/2025-07-24.mdx new file mode 100644 index 000000000..f34a8c8ff --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-07-24.mdx @@ -0,0 +1,223 @@ +## 0.15.0 +**`(feat):`** Support custom package path + +## 0.14.2 +**`(fix):`** This updates the PHP generator to better support undiscriminated unions that define one or more `optional` types. +With this, the generator unwraps each of the optional types, and includes a `|null` variant (e.g. `array|Metadata|null`). + +## 0.14.1 +**`(internal):`** Upgrade to IRv57. + +## 0.14.0 +**`(feat):`** Support literal types + +## 0.13.7 +**`(fix):`** Make constructor private for union types and remove static unknown constructor + +## 0.13.6 +**`(fix):`** Fix an issue where the value field of the deserialized discriminated union was null. + +## 0.13.5 +**`(fix):`** Change discriminated union method name from `->getvalue()` to `->getValue()`. + +## 0.13.4 +**`(fix):`** Flatten test directory structure from `tests/package-name/**` to `tests/**` so it matches the psr-4 structure defined in composer.json. Without this change, you cannot reference classes within the `tests` directory from your tests, for example, a `Helpers` class for common test utilities. + +## 0.13.3 +**`(fix):`** Fix issue where an empty request would be JSON serialized as an empty array instead of an empty object. + +## 0.13.2 +**`(fix):`** Fix a bug where literal global headers could not be overridden in the root client constructor. + +## 0.13.1 +**`(fix):`** Render union references as their type references rather than mixed. + +## 0.13.0 +**`(feat):`** Add support for configuring a request timeout. + +**`(fix):`** Fix a bug where the private pagination method helpers collided with magic methods (e.g. `__get`). + +## 0.12.0 +**`(feat):`** Add support for discriminated unions. + +## 0.11.0 +**`(feat):`** The SDK now supports a `bodyProperties` and `queryParameters` request option, which can be used to add arbitrary properties to the request. This is useful for interacting with alpha or undocumented functionality. +```php $response = $client->users->list( + new ListUsersRequest([ + ... + ]), + [ + 'queryParameters' => [ + 'limit' => 100, + ], + ] +); ``` + +## 0.10.0 +**`(feat):`** You can now modify the generated `composer.json` file by adding a `composerJson` property to your generator configuration. +Here's an example of the `generators.yml` file with the `composerJson` property: +```yaml generators.yml ... groups: + php-sdk: + generators: + - name: fernapi/fern-php-sdk + ... + config: + composerJson: + description: This is my PHP library + keywords: + - myCustomTag + license: + - "LGPL-2.1-only" + - "GPL-3.0-or-later" + scripts: + hello: echo hello +``` +Which will result in the following composer.json file: +```jsonc composer.json { + // ..., + "description": "This is my PHP library", + "keywords": [ + "myCustomTag", + // ..., + ], + "license": [ + "LGPL-2.1-only", + "GPL-3.0-or-later" + ], + // ..., + "scripts": { + // ..., + "hello": "echo hello" + } +} ``` + +## 0.9.0 +**`(feat):`** Add the ability to access alpha or undocumented response properties from every class. Users can access the additional properties like so: +```php $response = $client->users->get(...); $additionalProperties = $response->getAdditionalProperties(); ``` + +## 0.8.0 +**`(feat):`** Add automatic pagination support for endpoints that return a paginated response. +Here's an example of how users can use paginated endpoints: +```php $items = $client->list($request); foreach($items as $item){ + echo $item; +} $pages = $items->getPages(); foreach($pages as $page){ + foreach($page as $item){ + echo $item; + } +} ``` + +## 0.7.0 +**`(feat):`** The SDK now supports inline path parameters in the generated request class like so: +```php class GetUserRequest extends JsonSerializableType { + /** + * @var string $userId + */ + public string $userId; +} ``` +You can configure this in your `generators.yml` like so: +```yaml - name: fernapi/fern-php-sdk + version: 0.7.0 + config: + inlinePathParameters: true +``` + +## 0.6.0 +**`(feat):`** You can now configure the generated class property access to be `public` or `private`. + + - When the access is public, both the getter and setter methods are omitted (default). + - When the access is private, both the getter and setter methods are generated. + +You can configure this in your `generators.yml` like so: +```yaml - name: fernapi/fern-php-sdk + version: 0.6.0 + config: + propertyAccess: private +``` + +## 0.5.2 +**`(fix):`** Update the endpoint generator to not require the in-lined request wrapper if it's only composed of optional properties. + +**`(fix):`** Update optional query parameters lists to be generated as an optional array instead of an array of optional values. + +## 0.5.1 +**`(fix):`** Catch HTTP request exceptions and rethrow it as a FooApiException. + +## 0.5.0 +**`(feat):`** Add the `__toString()` magic method to all generated class types. + +## 0.4.0 +**`(feat):`** Retry HTTP requests on status codes 408, 429, 5XX. You can configure the maximum number of retries like this: +```php $client = new FooClient("token", ['maxRetries' => 3]) $client->bar($request, ['maxRetries' => 5]); ``` +The default for `maxRetries` is 2, meaning up to 3 HTTP requests may be sent. Set `maxRetries` to 0 to disable retries. +If you create your own HTTP client and pass it to the root client, you must add the desired middlewares yourself. Here's how you would add the `RetryMiddleware` to a custom HTTP client: +```php $handlerStack = HandlerStack::create(); $handlerStack->push(RetryMiddleware::create()); $httpClient = new Client(['handler' => $handlerStack]); $client = new FooClient(['client' => $client]); ``` + +## 0.3.2 +**`(internal):`** Upgrade to IRv55 to recognize nullable types. + +## 0.3.1 +**`(fix):`** Improve multiline parameter docs by writing them above the tag, e.g. +```php class UpdateUserRequest extends JsonSerializableType { + /** + * The user to update. + * + * See [User](https://acme.co/user) for more information. + * + * @var ?User $user + */ + public ?User $user; +} ``` + +**`(fix):`** Add .idea to the generated .gitignore file. + +## 0.3.0 +**`(feat):`** Add support for customizing the package name, which is used in the `User-Agent` header. Users can configure this like so: +```yaml - name: fernapi/fern-php-sdk + version: 0.3.0 + config: + packageName: acme/acme-php +``` + +## 0.2.3 +**`(fix):`** Updates a variety of properties in the generated composer.json file, including: + + - Pin guzzlehttp/guzzle to version ^7.4. + - Custom license support. + - Set `memory-limit` to 1G in the `analyze` script. + +## 0.2.2 +**`(fix):`** Handle cross package type name deconfliction + +## 0.2.1 +**`(fix):`** Override escaped method names in the generated client. + +## 0.2.0 +**`(feat):`** Add support for multipart file uploads. + +## 0.1.4 +**`(fix):`** Add `null` to annotations for optional undiscriminated unions. + +## 0.1.3 +**`(feat):`** Support inheritance for types and inlined requests. + +**`(feat):`** Support undiscriminated unions. + +**`(fix):`** Fix ci.yml `php-version` field name. + +**`(feat):`** We now allow an empty constructor on types with no required properties. + +## 0.1.2 +**`(feat):`** Represent enums in objects as strings. + +**`(fix):`** Generated wrapped requests now implement `JsonSerializableType`. + +**`(fix):`** Fix a bug where we don't set the request options baseurl properly. + +**`(fix):`** Fix bugs in our numeric type serde and add tests. + +## 0.1.1 +**`(fix):`** The generated `.github/workflows/ci.yml` file now uses 'shivammathur/setup-php@v2' to install `php` and `composer`. + +## 0.1.0 +**`(feat):`** Initial release. + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-28.mdx b/fern/products/sdks/overview/python/changelog/2024-08-28.mdx deleted file mode 100644 index b9f51bfa2..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-08-28.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 3.10.7 -**`(fix):`** When not leveraging mock integration tests, still run pytest over everything, not a specific directory. - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-02.mdx b/fern/products/sdks/overview/python/changelog/2024-09-02.mdx deleted file mode 100644 index bbdd72b5b..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-02.mdx +++ /dev/null @@ -1,3 +0,0 @@ -## 3.10.8 -**`(fix):`** Allow for fields prefixed with the name `model`, a silent break introduced in Pydantic V2. - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-04.mdx b/fern/products/sdks/overview/python/changelog/2024-09-04.mdx deleted file mode 100644 index f35c18c60..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-04.mdx +++ /dev/null @@ -1,8 +0,0 @@ -## 3.11.0-rc0 -**`(chore):`** Remove Pydantic field aliases and leverage an internal representation. - -### What's been fixed -- Pydantic field aliases are removed and replaced with an internal representation. This allows for more robust handling of field aliases and prevents issues with Pydantic V2 and mypy. -Previously, you'd have for V1 and V2 compatibility in Pydantic, you'd want to conditionally apply the config class within the base model, however this would lead to mypy errors when filling out a model with it's field alias. To solve this, We used the deprecated `class Config`, regardless of the Pydantic version to satisfy mypy, which lead to warnings in the console. -Now, we've removed the field aliases and replaced them with an internal representation, which allows us to avoid pydantic config altogether. - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-05.mdx b/fern/products/sdks/overview/python/changelog/2024-09-05.mdx deleted file mode 100644 index d8ae274c2..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-05.mdx +++ /dev/null @@ -1,17 +0,0 @@ -## 4.0.0-rc0 -**`(fix):`** Rerelease 3.11.0-rc0 as a major version, with a configuration flag to disable the behavior (`use_pydantic_field_aliases`), defaulted to `true` to preserve existing behavior. - -**`(internal):`** The generator now shares "as is" files with Pydantic and FastAPI generators. - -### What's been fixed -- Rerelease 3.11.0-rc0 as a major version, with a configuration flag to disable the behavior (`use_pydantic_field_aliases`), defaulted to `false` to introduce the break on a major version. -To maintain parity with pre-3.11.0 behavior, update the flag to `true`: - - ```yaml - - name: fernapi/fern-python-sdk - version: 4.0.0-rc0 - config: - pydantic_config: - use_pydantic_field_aliases: true - ``` - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-06.mdx b/fern/products/sdks/overview/python/changelog/2024-09-06.mdx deleted file mode 100644 index 57f3864f3..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-06.mdx +++ /dev/null @@ -1,10 +0,0 @@ -## 4.0.0-rc2 -**`(fix):`** Update .dict calls in Pydantic V2 to be back to pre-3.10.4 logic for SDKs that continue using Pydantic aliases. - -## 4.0.0-rc1 -**`(fix):`** Update .dict calls in Pydantic V2 to be back to pre-3.10.4 logic. - -### What's been fixed -- Pydantic V2 `.dict` calls are updated to be back to pre-3.10.4 logic. This is fix a regression where nested literals were being omitted due to the Pydantic V2 serializers not respecting the recursive .dict logic, as Pydantic V2 shells out `model_dump` calls to Rust library and serializers, as opposed to recursively calling `model_dump`. -It is expected that performance will not be degraded given the Rust-based serializers have optimized performance, compared to the Pydantic V1 .dict approach. - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-10.mdx b/fern/products/sdks/overview/python/changelog/2024-09-10.mdx deleted file mode 100644 index 3636230cb..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-10.mdx +++ /dev/null @@ -1,18 +0,0 @@ -## 4.0.0-rc5 -**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This -prevents runtime errors in certain cases where types self reference itself through -a union. - - -## 4.0.0-rc4 -**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This -prevents runtime errors in certain cases where types self reference itself through -a union. - - -## 4.0.0-rc3 -**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This -prevents runtime errors in certain cases where types self reference itself through -a union. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-11.mdx b/fern/products/sdks/overview/python/changelog/2024-09-11.mdx deleted file mode 100644 index 858f31cbd..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-11.mdx +++ /dev/null @@ -1,16 +0,0 @@ -## 4.0.0-rc8 -**`(fix):`** Pydantic models that call `update_forward_refs` on non-union circular reference dependencies now pass in `localns` for -the current member, a field in Pydantic V1 that provides object contexts to models in the event objects are not fully rebuilt. - - -## 4.0.0-rc7 -**`(fix):`** The generator now respects the old use_str_enums flag again, a regression was introduced where only the new flag `enum_type` -was respected. - - -## 4.0.0-rc6 -**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This -prevents runtime errors in certain cases where types self reference itself through -a union. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-12.mdx b/fern/products/sdks/overview/python/changelog/2024-09-12.mdx deleted file mode 100644 index 14cf00c74..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-12.mdx +++ /dev/null @@ -1,7 +0,0 @@ -## 4.0.0-rc9 -**`(fix):`** All Pydantic V2 warnings have been resolved - -### What's been fixed -- json_encoders have been removed from Pydantic V2, and replaced with a `model_serializer` method. -- additional model construction functions have been added when not leveraging pydantic field aliases to allow users to construct a model from JSOn without the need for dealiasing the object themselves. - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-13.mdx b/fern/products/sdks/overview/python/changelog/2024-09-13.mdx deleted file mode 100644 index 5a998e84c..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-13.mdx +++ /dev/null @@ -1,41 +0,0 @@ -## 4.2.0 -**`(feat):`** Allow specifying arbitrary configuration to your packages `pyproject.toml` by adding a `pyproject_toml` block to your configuration -whatever you include in this block will be added as-is to the `pyproject.toml` file. The config, as an example is: - -```yaml -config: - pyproject_toml: | - [tool.covcheck.group.unit.coverage] - branch = 26.0 - line = 62.0 - - [tool.covcheck.group.service.coverage] - branch = 30.0 - line = 67.0 -``` - - -## 4.1.0 -**`(feat):`** Allow specifying pip extras within your `pyproject.toml`. The following config: - -```yaml -config: - extra_dev_dependencies: - covcheck: - version: "^0.4.3" - extras: ["toml"] -``` - -would add the following to your `pyproject.toml`: - -```toml -[tool.poetry.dev-dependencies] -covcheck = { version = "^0.4.3", extras = ["toml"] } -``` - - -## 4.0.0 -**`(fix):`** Generated tests that expect an empty result when they are of type `text` (not JSON) now appropriately expect an empty string instead of `None` for async functions as well. -Version 3.3.4 fixed this for sync functions only, which was a bug. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-15.mdx b/fern/products/sdks/overview/python/changelog/2024-09-15.mdx deleted file mode 100644 index 6b9d1521b..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-15.mdx +++ /dev/null @@ -1,5 +0,0 @@ -## 4.2.1 -**`(fix):`** When the generator runs bash commands such as `poetry install` and there is a failure, -now the `stderr` and `stdout` is logged to help improve user debugging. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-16.mdx b/fern/products/sdks/overview/python/changelog/2024-09-16.mdx deleted file mode 100644 index d99ac13aa..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-16.mdx +++ /dev/null @@ -1,20 +0,0 @@ -## 4.2.3 -**`(fix):`** The content type of file properties is now respected for multipart -requests. For example, if you have a file property called `image` that has the -content type `image/jpeg`, then it will be sent as: - -```python -"image": core.with_content_type(file=image, content_type="image/jpeg"), -```` - - -## 4.2.2 -**`(fix):`** The content type of non-file properties is now respected for multipart -requests. For example, if you have a type called `metadata` that has the -content type `application/json`, then it will be sent as: - -```python -"metadata": (None, json.dumps(jsonable_encoder(metadata)), "application/json"), -``` - - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-17.mdx b/fern/products/sdks/overview/python/changelog/2024-09-17.mdx deleted file mode 100644 index c130652c8..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-17.mdx +++ /dev/null @@ -1,5 +0,0 @@ -## 4.2.4 -**`(fix):`** Datetime examples are generated correctly once again. -The `pydantic_utilities` file is python 3.8 compatible. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-20.mdx b/fern/products/sdks/overview/python/changelog/2024-09-20.mdx deleted file mode 100644 index 0980857bd..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-20.mdx +++ /dev/null @@ -1,9 +0,0 @@ -## 4.2.6 -**`(fix):`** Serialization utilities (necessary when pydantic aliases are removed) now respects dictionaries as well. - - -## 4.2.5 -**`(fix):`** Parameters of file upload functions now default to OMIT, not None, so that the SDK appropriately -filters out unset parameters, while still allowing for user specified None values. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-23.mdx b/fern/products/sdks/overview/python/changelog/2024-09-23.mdx deleted file mode 100644 index 030e89be4..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-23.mdx +++ /dev/null @@ -1,11 +0,0 @@ -## 4.2.7-rc1 -**`(fix):`** When leveraging the `include_union_utils` configuration flag, the Pydantic models will no longer include transitive dependencies within -`update_forward_ref` calls, since these should not be necessary. This effectively scopes back the changes introduced in 4.0.0-rc5, which included -changes to improve circular reference handling in Pydantic models. - - -## 4.2.7-rc0 -**`(fix):`** Dynamic header suppliers, as used within the OAuth provider are now invoked on every request, not just the first. -This was a regression introduced within an earlier version that is now fixed. As a results of this fix, the `refresh_token` is now correctly refreshed. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-26.mdx b/fern/products/sdks/overview/python/changelog/2024-09-26.mdx deleted file mode 100644 index 6b06d06e1..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-26.mdx +++ /dev/null @@ -1,13 +0,0 @@ -## 4.2.7-rc4 -**`(fix):`** Generated readmes now include the parameter name required for the request options parameter within the example snippets. - -## 4.2.7-rc3 -**`(fix):`** Now, when sending Snippet Templates back to Fern, the generator will not try to coerce a potentially missing ID into the `api_definition_id` field. -This, had been a cause of the error log `Failed to upload snippet templates to FDR, this is ok: one of the hex, bytes, bytes_le, fields, or int arguments must be given`. - - -## 4.2.7-rc2 -**`(fix):`** Pydantic utilities now correctly handles cases where you have a Pydantic model, with a list of pydantic models as a field, where those models have literals. -Effectively, `deep_union_pydantic_objects` now handles lists of objects and merges them appropriately. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-09-28.mdx b/fern/products/sdks/overview/python/changelog/2024-09-28.mdx deleted file mode 100644 index 753f7c7ed..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-09-28.mdx +++ /dev/null @@ -1,11 +0,0 @@ -## 4.2.7 -**`(fix):`** The generated README will now have a section that links to the generated -SDK Reference (in `reference.md`). - -```md -## Reference - -A full reference for this library can be found [here](./reference.md). -``` - - diff --git a/fern/products/sdks/overview/python/changelog/2024-10-11.mdx b/fern/products/sdks/overview/python/changelog/2024-10-11.mdx deleted file mode 100644 index 07986f70c..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-10-11.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.2.8 -**`(fix):`** The snippet writer now correctly handles base64 strings. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-10-21.mdx b/fern/products/sdks/overview/python/changelog/2024-10-21.mdx deleted file mode 100644 index 1139ad04b..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-10-21.mdx +++ /dev/null @@ -1,23 +0,0 @@ -## 4.3.3 -**`(fix):`** The generator now writes the reference.md configuration correctly, using `.dict()` instead of `.json()`. - - -## 4.3.2 -**`(fix):`** The generator will now correctly default to the configured global `default_bytes_stream_chunk_size` when the `request_options` parameter is not provided. - - -## 4.3.1 -**`(feat):`** Requests for file download will now allow users to pass in a `chunk_size` option that allows them to receive chunks of a specific size -from the resultant `iter_bytes` invocation on the response byte stream. - -Concretely, a user would leverage the following: -```python -client.download( - ..., - request_options={ - "chunk_size": 1024 # 1MB - } -) -``` - - diff --git a/fern/products/sdks/overview/python/changelog/2024-11-13.mdx b/fern/products/sdks/overview/python/changelog/2024-11-13.mdx deleted file mode 100644 index 57928b088..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-11-13.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.4 -**`(fix):`** Update shared http_client.py to remove omitted entries during file upload requests. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-11-14.mdx b/fern/products/sdks/overview/python/changelog/2024-11-14.mdx deleted file mode 100644 index a8a75a906..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-11-14.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.5 -**`(fix):`** Update README.md snippet builder to omit invalid snippets during readme config generation. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-11-15.mdx b/fern/products/sdks/overview/python/changelog/2024-11-15.mdx deleted file mode 100644 index eefa718fc..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-11-15.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.6 -**`(fix):`** Fix README.md and reference.md generation. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-11-19.mdx b/fern/products/sdks/overview/python/changelog/2024-11-19.mdx deleted file mode 100644 index 99eebaabb..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-11-19.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.7 -**`(fix):`** Update multipart endpoint generation to propertly omit optional body parameters. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-11-20.mdx b/fern/products/sdks/overview/python/changelog/2024-11-20.mdx deleted file mode 100644 index 864c53203..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-11-20.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.8 -**`(fix):`** Include content-type headers when available as part of endpoint request generation. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-12-08.mdx b/fern/products/sdks/overview/python/changelog/2024-12-08.mdx deleted file mode 100644 index 8143b05e9..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-12-08.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.9 -**`(fix):`** Fix indentation in generated README.md sections to ensure proper formatting and readability. - - diff --git a/fern/products/sdks/overview/python/changelog/2024-12-20.mdx b/fern/products/sdks/overview/python/changelog/2024-12-20.mdx deleted file mode 100644 index 95ef8a4ad..000000000 --- a/fern/products/sdks/overview/python/changelog/2024-12-20.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.10 -**`(fix):`** Pagination correctly uses specified defaults to support custom schemes. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-01-06.mdx b/fern/products/sdks/overview/python/changelog/2025-01-06.mdx deleted file mode 100644 index 5040e39a0..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-01-06.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.11 -**`(fix):`** pyproject.toml now has a `[project]` block making it Poetry v2 compatible. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-02-10.mdx b/fern/products/sdks/overview/python/changelog/2025-02-10.mdx deleted file mode 100644 index 088a85bac..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-02-10.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.12 -**`(feat):`** The Python generator now autogenerates a requirements.txt file. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-02-12.mdx b/fern/products/sdks/overview/python/changelog/2025-02-12.mdx deleted file mode 100644 index 4e2417d76..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-02-12.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.13 -**`(feat):`** The Python generator now supports conditioning dependencies on the Python version. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-02-20.mdx b/fern/products/sdks/overview/python/changelog/2025-02-20.mdx deleted file mode 100644 index b9a88e8d7..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-02-20.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.14 -**`(feat):`** Set the default number of retries to 2 (was 0) to align with the generated README. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-03-05.mdx b/fern/products/sdks/overview/python/changelog/2025-03-05.mdx deleted file mode 100644 index d62d0e056..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-03-05.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.15 -**`(fix):`** Fix an issue where extraneous NameError-causing update_forward_refs invocations were being emitted. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-03-06.mdx b/fern/products/sdks/overview/python/changelog/2025-03-06.mdx deleted file mode 100644 index 177e361f1..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-03-06.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.16 -**`(fix):`** Fix an issue where GeneratorExit was unintentionally being swallowed by code blocks within the HttpClient.stream() contextmanager. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-03-13.mdx b/fern/products/sdks/overview/python/changelog/2025-03-13.mdx deleted file mode 100644 index b7285024d..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-03-13.mdx +++ /dev/null @@ -1,5 +0,0 @@ -## 4.3.17 -**`(fix):`** Fix an issue where parameter names that conflict with the `request_options` parameter are now properly deconflicted by -prepending an underscore to the `request_options` parameter name. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-03-14.mdx b/fern/products/sdks/overview/python/changelog/2025-03-14.mdx deleted file mode 100644 index 4380a9f37..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-03-14.mdx +++ /dev/null @@ -1,6 +0,0 @@ -## 4.3.18 -**`(fix):`** Fix an issue where the `request_options` parameter name is now properly respected when it's -renamed due to conflicts with other parameter names. Previously, the code would still reference the -original parameter name internally, causing errors. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-03-18.mdx b/fern/products/sdks/overview/python/changelog/2025-03-18.mdx deleted file mode 100644 index 681a2bfa0..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-03-18.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.19 -**`(internal):`** Update the IR to v57. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-03-19.mdx b/fern/products/sdks/overview/python/changelog/2025-03-19.mdx deleted file mode 100644 index d22496b91..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-03-19.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.20 -**`(fix):`** Update formatting across all generated files. There are no behavioral changes, but large diffs are expected. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-03-24.mdx b/fern/products/sdks/overview/python/changelog/2025-03-24.mdx deleted file mode 100644 index ad9cfeff6..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-03-24.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.3.21 -**`(fix):`** Fix an issue where the default `timeout` was not being respected when a custom `httpx_client` was provided. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-03-25.mdx b/fern/products/sdks/overview/python/changelog/2025-03-25.mdx deleted file mode 100644 index abf335f51..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-03-25.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.4.0 -**`(feat):`** Add support for raw bytes responses. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-03-28.mdx b/fern/products/sdks/overview/python/changelog/2025-03-28.mdx deleted file mode 100644 index 236d42917..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-03-28.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.5.0 -**`(feat):`** Add support for websocket code generation. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-01.mdx b/fern/products/sdks/overview/python/changelog/2025-04-01.mdx deleted file mode 100644 index 3f1c2b085..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-01.mdx +++ /dev/null @@ -1,10 +0,0 @@ -## 4.6.0 -**`(feat):`** Add support for generating legacy wire tests, and disable them by default. These tests will be restored and improved in the future. -Users can opt-in to generating legacy wire tests by setting the `include_legacy_wire_tests` flag to `true` in their configuration. - -```yaml -config: - include_legacy_wire_tests: true -``` - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-03.mdx b/fern/products/sdks/overview/python/changelog/2025-04-03.mdx deleted file mode 100644 index 5b17e7a00..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-03.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.7.0 -**`(feat):`** Add support for user-agent header - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-07.mdx b/fern/products/sdks/overview/python/changelog/2025-04-07.mdx deleted file mode 100644 index a7a403720..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-07.mdx +++ /dev/null @@ -1,19 +0,0 @@ -## 4.10.0 -**`(feat):`** Add support for using TypedDicts for file upload request parameters. This flag should -be used in conjunction with the `use_typeddict_requests` flag like so: - -```yaml -config: - use_typeddict_requests: true - use_typeddict_requests_for_file_upload: true -``` - - -## 4.9.0 -**`(feat):`** Implement raw client support for accessing response headers and data in unary endpoints. - - -## 4.8.0 -**`(feat):`** Add support for inlining path parameters - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-08.mdx b/fern/products/sdks/overview/python/changelog/2025-04-08.mdx deleted file mode 100644 index bd5bb5571..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-08.mdx +++ /dev/null @@ -1,5 +0,0 @@ -## 4.11.0 -**`(fix):`** Always represent nullable as Optional rather than NotRequired, only use -NotRequired for optional in typeddicts. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-09.mdx b/fern/products/sdks/overview/python/changelog/2025-04-09.mdx deleted file mode 100644 index a250f7c7c..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-09.mdx +++ /dev/null @@ -1,27 +0,0 @@ -## 4.13.0 -**`(feat):`** Adds support for overriding literal global headers in the client constructor (e.g. `version`). - -```python -client = Acme( - ... - version="1.0.0", -) -``` - - -## 4.12.1 -**`(fix):`** Fixes an issue where dictionary types defined within TypedDicts incorrectly used the -`typing_extensions.NotRequired` type. - - -**`(fix):`** Fixes an issue where optional `core.File` parameters would cause `mypy` failures. - - -**`(fix):`** Fixes a regression introduced in 4.12.0, where the non raw response client endpoints -did not respect the allowed method keywords (e.g. `list` was generated as `list_`). - - -## 4.12.0 -**`(fix):`** Resolve issues with paginated endpoints generating incorrect endpoint return types. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-10.mdx b/fern/products/sdks/overview/python/changelog/2025-04-10.mdx deleted file mode 100644 index 209e7c605..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-10.mdx +++ /dev/null @@ -1,16 +0,0 @@ -## 4.14.1 -**`(fix):`** The generated GitHub workflow now uses `ubuntu-latest` instead of `ubuntu-20.04` - - -## 4.14.0 -**`(feat):`** Add support for receiving raw responses from streaming endpoints. - - -**`(feat):`** Add support for excluding types from the generated `__init__.py` files. - -```yaml -config: - exclude_types_from_init_exports: true -``` - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-13.mdx b/fern/products/sdks/overview/python/changelog/2025-04-13.mdx deleted file mode 100644 index 99e01ea3a..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-13.mdx +++ /dev/null @@ -1,5 +0,0 @@ -## 4.14.2 -**`(fix):`** Fix an issue where TypedDicts with circular references were not correctly serialized. -This issue only affected users that enabled `use_typeddict_requests`. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-22.mdx b/fern/products/sdks/overview/python/changelog/2025-04-22.mdx deleted file mode 100644 index 2cdf918aa..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-22.mdx +++ /dev/null @@ -1,8 +0,0 @@ -## 4.14.4 -**`(fix):`** Fixed an issue where filename and plain text content-type parameters were being incorrectly serialized. - - -## 4.14.3 -**`(fix):`** Add support for receiving raw responses from pagination endpoints. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-23.mdx b/fern/products/sdks/overview/python/changelog/2025-04-23.mdx deleted file mode 100644 index 10fe34e09..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-23.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.14.5 -**`(fix):`** Fixed an issue introduced in 4.14.0, where SSE streaming responses were not yielded correctly. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-24.mdx b/fern/products/sdks/overview/python/changelog/2025-04-24.mdx deleted file mode 100644 index f4cef3119..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-24.mdx +++ /dev/null @@ -1,12 +0,0 @@ -## 4.15.0 -**`(feat):`** Add support for offset step pagination, where the offset position represents the element's index rather -than the page number. - - -**`(fix):`** Fixed an issue introduced in 4.14.0, where paginated endpoints were not returning the underlying data. - - -## 4.14.6 -**`(fix):`** Fixed an issue where multipart/form-data content types are now explicitly sent when configured in the API definition. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-25.mdx b/fern/products/sdks/overview/python/changelog/2025-04-25.mdx deleted file mode 100644 index 3cba54c50..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-25.mdx +++ /dev/null @@ -1,8 +0,0 @@ -## 4.16.1 -**`(internal):`** Fixes an internal release issue in `4.16.0`. - - -## 4.16.0 -**`(feat):`** Add support for retrieving response headers from the generated `ApiError` class. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-29.mdx b/fern/products/sdks/overview/python/changelog/2025-04-29.mdx deleted file mode 100644 index 7b6143d06..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-29.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.16.2 -**`(fix):`** Fixed an issue introduced in 4.14.0, where `bytes` and `text` responses were not handled correctly. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-04-30.mdx b/fern/products/sdks/overview/python/changelog/2025-04-30.mdx deleted file mode 100644 index f31fadc39..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-04-30.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.17.0 -**`(feat):`** Add support for retrieving response headers for each page of paginated responses, instead of just the first page. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-05-05.mdx b/fern/products/sdks/overview/python/changelog/2025-05-05.mdx deleted file mode 100644 index 7801bfb47..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-05-05.mdx +++ /dev/null @@ -1,4 +0,0 @@ -## 4.17.1 -**`(fix):`** Fix an issue where response `headers` were not available in the strongly typed error classes. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-05-06.mdx b/fern/products/sdks/overview/python/changelog/2025-05-06.mdx deleted file mode 100644 index 79e9b398c..000000000 --- a/fern/products/sdks/overview/python/changelog/2025-05-06.mdx +++ /dev/null @@ -1,14 +0,0 @@ -## 4.18.2 -**`(fix):`** Fix README g - - -## 4.18.1 -**`(fix):`** Update python-v2 generator invocation so that all relevant files like pyproject.toml and poetry.lock are pushed -to the GitHub repository. - - -## 4.18.0 -**`(fix):`** Add support for self-hosted mode, allowing users to push generated SDKs to their own GitHub repositories. -This feature enables organizations to maintain private SDK repositories with custom configurations. - - diff --git a/fern/products/sdks/overview/python/changelog/2025-07-24.mdx b/fern/products/sdks/overview/python/changelog/2025-07-24.mdx new file mode 100644 index 000000000..2c7e5f65a --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-07-24.mdx @@ -0,0 +1,451 @@ +## 4.18.2 +**`(fix):`** Fix README g + + +## 4.18.1 +**`(fix):`** Update python-v2 generator invocation so that all relevant files like pyproject.toml and poetry.lock are pushed +to the GitHub repository. + + +## 4.18.0 +**`(fix):`** Add support for self-hosted mode, allowing users to push generated SDKs to their own GitHub repositories. +This feature enables organizations to maintain private SDK repositories with custom configurations. + + +## 4.17.1 +**`(fix):`** Fix an issue where response `headers` were not available in the strongly typed error classes. + + +## 4.17.0 +**`(feat):`** Add support for retrieving response headers for each page of paginated responses, instead of just the first page. + + +## 4.16.2 +**`(fix):`** Fixed an issue introduced in 4.14.0, where `bytes` and `text` responses were not handled correctly. + + +## 4.16.1 +**`(internal):`** Fixes an internal release issue in `4.16.0`. + + +## 4.16.0 +**`(feat):`** Add support for retrieving response headers from the generated `ApiError` class. + + +## 4.15.0 +**`(feat):`** Add support for offset step pagination, where the offset position represents the element's index rather +than the page number. + + +**`(fix):`** Fixed an issue introduced in 4.14.0, where paginated endpoints were not returning the underlying data. + + +## 4.14.6 +**`(fix):`** Fixed an issue where multipart/form-data content types are now explicitly sent when configured in the API definition. + + +## 4.14.5 +**`(fix):`** Fixed an issue introduced in 4.14.0, where SSE streaming responses were not yielded correctly. + + +## 4.14.4 +**`(fix):`** Fixed an issue where filename and plain text content-type parameters were being incorrectly serialized. + + +## 4.14.3 +**`(fix):`** Add support for receiving raw responses from pagination endpoints. + + +## 4.14.2 +**`(fix):`** Fix an issue where TypedDicts with circular references were not correctly serialized. +This issue only affected users that enabled `use_typeddict_requests`. + + +## 4.14.1 +**`(fix):`** The generated GitHub workflow now uses `ubuntu-latest` instead of `ubuntu-20.04` + + +## 4.14.0 +**`(feat):`** Add support for receiving raw responses from streaming endpoints. + + +**`(feat):`** Add support for excluding types from the generated `__init__.py` files. + +```yaml +config: + exclude_types_from_init_exports: true +``` + + +## 4.13.0 +**`(feat):`** Adds support for overriding literal global headers in the client constructor (e.g. `version`). + +```python +client = Acme( + ... + version="1.0.0", +) +``` + + +## 4.12.1 +**`(fix):`** Fixes an issue where dictionary types defined within TypedDicts incorrectly used the +`typing_extensions.NotRequired` type. + + +**`(fix):`** Fixes an issue where optional `core.File` parameters would cause `mypy` failures. + + +**`(fix):`** Fixes a regression introduced in 4.12.0, where the non raw response client endpoints +did not respect the allowed method keywords (e.g. `list` was generated as `list_`). + + +## 4.12.0 +**`(fix):`** Resolve issues with paginated endpoints generating incorrect endpoint return types. + + +## 4.11.0 +**`(fix):`** Always represent nullable as Optional rather than NotRequired, only use +NotRequired for optional in typeddicts. + + +## 4.10.0 +**`(feat):`** Add support for using TypedDicts for file upload request parameters. This flag should +be used in conjunction with the `use_typeddict_requests` flag like so: + +```yaml +config: + use_typeddict_requests: true + use_typeddict_requests_for_file_upload: true +``` + + +## 4.9.0 +**`(feat):`** Implement raw client support for accessing response headers and data in unary endpoints. + + +## 4.8.0 +**`(feat):`** Add support for inlining path parameters + + +## 4.7.0 +**`(feat):`** Add support for user-agent header + + +## 4.6.0 +**`(feat):`** Add support for generating legacy wire tests, and disable them by default. These tests will be restored and improved in the future. +Users can opt-in to generating legacy wire tests by setting the `include_legacy_wire_tests` flag to `true` in their configuration. + +```yaml +config: + include_legacy_wire_tests: true +``` + + +## 4.5.0 +**`(feat):`** Add support for websocket code generation. + + +## 4.4.0 +**`(feat):`** Add support for raw bytes responses. + + +## 4.3.21 +**`(fix):`** Fix an issue where the default `timeout` was not being respected when a custom `httpx_client` was provided. + + +## 4.3.20 +**`(fix):`** Update formatting across all generated files. There are no behavioral changes, but large diffs are expected. + + +## 4.3.19 +**`(internal):`** Update the IR to v57. + + +## 4.3.18 +**`(fix):`** Fix an issue where the `request_options` parameter name is now properly respected when it's +renamed due to conflicts with other parameter names. Previously, the code would still reference the +original parameter name internally, causing errors. + + +## 4.3.17 +**`(fix):`** Fix an issue where parameter names that conflict with the `request_options` parameter are now properly deconflicted by +prepending an underscore to the `request_options` parameter name. + + +## 4.3.16 +**`(fix):`** Fix an issue where GeneratorExit was unintentionally being swallowed by code blocks within the HttpClient.stream() contextmanager. + + +## 4.3.15 +**`(fix):`** Fix an issue where extraneous NameError-causing update_forward_refs invocations were being emitted. + + +## 4.3.14 +**`(feat):`** Set the default number of retries to 2 (was 0) to align with the generated README. + + +## 4.3.13 +**`(feat):`** The Python generator now supports conditioning dependencies on the Python version. + + +## 4.3.12 +**`(feat):`** The Python generator now autogenerates a requirements.txt file. + + +## 4.3.11 +**`(fix):`** pyproject.toml now has a `[project]` block making it Poetry v2 compatible. + + +## 4.3.10 +**`(fix):`** Pagination correctly uses specified defaults to support custom schemes. + + +## 4.3.9 +**`(fix):`** Fix indentation in generated README.md sections to ensure proper formatting and readability. + + +## 4.3.8 +**`(fix):`** Include content-type headers when available as part of endpoint request generation. + + +## 4.3.7 +**`(fix):`** Update multipart endpoint generation to propertly omit optional body parameters. + + +## 4.3.6 +**`(fix):`** Fix README.md and reference.md generation. + + +## 4.3.5 +**`(fix):`** Update README.md snippet builder to omit invalid snippets during readme config generation. + + +## 4.3.4 +**`(fix):`** Update shared http_client.py to remove omitted entries during file upload requests. + + +## 4.3.3 +**`(fix):`** The generator now writes the reference.md configuration correctly, using `.dict()` instead of `.json()`. + + +## 4.3.2 +**`(fix):`** The generator will now correctly default to the configured global `default_bytes_stream_chunk_size` when the `request_options` parameter is not provided. + + +## 4.3.1 +**`(feat):`** Requests for file download will now allow users to pass in a `chunk_size` option that allows them to receive chunks of a specific size +from the resultant `iter_bytes` invocation on the response byte stream. + +Concretely, a user would leverage the following: +```python +client.download( + ..., + request_options={ + "chunk_size": 1024 # 1MB + } +) +``` + + +## 4.2.8 +**`(fix):`** The snippet writer now correctly handles base64 strings. + + +## 4.2.7 +**`(fix):`** The generated README will now have a section that links to the generated +SDK Reference (in `reference.md`). + +```md +## Reference + +A full reference for this library can be found [here](./reference.md). +``` + + +## 4.2.7-rc4 +**`(fix):`** Generated readmes now include the parameter name required for the request options parameter within the example snippets. + +## 4.2.7-rc3 +**`(fix):`** Now, when sending Snippet Templates back to Fern, the generator will not try to coerce a potentially missing ID into the `api_definition_id` field. +This, had been a cause of the error log `Failed to upload snippet templates to FDR, this is ok: one of the hex, bytes, bytes_le, fields, or int arguments must be given`. + + +## 4.2.7-rc2 +**`(fix):`** Pydantic utilities now correctly handles cases where you have a Pydantic model, with a list of pydantic models as a field, where those models have literals. +Effectively, `deep_union_pydantic_objects` now handles lists of objects and merges them appropriately. + + +## 4.2.7-rc1 +**`(fix):`** When leveraging the `include_union_utils` configuration flag, the Pydantic models will no longer include transitive dependencies within +`update_forward_ref` calls, since these should not be necessary. This effectively scopes back the changes introduced in 4.0.0-rc5, which included +changes to improve circular reference handling in Pydantic models. + + +## 4.2.7-rc0 +**`(fix):`** Dynamic header suppliers, as used within the OAuth provider are now invoked on every request, not just the first. +This was a regression introduced within an earlier version that is now fixed. As a results of this fix, the `refresh_token` is now correctly refreshed. + + +## 4.2.6 +**`(fix):`** Serialization utilities (necessary when pydantic aliases are removed) now respects dictionaries as well. + + +## 4.2.5 +**`(fix):`** Parameters of file upload functions now default to OMIT, not None, so that the SDK appropriately +filters out unset parameters, while still allowing for user specified None values. + + +## 4.2.4 +**`(fix):`** Datetime examples are generated correctly once again. +The `pydantic_utilities` file is python 3.8 compatible. + + +## 4.2.3 +**`(fix):`** The content type of file properties is now respected for multipart +requests. For example, if you have a file property called `image` that has the +content type `image/jpeg`, then it will be sent as: + +```python +"image": core.with_content_type(file=image, content_type="image/jpeg"), +```` + + +## 4.2.2 +**`(fix):`** The content type of non-file properties is now respected for multipart +requests. For example, if you have a type called `metadata` that has the +content type `application/json`, then it will be sent as: + +```python +"metadata": (None, json.dumps(jsonable_encoder(metadata)), "application/json"), +``` + + +## 4.2.1 +**`(fix):`** When the generator runs bash commands such as `poetry install` and there is a failure, +now the `stderr` and `stdout` is logged to help improve user debugging. + + +## 4.2.0 +**`(feat):`** Allow specifying arbitrary configuration to your packages `pyproject.toml` by adding a `pyproject_toml` block to your configuration +whatever you include in this block will be added as-is to the `pyproject.toml` file. The config, as an example is: + +```yaml +config: + pyproject_toml: | + [tool.covcheck.group.unit.coverage] + branch = 26.0 + line = 62.0 + + [tool.covcheck.group.service.coverage] + branch = 30.0 + line = 67.0 +``` + + +## 4.1.0 +**`(feat):`** Allow specifying pip extras within your `pyproject.toml`. The following config: + +```yaml +config: + extra_dev_dependencies: + covcheck: + version: "^0.4.3" + extras: ["toml"] +``` + +would add the following to your `pyproject.toml`: + +```toml +[tool.poetry.dev-dependencies] +covcheck = { version = "^0.4.3", extras = ["toml"] } +``` + + +## 4.0.0 +**`(fix):`** Generated tests that expect an empty result when they are of type `text` (not JSON) now appropriately expect an empty string instead of `None` for async functions as well. +Version 3.3.4 fixed this for sync functions only, which was a bug. + + +## 4.0.0-rc9 +**`(fix):`** All Pydantic V2 warnings have been resolved + +### What's been fixed +- json_encoders have been removed from Pydantic V2, and replaced with a `model_serializer` method. +- additional model construction functions have been added when not leveraging pydantic field aliases to allow users to construct a model from JSOn without the need for dealiasing the object themselves. + +## 4.0.0-rc8 +**`(fix):`** Pydantic models that call `update_forward_refs` on non-union circular reference dependencies now pass in `localns` for +the current member, a field in Pydantic V1 that provides object contexts to models in the event objects are not fully rebuilt. + + +## 4.0.0-rc7 +**`(fix):`** The generator now respects the old use_str_enums flag again, a regression was introduced where only the new flag `enum_type` +was respected. + + +## 4.0.0-rc6 +**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This +prevents runtime errors in certain cases where types self reference itself through +a union. + + +## 4.0.0-rc5 +**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This +prevents runtime errors in certain cases where types self reference itself through +a union. + + +## 4.0.0-rc4 +**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This +prevents runtime errors in certain cases where types self reference itself through +a union. + + +## 4.0.0-rc3 +**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This +prevents runtime errors in certain cases where types self reference itself through +a union. + + +## 4.0.0-rc2 +**`(fix):`** Update .dict calls in Pydantic V2 to be back to pre-3.10.4 logic for SDKs that continue using Pydantic aliases. + +## 4.0.0-rc1 +**`(fix):`** Update .dict calls in Pydantic V2 to be back to pre-3.10.4 logic. + +### What's been fixed +- Pydantic V2 `.dict` calls are updated to be back to pre-3.10.4 logic. This is fix a regression where nested literals were being omitted due to the Pydantic V2 serializers not respecting the recursive .dict logic, as Pydantic V2 shells out `model_dump` calls to Rust library and serializers, as opposed to recursively calling `model_dump`. +It is expected that performance will not be degraded given the Rust-based serializers have optimized performance, compared to the Pydantic V1 .dict approach. + +## 4.0.0-rc0 +**`(fix):`** Rerelease 3.11.0-rc0 as a major version, with a configuration flag to disable the behavior (`use_pydantic_field_aliases`), defaulted to `true` to preserve existing behavior. + +**`(internal):`** The generator now shares "as is" files with Pydantic and FastAPI generators. + +### What's been fixed +- Rerelease 3.11.0-rc0 as a major version, with a configuration flag to disable the behavior (`use_pydantic_field_aliases`), defaulted to `false` to introduce the break on a major version. +To maintain parity with pre-3.11.0 behavior, update the flag to `true`: + + ```yaml + - name: fernapi/fern-python-sdk + version: 4.0.0-rc0 + config: + pydantic_config: + use_pydantic_field_aliases: true + ``` + +## 3.11.0-rc0 +**`(chore):`** Remove Pydantic field aliases and leverage an internal representation. + +### What's been fixed +- Pydantic field aliases are removed and replaced with an internal representation. This allows for more robust handling of field aliases and prevents issues with Pydantic V2 and mypy. +Previously, you'd have for V1 and V2 compatibility in Pydantic, you'd want to conditionally apply the config class within the base model, however this would lead to mypy errors when filling out a model with it's field alias. To solve this, We used the deprecated `class Config`, regardless of the Pydantic version to satisfy mypy, which lead to warnings in the console. +Now, we've removed the field aliases and replaced them with an internal representation, which allows us to avoid pydantic config altogether. + +## 3.10.8 +**`(fix):`** Allow for fields prefixed with the name `model`, a silent break introduced in Pydantic V2. + +## 3.10.7 +**`(fix):`** When not leveraging mock integration tests, still run pytest over everything, not a specific directory. +