Hello community,

here is the log from the commit of package python-onnx for openSUSE:Factory 
checked in at 2020-08-17 12:08:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-onnx (Old)
 and      /work/SRC/openSUSE:Factory/.python-onnx.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-onnx"

Mon Aug 17 12:08:35 2020 rev:9 rq:827232 version:1.7.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-onnx/python-onnx.changes  2020-07-08 
19:17:17.643921104 +0200
+++ /work/SRC/openSUSE:Factory/.python-onnx.new.3399/python-onnx.changes        
2020-08-17 12:10:00.030848746 +0200
@@ -1,0 +2,17 @@
+Tue Jul 14 14:05:18 UTC 2020 - Christian Goll <cg...@suse.com>
+
+- reorganized package in order to have shared library support.
+  Additional  packages are:
+  * onnx-devel
+  * libonnxifi_dummy
+  * libonnx
+  * onnx-devel
+  As no so versions for the shared libraries are available, there
+  is not a explicit dependency for the shared libraries.
+  The archive file libonnxifi_loader.a is explicitely allowed in 
+  the rpmlintrc as this archive file is consumed by libonnxifi_loader.so
+- Added the proto files from onnxruntime so that both packages can 
+  use the same shared libraries:
+  * added using-onnxruntime-proto.patch
+
+-------------------------------------------------------------------

New:
----
  using-onnxruntime-proto.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-onnx.spec ++++++
--- /var/tmp/diff_new_pack.aAE5mz/_old  2020-08-17 12:10:10.190854408 +0200
+++ /var/tmp/diff_new_pack.aAE5mz/_new  2020-08-17 12:10:10.194854411 +0200
@@ -27,6 +27,7 @@
 Source0:        
https://github.com/onnx/onnx/archive/v%{version}.tar.gz#/onnx-%{version}.tar.gz
 Source1:        %{name}-rpmlintrc
 Patch1:         no-python2.patch
+Patch2:         using-onnxruntime-proto.patch
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module numpy}
 BuildRequires:  %{python_module protobuf}
@@ -41,6 +42,9 @@
 BuildRequires:  gcc-c++
 BuildRequires:  protobuf-devel
 BuildRequires:  python-rpm-macros
+Requires:       libonnx == %version
+Requires:       libonnx_proto == %version
+Requires:       libonnxifi_dummy == %version
 Requires:       python-numpy
 Requires:       python-protobuf
 Requires:       python-six
@@ -57,6 +61,43 @@
 combination that is best for them. ONNX is developed and supported by a
 community of partners.
 
+%package -n onnx-devel
+Summary:        Header files of onnx
+Requires:       libonnx == %version
+Requires:       libonnx_proto == %version
+Requires:       libonnxifi_dummy == %version
+
+%description  -n onnx-devel
+Header files of ONNX. 
+
+%package -n libonnxifi_dummy
+Summary:        Library for ONNX Interface for Framework Integration
+
+%description  -n  libonnxifi_dummy
+This package exists to create libonnx_proto, so you do no want
+to install this package.
+
+%package -n libonnx
+Summary:        Shared library for onnx
+
+%description  -n  libonnx
+This package exists to create libonnx_proto, so you do no want
+to install this package.
+
+%package -n libonnx_proto
+Summary:        Shared library for onnx protocul bufer
+
+%description  -n  libonnx_proto
+Shared library for the protocol buffer library, packaged separately to be
+used by external project.
+
+%package -n onnx-backend-test
+Summary:        Test data
+
+%description -n onnx-backend-test
+This packages includes the data for testing the backend.
+
+
 %prep
 %setup -q -n onnx-%{version}
 # avoid bundles
@@ -80,16 +121,18 @@
   -DONNX_USE_PROTOBUF_SHARED_LIBS=ON \
   -DONNX_WERROR=OFF \
   -DBUILD_ONNX_PYTHON=ON \
-  -DBUILD_SHARED_LIBS=OFF \
-  -DBUILD_STATIC_LIBS=ON \
+  -DBUILD_SHARED_LIBS=ON \
+  -DBUILD_STATIC_LIBS=OFF \
   -DPYTHON_EXECUTABLE="%{_bindir}/$python" \
-  -DPY_EXT_SUFFIX="`$python-config --extension-suffix`"
+  -DPY_EXT_SUFFIX="`$python-config --extension-suffix`" \
+  %{nil}
 %cmake_build ; cd ..
 }
 %python_build
 
 %install
 %python_install
+%cmake_install
 %python_clone -a %{buildroot}%{_bindir}/backend-test-tools
 %python_clone -a %{buildroot}%{_bindir}/check-node
 %python_clone -a %{buildroot}%{_bindir}/check-model
@@ -125,4 +168,22 @@
 %python_alternative %{_bindir}/backend-test-tools
 %{python_sitearch}/onnx*
 
+%files -n onnx-devel
+%{_includedir}/onnx
+%{_libdir}/cmake/*
+%exclude %{_includedir}/onnx/backend
+
+%files -n onnx-backend-test
+%{_includedir}/onnx/backend
+
+%files -n libonnxifi_dummy
+%{_libdir}/libonnxifi*.so
+%{_libdir}/libonnxifi_loader.*
+/usr/lib/libonnxifi.so
+
+%files -n libonnx
+%{_libdir}/libonnx.so
+%files -n libonnx_proto
+%{_libdir}/libonnx_proto.so
+
 %changelog

++++++ python-onnx-rpmlintrc ++++++
--- /var/tmp/diff_new_pack.aAE5mz/_old  2020-08-17 12:10:10.226854428 +0200
+++ /var/tmp/diff_new_pack.aAE5mz/_new  2020-08-17 12:10:10.226854428 +0200
@@ -2,3 +2,5 @@
 from Config import *
 # there are source files which are parsed with pybind11, so they have to be 
included
 addFilter("python3-onnx.* devel-file-in-non-devel-package")
+# special library loader
+addFilter("libonnxifi_dummy.* lto-no-text-in-archive")

++++++ using-onnxruntime-proto.patch ++++++
>From c44269ae65d9585740ee7a3ea897401ddb7e2d51 Mon Sep 17 00:00:00 2001
From: Christian Goll <cg...@suse.de>
Date: Tue, 14 Jul 2020 12:01:55 +0200
Subject: [PATCH] using onnxruntime proto

---
 onnx/onnx-ml.proto            | 63 ++++++++++++++++++++++++++++-----
 onnx/onnx-ml.proto3           | 54 ++++++++++++++++++++++++++--
 onnx/onnx-operators-ml.proto  | 55 -----------------------------
 onnx/onnx-operators-ml.proto3 | 53 ----------------------------
 onnx/onnx-operators.in.proto  | 51 ---------------------------
 onnx/onnx.in.proto            | 66 ++++++++++++++++++++++++++++++-----
 6 files changed, 164 insertions(+), 178 deletions(-)

diff --git a/onnx/onnx-ml.proto b/onnx/onnx-ml.proto
index d946d92f..e3ce6063 100644
--- a/onnx/onnx-ml.proto
+++ b/onnx/onnx-ml.proto
@@ -62,7 +62,7 @@ enum Version {
   _START_VERSION = 0;
   // The version field is always serialized and we will use it to store the
   // version that the  graph is generated from. This helps us set up version
-  // control. 
+  // control.
   // For the IR, we are using simple numbers starting with 0x00000001,
   // which was the version we published on Oct 10, 2017.
   IR_VERSION_2017_10_10 = 0x0000000000000001;
@@ -259,7 +259,7 @@ message TrainingInfoProto {
   optional GraphProto algorithm = 2;
 
   // This field specifies the bindings from the outputs of "initialization" to
-  // some initializers in "ModelProto.graph.initializer" and 
+  // some initializers in "ModelProto.graph.initializer" and
   // the "algorithm.initializer" in the same TrainingInfoProto.
   // See "update_binding" below for details.
   //
@@ -298,7 +298,7 @@ message TrainingInfoProto {
   //  3. The values must be output names of "algorithm".
   //  4. If an optional input of a graph is omitted when using GraphCall, the
   //     global variable with the same name may be used.
-  //  5. When using GraphCall, the users always can pass values to optional 
+  //  5. When using GraphCall, the users always can pass values to optional
   //     inputs of the called graph even if the associated initializers appears
   //     as keys in "update_binding"s.
   //  6. The graphs in TrainingInfoProto's can use global variables as
@@ -365,6 +365,9 @@ message ModelProto {
   // The parameterized graph that is evaluated to execute the model.
   optional GraphProto graph = 7;
 
+  // kezhan: This field is not in ONNX, and will be pushed into ONNX with good 
use cases in microsoft.
+  repeated FunctionProto functions = 100;
+
   // Named metadata values; keys should be distinct.
   repeated StringStringEntryProto metadata_props = 14;
 
@@ -396,8 +399,6 @@ message TensorAnnotation {
   repeated StringStringEntryProto quant_parameter_tensor_names = 2;
 }
 
-
-
 // Graphs
 //
 // A graph defines the computational logic of a model and is comprised of a 
parameterized 
@@ -698,7 +699,6 @@ message TypeProto {
     SparseTensor sparse_tensor_type = 8;
 
     Opaque opaque_type = 7;
-
   }
 
   // An optional denotation can be used to denote the whole 
@@ -723,7 +723,52 @@ message OperatorSetIdProto {
   optional int64 version = 2;
 }
 
+// Operator/function status.
+enum OperatorStatus {
+    EXPERIMENTAL = 0;
+    STABLE = 1;
+}
 
-// For using protobuf-lite
-option optimize_for = LITE_RUNTIME;
-
+message FunctionProto {
+  // The name of the function, similar usage of op_type in OperatorProto.
+  optional string name = 1;
+
+  // The first version of a function set which contains this function.
+  // When there's any breaking change for this function, the function set
+  // contains the function needs to bump its version, and since_version of
+  // the updated function will be changed to the updated function set version. 
 
+  optional int64 since_version = 2;
+
+  // This field indicates whether the syntax, semantics, or presence
+  // of this function is in an experimental or stable stage. Once an
+  // function is published as STABLE, its syntax and semantics MUST NOT
+  // change in subsequent versions of the operator set.
+  // When a function is published as EXPERIMENTAL, the syntax and semantics
+  // of the function MAY change across operator set versions.
+  // Functions "become" stable by deprecating the experimental version and
+  // introducing a new stable function with the same name.
+  optional OperatorStatus status = 3;
+
+  // The inputs and outputs of the function.
+  repeated string input = 4;
+  repeated string output = 5;
+
+  // The attributes of the function.
+  repeated string attribute= 6;
+
+  // The nodes in the function.
+  repeated NodeProto node = 7;
+  // A human-readable documentation for this function. Markdown is allowed.
+  optional string doc_string = 8;
+
+  // The OperatorSets this function body (graph) relies on.
+  // A FunctionProto body (graph) may implicitly rely on the OperatorSet that
+  // this function belongs to. It can also explicitly rely on more OperatorSets
+  // with this field specified.
+  //
+  // All nodes in the function body (graph) will bind against the operator
+  // with the same-domain/same-op_type operator with the HIGHEST version
+  // in the referenced operator sets. This means at most one version can be 
relied
+  // for one domain.
+  repeated OperatorSetIdProto opset_import = 9;
+}
diff --git a/onnx/onnx-ml.proto3 b/onnx/onnx-ml.proto3
index f92b868a..76239ec1 100644
--- a/onnx/onnx-ml.proto3
+++ b/onnx/onnx-ml.proto3
@@ -365,6 +365,9 @@ message ModelProto {
   // The parameterized graph that is evaluated to execute the model.
   GraphProto graph = 7;
 
+  // kezhan: This field is not in ONNX, and will be pushed into ONNX with good 
use cases in microsoft.
+  repeated FunctionProto functions = 100;
+
   // Named metadata values; keys should be distinct.
   repeated StringStringEntryProto metadata_props = 14;
 
@@ -724,6 +727,53 @@ message OperatorSetIdProto {
 }
 
 
-// For using protobuf-lite
-option optimize_for = LITE_RUNTIME;
+// Operator/function status.
+enum OperatorStatus {
+    EXPERIMENTAL = 0;
+    STABLE = 1;
+}
+
+message FunctionProto {
+  // The name of the function, similar usage of op_type in OperatorProto.
+  string name = 1;
+
+  // The first version of a function set which contains this function.
+  // When there's any breaking change for this function, the function set
+  // contains the function needs to bump its version, and since_version of
+  // the updated function will be changed to the updated function set version. 
 
+  int64 since_version = 2;
+
+  // This field indicates whether the syntax, semantics, or presence
+  // of this function is in an experimental or stable stage. Once an
+  // function is published as STABLE, its syntax and semantics MUST NOT
+  // change in subsequent versions of the operator set.
+  // When a function is published as EXPERIMENTAL, the syntax and semantics
+  // of the function MAY change across operator set versions.
+  // Functions "become" stable by deprecating the experimental version and
+  // introducing a new stable function with the same name.
+  OperatorStatus status = 3;
+
+  // The inputs and outputs of the function.
+  repeated string input = 4;
+  repeated string output = 5;
+
+  // The attributes of the function.
+  repeated string attribute= 6;
+
+  // The nodes in the function.
+  repeated NodeProto node = 7;
+  // A human-readable documentation for this function. Markdown is allowed.
+  string doc_string = 8;
+
+  // The OperatorSets this function body (graph) relies on.
+  // A FunctionProto body (graph) may implicitly rely on the OperatorSet that
+  // this function belongs to. It can also explicitly rely on more OperatorSets
+  // with this field specified.
+  //
+  // All nodes in the function body (graph) will bind against the operator
+  // with the same-domain/same-op_type operator with the HIGHEST version
+  // in the referenced operator sets. This means at most one version can be 
relied
+  // for one domain.
+  repeated OperatorSetIdProto opset_import = 9;
+}
 
diff --git a/onnx/onnx-operators-ml.proto b/onnx/onnx-operators-ml.proto
index 6ad6a254..088c4f84 100644
--- a/onnx/onnx-operators-ml.proto
+++ b/onnx/onnx-operators-ml.proto
@@ -27,56 +27,6 @@ import "onnx/onnx-ml.proto";
 // that describes the ONNX standard operators.
 //
 
-// Operator/function status.
-enum OperatorStatus {
-    EXPERIMENTAL = 0;
-    STABLE = 1;
-}
-
-message FunctionProto {
-  // The name of the function, similar usage of op_type in OperatorProto.
-  optional string name = 1;
-
-  // The first version of a function set which contains this function.
-  // When there's any breaking change for this function, the function set
-  // contains the function needs to bump its version, and since_version of
-  // the updated function will be changed to the updated function set version. 
 
-  optional int64 since_version = 2;
-
-  // This field indicates whether the syntax, semantics, or presence
-  // of this function is in an experimental or stable stage. Once an
-  // function is published as STABLE, its syntax and semantics MUST NOT
-  // change in subsequent versions of the operator set.
-  // When a function is published as EXPERIMENTAL, the syntax and semantics
-  // of the function MAY change across operator set versions.
-  // Functions "become" stable by deprecating the experimental version and
-  // introducing a new stable function with the same name.
-  optional OperatorStatus status = 3;
-
-  // The inputs and outputs of the function.
-  repeated string input = 4;
-  repeated string output = 5;
-
-  // The attributes of the function.
-  repeated string attribute= 6;
-
-  // The nodes in the function.
-  repeated NodeProto node = 7;
-  // A human-readable documentation for this function. Markdown is allowed.
-  optional string doc_string = 8;
-
-  // The OperatorSets this function body (graph) relies on.
-  // A FunctionProto body (graph) may implicitly rely on the OperatorSet that
-  // this function belongs to. It can also explicitly rely on more OperatorSets
-  // with this field specified.
-  //
-  // All nodes in the function body (graph) will bind against the operator
-  // with the same-domain/same-op_type operator with the HIGHEST version
-  // in the referenced operator sets. This means at most one version can be 
relied
-  // for one domain.
-  repeated OperatorSetIdProto opset_import = 9;
-}
-
 // An OperatorProto represents the immutable specification of the signature
 // and semantics of an operator.
 //
@@ -179,8 +129,3 @@ message OperatorSetProto {
   // The (name, version) MUST be unique across all 
OperatorProtos/FunctionProtos in operator/functions
   repeated FunctionProto functions = 9;
 }
-
-
-// For using protobuf-lite
-option optimize_for = LITE_RUNTIME;
-
diff --git a/onnx/onnx-operators-ml.proto3 b/onnx/onnx-operators-ml.proto3
index f9a1e950..bff8de27 100644
--- a/onnx/onnx-operators-ml.proto3
+++ b/onnx/onnx-operators-ml.proto3
@@ -27,56 +27,6 @@ import "onnx/onnx-ml.proto3";
 // that describes the ONNX standard operators.
 //
 
-// Operator/function status.
-enum OperatorStatus {
-    EXPERIMENTAL = 0;
-    STABLE = 1;
-}
-
-message FunctionProto {
-  // The name of the function, similar usage of op_type in OperatorProto.
-  string name = 1;
-
-  // The first version of a function set which contains this function.
-  // When there's any breaking change for this function, the function set
-  // contains the function needs to bump its version, and since_version of
-  // the updated function will be changed to the updated function set version. 
 
-  int64 since_version = 2;
-
-  // This field indicates whether the syntax, semantics, or presence
-  // of this function is in an experimental or stable stage. Once an
-  // function is published as STABLE, its syntax and semantics MUST NOT
-  // change in subsequent versions of the operator set.
-  // When a function is published as EXPERIMENTAL, the syntax and semantics
-  // of the function MAY change across operator set versions.
-  // Functions "become" stable by deprecating the experimental version and
-  // introducing a new stable function with the same name.
-  OperatorStatus status = 3;
-
-  // The inputs and outputs of the function.
-  repeated string input = 4;
-  repeated string output = 5;
-
-  // The attributes of the function.
-  repeated string attribute= 6;
-
-  // The nodes in the function.
-  repeated NodeProto node = 7;
-  // A human-readable documentation for this function. Markdown is allowed.
-  string doc_string = 8;
-
-  // The OperatorSets this function body (graph) relies on.
-  // A FunctionProto body (graph) may implicitly rely on the OperatorSet that
-  // this function belongs to. It can also explicitly rely on more OperatorSets
-  // with this field specified.
-  //
-  // All nodes in the function body (graph) will bind against the operator
-  // with the same-domain/same-op_type operator with the HIGHEST version
-  // in the referenced operator sets. This means at most one version can be 
relied
-  // for one domain.
-  repeated OperatorSetIdProto opset_import = 9;
-}
-
 // An OperatorProto represents the immutable specification of the signature
 // and semantics of an operator.
 //
@@ -181,6 +131,3 @@ message OperatorSetProto {
 }
 
 
-// For using protobuf-lite
-option optimize_for = LITE_RUNTIME;
-
diff --git a/onnx/onnx-operators.in.proto b/onnx/onnx-operators.in.proto
index 923fac92..25881229 100644
--- a/onnx/onnx-operators.in.proto
+++ b/onnx/onnx-operators.in.proto
@@ -26,56 +26,6 @@ import "onnx/onnx.proto";
 // that describes the ONNX standard operators.
 //
 
-// Operator/function status.
-enum OperatorStatus {
-    EXPERIMENTAL = 0;
-    STABLE = 1;
-}
-
-message FunctionProto {
-  // The name of the function, similar usage of op_type in OperatorProto.
-  optional string name = 1;
-
-  // The first version of a function set which contains this function.
-  // When there's any breaking change for this function, the function set
-  // contains the function needs to bump its version, and since_version of
-  // the updated function will be changed to the updated function set version. 
 
-  optional int64 since_version = 2;
-
-  // This field indicates whether the syntax, semantics, or presence
-  // of this function is in an experimental or stable stage. Once an
-  // function is published as STABLE, its syntax and semantics MUST NOT
-  // change in subsequent versions of the operator set.
-  // When a function is published as EXPERIMENTAL, the syntax and semantics
-  // of the function MAY change across operator set versions.
-  // Functions "become" stable by deprecating the experimental version and
-  // introducing a new stable function with the same name.
-  optional OperatorStatus status = 3;
-
-  // The inputs and outputs of the function.
-  repeated string input = 4;
-  repeated string output = 5;
-
-  // The attributes of the function.
-  repeated string attribute= 6;
-
-  // The nodes in the function.
-  repeated NodeProto node = 7;
-  // A human-readable documentation for this function. Markdown is allowed.
-  optional string doc_string = 8;
-
-  // The OperatorSets this function body (graph) relies on.
-  // A FunctionProto body (graph) may implicitly rely on the OperatorSet that
-  // this function belongs to. It can also explicitly rely on more OperatorSets
-  // with this field specified.
-  //
-  // All nodes in the function body (graph) will bind against the operator
-  // with the same-domain/same-op_type operator with the HIGHEST version
-  // in the referenced operator sets. This means at most one version can be 
relied
-  // for one domain.
-  repeated OperatorSetIdProto opset_import = 9;
-}
-
 // An OperatorProto represents the immutable specification of the signature
 // and semantics of an operator.
 //
@@ -178,4 +128,3 @@ message OperatorSetProto {
   // The (name, version) MUST be unique across all 
OperatorProtos/FunctionProtos in operator/functions
   repeated FunctionProto functions = 9;
 }
-
diff --git a/onnx/onnx.in.proto b/onnx/onnx.in.proto
index 8bef6018..c239bd1d 100644
--- a/onnx/onnx.in.proto
+++ b/onnx/onnx.in.proto
@@ -59,7 +59,7 @@ enum Version {
   _START_VERSION = 0;
   // The version field is always serialized and we will use it to store the
   // version that the  graph is generated from. This helps us set up version
-  // control. 
+  // control.
   // For the IR, we are using simple numbers starting with 0x00000001,
   // which was the version we published on Oct 10, 2017.
   IR_VERSION_2017_10_10 = 0x0000000000000001;
@@ -256,7 +256,7 @@ message TrainingInfoProto {
   optional GraphProto algorithm = 2;
 
   // This field specifies the bindings from the outputs of "initialization" to
-  // some initializers in "ModelProto.graph.initializer" and 
+  // some initializers in "ModelProto.graph.initializer" and
   // the "algorithm.initializer" in the same TrainingInfoProto.
   // See "update_binding" below for details.
   //
@@ -295,7 +295,7 @@ message TrainingInfoProto {
   //  3. The values must be output names of "algorithm".
   //  4. If an optional input of a graph is omitted when using GraphCall, the
   //     global variable with the same name may be used.
-  //  5. When using GraphCall, the users always can pass values to optional 
+  //  5. When using GraphCall, the users always can pass values to optional
   //     inputs of the called graph even if the associated initializers appears
   //     as keys in "update_binding"s.
   //  6. The graphs in TrainingInfoProto's can use global variables as
@@ -362,6 +362,9 @@ message ModelProto {
   // The parameterized graph that is evaluated to execute the model.
   optional GraphProto graph = 7;
 
+  // kezhan: This field is not in ONNX, and will be pushed into ONNX with good 
use cases in microsoft.
+  repeated FunctionProto functions = 100;
+
   // Named metadata values; keys should be distinct.
   repeated StringStringEntryProto metadata_props = 14;
 
@@ -393,8 +396,6 @@ message TensorAnnotation {
   repeated StringStringEntryProto quant_parameter_tensor_names = 2;
 }
 
-
-
 // Graphs
 //
 // A graph defines the computational logic of a model and is comprised of a 
parameterized 
@@ -656,7 +657,7 @@ message TypeProto {
     optional TypeProto value_type = 2;
   };
 
-// #if ONNX-ML
+  // #if ONNX-ML
 
   message SparseTensor { 
     // This field MUST NOT have the value of UNDEFINED 
@@ -693,13 +694,13 @@ message TypeProto {
     // The type of a map.
     Map map_type = 5;
 
-// #if ONNX-ML
+    // #if ONNX-ML
 
     SparseTensor sparse_tensor_type = 8;
 
     Opaque opaque_type = 7;
 
-// #endif
+    // #endif
   }
 
   // An optional denotation can be used to denote the whole 
@@ -724,3 +725,52 @@ message OperatorSetIdProto {
   optional int64 version = 2;
 }
 
+// Operator/function status.
+enum OperatorStatus {
+    EXPERIMENTAL = 0;
+    STABLE = 1;
+}
+
+message FunctionProto {
+  // The name of the function, similar usage of op_type in OperatorProto.
+  optional string name = 1;
+
+  // The first version of a function set which contains this function.
+  // When there's any breaking change for this function, the function set
+  // contains the function needs to bump its version, and since_version of
+  // the updated function will be changed to the updated function set version. 
 
+  optional int64 since_version = 2;
+
+  // This field indicates whether the syntax, semantics, or presence
+  // of this function is in an experimental or stable stage. Once an
+  // function is published as STABLE, its syntax and semantics MUST NOT
+  // change in subsequent versions of the operator set.
+  // When a function is published as EXPERIMENTAL, the syntax and semantics
+  // of the function MAY change across operator set versions.
+  // Functions "become" stable by deprecating the experimental version and
+  // introducing a new stable function with the same name.
+  optional OperatorStatus status = 3;
+
+  // The inputs and outputs of the function.
+  repeated string input = 4;
+  repeated string output = 5;
+
+  // The attributes of the function.
+  repeated string attribute= 6;
+
+  // The nodes in the function.
+  repeated NodeProto node = 7;
+  // A human-readable documentation for this function. Markdown is allowed.
+  optional string doc_string = 8;
+
+  // The OperatorSets this function body (graph) relies on.
+  // A FunctionProto body (graph) may implicitly rely on the OperatorSet that
+  // this function belongs to. It can also explicitly rely on more OperatorSets
+  // with this field specified.
+  //
+  // All nodes in the function body (graph) will bind against the operator
+  // with the same-domain/same-op_type operator with the HIGHEST version
+  // in the referenced operator sets. This means at most one version can be 
relied
+  // for one domain.
+  repeated OperatorSetIdProto opset_import = 9;
+}
-- 
2.26.2


Reply via email to