Skip to content

Add text2vec-digitalocean vectorizer module#340

Open
mpartipilo wants to merge 2 commits into
mainfrom
text2vec-digitalocean
Open

Add text2vec-digitalocean vectorizer module#340
mpartipilo wants to merge 2 commits into
mainfrom
text2vec-digitalocean

Conversation

@mpartipilo
Copy link
Copy Markdown
Collaborator

@mpartipilo mpartipilo commented May 18, 2026

Summary

Adds support for the new text2vec-digitalocean vectorizer module. Mirrors text2vec-mistral (shared shape: model + baseURL + vectorizeClassName).

model is required by the factory — the server requires it, so the public API enforces it at the call site.

API surface added

Public types / members (in PublicAPI.Unshipped.txt):

  • Weaviate.Client.Models.Vectorizer.Text2VecDigitalOcean record
    • BaseURL (string?, JSON name baseURL) — optional; server defaults to https://inference.do-ai.run
    • Model (string?) — kept nullable on the record itself (matches the Text2VecMistral record) so deserialization works; required-ness is enforced at the factory entry point
    • VectorizeCollectionName (bool?, JSON name vectorizeClassName)
    • generated record members (Equals, GetHashCode, <Clone>$, equality operators, EqualityContract, copy ctor, PrintMembers, ToString)
  • Weaviate.Client.VectorizerFactory.Text2VecDigitalOcean(string! model, string? baseURL = null, bool? vectorizeCollectionName = null) -> VectorizerConfigmodel is the first parameter and required; baseURL and vectorizeCollectionName keep their defaults

19 entries total in PublicAPI.Unshipped.txt.

Test plan

  • dotnet build clean (0 errors, PublicAPI analyzer satisfied — no RS0016 for the new symbols)
  • Two unit tests in VectorConfigListTests:
    • Test_Text2VecDigitalOcean_Serializes_BaseURL_And_Model — full-payload serialization
    • Test_Text2VecDigitalOcean_Omits_Unset_BaseURL — verifies baseURL is omitted when unset (with model always present)
  • All tests in VectorConfigListTests pass

Review-feedback changes

Second commit (0885c2e) makes model required on the factory, matching the Python sibling PR (weaviate/weaviate-python-client#2041) and the server contract. The PublicAPI signature was updated accordingly, and the second test was renamed/repurposed since "model is omitted when unset" no longer applies (it's required on the factory).

Closes #339

Sibling PR (Python): weaviate/weaviate-python-client#2041

🤖 Generated with Claude Code

Adds support for the new text2vec-digitalocean vectorizer. The
module shape mirrors text2vec-mistral exactly (model + baseURL +
vectorizeClassName), so the existing serialization path is reused
unchanged.

Closes #339

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@orca-security-eu orca-security-eu Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Orca Security Scan Summary

Status Check Issues by priority
Passed Passed Infrastructure as Code high 0   medium 0   low 0   info 0 View in Orca
Passed Passed SAST high 0   medium 0   low 0   info 0 View in Orca
Passed Passed Secrets high 0   medium 0   low 0   info 0 View in Orca
Passed Passed Vulnerabilities high 0   medium 0   low 0   info 0 View in Orca

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 18, 2026

Summary - Weaviate C# Client Coverage

Summary
Generated on: 05/18/2026 - 12:15:29
Coverage date: 05/18/2026 - 12:11:13 - 05/18/2026 - 12:14:53
Parser: MultiReport (33x Cobertura)
Assemblies: 3
Classes: 373
Files: 240
Line coverage: 38.5% (8881 of 23060)
Covered lines: 8881
Uncovered lines: 14179
Coverable lines: 23060
Total lines: 58666
Branch coverage: 31.8% (2130 of 6694)
Covered branches: 2130
Total branches: 6694
Method coverage: Feature is only available for sponsors

Coverage

Weaviate.Client - 39.6%
Name Line Branch
Weaviate.Client 39.6% 33.6%
Weaviate.Client.AggregateClient 19.5% 11.3%
Weaviate.Client.AggregateClientHybridExtensions 0%
Weaviate.Client.AliasClient 100% 62.5%
Weaviate.Client.ApiKeyTokenService 75% 50%
Weaviate.Client.Auth 38%
Weaviate.Client.AuthenticatedHttpHandler 47.7% 35.7%
Weaviate.Client.BackupClient 0% 0%
Weaviate.Client.BaseCollectionClient 0% 0%
Weaviate.Client.Batch.BatchContext 58% 50%
Weaviate.Client.Batch.BatchManager 39.2% 25.7%
Weaviate.Client.Batch.BatchOptions 25% 50%
Weaviate.Client.Batch.BatchResult 100%
Weaviate.Client.Batch.TaskHandle 83.3% 50%
Weaviate.Client.Cache.SchemaCache 69.4% 60%
Weaviate.Client.ClientConfiguration 100% 100%
Weaviate.Client.ClientConfigurationExtensions 35.2% 16.6%
Weaviate.Client.ClusterClient 10.3% 14.2%
Weaviate.Client.CollectionClient 98.7% 87.5%
Weaviate.Client.CollectionClientExtensions 100% 100%
Weaviate.Client.CollectionConfigClient 95.5% 58.3%
Weaviate.Client.CollectionsClient 44.8% 63.6%
Weaviate.Client.CollectionTokenizeClient 100% 50%
Weaviate.Client.Configure 49% 47.3%
Weaviate.Client.Connect 17% 0%
Weaviate.Client.DataClient 91.5% 78.7%
Weaviate.Client.DefaultTokenServiceFactory 27.6% 25%
Weaviate.Client.DependencyInjection.ScopedTokenServiceAdapter 0%
Weaviate.Client.DependencyInjection.WeaviateClientFactory 0% 0%
Weaviate.Client.DependencyInjection.WeaviateInitializationService 0%
Weaviate.Client.DependencyInjection.WeaviateOptions 50.9% 87.5%
Weaviate.Client.DependencyInjection.WeaviateServiceCollectionExtensions 0% 0%
Weaviate.Client.ExportClient 0% 0%
Weaviate.Client.Factory 100%
Weaviate.Client.Generate 100%
Weaviate.Client.GenerateClient 13.3% 32.6%
Weaviate.Client.GenerateClientHybridExtensions 0%
Weaviate.Client.GenerativeConfigFactory 5.2% 100%
Weaviate.Client.GenerativeProviderFactory 1%
Weaviate.Client.GroupsClient 83.3%
Weaviate.Client.GroupsOidcClient 4.3%
Weaviate.Client.Grpc.BatchStreamContext 100%
Weaviate.Client.Grpc.BatchStreamWrapper 75.3% 58.9%
Weaviate.Client.Grpc.LoggingInterceptor 0% 0%
Weaviate.Client.Grpc.RetryInterceptor 41.6% 37.5%
Weaviate.Client.Grpc.WeaviateGrpcClient 66.1% 49.7%
Weaviate.Client.Grpc.WeaviateGrpcServerException 0%
Weaviate.Client.Internal.AutoArray`1 61.9% 50%
Weaviate.Client.Internal.AutoArrayBuilder 100% 100%
Weaviate.Client.Internal.BatchStreamAcks 100%
Weaviate.Client.Internal.BatchStreamBackoff 0%
Weaviate.Client.Internal.BatchStreamError 0%
Weaviate.Client.Internal.BatchStreamOutOfMemory 0%
Weaviate.Client.Internal.BatchStreamResults 100%
Weaviate.Client.Internal.BatchStreamSuccess 100%
Weaviate.Client.Internal.ExceptionHelper 62.8% 59.6%
Weaviate.Client.Internal.HttpLoggingHandler 0% 0%
Weaviate.Client.Internal.KeySortedList`2 50%
Weaviate.Client.Internal.MultiKeySortedList`2 0% 0%
Weaviate.Client.Internal.ObjectHelper 48% 34.8%
Weaviate.Client.Internal.RetryHandler 49% 50%
Weaviate.Client.Internal.TimeoutHelper 72.9% 44.4%
Weaviate.Client.Internal.VersionGuard 92.3% 88.8%
Weaviate.Client.Models.Aggregate 100%
Weaviate.Client.Models.AggregateGroupByResult 26.1% 8.4%
Weaviate.Client.Models.AggregateResult 49.2% 12.8%
Weaviate.Client.Models.Alias 100%
Weaviate.Client.Models.AliasesResource 0%
Weaviate.Client.Models.AndNestedFilter 50%
Weaviate.Client.Models.AsciiFoldConfig 100%
Weaviate.Client.Models.Backup 0%
Weaviate.Client.Models.BackupBackend 0%
Weaviate.Client.Models.BackupClientConfig 0%
Weaviate.Client.Models.BackupCreateOperation 0%
Weaviate.Client.Models.BackupCreateRequest 0%
Weaviate.Client.Models.BackupOperationBase 0% 0%
Weaviate.Client.Models.BackupRestoreOperation 0%
Weaviate.Client.Models.BackupRestoreRequest 0%
Weaviate.Client.Models.BackupsResource 0%
Weaviate.Client.Models.BackupStatusExtensions 0% 0%
Weaviate.Client.Models.BatchInsertRequest 52.1%
Weaviate.Client.Models.BatchInsertResponse 80%
Weaviate.Client.Models.BatchInsertResponseEntry 100%
Weaviate.Client.Models.BatchReferenceReturn 29% 0%
Weaviate.Client.Models.BM25Config 61.1% 66.6%
Weaviate.Client.Models.Bm25ConfigUpdate 60% 50%
Weaviate.Client.Models.BM25Operator 66.6%
Weaviate.Client.Models.ClusterNode 30.7%
Weaviate.Client.Models.ClusterNodeVerbose 23% 0%
Weaviate.Client.Models.CollectionConfig 69.5% 57.1%
Weaviate.Client.Models.CollectionConfigCommon 67.9% 59.3%
Weaviate.Client.Models.CollectionConfigExport 0% 0%
Weaviate.Client.Models.CollectionsResource 0%
Weaviate.Client.Models.CollectionUpdate 42.2% 50%
Weaviate.Client.Models.CurrentUserInfo 0%
Weaviate.Client.Models.DatabaseUser 0%
Weaviate.Client.Models.DataReference 100% 50%
Weaviate.Client.Models.DataResource 0%
Weaviate.Client.Models.DataTypeExtensions 0% 0%
Weaviate.Client.Models.DeleteManyObjectResult 100%
Weaviate.Client.Models.DeleteManyResult 100%
Weaviate.Client.Models.DynamicDto 0%
Weaviate.Client.Models.EmptyBackend 0%
Weaviate.Client.Models.EmptyStringEnumConverter`1 86.9% 66.6%
Weaviate.Client.Models.Export 0%
Weaviate.Client.Models.ExportBackend 0%
Weaviate.Client.Models.ExportClientConfig 0%
Weaviate.Client.Models.ExportCreateRequest 0%
Weaviate.Client.Models.ExportOperation 0%
Weaviate.Client.Models.ExportOperationBase 0% 0%
Weaviate.Client.Models.ExportStatusExtensions 0% 0%
Weaviate.Client.Models.FilesystemBackend 0%
Weaviate.Client.Models.Filter 60.8% 40%
Weaviate.Client.Models.Filter`1 50% 50%
Weaviate.Client.Models.FlatDto 100%
Weaviate.Client.Models.FlexibleConverter`1 11.3% 3.4%
Weaviate.Client.Models.FlexibleStringConverter 38.4% 25%
Weaviate.Client.Models.Generative.Providers 0.6%
Weaviate.Client.Models.GenerativeConfig 7.5%
Weaviate.Client.Models.GenerativeConfigSerialization 46.8% 55.4%
Weaviate.Client.Models.GenerativeDebug 0%
Weaviate.Client.Models.GenerativeGroupByObject 100%
Weaviate.Client.Models.GenerativeGroupByResult 25%
Weaviate.Client.Models.GenerativePrompt 100%
Weaviate.Client.Models.GenerativeProvider 83.3%
Weaviate.Client.Models.GenerativeReply 100%
Weaviate.Client.Models.GenerativeResult 20% 0%
Weaviate.Client.Models.GenerativeWeaviateGroup 100%
Weaviate.Client.Models.GenerativeWeaviateObject 100%
Weaviate.Client.Models.GenerativeWeaviateResult 100%
Weaviate.Client.Models.GeoCoordinate 100%
Weaviate.Client.Models.GeoCoordinateConstraint 0%
Weaviate.Client.Models.GroupByObject 100%
Weaviate.Client.Models.GroupByRequest 100%
Weaviate.Client.Models.GroupByResult 16.6%
Weaviate.Client.Models.GroupByResult`2 100%
Weaviate.Client.Models.GroupedTask 100%
Weaviate.Client.Models.GroupRoleAssignment 0%
Weaviate.Client.Models.GroupsResource 0%
Weaviate.Client.Models.HFreshDto 0%
Weaviate.Client.Models.HnswDto 100%
Weaviate.Client.Models.HybridNearTextBuilder 0%
Weaviate.Client.Models.HybridNearVectorBuilder 0%
Weaviate.Client.Models.HybridVectorInput 78.5% 85.7%
Weaviate.Client.Models.HybridVectorInputBuilder 0%
Weaviate.Client.Models.InvertedIndexConfig 44.5% 29.1%
Weaviate.Client.Models.InvertedIndexConfigUpdate 71.4% 50%
Weaviate.Client.Models.JsonConverterEmptyCollectionAsNull 73.6% 50%
Weaviate.Client.Models.Metadata 100%
Weaviate.Client.Models.MetadataQuery 81.8%
Weaviate.Client.Models.MetaInfo 92.8% 80%
Weaviate.Client.Models.Metrics 84.8% 60%
Weaviate.Client.Models.ModelsToDtoExtensions 100% 90%
Weaviate.Client.Models.ModuleConfigList 0% 0%
Weaviate.Client.Models.Move 100%
Weaviate.Client.Models.MultiTenancyConfig 100%
Weaviate.Client.Models.MultiTenancyConfigUpdate 60%
Weaviate.Client.Models.MultiVectorDto 100%
Weaviate.Client.Models.MultiVectorEncodingDto 100%
Weaviate.Client.Models.MuveraDto 100% 100%
Weaviate.Client.Models.NamedVector 100% 100%
Weaviate.Client.Models.NearTextBuilder 36.2%
Weaviate.Client.Models.NearTextInput 50%
Weaviate.Client.Models.NearVectorBuilder 0%
Weaviate.Client.Models.NearVectorInput 45.4%
Weaviate.Client.Models.NestedFilter 100%
Weaviate.Client.Models.NodesResource 0%
Weaviate.Client.Models.NodeStatusExtensions 0% 0%
Weaviate.Client.Models.NotNestedFilter 100%
Weaviate.Client.Models.ObjectReference 80%
Weaviate.Client.Models.ObjectStorageBackend 0%
Weaviate.Client.Models.ObjectTTLConfig 97.5%
Weaviate.Client.Models.ObjectTTLConfigUpdate 89.6% 26.9%
Weaviate.Client.Models.OrNestedFilter 100%
Weaviate.Client.Models.PermissionResourceExtensions 0% 0%
Weaviate.Client.Models.Permissions 0% 0%
Weaviate.Client.Models.PermissionScope 0%
Weaviate.Client.Models.PhoneNumber 77.7%
Weaviate.Client.Models.Property 86.4% 62.5%
Weaviate.Client.Models.Property`1 100%
Weaviate.Client.Models.PropertyFilter 74.4% 50%
Weaviate.Client.Models.PropertyHelper 67.8% 53.4%
Weaviate.Client.Models.PropertyIndexTypeExtensions 50% 25%
Weaviate.Client.Models.PropertyUpdate 25%
Weaviate.Client.Models.QueryProfile 100%
Weaviate.Client.Models.QueryReference 100%
Weaviate.Client.Models.Reference 100%
Weaviate.Client.Models.ReferenceFilter 100%
Weaviate.Client.Models.ReferenceUpdate 0%
Weaviate.Client.Models.ReplicateRequest 0%
Weaviate.Client.Models.ReplicateResource 0%
Weaviate.Client.Models.ReplicationAsyncConfig 0%
Weaviate.Client.Models.ReplicationClientConfig 0%
Weaviate.Client.Models.ReplicationConfig 100%
Weaviate.Client.Models.ReplicationConfigUpdate 44.4%
Weaviate.Client.Models.ReplicationOperation 0% 0%
Weaviate.Client.Models.ReplicationOperationError 0%
Weaviate.Client.Models.ReplicationOperationStatus 0% 0%
Weaviate.Client.Models.ReplicationOperationTracker 0% 0%
Weaviate.Client.Models.Rerank 100%
Weaviate.Client.Models.Reranker 15.3%
Weaviate.Client.Models.RerankerConfigSerialization 56.8% 55%
Weaviate.Client.Models.RoleInfo 0%
Weaviate.Client.Models.RolesResource 0%
Weaviate.Client.Models.SearchProfile 100%
Weaviate.Client.Models.ShardInfo 100%
Weaviate.Client.Models.ShardingConfig 100%
Weaviate.Client.Models.ShardProfile 100%
Weaviate.Client.Models.ShardProgress 0%
Weaviate.Client.Models.ShardStatusExtensions 100% 50%
Weaviate.Client.Models.SimpleTargetVectors 100%
Weaviate.Client.Models.SinglePrompt 100%
Weaviate.Client.Models.Sort 100% 50%
Weaviate.Client.Models.SortExtensions 100%
Weaviate.Client.Models.StopwordConfig 61.9% 62.5%
Weaviate.Client.Models.StopwordsConfigUpdate 57.1% 50%
Weaviate.Client.Models.TargetVectors 27.6% 0%
Weaviate.Client.Models.Tenant 38.8% 13.3%
Weaviate.Client.Models.TenantsResource 0%
Weaviate.Client.Models.TextAnalyzerConfig 100%
Weaviate.Client.Models.TimeFilter 75% 25%
Weaviate.Client.Models.TokenizeMapping 77.2% 60.4%
Weaviate.Client.Models.TokenizeResult 100%
Weaviate.Client.Models.Typed.AggregateGroupByResult`1 0% 0%
Weaviate.Client.Models.Typed.AggregatePropertyMapper 0% 0%
Weaviate.Client.Models.Typed.AggregateResult`1 0%
Weaviate.Client.Models.Typed.BooleanMetricsAttribute 0%
Weaviate.Client.Models.Typed.DateMetricsAttribute 0%
Weaviate.Client.Models.Typed.GenerativeGroupByObject`1 0%
Weaviate.Client.Models.Typed.GenerativeGroupByResult`1 0%
Weaviate.Client.Models.Typed.GenerativeWeaviateGroup`1 0%
Weaviate.Client.Models.Typed.GenerativeWeaviateObject`1 0%
Weaviate.Client.Models.Typed.GenerativeWeaviateResult`1 0%
Weaviate.Client.Models.Typed.GroupByObject`1 0%
Weaviate.Client.Models.Typed.GroupByResult`1 0%
Weaviate.Client.Models.Typed.IntegerMetricsAttribute 0%
Weaviate.Client.Models.Typed.MetricsExtractor 0% 0%
Weaviate.Client.Models.Typed.NumberMetricsAttribute 0%
Weaviate.Client.Models.Typed.TextMetricsAttribute 0%
Weaviate.Client.Models.Typed.TypedResultConverter 12% 7.6%
Weaviate.Client.Models.Typed.WeaviateGroup`2 0%
Weaviate.Client.Models.Typed.WeaviateObject`1 47.3% 37.5%
Weaviate.Client.Models.TypedBase`1 70.5%
Weaviate.Client.Models.TypedGuid 66.6%
Weaviate.Client.Models.TypedValue`1 80%
Weaviate.Client.Models.User 0%
Weaviate.Client.Models.UserMetadata 0%
Weaviate.Client.Models.UserRoleAssignment 0%
Weaviate.Client.Models.UsersResource 0%
Weaviate.Client.Models.Vector 32.8% 18.7%
Weaviate.Client.Models.VectorBuilder 0% 0%
Weaviate.Client.Models.VectorConfig 82.7% 50%
Weaviate.Client.Models.VectorConfigList 59.3% 60%
Weaviate.Client.Models.VectorConfigUpdate 50%
Weaviate.Client.Models.VectorIndex 84.3%
Weaviate.Client.Models.VectorIndexConfig 100%
Weaviate.Client.Models.VectorIndexConfigUpdate 68.4% 33.3%
Weaviate.Client.Models.VectorIndexConfigUpdateDynamic 0% 0%
Weaviate.Client.Models.VectorIndexConfigUpdateFlat 40%
Weaviate.Client.Models.VectorIndexConfigUpdateHNSW 52.9%
Weaviate.Client.Models.VectorIndexMappingExtensions 65.1% 50%
Weaviate.Client.Models.VectorIndexSerialization 44.7% 36.1%
Weaviate.Client.Models.VectorInputBuilderFactories 50% 50%
Weaviate.Client.Models.Vectorizer 8.9% 0%
Weaviate.Client.Models.VectorizerAttribute 100%
Weaviate.Client.Models.VectorizerConfig 64.1% 56.2%
Weaviate.Client.Models.VectorizerRegistry 68.9% 71.4%
Weaviate.Client.Models.Vectorizers.VectorizerConfigFactory 58% 62.5%
Weaviate.Client.Models.VectorMulti`1 38.8% 23%
Weaviate.Client.Models.VectorQuery 45% 50%
Weaviate.Client.Models.Vectors 31.2% 100%
Weaviate.Client.Models.VectorSearchInput 51.7% 16.6%
Weaviate.Client.Models.VectorSingle`1 18.1% 0%
Weaviate.Client.Models.WeaviateGroup`1 80%
Weaviate.Client.Models.WeaviateObject 88.8%
Weaviate.Client.Models.WeaviateObjectExtensions 56.5% 50%
Weaviate.Client.Models.WeaviateResult 100%
Weaviate.Client.Models.WeaviateResult`1 100%
Weaviate.Client.Models.WeightedField 0%
Weaviate.Client.Models.WeightedFields 0% 0%
Weaviate.Client.Models.WeightedTargetVectors 100% 100%
Weaviate.Client.NearMediaBuilder 0% 0%
Weaviate.Client.NearMediaInput 0%
Weaviate.Client.NodesClient 87.5% 50%
Weaviate.Client.OAuthConfig 71.4%
Weaviate.Client.OAuthTokenService 39.2% 18.7%
Weaviate.Client.QueryClient 47.6% 40%
Weaviate.Client.QueryClientHybridExtensions 0% 0%
Weaviate.Client.QueryClientNearTextExtensions 0% 0%
Weaviate.Client.ReplicationsClient 0% 0%
Weaviate.Client.RequiresWeaviateVersionAttribute 100%
Weaviate.Client.RerankerConfigFactory 14.2% 100%
Weaviate.Client.Rest.EnumMemberJsonConverter`1 0% 0%
Weaviate.Client.Rest.EnumMemberJsonConverterFactory 0%
Weaviate.Client.Rest.HttpResponseMessageExtensions 82.9% 62.5%
Weaviate.Client.Rest.InvalidEnumWireFormatException 0%
Weaviate.Client.Rest.WeaviateEndpoints 32% 27.5%
Weaviate.Client.Rest.WeaviateRestClient 48.4% 29%
Weaviate.Client.Rest.WeaviateRestClientException 0% 0%
Weaviate.Client.Rest.WeaviateRestServerException 0% 0%
Weaviate.Client.Rest.WeaviateUnexpectedStatusCodeException 100%
Weaviate.Client.RetryPolicy 50% 42.8%
Weaviate.Client.RolesClient 1.9% 0%
Weaviate.Client.Serialization.Converters.BlobHashPropertyConverter 10.7% 0%
Weaviate.Client.Serialization.Converters.BlobPropertyConverter 58.8% 37.5%
Weaviate.Client.Serialization.Converters.BoolPropertyConverter 64% 40%
Weaviate.Client.Serialization.Converters.DatePropertyConverter 31% 21%
Weaviate.Client.Serialization.Converters.GeoPropertyConverter 28.3% 10.5%
Weaviate.Client.Serialization.Converters.IntPropertyConverter 49.2% 26.3%
Weaviate.Client.Serialization.Converters.NumberPropertyConverter 56.8% 23.5%
Weaviate.Client.Serialization.Converters.ObjectPropertyConverter 18% 7.3%
Weaviate.Client.Serialization.Converters.PhonePropertyConverter 14.4% 5.2%
Weaviate.Client.Serialization.Converters.TextPropertyConverter 36.3% 20.8%
Weaviate.Client.Serialization.Converters.UuidPropertyConverter 61.1% 37.5%
Weaviate.Client.Serialization.PropertyBag 0% 0%
Weaviate.Client.Serialization.PropertyConverterBase 23% 11.9%
Weaviate.Client.Serialization.PropertyConverterRegistry 73.7% 65.5%
Weaviate.Client.TenantsClient 84.5% 37.5%
Weaviate.Client.TokenizeClient 85.1% 75%
Weaviate.Client.Typed.TypedCollectionClient`1 91.1% 50%
Weaviate.Client.Typed.TypedDataClient`1 49%
Weaviate.Client.Typed.TypedGenerateClient`1 0.8% 0%
Weaviate.Client.Typed.TypedGenerateClientHybridExtensions 0%
Weaviate.Client.Typed.TypedQueryClient`1 10.6% 100%
Weaviate.Client.Typed.TypedQueryClientHybridExtensions 0%
Weaviate.Client.UsersClient 31.5% 0%
Weaviate.Client.UsersDatabaseClient 1.6% 0%
Weaviate.Client.UsersOidcClient 4.5%
Weaviate.Client.Validation.TypeValidationException 0%
Weaviate.Client.Validation.TypeValidator 50% 48.6%
Weaviate.Client.Validation.ValidationError 83.3%
Weaviate.Client.Validation.ValidationResult 62.5% 50%
Weaviate.Client.Validation.ValidationWarning 0%
Weaviate.Client.ValidationExtensions 80% 100%
Weaviate.Client.VectorizerFactory 3.1% 0%
Weaviate.Client.VectorizerFactoryMulti 6.2%
Weaviate.Client.WeaviateAuthenticationException 100% 100%
Weaviate.Client.WeaviateAuthorizationException 0% 0%
Weaviate.Client.WeaviateBackupConflictException 0%
Weaviate.Client.WeaviateBadRequestException 0% 0%
Weaviate.Client.WeaviateClient 57.3% 46%
Weaviate.Client.WeaviateClientBuilder 56.6% 50%
Weaviate.Client.WeaviateClientBuilderExtensions 0% 0%
Weaviate.Client.WeaviateClientException 33.3%
Weaviate.Client.WeaviateCollectionLimitReachedException 0% 0%
Weaviate.Client.WeaviateConflictException 0%
Weaviate.Client.WeaviateDefaults 100%
Weaviate.Client.WeaviateException 66.6%
Weaviate.Client.WeaviateExtensions 78.4% 52.9%
Weaviate.Client.WeaviateExternalModuleProblemException 0% 0%
Weaviate.Client.WeaviateFeatureNotSupportedException 0% 0%
Weaviate.Client.WeaviateModuleNotAvailableException 0% 0%
Weaviate.Client.WeaviateNotFoundException 14.8% 0%
Weaviate.Client.WeaviateServerException 66.6%
Weaviate.Client.WeaviateTimeoutException 0% 0%
Weaviate.Client.WeaviateUnprocessableEntityException 100% 100%
Weaviate.Client.WeaviateVersionMismatchException 76.9% 50%
Weaviate.Client.Analyzers - 0%
Name Line Branch
Weaviate.Client.Analyzers 0% 0%
Weaviate.Client.Analyzers.AggregatePropertySuffixAnalyzer 0% 0%
Weaviate.Client.Analyzers.AutoArrayUsageAnalyzer 0% 0%
Weaviate.Client.Analyzers.HybridSearchNullParametersAnalyzer 0% 0%
Weaviate.Client.Analyzers.RequiresVersionEnsureCallAnalyzer 0% 0%
Weaviate.Client.Analyzers.VectorizerFactoryAnalyzer 0% 0%
Weaviate.Client.VectorData - 50.3%
Name Line Branch
Weaviate.Client.VectorData 50.3% 31.2%
Weaviate.Client.VectorData.DependencyInjection.WeaviateVectorDataServiceCol
lectionExtensions
0% 0%
Weaviate.Client.VectorData.Filters.WeaviateFilterTranslator 29.2% 19.5%
Weaviate.Client.VectorData.Mapping.AttributeBasedRecordMapper`1 59.7% 50%
Weaviate.Client.VectorData.Mapping.DataPropertyInfo 100%
Weaviate.Client.VectorData.Mapping.DynamicRecordMapper 0% 0%
Weaviate.Client.VectorData.Mapping.RecordPropertyModel 54.9% 43.1%
Weaviate.Client.VectorData.Mapping.VectorDataSchemaBuilder 41.3% 18.7%
Weaviate.Client.VectorData.Mapping.VectorPropertyInfo 85.7%
Weaviate.Client.VectorData.WeaviateVectorStore 61.2% 33.3%
Weaviate.Client.VectorData.WeaviateVectorStoreCollection`2 71.3% 44.7%
Weaviate.Client.VectorData.WeaviateVectorStoreCollectionOptions 0%
Weaviate.Client.VectorData.WeaviateVectorStoreOptions 0%

The server requires `model` (e.g. `qwen3-embedding-0.6b`); the
factory should require it too rather than silently sending a payload
the server will reject.

- `VectorizerFactory.Text2VecDigitalOcean(string model, string? baseURL = null, bool? vectorizeCollectionName = null)`
  — `model` is now required and reordered to the first position,
  since C# requires non-default params before default params.
- `PublicAPI.Unshipped.txt` updated to reflect the new signature
  (`string! model` first).
- `Test_Text2VecDigitalOcean_Omits_Unset_Optionals` renamed to
  `Test_Text2VecDigitalOcean_Omits_Unset_BaseURL`. It now passes
  `model` and only asserts that `baseURL` is omitted when unset.
  The old "model is also omitted when unset" assertion was
  inconsistent with the spec (`model` is required by the server)
  and would no longer be reachable through the factory anyway.

The `Text2VecDigitalOcean` record's `Model` property remains
nullable at the type level (matching the `Text2VecMistral` record);
required-ness is enforced at the factory entry point, which is the
documented user-facing API.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mpartipilo mpartipilo marked this pull request as ready for review May 18, 2026 12:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for text2vec-digitalocean module

1 participant