diff --git a/.flake8 b/.flake8
index 4f8ad34d62..d0e523dbc3 100644
--- a/.flake8
+++ b/.flake8
@@ -19,6 +19,7 @@ exclude =
__pycache__
exporter/opentelemetry-exporter-jaeger/src/opentelemetry/exporter/jaeger/gen/
exporter/opentelemetry-exporter-jaeger/build/*
+ exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen
docs/examples/opentelemetry-example-app/src/opentelemetry_example_app/grpc/gen/
docs/examples/opentelemetry-example-app/build/*
opentelemetry-python-core/
diff --git a/.pylintrc b/.pylintrc
index 4aca6dcb43..866f003776 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -165,7 +165,7 @@ contextmanager-decorators=contextlib.contextmanager
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
-generated-members=
+generated-members=*_pb2.py
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/CHANGELOG.md b/exporter/opentelemetry-exporter-prometheus-remote-write/CHANGELOG.md
new file mode 100644
index 0000000000..1512c42162
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/CHANGELOG.md
@@ -0,0 +1,3 @@
+# Changelog
+
+## Unreleased
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/README.rst b/exporter/opentelemetry-exporter-prometheus-remote-write/README.rst
new file mode 100644
index 0000000000..1969eff12b
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/README.rst
@@ -0,0 +1,23 @@
+OpenTelemetry Prometheus Remote Write Exporter
+==============================================
+
+This library allows exporting metric data to `Prometheus Write Integrated Backends
+`_. Development is currently in progress.
+
+Installation
+------------
+
+::
+
+ pip install opentelemetry-exporter-prometheus-remote-write
+
+
+.. _Prometheus: https://prometheus.io/
+.. _OpenTelemetry: https://github.com/open-telemetry/opentelemetry-python/
+
+
+References
+----------
+
+* `Datadog `_
+* `OpenTelemetry Project `_
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/setup.cfg b/exporter/opentelemetry-exporter-prometheus-remote-write/setup.cfg
new file mode 100644
index 0000000000..ee7cb81e02
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/setup.cfg
@@ -0,0 +1,50 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+[metadata]
+name = opentelemetry-exporter-prometheus-remote-write
+description = Prometheus Remote Write Metrics Exporter for OpenTelemetry
+long_description = file: README.rst
+long_description_content_type = text/x-rst
+author = OpenTelemetry Authors
+author_email = cncf-opentelemetry-contributors@lists.cncf.io
+url = https://github.com/open-telemetry/opentelemetry-python/exporter/opentelemetry-exporter-datadog
+platforms = any
+license = Apache-2.0
+classifiers =
+ Development Status :: 4 - Beta
+ Intended Audience :: Developers
+ License :: OSI Approved :: Apache Software License
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.5
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+
+[options]
+python_requires = >=3.5
+package_dir=
+ =src
+packages=find_namespace:
+install_requires =
+ ddtrace>=0.34.0
+ opentelemetry-api == 0.16.dev0
+ opentelemetry-sdk == 0.16.dev0
+
+[options.packages.find]
+where = src
+
+[options.extras_require]
+test =
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/setup.py b/exporter/opentelemetry-exporter-prometheus-remote-write/setup.py
new file mode 100644
index 0000000000..b2d9a5a47c
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/setup.py
@@ -0,0 +1,32 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+
+import setuptools
+
+BASE_DIR = os.path.dirname(__file__)
+VERSION_FILENAME = os.path.join(
+ BASE_DIR,
+ "src",
+ "opentelemetry",
+ "exporter",
+ "prometheus_remote_write",
+ "version.py",
+)
+PACKAGE_INFO = {}
+with open(VERSION_FILENAME) as f:
+ exec(f.read(), PACKAGE_INFO)
+
+setuptools.setup(version=PACKAGE_INFO["__version__"])
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/__init__.py b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/__init__.py
new file mode 100644
index 0000000000..7a8856387c
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/__init__.py
@@ -0,0 +1,110 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from typing import Dict, Sequence
+
+from opentelemetry.sdk.metrics.export import (
+ ExportRecord,
+ MetricsExporter,
+ MetricsExportResult,
+)
+
+from .gen.types_pb2 import Label, Sample, TimeSeries
+
+
+class PrometheusRemoteWriteMetricsExporter(MetricsExporter):
+ """
+ Prometheus remote write metric exporter for OpenTelemetry.
+
+ Args:
+ endpoint: url where data will be sent (Required)
+ basic_auth: username and password for authentication (Optional)
+ bearer_token: token used for authentication (Optional)
+ bearer_token_file: filepath to file containing authentication token (Optional)
+ headers: additional headers for remote write request (Optional
+ """
+
+ def __init__(
+ self,
+ endpoint: str,
+ basic_auth: Dict = None,
+ bearer_token: str = None,
+ bearer_token_file: str = None,
+ headers: Dict = None,
+ ):
+ pass
+
+ def export(
+ self, export_records: Sequence[ExportRecord]
+ ) -> MetricsExportResult:
+ pass
+
+ def shutdown(self) -> None:
+ pass
+
+ def convert_to_timeseries(
+ self, export_records: Sequence[ExportRecord]
+ ) -> Sequence[TimeSeries]:
+ pass
+
+ def convert_from_sum(self, sum_record: ExportRecord) -> TimeSeries:
+ pass
+
+ def convert_from_min_max_sum_count(
+ self, min_max_sum_count_record: ExportRecord
+ ) -> TimeSeries:
+ pass
+
+ def convert_from_histogram(
+ self, histogram_record: ExportRecord
+ ) -> TimeSeries:
+ pass
+
+ def convert_from_last_value(
+ self, last_value_record: ExportRecord
+ ) -> TimeSeries:
+ pass
+
+ def convert_from_value_observer(
+ self, value_observer_record: ExportRecord
+ ) -> TimeSeries:
+ pass
+
+ def convert_from_quantile(
+ self, summary_record: ExportRecord
+ ) -> TimeSeries:
+ pass
+
+ # pylint: disable=no-member
+ def create_timeseries(
+ self, export_record: ExportRecord, name, value: float
+ ) -> TimeSeries:
+ pass
+
+ def create_sample(self, timestamp: int, value: float) -> Sample:
+ pass
+
+ def create_label(self, name: str, value: str) -> Label:
+ pass
+
+ def build_message(self, timeseries: Sequence[TimeSeries]) -> bytes:
+ pass
+
+ def get_headers(self) -> Dict:
+ pass
+
+ def send_message(
+ self, message: bytes, headers: Dict
+ ) -> MetricsExportResult:
+ pass
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/gogoproto/gogo.proto b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/gogoproto/gogo.proto
new file mode 100644
index 0000000000..6d2137f4a5
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/gogoproto/gogo.proto
@@ -0,0 +1,145 @@
+// Protocol Buffers for Go with Gadgets
+//
+// Copyright (c) 2013, The GoGo Authors. All rights reserved.
+// http://github.com/gogo/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+package gogoproto;
+
+import "google/protobuf/descriptor.proto";
+
+option java_package = "com.google.protobuf";
+option java_outer_classname = "GoGoProtos";
+option go_package = "github.com/gogo/protobuf/gogoproto";
+
+extend google.protobuf.EnumOptions {
+ optional bool goproto_enum_prefix = 62001;
+ optional bool goproto_enum_stringer = 62021;
+ optional bool enum_stringer = 62022;
+ optional string enum_customname = 62023;
+ optional bool enumdecl = 62024;
+}
+
+extend google.protobuf.EnumValueOptions {
+ optional string enumvalue_customname = 66001;
+}
+
+extend google.protobuf.FileOptions {
+ optional bool goproto_getters_all = 63001;
+ optional bool goproto_enum_prefix_all = 63002;
+ optional bool goproto_stringer_all = 63003;
+ optional bool verbose_equal_all = 63004;
+ optional bool face_all = 63005;
+ optional bool gostring_all = 63006;
+ optional bool populate_all = 63007;
+ optional bool stringer_all = 63008;
+ optional bool onlyone_all = 63009;
+
+ optional bool equal_all = 63013;
+ optional bool description_all = 63014;
+ optional bool testgen_all = 63015;
+ optional bool benchgen_all = 63016;
+ optional bool marshaler_all = 63017;
+ optional bool unmarshaler_all = 63018;
+ optional bool stable_marshaler_all = 63019;
+
+ optional bool sizer_all = 63020;
+
+ optional bool goproto_enum_stringer_all = 63021;
+ optional bool enum_stringer_all = 63022;
+
+ optional bool unsafe_marshaler_all = 63023;
+ optional bool unsafe_unmarshaler_all = 63024;
+
+ optional bool goproto_extensions_map_all = 63025;
+ optional bool goproto_unrecognized_all = 63026;
+ optional bool gogoproto_import = 63027;
+ optional bool protosizer_all = 63028;
+ optional bool compare_all = 63029;
+ optional bool typedecl_all = 63030;
+ optional bool enumdecl_all = 63031;
+
+ optional bool goproto_registration = 63032;
+ optional bool messagename_all = 63033;
+
+ optional bool goproto_sizecache_all = 63034;
+ optional bool goproto_unkeyed_all = 63035;
+}
+
+extend google.protobuf.MessageOptions {
+ optional bool goproto_getters = 64001;
+ optional bool goproto_stringer = 64003;
+ optional bool verbose_equal = 64004;
+ optional bool face = 64005;
+ optional bool gostring = 64006;
+ optional bool populate = 64007;
+ optional bool stringer = 67008;
+ optional bool onlyone = 64009;
+
+ optional bool equal = 64013;
+ optional bool description = 64014;
+ optional bool testgen = 64015;
+ optional bool benchgen = 64016;
+ optional bool marshaler = 64017;
+ optional bool unmarshaler = 64018;
+ optional bool stable_marshaler = 64019;
+
+ optional bool sizer = 64020;
+
+ optional bool unsafe_marshaler = 64023;
+ optional bool unsafe_unmarshaler = 64024;
+
+ optional bool goproto_extensions_map = 64025;
+ optional bool goproto_unrecognized = 64026;
+
+ optional bool protosizer = 64028;
+ optional bool compare = 64029;
+
+ optional bool typedecl = 64030;
+
+ optional bool messagename = 64033;
+
+ optional bool goproto_sizecache = 64034;
+ optional bool goproto_unkeyed = 64035;
+}
+
+extend google.protobuf.FieldOptions {
+ optional bool nullable = 65001;
+ optional bool embed = 65002;
+ optional string customtype = 65003;
+ optional string customname = 65004;
+ optional string jsontag = 65005;
+ optional string moretags = 65006;
+ optional string casttype = 65007;
+ optional string castkey = 65008;
+ optional string castvalue = 65009;
+
+ optional bool stdtime = 65010;
+ optional bool stdduration = 65011;
+ optional bool wktpointer = 65012;
+
+}
+
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/gogoproto/gogo_pb2.py b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/gogoproto/gogo_pb2.py
new file mode 100644
index 0000000000..fc3401cfad
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/gogoproto/gogo_pb2.py
@@ -0,0 +1,793 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: gogoproto/gogo.proto
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+ name='gogoproto/gogo.proto',
+ package='gogoproto',
+ syntax='proto2',
+ serialized_options=b'\n\023com.google.protobufB\nGoGoProtosZ\"github.com/gogo/protobuf/gogoproto',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n\x14gogoproto/gogo.proto\x12\tgogoproto\x1a google/protobuf/descriptor.proto:;\n\x13goproto_enum_prefix\x12\x1c.google.protobuf.EnumOptions\x18\xb1\xe4\x03 \x01(\x08:=\n\x15goproto_enum_stringer\x12\x1c.google.protobuf.EnumOptions\x18\xc5\xe4\x03 \x01(\x08:5\n\renum_stringer\x12\x1c.google.protobuf.EnumOptions\x18\xc6\xe4\x03 \x01(\x08:7\n\x0f\x65num_customname\x12\x1c.google.protobuf.EnumOptions\x18\xc7\xe4\x03 \x01(\t:0\n\x08\x65numdecl\x12\x1c.google.protobuf.EnumOptions\x18\xc8\xe4\x03 \x01(\x08:A\n\x14\x65numvalue_customname\x12!.google.protobuf.EnumValueOptions\x18\xd1\x83\x04 \x01(\t:;\n\x13goproto_getters_all\x12\x1c.google.protobuf.FileOptions\x18\x99\xec\x03 \x01(\x08:?\n\x17goproto_enum_prefix_all\x12\x1c.google.protobuf.FileOptions\x18\x9a\xec\x03 \x01(\x08:<\n\x14goproto_stringer_all\x12\x1c.google.protobuf.FileOptions\x18\x9b\xec\x03 \x01(\x08:9\n\x11verbose_equal_all\x12\x1c.google.protobuf.FileOptions\x18\x9c\xec\x03 \x01(\x08:0\n\x08\x66\x61\x63\x65_all\x12\x1c.google.protobuf.FileOptions\x18\x9d\xec\x03 \x01(\x08:4\n\x0cgostring_all\x12\x1c.google.protobuf.FileOptions\x18\x9e\xec\x03 \x01(\x08:4\n\x0cpopulate_all\x12\x1c.google.protobuf.FileOptions\x18\x9f\xec\x03 \x01(\x08:4\n\x0cstringer_all\x12\x1c.google.protobuf.FileOptions\x18\xa0\xec\x03 \x01(\x08:3\n\x0bonlyone_all\x12\x1c.google.protobuf.FileOptions\x18\xa1\xec\x03 \x01(\x08:1\n\tequal_all\x12\x1c.google.protobuf.FileOptions\x18\xa5\xec\x03 \x01(\x08:7\n\x0f\x64\x65scription_all\x12\x1c.google.protobuf.FileOptions\x18\xa6\xec\x03 \x01(\x08:3\n\x0btestgen_all\x12\x1c.google.protobuf.FileOptions\x18\xa7\xec\x03 \x01(\x08:4\n\x0c\x62\x65nchgen_all\x12\x1c.google.protobuf.FileOptions\x18\xa8\xec\x03 \x01(\x08:5\n\rmarshaler_all\x12\x1c.google.protobuf.FileOptions\x18\xa9\xec\x03 \x01(\x08:7\n\x0funmarshaler_all\x12\x1c.google.protobuf.FileOptions\x18\xaa\xec\x03 \x01(\x08:<\n\x14stable_marshaler_all\x12\x1c.google.protobuf.FileOptions\x18\xab\xec\x03 \x01(\x08:1\n\tsizer_all\x12\x1c.google.protobuf.FileOptions\x18\xac\xec\x03 \x01(\x08:A\n\x19goproto_enum_stringer_all\x12\x1c.google.protobuf.FileOptions\x18\xad\xec\x03 \x01(\x08:9\n\x11\x65num_stringer_all\x12\x1c.google.protobuf.FileOptions\x18\xae\xec\x03 \x01(\x08:<\n\x14unsafe_marshaler_all\x12\x1c.google.protobuf.FileOptions\x18\xaf\xec\x03 \x01(\x08:>\n\x16unsafe_unmarshaler_all\x12\x1c.google.protobuf.FileOptions\x18\xb0\xec\x03 \x01(\x08:B\n\x1agoproto_extensions_map_all\x12\x1c.google.protobuf.FileOptions\x18\xb1\xec\x03 \x01(\x08:@\n\x18goproto_unrecognized_all\x12\x1c.google.protobuf.FileOptions\x18\xb2\xec\x03 \x01(\x08:8\n\x10gogoproto_import\x12\x1c.google.protobuf.FileOptions\x18\xb3\xec\x03 \x01(\x08:6\n\x0eprotosizer_all\x12\x1c.google.protobuf.FileOptions\x18\xb4\xec\x03 \x01(\x08:3\n\x0b\x63ompare_all\x12\x1c.google.protobuf.FileOptions\x18\xb5\xec\x03 \x01(\x08:4\n\x0ctypedecl_all\x12\x1c.google.protobuf.FileOptions\x18\xb6\xec\x03 \x01(\x08:4\n\x0c\x65numdecl_all\x12\x1c.google.protobuf.FileOptions\x18\xb7\xec\x03 \x01(\x08:<\n\x14goproto_registration\x12\x1c.google.protobuf.FileOptions\x18\xb8\xec\x03 \x01(\x08:7\n\x0fmessagename_all\x12\x1c.google.protobuf.FileOptions\x18\xb9\xec\x03 \x01(\x08:=\n\x15goproto_sizecache_all\x12\x1c.google.protobuf.FileOptions\x18\xba\xec\x03 \x01(\x08:;\n\x13goproto_unkeyed_all\x12\x1c.google.protobuf.FileOptions\x18\xbb\xec\x03 \x01(\x08::\n\x0fgoproto_getters\x12\x1f.google.protobuf.MessageOptions\x18\x81\xf4\x03 \x01(\x08:;\n\x10goproto_stringer\x12\x1f.google.protobuf.MessageOptions\x18\x83\xf4\x03 \x01(\x08:8\n\rverbose_equal\x12\x1f.google.protobuf.MessageOptions\x18\x84\xf4\x03 \x01(\x08:/\n\x04\x66\x61\x63\x65\x12\x1f.google.protobuf.MessageOptions\x18\x85\xf4\x03 \x01(\x08:3\n\x08gostring\x12\x1f.google.protobuf.MessageOptions\x18\x86\xf4\x03 \x01(\x08:3\n\x08populate\x12\x1f.google.protobuf.MessageOptions\x18\x87\xf4\x03 \x01(\x08:3\n\x08stringer\x12\x1f.google.protobuf.MessageOptions\x18\xc0\x8b\x04 \x01(\x08:2\n\x07onlyone\x12\x1f.google.protobuf.MessageOptions\x18\x89\xf4\x03 \x01(\x08:0\n\x05\x65qual\x12\x1f.google.protobuf.MessageOptions\x18\x8d\xf4\x03 \x01(\x08:6\n\x0b\x64\x65scription\x12\x1f.google.protobuf.MessageOptions\x18\x8e\xf4\x03 \x01(\x08:2\n\x07testgen\x12\x1f.google.protobuf.MessageOptions\x18\x8f\xf4\x03 \x01(\x08:3\n\x08\x62\x65nchgen\x12\x1f.google.protobuf.MessageOptions\x18\x90\xf4\x03 \x01(\x08:4\n\tmarshaler\x12\x1f.google.protobuf.MessageOptions\x18\x91\xf4\x03 \x01(\x08:6\n\x0bunmarshaler\x12\x1f.google.protobuf.MessageOptions\x18\x92\xf4\x03 \x01(\x08:;\n\x10stable_marshaler\x12\x1f.google.protobuf.MessageOptions\x18\x93\xf4\x03 \x01(\x08:0\n\x05sizer\x12\x1f.google.protobuf.MessageOptions\x18\x94\xf4\x03 \x01(\x08:;\n\x10unsafe_marshaler\x12\x1f.google.protobuf.MessageOptions\x18\x97\xf4\x03 \x01(\x08:=\n\x12unsafe_unmarshaler\x12\x1f.google.protobuf.MessageOptions\x18\x98\xf4\x03 \x01(\x08:A\n\x16goproto_extensions_map\x12\x1f.google.protobuf.MessageOptions\x18\x99\xf4\x03 \x01(\x08:?\n\x14goproto_unrecognized\x12\x1f.google.protobuf.MessageOptions\x18\x9a\xf4\x03 \x01(\x08:5\n\nprotosizer\x12\x1f.google.protobuf.MessageOptions\x18\x9c\xf4\x03 \x01(\x08:2\n\x07\x63ompare\x12\x1f.google.protobuf.MessageOptions\x18\x9d\xf4\x03 \x01(\x08:3\n\x08typedecl\x12\x1f.google.protobuf.MessageOptions\x18\x9e\xf4\x03 \x01(\x08:6\n\x0bmessagename\x12\x1f.google.protobuf.MessageOptions\x18\xa1\xf4\x03 \x01(\x08:<\n\x11goproto_sizecache\x12\x1f.google.protobuf.MessageOptions\x18\xa2\xf4\x03 \x01(\x08::\n\x0fgoproto_unkeyed\x12\x1f.google.protobuf.MessageOptions\x18\xa3\xf4\x03 \x01(\x08:1\n\x08nullable\x12\x1d.google.protobuf.FieldOptions\x18\xe9\xfb\x03 \x01(\x08:.\n\x05\x65mbed\x12\x1d.google.protobuf.FieldOptions\x18\xea\xfb\x03 \x01(\x08:3\n\ncustomtype\x12\x1d.google.protobuf.FieldOptions\x18\xeb\xfb\x03 \x01(\t:3\n\ncustomname\x12\x1d.google.protobuf.FieldOptions\x18\xec\xfb\x03 \x01(\t:0\n\x07jsontag\x12\x1d.google.protobuf.FieldOptions\x18\xed\xfb\x03 \x01(\t:1\n\x08moretags\x12\x1d.google.protobuf.FieldOptions\x18\xee\xfb\x03 \x01(\t:1\n\x08\x63\x61sttype\x12\x1d.google.protobuf.FieldOptions\x18\xef\xfb\x03 \x01(\t:0\n\x07\x63\x61stkey\x12\x1d.google.protobuf.FieldOptions\x18\xf0\xfb\x03 \x01(\t:2\n\tcastvalue\x12\x1d.google.protobuf.FieldOptions\x18\xf1\xfb\x03 \x01(\t:0\n\x07stdtime\x12\x1d.google.protobuf.FieldOptions\x18\xf2\xfb\x03 \x01(\x08:4\n\x0bstdduration\x12\x1d.google.protobuf.FieldOptions\x18\xf3\xfb\x03 \x01(\x08:3\n\nwktpointer\x12\x1d.google.protobuf.FieldOptions\x18\xf4\xfb\x03 \x01(\x08\x42\x45\n\x13\x63om.google.protobufB\nGoGoProtosZ\"github.com/gogo/protobuf/gogoproto'
+ ,
+ dependencies=[google_dot_protobuf_dot_descriptor__pb2.DESCRIPTOR,])
+
+
+GOPROTO_ENUM_PREFIX_FIELD_NUMBER = 62001
+goproto_enum_prefix = _descriptor.FieldDescriptor(
+ name='goproto_enum_prefix', full_name='gogoproto.goproto_enum_prefix', index=0,
+ number=62001, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_ENUM_STRINGER_FIELD_NUMBER = 62021
+goproto_enum_stringer = _descriptor.FieldDescriptor(
+ name='goproto_enum_stringer', full_name='gogoproto.goproto_enum_stringer', index=1,
+ number=62021, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+ENUM_STRINGER_FIELD_NUMBER = 62022
+enum_stringer = _descriptor.FieldDescriptor(
+ name='enum_stringer', full_name='gogoproto.enum_stringer', index=2,
+ number=62022, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+ENUM_CUSTOMNAME_FIELD_NUMBER = 62023
+enum_customname = _descriptor.FieldDescriptor(
+ name='enum_customname', full_name='gogoproto.enum_customname', index=3,
+ number=62023, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+ENUMDECL_FIELD_NUMBER = 62024
+enumdecl = _descriptor.FieldDescriptor(
+ name='enumdecl', full_name='gogoproto.enumdecl', index=4,
+ number=62024, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+ENUMVALUE_CUSTOMNAME_FIELD_NUMBER = 66001
+enumvalue_customname = _descriptor.FieldDescriptor(
+ name='enumvalue_customname', full_name='gogoproto.enumvalue_customname', index=5,
+ number=66001, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_GETTERS_ALL_FIELD_NUMBER = 63001
+goproto_getters_all = _descriptor.FieldDescriptor(
+ name='goproto_getters_all', full_name='gogoproto.goproto_getters_all', index=6,
+ number=63001, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_ENUM_PREFIX_ALL_FIELD_NUMBER = 63002
+goproto_enum_prefix_all = _descriptor.FieldDescriptor(
+ name='goproto_enum_prefix_all', full_name='gogoproto.goproto_enum_prefix_all', index=7,
+ number=63002, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_STRINGER_ALL_FIELD_NUMBER = 63003
+goproto_stringer_all = _descriptor.FieldDescriptor(
+ name='goproto_stringer_all', full_name='gogoproto.goproto_stringer_all', index=8,
+ number=63003, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+VERBOSE_EQUAL_ALL_FIELD_NUMBER = 63004
+verbose_equal_all = _descriptor.FieldDescriptor(
+ name='verbose_equal_all', full_name='gogoproto.verbose_equal_all', index=9,
+ number=63004, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+FACE_ALL_FIELD_NUMBER = 63005
+face_all = _descriptor.FieldDescriptor(
+ name='face_all', full_name='gogoproto.face_all', index=10,
+ number=63005, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOSTRING_ALL_FIELD_NUMBER = 63006
+gostring_all = _descriptor.FieldDescriptor(
+ name='gostring_all', full_name='gogoproto.gostring_all', index=11,
+ number=63006, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+POPULATE_ALL_FIELD_NUMBER = 63007
+populate_all = _descriptor.FieldDescriptor(
+ name='populate_all', full_name='gogoproto.populate_all', index=12,
+ number=63007, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+STRINGER_ALL_FIELD_NUMBER = 63008
+stringer_all = _descriptor.FieldDescriptor(
+ name='stringer_all', full_name='gogoproto.stringer_all', index=13,
+ number=63008, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+ONLYONE_ALL_FIELD_NUMBER = 63009
+onlyone_all = _descriptor.FieldDescriptor(
+ name='onlyone_all', full_name='gogoproto.onlyone_all', index=14,
+ number=63009, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+EQUAL_ALL_FIELD_NUMBER = 63013
+equal_all = _descriptor.FieldDescriptor(
+ name='equal_all', full_name='gogoproto.equal_all', index=15,
+ number=63013, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+DESCRIPTION_ALL_FIELD_NUMBER = 63014
+description_all = _descriptor.FieldDescriptor(
+ name='description_all', full_name='gogoproto.description_all', index=16,
+ number=63014, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+TESTGEN_ALL_FIELD_NUMBER = 63015
+testgen_all = _descriptor.FieldDescriptor(
+ name='testgen_all', full_name='gogoproto.testgen_all', index=17,
+ number=63015, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+BENCHGEN_ALL_FIELD_NUMBER = 63016
+benchgen_all = _descriptor.FieldDescriptor(
+ name='benchgen_all', full_name='gogoproto.benchgen_all', index=18,
+ number=63016, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+MARSHALER_ALL_FIELD_NUMBER = 63017
+marshaler_all = _descriptor.FieldDescriptor(
+ name='marshaler_all', full_name='gogoproto.marshaler_all', index=19,
+ number=63017, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+UNMARSHALER_ALL_FIELD_NUMBER = 63018
+unmarshaler_all = _descriptor.FieldDescriptor(
+ name='unmarshaler_all', full_name='gogoproto.unmarshaler_all', index=20,
+ number=63018, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+STABLE_MARSHALER_ALL_FIELD_NUMBER = 63019
+stable_marshaler_all = _descriptor.FieldDescriptor(
+ name='stable_marshaler_all', full_name='gogoproto.stable_marshaler_all', index=21,
+ number=63019, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+SIZER_ALL_FIELD_NUMBER = 63020
+sizer_all = _descriptor.FieldDescriptor(
+ name='sizer_all', full_name='gogoproto.sizer_all', index=22,
+ number=63020, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_ENUM_STRINGER_ALL_FIELD_NUMBER = 63021
+goproto_enum_stringer_all = _descriptor.FieldDescriptor(
+ name='goproto_enum_stringer_all', full_name='gogoproto.goproto_enum_stringer_all', index=23,
+ number=63021, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+ENUM_STRINGER_ALL_FIELD_NUMBER = 63022
+enum_stringer_all = _descriptor.FieldDescriptor(
+ name='enum_stringer_all', full_name='gogoproto.enum_stringer_all', index=24,
+ number=63022, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+UNSAFE_MARSHALER_ALL_FIELD_NUMBER = 63023
+unsafe_marshaler_all = _descriptor.FieldDescriptor(
+ name='unsafe_marshaler_all', full_name='gogoproto.unsafe_marshaler_all', index=25,
+ number=63023, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+UNSAFE_UNMARSHALER_ALL_FIELD_NUMBER = 63024
+unsafe_unmarshaler_all = _descriptor.FieldDescriptor(
+ name='unsafe_unmarshaler_all', full_name='gogoproto.unsafe_unmarshaler_all', index=26,
+ number=63024, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_EXTENSIONS_MAP_ALL_FIELD_NUMBER = 63025
+goproto_extensions_map_all = _descriptor.FieldDescriptor(
+ name='goproto_extensions_map_all', full_name='gogoproto.goproto_extensions_map_all', index=27,
+ number=63025, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_UNRECOGNIZED_ALL_FIELD_NUMBER = 63026
+goproto_unrecognized_all = _descriptor.FieldDescriptor(
+ name='goproto_unrecognized_all', full_name='gogoproto.goproto_unrecognized_all', index=28,
+ number=63026, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOGOPROTO_IMPORT_FIELD_NUMBER = 63027
+gogoproto_import = _descriptor.FieldDescriptor(
+ name='gogoproto_import', full_name='gogoproto.gogoproto_import', index=29,
+ number=63027, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+PROTOSIZER_ALL_FIELD_NUMBER = 63028
+protosizer_all = _descriptor.FieldDescriptor(
+ name='protosizer_all', full_name='gogoproto.protosizer_all', index=30,
+ number=63028, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+COMPARE_ALL_FIELD_NUMBER = 63029
+compare_all = _descriptor.FieldDescriptor(
+ name='compare_all', full_name='gogoproto.compare_all', index=31,
+ number=63029, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+TYPEDECL_ALL_FIELD_NUMBER = 63030
+typedecl_all = _descriptor.FieldDescriptor(
+ name='typedecl_all', full_name='gogoproto.typedecl_all', index=32,
+ number=63030, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+ENUMDECL_ALL_FIELD_NUMBER = 63031
+enumdecl_all = _descriptor.FieldDescriptor(
+ name='enumdecl_all', full_name='gogoproto.enumdecl_all', index=33,
+ number=63031, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_REGISTRATION_FIELD_NUMBER = 63032
+goproto_registration = _descriptor.FieldDescriptor(
+ name='goproto_registration', full_name='gogoproto.goproto_registration', index=34,
+ number=63032, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+MESSAGENAME_ALL_FIELD_NUMBER = 63033
+messagename_all = _descriptor.FieldDescriptor(
+ name='messagename_all', full_name='gogoproto.messagename_all', index=35,
+ number=63033, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_SIZECACHE_ALL_FIELD_NUMBER = 63034
+goproto_sizecache_all = _descriptor.FieldDescriptor(
+ name='goproto_sizecache_all', full_name='gogoproto.goproto_sizecache_all', index=36,
+ number=63034, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_UNKEYED_ALL_FIELD_NUMBER = 63035
+goproto_unkeyed_all = _descriptor.FieldDescriptor(
+ name='goproto_unkeyed_all', full_name='gogoproto.goproto_unkeyed_all', index=37,
+ number=63035, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_GETTERS_FIELD_NUMBER = 64001
+goproto_getters = _descriptor.FieldDescriptor(
+ name='goproto_getters', full_name='gogoproto.goproto_getters', index=38,
+ number=64001, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_STRINGER_FIELD_NUMBER = 64003
+goproto_stringer = _descriptor.FieldDescriptor(
+ name='goproto_stringer', full_name='gogoproto.goproto_stringer', index=39,
+ number=64003, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+VERBOSE_EQUAL_FIELD_NUMBER = 64004
+verbose_equal = _descriptor.FieldDescriptor(
+ name='verbose_equal', full_name='gogoproto.verbose_equal', index=40,
+ number=64004, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+FACE_FIELD_NUMBER = 64005
+face = _descriptor.FieldDescriptor(
+ name='face', full_name='gogoproto.face', index=41,
+ number=64005, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOSTRING_FIELD_NUMBER = 64006
+gostring = _descriptor.FieldDescriptor(
+ name='gostring', full_name='gogoproto.gostring', index=42,
+ number=64006, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+POPULATE_FIELD_NUMBER = 64007
+populate = _descriptor.FieldDescriptor(
+ name='populate', full_name='gogoproto.populate', index=43,
+ number=64007, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+STRINGER_FIELD_NUMBER = 67008
+stringer = _descriptor.FieldDescriptor(
+ name='stringer', full_name='gogoproto.stringer', index=44,
+ number=67008, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+ONLYONE_FIELD_NUMBER = 64009
+onlyone = _descriptor.FieldDescriptor(
+ name='onlyone', full_name='gogoproto.onlyone', index=45,
+ number=64009, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+EQUAL_FIELD_NUMBER = 64013
+equal = _descriptor.FieldDescriptor(
+ name='equal', full_name='gogoproto.equal', index=46,
+ number=64013, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+DESCRIPTION_FIELD_NUMBER = 64014
+description = _descriptor.FieldDescriptor(
+ name='description', full_name='gogoproto.description', index=47,
+ number=64014, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+TESTGEN_FIELD_NUMBER = 64015
+testgen = _descriptor.FieldDescriptor(
+ name='testgen', full_name='gogoproto.testgen', index=48,
+ number=64015, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+BENCHGEN_FIELD_NUMBER = 64016
+benchgen = _descriptor.FieldDescriptor(
+ name='benchgen', full_name='gogoproto.benchgen', index=49,
+ number=64016, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+MARSHALER_FIELD_NUMBER = 64017
+marshaler = _descriptor.FieldDescriptor(
+ name='marshaler', full_name='gogoproto.marshaler', index=50,
+ number=64017, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+UNMARSHALER_FIELD_NUMBER = 64018
+unmarshaler = _descriptor.FieldDescriptor(
+ name='unmarshaler', full_name='gogoproto.unmarshaler', index=51,
+ number=64018, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+STABLE_MARSHALER_FIELD_NUMBER = 64019
+stable_marshaler = _descriptor.FieldDescriptor(
+ name='stable_marshaler', full_name='gogoproto.stable_marshaler', index=52,
+ number=64019, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+SIZER_FIELD_NUMBER = 64020
+sizer = _descriptor.FieldDescriptor(
+ name='sizer', full_name='gogoproto.sizer', index=53,
+ number=64020, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+UNSAFE_MARSHALER_FIELD_NUMBER = 64023
+unsafe_marshaler = _descriptor.FieldDescriptor(
+ name='unsafe_marshaler', full_name='gogoproto.unsafe_marshaler', index=54,
+ number=64023, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+UNSAFE_UNMARSHALER_FIELD_NUMBER = 64024
+unsafe_unmarshaler = _descriptor.FieldDescriptor(
+ name='unsafe_unmarshaler', full_name='gogoproto.unsafe_unmarshaler', index=55,
+ number=64024, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_EXTENSIONS_MAP_FIELD_NUMBER = 64025
+goproto_extensions_map = _descriptor.FieldDescriptor(
+ name='goproto_extensions_map', full_name='gogoproto.goproto_extensions_map', index=56,
+ number=64025, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_UNRECOGNIZED_FIELD_NUMBER = 64026
+goproto_unrecognized = _descriptor.FieldDescriptor(
+ name='goproto_unrecognized', full_name='gogoproto.goproto_unrecognized', index=57,
+ number=64026, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+PROTOSIZER_FIELD_NUMBER = 64028
+protosizer = _descriptor.FieldDescriptor(
+ name='protosizer', full_name='gogoproto.protosizer', index=58,
+ number=64028, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+COMPARE_FIELD_NUMBER = 64029
+compare = _descriptor.FieldDescriptor(
+ name='compare', full_name='gogoproto.compare', index=59,
+ number=64029, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+TYPEDECL_FIELD_NUMBER = 64030
+typedecl = _descriptor.FieldDescriptor(
+ name='typedecl', full_name='gogoproto.typedecl', index=60,
+ number=64030, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+MESSAGENAME_FIELD_NUMBER = 64033
+messagename = _descriptor.FieldDescriptor(
+ name='messagename', full_name='gogoproto.messagename', index=61,
+ number=64033, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_SIZECACHE_FIELD_NUMBER = 64034
+goproto_sizecache = _descriptor.FieldDescriptor(
+ name='goproto_sizecache', full_name='gogoproto.goproto_sizecache', index=62,
+ number=64034, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+GOPROTO_UNKEYED_FIELD_NUMBER = 64035
+goproto_unkeyed = _descriptor.FieldDescriptor(
+ name='goproto_unkeyed', full_name='gogoproto.goproto_unkeyed', index=63,
+ number=64035, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+NULLABLE_FIELD_NUMBER = 65001
+nullable = _descriptor.FieldDescriptor(
+ name='nullable', full_name='gogoproto.nullable', index=64,
+ number=65001, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+EMBED_FIELD_NUMBER = 65002
+embed = _descriptor.FieldDescriptor(
+ name='embed', full_name='gogoproto.embed', index=65,
+ number=65002, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+CUSTOMTYPE_FIELD_NUMBER = 65003
+customtype = _descriptor.FieldDescriptor(
+ name='customtype', full_name='gogoproto.customtype', index=66,
+ number=65003, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+CUSTOMNAME_FIELD_NUMBER = 65004
+customname = _descriptor.FieldDescriptor(
+ name='customname', full_name='gogoproto.customname', index=67,
+ number=65004, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+JSONTAG_FIELD_NUMBER = 65005
+jsontag = _descriptor.FieldDescriptor(
+ name='jsontag', full_name='gogoproto.jsontag', index=68,
+ number=65005, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+MORETAGS_FIELD_NUMBER = 65006
+moretags = _descriptor.FieldDescriptor(
+ name='moretags', full_name='gogoproto.moretags', index=69,
+ number=65006, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+CASTTYPE_FIELD_NUMBER = 65007
+casttype = _descriptor.FieldDescriptor(
+ name='casttype', full_name='gogoproto.casttype', index=70,
+ number=65007, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+CASTKEY_FIELD_NUMBER = 65008
+castkey = _descriptor.FieldDescriptor(
+ name='castkey', full_name='gogoproto.castkey', index=71,
+ number=65008, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+CASTVALUE_FIELD_NUMBER = 65009
+castvalue = _descriptor.FieldDescriptor(
+ name='castvalue', full_name='gogoproto.castvalue', index=72,
+ number=65009, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+STDTIME_FIELD_NUMBER = 65010
+stdtime = _descriptor.FieldDescriptor(
+ name='stdtime', full_name='gogoproto.stdtime', index=73,
+ number=65010, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+STDDURATION_FIELD_NUMBER = 65011
+stdduration = _descriptor.FieldDescriptor(
+ name='stdduration', full_name='gogoproto.stdduration', index=74,
+ number=65011, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+WKTPOINTER_FIELD_NUMBER = 65012
+wktpointer = _descriptor.FieldDescriptor(
+ name='wktpointer', full_name='gogoproto.wktpointer', index=75,
+ number=65012, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=True, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key)
+
+DESCRIPTOR.extensions_by_name['goproto_enum_prefix'] = goproto_enum_prefix
+DESCRIPTOR.extensions_by_name['goproto_enum_stringer'] = goproto_enum_stringer
+DESCRIPTOR.extensions_by_name['enum_stringer'] = enum_stringer
+DESCRIPTOR.extensions_by_name['enum_customname'] = enum_customname
+DESCRIPTOR.extensions_by_name['enumdecl'] = enumdecl
+DESCRIPTOR.extensions_by_name['enumvalue_customname'] = enumvalue_customname
+DESCRIPTOR.extensions_by_name['goproto_getters_all'] = goproto_getters_all
+DESCRIPTOR.extensions_by_name['goproto_enum_prefix_all'] = goproto_enum_prefix_all
+DESCRIPTOR.extensions_by_name['goproto_stringer_all'] = goproto_stringer_all
+DESCRIPTOR.extensions_by_name['verbose_equal_all'] = verbose_equal_all
+DESCRIPTOR.extensions_by_name['face_all'] = face_all
+DESCRIPTOR.extensions_by_name['gostring_all'] = gostring_all
+DESCRIPTOR.extensions_by_name['populate_all'] = populate_all
+DESCRIPTOR.extensions_by_name['stringer_all'] = stringer_all
+DESCRIPTOR.extensions_by_name['onlyone_all'] = onlyone_all
+DESCRIPTOR.extensions_by_name['equal_all'] = equal_all
+DESCRIPTOR.extensions_by_name['description_all'] = description_all
+DESCRIPTOR.extensions_by_name['testgen_all'] = testgen_all
+DESCRIPTOR.extensions_by_name['benchgen_all'] = benchgen_all
+DESCRIPTOR.extensions_by_name['marshaler_all'] = marshaler_all
+DESCRIPTOR.extensions_by_name['unmarshaler_all'] = unmarshaler_all
+DESCRIPTOR.extensions_by_name['stable_marshaler_all'] = stable_marshaler_all
+DESCRIPTOR.extensions_by_name['sizer_all'] = sizer_all
+DESCRIPTOR.extensions_by_name['goproto_enum_stringer_all'] = goproto_enum_stringer_all
+DESCRIPTOR.extensions_by_name['enum_stringer_all'] = enum_stringer_all
+DESCRIPTOR.extensions_by_name['unsafe_marshaler_all'] = unsafe_marshaler_all
+DESCRIPTOR.extensions_by_name['unsafe_unmarshaler_all'] = unsafe_unmarshaler_all
+DESCRIPTOR.extensions_by_name['goproto_extensions_map_all'] = goproto_extensions_map_all
+DESCRIPTOR.extensions_by_name['goproto_unrecognized_all'] = goproto_unrecognized_all
+DESCRIPTOR.extensions_by_name['gogoproto_import'] = gogoproto_import
+DESCRIPTOR.extensions_by_name['protosizer_all'] = protosizer_all
+DESCRIPTOR.extensions_by_name['compare_all'] = compare_all
+DESCRIPTOR.extensions_by_name['typedecl_all'] = typedecl_all
+DESCRIPTOR.extensions_by_name['enumdecl_all'] = enumdecl_all
+DESCRIPTOR.extensions_by_name['goproto_registration'] = goproto_registration
+DESCRIPTOR.extensions_by_name['messagename_all'] = messagename_all
+DESCRIPTOR.extensions_by_name['goproto_sizecache_all'] = goproto_sizecache_all
+DESCRIPTOR.extensions_by_name['goproto_unkeyed_all'] = goproto_unkeyed_all
+DESCRIPTOR.extensions_by_name['goproto_getters'] = goproto_getters
+DESCRIPTOR.extensions_by_name['goproto_stringer'] = goproto_stringer
+DESCRIPTOR.extensions_by_name['verbose_equal'] = verbose_equal
+DESCRIPTOR.extensions_by_name['face'] = face
+DESCRIPTOR.extensions_by_name['gostring'] = gostring
+DESCRIPTOR.extensions_by_name['populate'] = populate
+DESCRIPTOR.extensions_by_name['stringer'] = stringer
+DESCRIPTOR.extensions_by_name['onlyone'] = onlyone
+DESCRIPTOR.extensions_by_name['equal'] = equal
+DESCRIPTOR.extensions_by_name['description'] = description
+DESCRIPTOR.extensions_by_name['testgen'] = testgen
+DESCRIPTOR.extensions_by_name['benchgen'] = benchgen
+DESCRIPTOR.extensions_by_name['marshaler'] = marshaler
+DESCRIPTOR.extensions_by_name['unmarshaler'] = unmarshaler
+DESCRIPTOR.extensions_by_name['stable_marshaler'] = stable_marshaler
+DESCRIPTOR.extensions_by_name['sizer'] = sizer
+DESCRIPTOR.extensions_by_name['unsafe_marshaler'] = unsafe_marshaler
+DESCRIPTOR.extensions_by_name['unsafe_unmarshaler'] = unsafe_unmarshaler
+DESCRIPTOR.extensions_by_name['goproto_extensions_map'] = goproto_extensions_map
+DESCRIPTOR.extensions_by_name['goproto_unrecognized'] = goproto_unrecognized
+DESCRIPTOR.extensions_by_name['protosizer'] = protosizer
+DESCRIPTOR.extensions_by_name['compare'] = compare
+DESCRIPTOR.extensions_by_name['typedecl'] = typedecl
+DESCRIPTOR.extensions_by_name['messagename'] = messagename
+DESCRIPTOR.extensions_by_name['goproto_sizecache'] = goproto_sizecache
+DESCRIPTOR.extensions_by_name['goproto_unkeyed'] = goproto_unkeyed
+DESCRIPTOR.extensions_by_name['nullable'] = nullable
+DESCRIPTOR.extensions_by_name['embed'] = embed
+DESCRIPTOR.extensions_by_name['customtype'] = customtype
+DESCRIPTOR.extensions_by_name['customname'] = customname
+DESCRIPTOR.extensions_by_name['jsontag'] = jsontag
+DESCRIPTOR.extensions_by_name['moretags'] = moretags
+DESCRIPTOR.extensions_by_name['casttype'] = casttype
+DESCRIPTOR.extensions_by_name['castkey'] = castkey
+DESCRIPTOR.extensions_by_name['castvalue'] = castvalue
+DESCRIPTOR.extensions_by_name['stdtime'] = stdtime
+DESCRIPTOR.extensions_by_name['stdduration'] = stdduration
+DESCRIPTOR.extensions_by_name['wktpointer'] = wktpointer
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+google_dot_protobuf_dot_descriptor__pb2.EnumOptions.RegisterExtension(goproto_enum_prefix)
+google_dot_protobuf_dot_descriptor__pb2.EnumOptions.RegisterExtension(goproto_enum_stringer)
+google_dot_protobuf_dot_descriptor__pb2.EnumOptions.RegisterExtension(enum_stringer)
+google_dot_protobuf_dot_descriptor__pb2.EnumOptions.RegisterExtension(enum_customname)
+google_dot_protobuf_dot_descriptor__pb2.EnumOptions.RegisterExtension(enumdecl)
+google_dot_protobuf_dot_descriptor__pb2.EnumValueOptions.RegisterExtension(enumvalue_customname)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(goproto_getters_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(goproto_enum_prefix_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(goproto_stringer_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(verbose_equal_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(face_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(gostring_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(populate_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(stringer_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(onlyone_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(equal_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(description_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(testgen_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(benchgen_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(marshaler_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(unmarshaler_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(stable_marshaler_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(sizer_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(goproto_enum_stringer_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(enum_stringer_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(unsafe_marshaler_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(unsafe_unmarshaler_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(goproto_extensions_map_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(goproto_unrecognized_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(gogoproto_import)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(protosizer_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(compare_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(typedecl_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(enumdecl_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(goproto_registration)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(messagename_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(goproto_sizecache_all)
+google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(goproto_unkeyed_all)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(goproto_getters)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(goproto_stringer)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(verbose_equal)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(face)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(gostring)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(populate)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(stringer)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(onlyone)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(equal)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(description)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(testgen)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(benchgen)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(marshaler)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(unmarshaler)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(stable_marshaler)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(sizer)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(unsafe_marshaler)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(unsafe_unmarshaler)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(goproto_extensions_map)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(goproto_unrecognized)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(protosizer)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(compare)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(typedecl)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(messagename)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(goproto_sizecache)
+google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(goproto_unkeyed)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(nullable)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(embed)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(customtype)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(customname)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(jsontag)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(moretags)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(casttype)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(castkey)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(castvalue)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(stdtime)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(stdduration)
+google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(wktpointer)
+
+DESCRIPTOR._options = None
+# @@protoc_insertion_point(module_scope)
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/remote.proto b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/remote.proto
new file mode 100644
index 0000000000..ecd8f0bb19
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/remote.proto
@@ -0,0 +1,82 @@
+// Copyright 2016 Prometheus Team
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+package prometheus;
+
+option go_package = "prompb";
+
+import "types.proto";
+import "gogoproto/gogo.proto";
+
+message WriteRequest {
+ repeated prometheus.TimeSeries timeseries = 1 [(gogoproto.nullable) = false];
+}
+
+// ReadRequest represents a remote read request.
+message ReadRequest {
+ repeated Query queries = 1;
+
+ enum ResponseType {
+ // Server will return a single ReadResponse message with matched series that includes list of raw samples.
+ // It's recommended to use streamed response types instead.
+ //
+ // Response headers:
+ // Content-Type: "application/x-protobuf"
+ // Content-Encoding: "snappy"
+ SAMPLES = 0;
+ // Server will stream a delimited ChunkedReadResponse message that contains XOR encoded chunks for a single series.
+ // Each message is following varint size and fixed size bigendian uint32 for CRC32 Castagnoli checksum.
+ //
+ // Response headers:
+ // Content-Type: "application/x-streamed-protobuf; proto=prometheus.ChunkedReadResponse"
+ // Content-Encoding: ""
+ STREAMED_XOR_CHUNKS = 1;
+ }
+
+ // accepted_response_types allows negotiating the content type of the response.
+ //
+ // Response types are taken from the list in the FIFO order. If no response type in `accepted_response_types` is
+ // implemented by server, error is returned.
+ // For request that do not contain `accepted_response_types` field the SAMPLES response type will be used.
+ repeated ResponseType accepted_response_types = 2;
+}
+
+// ReadResponse is a response when response_type equals SAMPLES.
+message ReadResponse {
+ // In same order as the request's queries.
+ repeated QueryResult results = 1;
+}
+
+message Query {
+ int64 start_timestamp_ms = 1;
+ int64 end_timestamp_ms = 2;
+ repeated prometheus.LabelMatcher matchers = 3;
+ prometheus.ReadHints hints = 4;
+}
+
+message QueryResult {
+ // Samples within a time series must be ordered by time.
+ repeated prometheus.TimeSeries timeseries = 1;
+}
+
+// ChunkedReadResponse is a response when response_type equals STREAMED_XOR_CHUNKS.
+// We strictly stream full series after series, optionally split by time. This means that a single frame can contain
+// partition of the single series, but once a new series is started to be streamed it means that no more chunks will
+// be sent for previous one. Series are returned sorted in the same way TSDB block are internally.
+message ChunkedReadResponse {
+ repeated prometheus.ChunkedSeries chunked_series = 1;
+
+ // query_index represents an index of the query from ReadRequest.queries these chunks relates to.
+ int64 query_index = 2;
+}
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/remote_pb2.py b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/remote_pb2.py
new file mode 100644
index 0000000000..06e0086321
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/remote_pb2.py
@@ -0,0 +1,345 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: remote.proto
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from . import types_pb2 as types__pb2
+from .gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+ name='remote.proto',
+ package='prometheus',
+ syntax='proto3',
+ serialized_options=b'Z\006prompb',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n\x0cremote.proto\x12\nprometheus\x1a\x0btypes.proto\x1a\x14gogoproto/gogo.proto\"@\n\x0cWriteRequest\x12\x30\n\ntimeseries\x18\x01 \x03(\x0b\x32\x16.prometheus.TimeSeriesB\x04\xc8\xde\x1f\x00\"\xae\x01\n\x0bReadRequest\x12\"\n\x07queries\x18\x01 \x03(\x0b\x32\x11.prometheus.Query\x12\x45\n\x17\x61\x63\x63\x65pted_response_types\x18\x02 \x03(\x0e\x32$.prometheus.ReadRequest.ResponseType\"4\n\x0cResponseType\x12\x0b\n\x07SAMPLES\x10\x00\x12\x17\n\x13STREAMED_XOR_CHUNKS\x10\x01\"8\n\x0cReadResponse\x12(\n\x07results\x18\x01 \x03(\x0b\x32\x17.prometheus.QueryResult\"\x8f\x01\n\x05Query\x12\x1a\n\x12start_timestamp_ms\x18\x01 \x01(\x03\x12\x18\n\x10\x65nd_timestamp_ms\x18\x02 \x01(\x03\x12*\n\x08matchers\x18\x03 \x03(\x0b\x32\x18.prometheus.LabelMatcher\x12$\n\x05hints\x18\x04 \x01(\x0b\x32\x15.prometheus.ReadHints\"9\n\x0bQueryResult\x12*\n\ntimeseries\x18\x01 \x03(\x0b\x32\x16.prometheus.TimeSeries\"]\n\x13\x43hunkedReadResponse\x12\x31\n\x0e\x63hunked_series\x18\x01 \x03(\x0b\x32\x19.prometheus.ChunkedSeries\x12\x13\n\x0bquery_index\x18\x02 \x01(\x03\x42\x08Z\x06prompbb\x06proto3'
+ ,
+ dependencies=[types__pb2.DESCRIPTOR,gogoproto_dot_gogo__pb2.DESCRIPTOR,])
+
+
+
+_READREQUEST_RESPONSETYPE = _descriptor.EnumDescriptor(
+ name='ResponseType',
+ full_name='prometheus.ReadRequest.ResponseType',
+ filename=None,
+ file=DESCRIPTOR,
+ create_key=_descriptor._internal_create_key,
+ values=[
+ _descriptor.EnumValueDescriptor(
+ name='SAMPLES', index=0, number=0,
+ serialized_options=None,
+ type=None,
+ create_key=_descriptor._internal_create_key),
+ _descriptor.EnumValueDescriptor(
+ name='STREAMED_XOR_CHUNKS', index=1, number=1,
+ serialized_options=None,
+ type=None,
+ create_key=_descriptor._internal_create_key),
+ ],
+ containing_type=None,
+ serialized_options=None,
+ serialized_start=252,
+ serialized_end=304,
+)
+_sym_db.RegisterEnumDescriptor(_READREQUEST_RESPONSETYPE)
+
+
+_WRITEREQUEST = _descriptor.Descriptor(
+ name='WriteRequest',
+ full_name='prometheus.WriteRequest',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='timeseries', full_name='prometheus.WriteRequest.timeseries', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=b'\310\336\037\000', file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=63,
+ serialized_end=127,
+)
+
+
+_READREQUEST = _descriptor.Descriptor(
+ name='ReadRequest',
+ full_name='prometheus.ReadRequest',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='queries', full_name='prometheus.ReadRequest.queries', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='accepted_response_types', full_name='prometheus.ReadRequest.accepted_response_types', index=1,
+ number=2, type=14, cpp_type=8, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ _READREQUEST_RESPONSETYPE,
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=130,
+ serialized_end=304,
+)
+
+
+_READRESPONSE = _descriptor.Descriptor(
+ name='ReadResponse',
+ full_name='prometheus.ReadResponse',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='results', full_name='prometheus.ReadResponse.results', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=306,
+ serialized_end=362,
+)
+
+
+_QUERY = _descriptor.Descriptor(
+ name='Query',
+ full_name='prometheus.Query',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='start_timestamp_ms', full_name='prometheus.Query.start_timestamp_ms', index=0,
+ number=1, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='end_timestamp_ms', full_name='prometheus.Query.end_timestamp_ms', index=1,
+ number=2, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='matchers', full_name='prometheus.Query.matchers', index=2,
+ number=3, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='hints', full_name='prometheus.Query.hints', index=3,
+ number=4, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=365,
+ serialized_end=508,
+)
+
+
+_QUERYRESULT = _descriptor.Descriptor(
+ name='QueryResult',
+ full_name='prometheus.QueryResult',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='timeseries', full_name='prometheus.QueryResult.timeseries', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=510,
+ serialized_end=567,
+)
+
+
+_CHUNKEDREADRESPONSE = _descriptor.Descriptor(
+ name='ChunkedReadResponse',
+ full_name='prometheus.ChunkedReadResponse',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='chunked_series', full_name='prometheus.ChunkedReadResponse.chunked_series', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='query_index', full_name='prometheus.ChunkedReadResponse.query_index', index=1,
+ number=2, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=569,
+ serialized_end=662,
+)
+
+_WRITEREQUEST.fields_by_name['timeseries'].message_type = types__pb2._TIMESERIES
+_READREQUEST.fields_by_name['queries'].message_type = _QUERY
+_READREQUEST.fields_by_name['accepted_response_types'].enum_type = _READREQUEST_RESPONSETYPE
+_READREQUEST_RESPONSETYPE.containing_type = _READREQUEST
+_READRESPONSE.fields_by_name['results'].message_type = _QUERYRESULT
+_QUERY.fields_by_name['matchers'].message_type = types__pb2._LABELMATCHER
+_QUERY.fields_by_name['hints'].message_type = types__pb2._READHINTS
+_QUERYRESULT.fields_by_name['timeseries'].message_type = types__pb2._TIMESERIES
+_CHUNKEDREADRESPONSE.fields_by_name['chunked_series'].message_type = types__pb2._CHUNKEDSERIES
+DESCRIPTOR.message_types_by_name['WriteRequest'] = _WRITEREQUEST
+DESCRIPTOR.message_types_by_name['ReadRequest'] = _READREQUEST
+DESCRIPTOR.message_types_by_name['ReadResponse'] = _READRESPONSE
+DESCRIPTOR.message_types_by_name['Query'] = _QUERY
+DESCRIPTOR.message_types_by_name['QueryResult'] = _QUERYRESULT
+DESCRIPTOR.message_types_by_name['ChunkedReadResponse'] = _CHUNKEDREADRESPONSE
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+WriteRequest = _reflection.GeneratedProtocolMessageType('WriteRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _WRITEREQUEST,
+ '__module__' : 'remote_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.WriteRequest)
+ })
+_sym_db.RegisterMessage(WriteRequest)
+
+ReadRequest = _reflection.GeneratedProtocolMessageType('ReadRequest', (_message.Message,), {
+ 'DESCRIPTOR' : _READREQUEST,
+ '__module__' : 'remote_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.ReadRequest)
+ })
+_sym_db.RegisterMessage(ReadRequest)
+
+ReadResponse = _reflection.GeneratedProtocolMessageType('ReadResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _READRESPONSE,
+ '__module__' : 'remote_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.ReadResponse)
+ })
+_sym_db.RegisterMessage(ReadResponse)
+
+Query = _reflection.GeneratedProtocolMessageType('Query', (_message.Message,), {
+ 'DESCRIPTOR' : _QUERY,
+ '__module__' : 'remote_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.Query)
+ })
+_sym_db.RegisterMessage(Query)
+
+QueryResult = _reflection.GeneratedProtocolMessageType('QueryResult', (_message.Message,), {
+ 'DESCRIPTOR' : _QUERYRESULT,
+ '__module__' : 'remote_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.QueryResult)
+ })
+_sym_db.RegisterMessage(QueryResult)
+
+ChunkedReadResponse = _reflection.GeneratedProtocolMessageType('ChunkedReadResponse', (_message.Message,), {
+ 'DESCRIPTOR' : _CHUNKEDREADRESPONSE,
+ '__module__' : 'remote_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.ChunkedReadResponse)
+ })
+_sym_db.RegisterMessage(ChunkedReadResponse)
+
+
+DESCRIPTOR._options = None
+_WRITEREQUEST.fields_by_name['timeseries']._options = None
+# @@protoc_insertion_point(module_scope)
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/types.proto b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/types.proto
new file mode 100644
index 0000000000..de437d1827
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/types.proto
@@ -0,0 +1,85 @@
+// Copyright 2017 Prometheus Team
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+package prometheus;
+
+option go_package = "prompb";
+
+import "gogoproto/gogo.proto";
+
+message Sample {
+ double value = 1;
+ int64 timestamp = 2;
+}
+
+// TimeSeries represents samples and labels for a single time series.
+message TimeSeries {
+ repeated Label labels = 1 [(gogoproto.nullable) = false];
+ repeated Sample samples = 2 [(gogoproto.nullable) = false];
+}
+
+message Label {
+ string name = 1;
+ string value = 2;
+}
+
+message Labels {
+ repeated Label labels = 1 [(gogoproto.nullable) = false];
+}
+
+// Matcher specifies a rule, which can match or set of labels or not.
+message LabelMatcher {
+ enum Type {
+ EQ = 0;
+ NEQ = 1;
+ RE = 2;
+ NRE = 3;
+ }
+ Type type = 1;
+ string name = 2;
+ string value = 3;
+}
+
+message ReadHints {
+ int64 step_ms = 1; // Query step size in milliseconds.
+ string func = 2; // String representation of surrounding function or aggregation.
+ int64 start_ms = 3; // Start time in milliseconds.
+ int64 end_ms = 4; // End time in milliseconds.
+ repeated string grouping = 5; // List of label names used in aggregation.
+ bool by = 6; // Indicate whether it is without or by.
+ int64 range_ms = 7; // Range vector selector range in milliseconds.
+}
+
+// Chunk represents a TSDB chunk.
+// Time range [min, max] is inclusive.
+message Chunk {
+ int64 min_time_ms = 1;
+ int64 max_time_ms = 2;
+
+ // We require this to match chunkenc.Encoding.
+ enum Encoding {
+ UNKNOWN = 0;
+ XOR = 1;
+ }
+ Encoding type = 3;
+ bytes data = 4;
+}
+
+// ChunkedSeries represents single, encoded time series.
+message ChunkedSeries {
+ // Labels should be sorted.
+ repeated Label labels = 1 [(gogoproto.nullable) = false];
+ // Chunks will be in start time order and may overlap.
+ repeated Chunk chunks = 2 [(gogoproto.nullable) = false];
+}
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/types_pb2.py b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/types_pb2.py
new file mode 100644
index 0000000000..7fc7601971
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen/types_pb2.py
@@ -0,0 +1,534 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler. DO NOT EDIT!
+# source: types.proto
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from .gogoproto import gogo_pb2 as gogoproto_dot_gogo__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+ name='types.proto',
+ package='prometheus',
+ syntax='proto3',
+ serialized_options=b'Z\006prompb',
+ create_key=_descriptor._internal_create_key,
+ serialized_pb=b'\n\x0btypes.proto\x12\nprometheus\x1a\x14gogoproto/gogo.proto\"*\n\x06Sample\x12\r\n\x05value\x18\x01 \x01(\x01\x12\x11\n\ttimestamp\x18\x02 \x01(\x03\"`\n\nTimeSeries\x12\'\n\x06labels\x18\x01 \x03(\x0b\x32\x11.prometheus.LabelB\x04\xc8\xde\x1f\x00\x12)\n\x07samples\x18\x02 \x03(\x0b\x32\x12.prometheus.SampleB\x04\xc8\xde\x1f\x00\"$\n\x05Label\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"1\n\x06Labels\x12\'\n\x06labels\x18\x01 \x03(\x0b\x32\x11.prometheus.LabelB\x04\xc8\xde\x1f\x00\"\x82\x01\n\x0cLabelMatcher\x12+\n\x04type\x18\x01 \x01(\x0e\x32\x1d.prometheus.LabelMatcher.Type\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\"(\n\x04Type\x12\x06\n\x02\x45Q\x10\x00\x12\x07\n\x03NEQ\x10\x01\x12\x06\n\x02RE\x10\x02\x12\x07\n\x03NRE\x10\x03\"|\n\tReadHints\x12\x0f\n\x07step_ms\x18\x01 \x01(\x03\x12\x0c\n\x04\x66unc\x18\x02 \x01(\t\x12\x10\n\x08start_ms\x18\x03 \x01(\x03\x12\x0e\n\x06\x65nd_ms\x18\x04 \x01(\x03\x12\x10\n\x08grouping\x18\x05 \x03(\t\x12\n\n\x02\x62y\x18\x06 \x01(\x08\x12\x10\n\x08range_ms\x18\x07 \x01(\x03\"\x8b\x01\n\x05\x43hunk\x12\x13\n\x0bmin_time_ms\x18\x01 \x01(\x03\x12\x13\n\x0bmax_time_ms\x18\x02 \x01(\x03\x12(\n\x04type\x18\x03 \x01(\x0e\x32\x1a.prometheus.Chunk.Encoding\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\" \n\x08\x45ncoding\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03XOR\x10\x01\"a\n\rChunkedSeries\x12\'\n\x06labels\x18\x01 \x03(\x0b\x32\x11.prometheus.LabelB\x04\xc8\xde\x1f\x00\x12\'\n\x06\x63hunks\x18\x02 \x03(\x0b\x32\x11.prometheus.ChunkB\x04\xc8\xde\x1f\x00\x42\x08Z\x06prompbb\x06proto3'
+ ,
+ dependencies=[gogoproto_dot_gogo__pb2.DESCRIPTOR,])
+
+
+
+_LABELMATCHER_TYPE = _descriptor.EnumDescriptor(
+ name='Type',
+ full_name='prometheus.LabelMatcher.Type',
+ filename=None,
+ file=DESCRIPTOR,
+ create_key=_descriptor._internal_create_key,
+ values=[
+ _descriptor.EnumValueDescriptor(
+ name='EQ', index=0, number=0,
+ serialized_options=None,
+ type=None,
+ create_key=_descriptor._internal_create_key),
+ _descriptor.EnumValueDescriptor(
+ name='NEQ', index=1, number=1,
+ serialized_options=None,
+ type=None,
+ create_key=_descriptor._internal_create_key),
+ _descriptor.EnumValueDescriptor(
+ name='RE', index=2, number=2,
+ serialized_options=None,
+ type=None,
+ create_key=_descriptor._internal_create_key),
+ _descriptor.EnumValueDescriptor(
+ name='NRE', index=3, number=3,
+ serialized_options=None,
+ type=None,
+ create_key=_descriptor._internal_create_key),
+ ],
+ containing_type=None,
+ serialized_options=None,
+ serialized_start=371,
+ serialized_end=411,
+)
+_sym_db.RegisterEnumDescriptor(_LABELMATCHER_TYPE)
+
+_CHUNK_ENCODING = _descriptor.EnumDescriptor(
+ name='Encoding',
+ full_name='prometheus.Chunk.Encoding',
+ filename=None,
+ file=DESCRIPTOR,
+ create_key=_descriptor._internal_create_key,
+ values=[
+ _descriptor.EnumValueDescriptor(
+ name='UNKNOWN', index=0, number=0,
+ serialized_options=None,
+ type=None,
+ create_key=_descriptor._internal_create_key),
+ _descriptor.EnumValueDescriptor(
+ name='XOR', index=1, number=1,
+ serialized_options=None,
+ type=None,
+ create_key=_descriptor._internal_create_key),
+ ],
+ containing_type=None,
+ serialized_options=None,
+ serialized_start=647,
+ serialized_end=679,
+)
+_sym_db.RegisterEnumDescriptor(_CHUNK_ENCODING)
+
+
+_SAMPLE = _descriptor.Descriptor(
+ name='Sample',
+ full_name='prometheus.Sample',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='value', full_name='prometheus.Sample.value', index=0,
+ number=1, type=1, cpp_type=5, label=1,
+ has_default_value=False, default_value=float(0),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='timestamp', full_name='prometheus.Sample.timestamp', index=1,
+ number=2, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=49,
+ serialized_end=91,
+)
+
+
+_TIMESERIES = _descriptor.Descriptor(
+ name='TimeSeries',
+ full_name='prometheus.TimeSeries',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='labels', full_name='prometheus.TimeSeries.labels', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=b'\310\336\037\000', file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='samples', full_name='prometheus.TimeSeries.samples', index=1,
+ number=2, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=b'\310\336\037\000', file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=93,
+ serialized_end=189,
+)
+
+
+_LABEL = _descriptor.Descriptor(
+ name='Label',
+ full_name='prometheus.Label',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='name', full_name='prometheus.Label.name', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='value', full_name='prometheus.Label.value', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=191,
+ serialized_end=227,
+)
+
+
+_LABELS = _descriptor.Descriptor(
+ name='Labels',
+ full_name='prometheus.Labels',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='labels', full_name='prometheus.Labels.labels', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=b'\310\336\037\000', file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=229,
+ serialized_end=278,
+)
+
+
+_LABELMATCHER = _descriptor.Descriptor(
+ name='LabelMatcher',
+ full_name='prometheus.LabelMatcher',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='type', full_name='prometheus.LabelMatcher.type', index=0,
+ number=1, type=14, cpp_type=8, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='name', full_name='prometheus.LabelMatcher.name', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='value', full_name='prometheus.LabelMatcher.value', index=2,
+ number=3, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ _LABELMATCHER_TYPE,
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=281,
+ serialized_end=411,
+)
+
+
+_READHINTS = _descriptor.Descriptor(
+ name='ReadHints',
+ full_name='prometheus.ReadHints',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='step_ms', full_name='prometheus.ReadHints.step_ms', index=0,
+ number=1, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='func', full_name='prometheus.ReadHints.func', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"".decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='start_ms', full_name='prometheus.ReadHints.start_ms', index=2,
+ number=3, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='end_ms', full_name='prometheus.ReadHints.end_ms', index=3,
+ number=4, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='grouping', full_name='prometheus.ReadHints.grouping', index=4,
+ number=5, type=9, cpp_type=9, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='by', full_name='prometheus.ReadHints.by', index=5,
+ number=6, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='range_ms', full_name='prometheus.ReadHints.range_ms', index=6,
+ number=7, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=413,
+ serialized_end=537,
+)
+
+
+_CHUNK = _descriptor.Descriptor(
+ name='Chunk',
+ full_name='prometheus.Chunk',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='min_time_ms', full_name='prometheus.Chunk.min_time_ms', index=0,
+ number=1, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='max_time_ms', full_name='prometheus.Chunk.max_time_ms', index=1,
+ number=2, type=3, cpp_type=2, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='type', full_name='prometheus.Chunk.type', index=2,
+ number=3, type=14, cpp_type=8, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='data', full_name='prometheus.Chunk.data', index=3,
+ number=4, type=12, cpp_type=9, label=1,
+ has_default_value=False, default_value=b"",
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ _CHUNK_ENCODING,
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=540,
+ serialized_end=679,
+)
+
+
+_CHUNKEDSERIES = _descriptor.Descriptor(
+ name='ChunkedSeries',
+ full_name='prometheus.ChunkedSeries',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ create_key=_descriptor._internal_create_key,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='labels', full_name='prometheus.ChunkedSeries.labels', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=b'\310\336\037\000', file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ _descriptor.FieldDescriptor(
+ name='chunks', full_name='prometheus.ChunkedSeries.chunks', index=1,
+ number=2, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=b'\310\336\037\000', file=DESCRIPTOR, create_key=_descriptor._internal_create_key),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=681,
+ serialized_end=778,
+)
+
+_TIMESERIES.fields_by_name['labels'].message_type = _LABEL
+_TIMESERIES.fields_by_name['samples'].message_type = _SAMPLE
+_LABELS.fields_by_name['labels'].message_type = _LABEL
+_LABELMATCHER.fields_by_name['type'].enum_type = _LABELMATCHER_TYPE
+_LABELMATCHER_TYPE.containing_type = _LABELMATCHER
+_CHUNK.fields_by_name['type'].enum_type = _CHUNK_ENCODING
+_CHUNK_ENCODING.containing_type = _CHUNK
+_CHUNKEDSERIES.fields_by_name['labels'].message_type = _LABEL
+_CHUNKEDSERIES.fields_by_name['chunks'].message_type = _CHUNK
+DESCRIPTOR.message_types_by_name['Sample'] = _SAMPLE
+DESCRIPTOR.message_types_by_name['TimeSeries'] = _TIMESERIES
+DESCRIPTOR.message_types_by_name['Label'] = _LABEL
+DESCRIPTOR.message_types_by_name['Labels'] = _LABELS
+DESCRIPTOR.message_types_by_name['LabelMatcher'] = _LABELMATCHER
+DESCRIPTOR.message_types_by_name['ReadHints'] = _READHINTS
+DESCRIPTOR.message_types_by_name['Chunk'] = _CHUNK
+DESCRIPTOR.message_types_by_name['ChunkedSeries'] = _CHUNKEDSERIES
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+Sample = _reflection.GeneratedProtocolMessageType('Sample', (_message.Message,), {
+ 'DESCRIPTOR' : _SAMPLE,
+ '__module__' : 'types_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.Sample)
+ })
+_sym_db.RegisterMessage(Sample)
+
+TimeSeries = _reflection.GeneratedProtocolMessageType('TimeSeries', (_message.Message,), {
+ 'DESCRIPTOR' : _TIMESERIES,
+ '__module__' : 'types_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.TimeSeries)
+ })
+_sym_db.RegisterMessage(TimeSeries)
+
+Label = _reflection.GeneratedProtocolMessageType('Label', (_message.Message,), {
+ 'DESCRIPTOR' : _LABEL,
+ '__module__' : 'types_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.Label)
+ })
+_sym_db.RegisterMessage(Label)
+
+Labels = _reflection.GeneratedProtocolMessageType('Labels', (_message.Message,), {
+ 'DESCRIPTOR' : _LABELS,
+ '__module__' : 'types_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.Labels)
+ })
+_sym_db.RegisterMessage(Labels)
+
+LabelMatcher = _reflection.GeneratedProtocolMessageType('LabelMatcher', (_message.Message,), {
+ 'DESCRIPTOR' : _LABELMATCHER,
+ '__module__' : 'types_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.LabelMatcher)
+ })
+_sym_db.RegisterMessage(LabelMatcher)
+
+ReadHints = _reflection.GeneratedProtocolMessageType('ReadHints', (_message.Message,), {
+ 'DESCRIPTOR' : _READHINTS,
+ '__module__' : 'types_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.ReadHints)
+ })
+_sym_db.RegisterMessage(ReadHints)
+
+Chunk = _reflection.GeneratedProtocolMessageType('Chunk', (_message.Message,), {
+ 'DESCRIPTOR' : _CHUNK,
+ '__module__' : 'types_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.Chunk)
+ })
+_sym_db.RegisterMessage(Chunk)
+
+ChunkedSeries = _reflection.GeneratedProtocolMessageType('ChunkedSeries', (_message.Message,), {
+ 'DESCRIPTOR' : _CHUNKEDSERIES,
+ '__module__' : 'types_pb2'
+ # @@protoc_insertion_point(class_scope:prometheus.ChunkedSeries)
+ })
+_sym_db.RegisterMessage(ChunkedSeries)
+
+
+DESCRIPTOR._options = None
+_TIMESERIES.fields_by_name['labels']._options = None
+_TIMESERIES.fields_by_name['samples']._options = None
+_LABELS.fields_by_name['labels']._options = None
+_CHUNKEDSERIES.fields_by_name['labels']._options = None
+_CHUNKEDSERIES.fields_by_name['chunks']._options = None
+# @@protoc_insertion_point(module_scope)
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/version.py b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/version.py
new file mode 100644
index 0000000000..1f98d44fa8
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/version.py
@@ -0,0 +1,15 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+__version__ = "0.16.dev0"
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/tests/__init__.py b/exporter/opentelemetry-exporter-prometheus-remote-write/tests/__init__.py
new file mode 100644
index 0000000000..b0a6f42841
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/tests/__init__.py
@@ -0,0 +1,13 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/tests/test_prometheus_remote_write_exporter.py b/exporter/opentelemetry-exporter-prometheus-remote-write/tests/test_prometheus_remote_write_exporter.py
new file mode 100644
index 0000000000..e27f5a0b72
--- /dev/null
+++ b/exporter/opentelemetry-exporter-prometheus-remote-write/tests/test_prometheus_remote_write_exporter.py
@@ -0,0 +1,115 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import unittest
+
+
+class TestValidation(unittest.TestCase):
+ # Test cases to ensure exporter parameter validation works as intended
+ def test_valid_standard_param(self):
+ pass
+
+ def test_valid_basic_auth_param(self):
+ pass
+
+ def test_valid_bearer_token_param(self):
+ pass
+
+ def test_invalid_no_endpoint_param(self):
+ pass
+
+ def test_invalid_no_username_param(self):
+ pass
+
+ def test_invalid_no_password_param(self):
+ pass
+
+ def test_invalid_conflicting_passwords_param(self):
+ pass
+
+ def test_invalid_conflicting_bearer_tokens_param(self):
+ pass
+
+ def test_invalid_conflicting_auth_param(self):
+ pass
+
+
+class TestConversion(unittest.TestCase):
+ # Initializes test data that is reused across tests
+ def setUp(self):
+ pass
+
+ # Ensures conversion to timeseries function works with valid aggregation types
+ def test_valid_convert_to_timeseries(self):
+ pass
+
+ # Ensures conversion to timeseries fails for unsupported aggregation types
+ def test_invalid_convert_to_timeseries(self):
+ pass
+
+ # Ensures sum aggregator is correctly converted to timeseries
+ def test_convert_from_sum(self):
+ pass
+
+ # Ensures sum min_max_count aggregator is correctly converted to timeseries
+ def test_convert_from_min_max_sum_count(self):
+ pass
+
+ # Ensures histogram aggregator is correctly converted to timeseries
+ def test_convert_from_histogram(self):
+ pass
+
+ # Ensures last value aggregator is correctly converted to timeseries
+ def test_convert_from_last_value(self):
+ pass
+
+ # Ensures value observer aggregator is correctly converted to timeseries
+ def test_convert_from_value_observer(self):
+ pass
+
+ # Ensures quantile aggregator is correctly converted to timeseries
+ # TODO: Add test once method is implemented
+ def test_convert_from_quantile(self):
+ pass
+
+ # Ensures timeseries produced contains appropriate sample and labels
+ def test_create_timeseries(self):
+ pass
+
+ # Ensure correct headers are added when valid config is provided
+ def test_get_headers(self):
+ pass
+
+
+class TestExport(unittest.TestCase):
+ # Initializes test data that is reused across tests
+ def setUp(self):
+ pass
+
+ # Ensures export is successful with valid export_records and config
+ def test_export(self):
+ pass
+
+ @mock.patch("requests.post", return_value=ResponseStub(200))
+ def test_valid_send_message(self, mock_post):
+ pass
+
+ @mock.patch("requests.post", return_value=ResponseStub(404))
+ def test_invalid_send_message(self, mock_post):
+ pass
+
+ # Verifies that build_message calls snappy.compress and returns SerializedString
+ @mock.patch("snappy.compress", return_value=bytes())
+ def test_build_message(self, mock_compress):
+ pass
diff --git a/pyproject.toml b/pyproject.toml
index 35bd19509c..37c4151340 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,6 +4,7 @@ exclude = '''
(
/(
reference # original files from DataDog
+ exporter/opentelemetry-exporter-prometheus-remote-write/src/opentelemetry/exporter/prometheus_remote_write/gen
)/
)
'''