This is an automated email from the ASF dual-hosted git repository.

yihua pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git


The following commit(s) were added to refs/heads/master by this push:
     new 8adb095386e3 chore(api): declare the unstructured ingestion SPIs 
evolving (#19701)
8adb095386e3 is described below

commit 8adb095386e34480cf6ac2bcb5289536551bbae8
Author: Rahil C <[email protected]>
AuthorDate: Mon Aug 24 17:00:40 2026 -0700

    chore(api): declare the unstructured ingestion SPIs evolving (#19701)
    
    DocumentParser and EmbeddingProvider are both user-implementable through
    parser.class and provider.class, but neither declared a stability level,
    unlike Source and Transformer alongside them. Mark both EVOLVING so the
    signature changes they still need do not read as breaking ones.
---
 .../hudi/utilities/sources/helpers/unstructured/DocumentParser.java | 6 ++++++
 .../hudi/utilities/transform/embedding/EmbeddingProvider.java       | 6 ++++++
 2 files changed, 12 insertions(+)

diff --git 
a/hudi-utilities/src/main/java/org/apache/hudi/utilities/sources/helpers/unstructured/DocumentParser.java
 
b/hudi-utilities/src/main/java/org/apache/hudi/utilities/sources/helpers/unstructured/DocumentParser.java
index a71cd96361b6..9fdd5e6f98ef 100644
--- 
a/hudi-utilities/src/main/java/org/apache/hudi/utilities/sources/helpers/unstructured/DocumentParser.java
+++ 
b/hudi-utilities/src/main/java/org/apache/hudi/utilities/sources/helpers/unstructured/DocumentParser.java
@@ -19,6 +19,9 @@
 
 package org.apache.hudi.utilities.sources.helpers.unstructured;
 
+import org.apache.hudi.ApiMaturityLevel;
+import org.apache.hudi.PublicAPIClass;
+import org.apache.hudi.PublicAPIMethod;
 import org.apache.hudi.common.config.TypedProperties;
 
 import java.io.InputStream;
@@ -30,11 +33,13 @@ import java.io.Serializable;
  * and must NEVER throw from {@link #parse}: any failure is reported via
  * {@link ParseResult#failed}.
  */
+@PublicAPIClass(maturity = ApiMaturityLevel.EVOLVING)
 public interface DocumentParser extends Serializable {
 
   /**
    * Called once per executor instance before the first {@link #parse}.
    */
+  @PublicAPIMethod(maturity = ApiMaturityLevel.EVOLVING)
   default void init(TypedProperties props) {
   }
 
@@ -45,5 +50,6 @@ public interface DocumentParser extends Serializable {
    * @param fileName     name of the file (used for format detection hints)
    * @param maxTextChars cap on extracted text length; hitting it yields a 
TRUNCATED result
    */
+  @PublicAPIMethod(maturity = ApiMaturityLevel.EVOLVING)
   ParseResult parse(InputStream in, String fileName, int maxTextChars);
 }
diff --git 
a/hudi-utilities/src/main/java/org/apache/hudi/utilities/transform/embedding/EmbeddingProvider.java
 
b/hudi-utilities/src/main/java/org/apache/hudi/utilities/transform/embedding/EmbeddingProvider.java
index 22f625821383..34511721e8a9 100644
--- 
a/hudi-utilities/src/main/java/org/apache/hudi/utilities/transform/embedding/EmbeddingProvider.java
+++ 
b/hudi-utilities/src/main/java/org/apache/hudi/utilities/transform/embedding/EmbeddingProvider.java
@@ -19,6 +19,9 @@
 
 package org.apache.hudi.utilities.transform.embedding;
 
+import org.apache.hudi.ApiMaturityLevel;
+import org.apache.hudi.PublicAPIClass;
+import org.apache.hudi.PublicAPIMethod;
 import org.apache.hudi.common.config.TypedProperties;
 
 import java.io.Serializable;
@@ -29,11 +32,13 @@ import java.util.List;
  * executors and are called with record-level batches buffered within a 
partition; an
  * in-JVM (e.g. ONNX) implementation can slot in beside API-backed ones.
  */
+@PublicAPIClass(maturity = ApiMaturityLevel.EVOLVING)
 public interface EmbeddingProvider extends Serializable {
 
   /**
    * Called once per executor instance before the first {@link #embed}.
    */
+  @PublicAPIMethod(maturity = ApiMaturityLevel.EVOLVING)
   default void init(TypedProperties props) {
   }
 
@@ -42,5 +47,6 @@ public interface EmbeddingProvider extends Serializable {
    * Errors should be retried internally where transient; a thrown exception
    * fails the batch (and the sync) -- the caller never silently drops vectors.
    */
+  @PublicAPIMethod(maturity = ApiMaturityLevel.EVOLVING)
   List<float[]> embed(List<String> texts);
 }

Reply via email to