Skip to content

Commit 896b9e0

Browse files
authored
port mitigation for covariance issue with serialization (#58)
1 parent 7cacdee commit 896b9e0

File tree

42 files changed

+562
-610
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+562
-610
lines changed

src/Custom/Assistants/AssistantClient.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ namespace OpenAI.Assistants;
1919
[CodeGenSuppress("AssistantClient", typeof(ClientPipeline), typeof(ApiKeyCredential), typeof(Uri))]
2020
[CodeGenSuppress("CreateAssistantAsync", typeof(AssistantCreationOptions))]
2121
[CodeGenSuppress("CreateAssistant", typeof(AssistantCreationOptions))]
22+
[CodeGenSuppress("DeleteAssistantAsync", typeof(string))]
23+
[CodeGenSuppress("DeleteAssistant", typeof(string))]
2224
[CodeGenSuppress("GetAssistantsAsync", typeof(int?), typeof(ListOrder?), typeof(string), typeof(string))]
2325
[CodeGenSuppress("GetAssistants", typeof(int?), typeof(ListOrder?), typeof(string), typeof(string))]
2426
public partial class AssistantClient
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.ClientModel;
3+
using System.ClientModel.Primitives;
4+
using System.Collections.Generic;
5+
using System.Text.Json;
6+
7+
namespace OpenAI.Assistants;
8+
9+
[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Assistants.CodeInterpreterToolDefinition>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
10+
public partial class CodeInterpreterToolDefinition : IJsonModel<CodeInterpreterToolDefinition>
11+
{
12+
void IJsonModel<CodeInterpreterToolDefinition>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
13+
=> CustomSerializationHelpers.SerializeInstance(this, SerializeCodeInterpreterToolDefinition, writer, options);
14+
15+
internal static void SerializeCodeInterpreterToolDefinition(CodeInterpreterToolDefinition instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
16+
=> instance.WriteCore(writer, options);
17+
18+
protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
19+
{
20+
writer.WriteStartObject();
21+
writer.WritePropertyName("type"u8);
22+
writer.WriteStringValue(Type);
23+
writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options);
24+
writer.WriteEndObject();
25+
}
26+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.ClientModel;
3+
using System.ClientModel.Primitives;
4+
using System.Collections.Generic;
5+
using System.Text.Json;
6+
7+
namespace OpenAI.Assistants;
8+
9+
[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Assistants.FileSearchToolDefinition>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
10+
public partial class FileSearchToolDefinition : IJsonModel<FileSearchToolDefinition>
11+
{
12+
void IJsonModel<FileSearchToolDefinition>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
13+
=> CustomSerializationHelpers.SerializeInstance(this, SerializeFileSearchToolDefinition, writer, options);
14+
15+
internal static void SerializeFileSearchToolDefinition(FileSearchToolDefinition instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
16+
=> instance.WriteCore(writer, options);
17+
18+
protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
19+
{
20+
writer.WriteStartObject();
21+
writer.WritePropertyName("type"u8);
22+
writer.WriteStringValue(Type);
23+
writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options);
24+
writer.WriteEndObject();
25+
}
26+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.ClientModel;
3+
using System.ClientModel.Primitives;
4+
using System.Collections.Generic;
5+
using System.Text.Json;
6+
7+
namespace OpenAI.Assistants;
8+
9+
[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Assistants.FunctionToolDefinition>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
10+
public partial class FunctionToolDefinition : IJsonModel<FunctionToolDefinition>
11+
{
12+
void IJsonModel<FunctionToolDefinition>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
13+
=> CustomSerializationHelpers.SerializeInstance<ToolDefinition, FunctionToolDefinition>(this, SerializeFunctionToolDefinition, writer, options);
14+
15+
internal static void SerializeFunctionToolDefinition(FunctionToolDefinition instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
16+
=> instance.WriteCore(writer, options);
17+
18+
protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
19+
{
20+
writer.WriteStartObject();
21+
writer.WritePropertyName("function"u8);
22+
writer.WriteObjectValue<InternalFunctionDefinition>(_internalFunction, options);
23+
writer.WritePropertyName("type"u8);
24+
writer.WriteStringValue(Type);
25+
writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options);
26+
writer.WriteEndObject();
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.ClientModel;
3+
using System.ClientModel.Primitives;
4+
using System.Collections.Generic;
5+
using System.Text.Json;
6+
7+
namespace OpenAI.Assistants;
8+
9+
[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Assistants.InternalMessageImageFileContent>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
10+
internal partial class InternalMessageImageFileContent : IJsonModel<InternalMessageImageFileContent>
11+
{
12+
void IJsonModel<InternalMessageImageFileContent>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
13+
=> CustomSerializationHelpers.SerializeInstance(this, SerializeInternalMessageImageFileContent, writer, options);
14+
15+
internal static void SerializeInternalMessageImageFileContent(InternalMessageImageFileContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
16+
=> instance.WriteCore(writer, options);
17+
18+
protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
19+
{
20+
writer.WriteStartObject();
21+
writer.WritePropertyName("type"u8);
22+
writer.WriteStringValue(_type);
23+
writer.WritePropertyName("image_file"u8);
24+
writer.WriteObjectValue<InternalMessageContentItemFileObjectImageFile>(_imageFile, options);
25+
writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options);
26+
writer.WriteEndObject();
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.ClientModel;
3+
using System.ClientModel.Primitives;
4+
using System.Collections.Generic;
5+
using System.Text.Json;
6+
7+
namespace OpenAI.Assistants;
8+
9+
[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Assistants.InternalMessageImageUrlContent>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
10+
internal partial class InternalMessageImageUrlContent : IJsonModel<InternalMessageImageUrlContent>
11+
{
12+
void IJsonModel<InternalMessageImageUrlContent>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
13+
=> CustomSerializationHelpers.SerializeInstance(this, SerializeInternalMessageImageUrlContent, writer, options);
14+
15+
internal static void SerializeInternalMessageImageUrlContent(InternalMessageImageUrlContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
16+
=> instance.WriteCore(writer, options);
17+
18+
protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
19+
{
20+
writer.WriteStartObject();
21+
writer.WritePropertyName("type"u8);
22+
writer.WriteStringValue(_type);
23+
writer.WritePropertyName("image_url"u8);
24+
writer.WriteObjectValue<InternalMessageContentImageUrlObjectImageUrl>(_imageUrl, options);
25+
writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options);
26+
writer.WriteEndObject();
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.ClientModel;
3+
using System.ClientModel.Primitives;
4+
using System.Collections.Generic;
5+
using System.Text.Json;
6+
7+
namespace OpenAI.Assistants;
8+
9+
[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Assistants.InternalRequestMessageTextContent>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
10+
internal partial class InternalRequestMessageTextContent : IJsonModel<InternalRequestMessageTextContent>
11+
{
12+
void IJsonModel<InternalRequestMessageTextContent>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
13+
=> CustomSerializationHelpers.SerializeInstance(this, SerializeInternalRequestMessageTextContent, writer, options);
14+
15+
internal static void SerializeInternalRequestMessageTextContent(InternalRequestMessageTextContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
16+
=> instance.WriteCore(writer, options);
17+
18+
protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
19+
{
20+
writer.WriteStartObject();
21+
writer.WritePropertyName("type"u8);
22+
writer.WriteStringValue(Type.ToString());
23+
writer.WritePropertyName("text"u8);
24+
writer.WriteStringValue(InternalText);
25+
writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options);
26+
writer.WriteEndObject();
27+
}
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.ClientModel;
3+
using System.ClientModel.Primitives;
4+
using System.Collections.Generic;
5+
using System.Text.Json;
6+
7+
namespace OpenAI.Assistants;
8+
9+
[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Assistants.InternalResponseMessageTextContent>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
10+
internal partial class InternalResponseMessageTextContent : IJsonModel<InternalResponseMessageTextContent>
11+
{
12+
void IJsonModel<InternalResponseMessageTextContent>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
13+
=> CustomSerializationHelpers.SerializeInstance(this, SerializeInternalResponseMessageTextContent, writer, options);
14+
15+
internal static void SerializeInternalResponseMessageTextContent(InternalResponseMessageTextContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
16+
=> instance.WriteCore(writer, options);
17+
18+
protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
19+
{
20+
writer.WriteStartObject();
21+
writer.WritePropertyName("type"u8);
22+
writer.WriteStringValue(_type);
23+
writer.WritePropertyName("text"u8);
24+
writer.WriteObjectValue<MessageContentTextObjectText>(_text, options);
25+
writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options);
26+
writer.WriteEndObject();
27+
}
28+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.ClientModel;
3+
using System.ClientModel.Primitives;
4+
using System.Collections.Generic;
5+
using System.Text.Json;
6+
7+
namespace OpenAI.Assistants;
8+
9+
[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Assistants.ToolDefinition>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
10+
internal partial class UnknownAssistantToolDefinition : IJsonModel<ToolDefinition>
11+
{
12+
void IJsonModel<ToolDefinition>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
13+
=> CustomSerializationHelpers.SerializeInstance<ToolDefinition, UnknownAssistantToolDefinition>(this, SerializeUnknownAssistantToolDefinition, writer, options);
14+
15+
internal static void SerializeUnknownAssistantToolDefinition(UnknownAssistantToolDefinition instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
16+
=> instance.WriteCore(writer, options);
17+
18+
protected override void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
19+
{
20+
writer.WriteStartObject();
21+
writer.WritePropertyName("type"u8);
22+
writer.WriteStringValue(Type);
23+
writer.WriteSerializedAdditionalRawData(_serializedAdditionalRawData, options);
24+
writer.WriteEndObject();
25+
}
26+
}

src/Custom/Assistants/MessageContent.Serialization.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,18 @@
22
using System.Text.Json;
33

44
namespace OpenAI.Assistants;
5-
public partial class MessageContent : IJsonModel<MessageContent>
5+
6+
[CodeGenSuppress("global::System.ClientModel.Primitives.IJsonModel<OpenAI.Assistants.MessageContent>.Write", typeof(Utf8JsonWriter), typeof(ModelReaderWriterOptions))]
7+
public abstract partial class MessageContent : IJsonModel<MessageContent>
68
{
9+
void IJsonModel<MessageContent>.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
10+
=> CustomSerializationHelpers.SerializeInstance(this, WriteCore, writer, options);
11+
12+
internal static void WriteCore(MessageContent instance, Utf8JsonWriter writer, ModelReaderWriterOptions options)
13+
=> instance.WriteCore(writer, options);
14+
15+
protected abstract void WriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
16+
717
internal static MessageContent DeserializeMessageContent(JsonElement element, ModelReaderWriterOptions options = null)
818
{
919
options ??= ModelSerializationExtensions.WireOptions;
@@ -28,4 +38,4 @@ internal static MessageContent DeserializeMessageContent(JsonElement element, Mo
2838

2939
return null;
3040
}
31-
}
41+
}

0 commit comments

Comments
 (0)