Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Unified Diff: third_party/protobuf/python/google/protobuf/pyext/descriptor.cc

Issue 2600753002: Reverts third_party/protobuf: Update to HEAD (f52e188fe4) (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/protobuf/python/google/protobuf/pyext/descriptor.cc
diff --git a/third_party/protobuf/python/google/protobuf/pyext/descriptor.cc b/third_party/protobuf/python/google/protobuf/pyext/descriptor.cc
index 924ae0b9cd87487e5950e152d31beb772b9ed63d..235575389a5f0cdfa529113d65867c6bd2d6d0b4 100644
--- a/third_party/protobuf/python/google/protobuf/pyext/descriptor.cc
+++ b/third_party/protobuf/python/google/protobuf/pyext/descriptor.cc
@@ -41,7 +41,6 @@
#include <google/protobuf/pyext/descriptor_containers.h>
#include <google/protobuf/pyext/descriptor_pool.h>
#include <google/protobuf/pyext/message.h>
-#include <google/protobuf/pyext/message_factory.h>
#include <google/protobuf/pyext/scoped_pyobject_ptr.h>
#if PY_MAJOR_VERSION >= 3
@@ -173,16 +172,12 @@ template<>
const FileDescriptor* GetFileDescriptor(const OneofDescriptor* descriptor) {
return descriptor->containing_type()->file();
}
-template<>
-const FileDescriptor* GetFileDescriptor(const MethodDescriptor* descriptor) {
- return descriptor->service()->file();
-}
// Converts options into a Python protobuf, and cache the result.
//
// This is a bit tricky because options can contain extension fields defined in
// the same proto file. In this case the options parsed from the serialized_pb
-// have unknown fields, and we need to parse them again.
+// have unkown fields, and we need to parse them again.
//
// Always returns a new reference.
template<class DescriptorClass>
@@ -205,19 +200,15 @@ static PyObject* GetOrBuildOptions(const DescriptorClass *descriptor) {
// read-only instance.
const Message& options(descriptor->options());
const Descriptor *message_type = options.GetDescriptor();
- PyMessageFactory* message_factory = pool->py_message_factory;
- CMessageClass* message_class = message_factory::GetMessageClass(
- message_factory, message_type);
+ CMessageClass* message_class(
+ cdescriptor_pool::GetMessageClass(pool, message_type));
if (message_class == NULL) {
// The Options message was not found in the current DescriptorPool.
- // This means that the pool cannot contain any extensions to the Options
- // message either, so falling back to the basic pool we can only increase
- // the chances of successfully parsing the options.
+ // In this case, there cannot be extensions to these options, and we can
+ // try to use the basic pool instead.
PyErr_Clear();
- pool = GetDefaultDescriptorPool();
- message_factory = pool->py_message_factory;
- message_class = message_factory::GetMessageClass(
- message_factory, message_type);
+ message_class = cdescriptor_pool::GetMessageClass(
+ GetDefaultDescriptorPool(), message_type);
}
if (message_class == NULL) {
PyErr_Format(PyExc_TypeError, "Could not retrieve class for Options: %s",
@@ -247,7 +238,7 @@ static PyObject* GetOrBuildOptions(const DescriptorClass *descriptor) {
options.SerializeToString(&serialized);
io::CodedInputStream input(
reinterpret_cast<const uint8*>(serialized.c_str()), serialized.size());
- input.SetExtensionRegistry(pool->pool, message_factory->message_factory);
+ input.SetExtensionRegistry(pool->pool, pool->message_factory);
bool success = cmsg->message->MergePartialFromCodedStream(&input);
if (!success) {
PyErr_Format(PyExc_ValueError, "Error parsing Options message");
@@ -257,7 +248,7 @@ static PyObject* GetOrBuildOptions(const DescriptorClass *descriptor) {
// Cache the result.
Py_INCREF(value.get());
- (*descriptor_options)[descriptor] = value.get();
+ (*pool->descriptor_options)[descriptor] = value.get();
return value.release();
}
@@ -443,9 +434,8 @@ static PyObject* GetConcreteClass(PyBaseDescriptor* self, void *closure) {
// which contains this descriptor.
// This might not be the one you expect! For example the returned object does
// not know about extensions defined in a custom pool.
- CMessageClass* concrete_class(message_factory::GetMessageClass(
- GetDescriptorPool_FromPool(
- _GetDescriptor(self)->file()->pool())->py_message_factory,
+ CMessageClass* concrete_class(cdescriptor_pool::GetMessageClass(
+ GetDescriptorPool_FromPool(_GetDescriptor(self)->file()->pool()),
_GetDescriptor(self)));
Py_XINCREF(concrete_class);
return concrete_class->AsPyObject();
@@ -704,10 +694,6 @@ static PyObject* GetCamelcaseName(PyBaseDescriptor* self, void *closure) {
return PyString_FromCppString(_GetDescriptor(self)->camelcase_name());
}
-static PyObject* GetJsonName(PyBaseDescriptor* self, void *closure) {
- return PyString_FromCppString(_GetDescriptor(self)->json_name());
-}
-
static PyObject* GetType(PyBaseDescriptor *self, void *closure) {
return PyInt_FromLong(_GetDescriptor(self)->type());
}
@@ -897,7 +883,6 @@ static PyGetSetDef Getters[] = {
{ "full_name", (getter)GetFullName, NULL, "Full name"},
{ "name", (getter)GetName, NULL, "Unqualified name"},
{ "camelcase_name", (getter)GetCamelcaseName, NULL, "Camelcase name"},
- { "json_name", (getter)GetJsonName, NULL, "Json name"},
{ "type", (getter)GetType, NULL, "C++ Type"},
{ "cpp_type", (getter)GetCppType, NULL, "C++ Type"},
{ "label", (getter)GetLabel, NULL, "Label"},
@@ -1106,7 +1091,7 @@ PyTypeObject PyEnumDescriptor_Type = {
0, // tp_weaklistoffset
0, // tp_iter
0, // tp_iternext
- enum_descriptor::Methods, // tp_methods
+ enum_descriptor::Methods, // tp_getset
0, // tp_members
enum_descriptor::Getters, // tp_getset
&descriptor::PyBaseDescriptor_Type, // tp_base
@@ -1290,10 +1275,6 @@ static PyObject* GetExtensionsByName(PyFileDescriptor* self, void *closure) {
return NewFileExtensionsByName(_GetDescriptor(self));
}
-static PyObject* GetServicesByName(PyFileDescriptor* self, void *closure) {
- return NewFileServicesByName(_GetDescriptor(self));
-}
-
static PyObject* GetDependencies(PyFileDescriptor* self, void *closure) {
return NewFileDependencies(_GetDescriptor(self));
}
@@ -1343,7 +1324,6 @@ static PyGetSetDef Getters[] = {
{ "enum_types_by_name", (getter)GetEnumTypesByName, NULL, "Enums by name"},
{ "extensions_by_name", (getter)GetExtensionsByName, NULL,
"Extensions by name"},
- { "services_by_name", (getter)GetServicesByName, NULL, "Services by name"},
{ "dependencies", (getter)GetDependencies, NULL, "Dependencies"},
{ "public_dependencies", (getter)GetPublicDependencies, NULL, "Dependencies"},
@@ -1472,45 +1452,16 @@ static PyObject* GetContainingType(PyBaseDescriptor *self, void *closure) {
}
}
-static PyObject* GetHasOptions(PyBaseDescriptor *self, void *closure) {
- const OneofOptions& options(_GetDescriptor(self)->options());
- if (&options != &OneofOptions::default_instance()) {
- Py_RETURN_TRUE;
- } else {
- Py_RETURN_FALSE;
- }
-}
-static int SetHasOptions(PyBaseDescriptor *self, PyObject *value,
- void *closure) {
- return CheckCalledFromGeneratedFile("has_options");
-}
-
-static PyObject* GetOptions(PyBaseDescriptor *self) {
- return GetOrBuildOptions(_GetDescriptor(self));
-}
-
-static int SetOptions(PyBaseDescriptor *self, PyObject *value,
- void *closure) {
- return CheckCalledFromGeneratedFile("_options");
-}
-
static PyGetSetDef Getters[] = {
{ "name", (getter)GetName, NULL, "Name"},
{ "full_name", (getter)GetFullName, NULL, "Full name"},
{ "index", (getter)GetIndex, NULL, "Index"},
{ "containing_type", (getter)GetContainingType, NULL, "Containing type"},
- { "has_options", (getter)GetHasOptions, (setter)SetHasOptions, "Has Options"},
- { "_options", (getter)NULL, (setter)SetOptions, "Options"},
{ "fields", (getter)GetFields, NULL, "Fields"},
{NULL}
};
-static PyMethodDef Methods[] = {
- { "GetOptions", (PyCFunction)GetOptions, METH_NOARGS },
- {NULL}
-};
-
} // namespace oneof_descriptor
PyTypeObject PyOneofDescriptor_Type = {
@@ -1541,7 +1492,7 @@ PyTypeObject PyOneofDescriptor_Type = {
0, // tp_weaklistoffset
0, // tp_iter
0, // tp_iternext
- oneof_descriptor::Methods, // tp_methods
+ 0, // tp_methods
0, // tp_members
oneof_descriptor::Getters, // tp_getset
&descriptor::PyBaseDescriptor_Type, // tp_base
@@ -1553,222 +1504,6 @@ PyObject* PyOneofDescriptor_FromDescriptor(
&PyOneofDescriptor_Type, oneof_descriptor, NULL);
}
-namespace service_descriptor {
-
-// Unchecked accessor to the C++ pointer.
-static const ServiceDescriptor* _GetDescriptor(
- PyBaseDescriptor *self) {
- return reinterpret_cast<const ServiceDescriptor*>(self->descriptor);
-}
-
-static PyObject* GetName(PyBaseDescriptor* self, void *closure) {
- return PyString_FromCppString(_GetDescriptor(self)->name());
-}
-
-static PyObject* GetFullName(PyBaseDescriptor* self, void *closure) {
- return PyString_FromCppString(_GetDescriptor(self)->full_name());
-}
-
-static PyObject* GetIndex(PyBaseDescriptor *self, void *closure) {
- return PyInt_FromLong(_GetDescriptor(self)->index());
-}
-
-static PyObject* GetMethods(PyBaseDescriptor* self, void *closure) {
- return NewServiceMethodsSeq(_GetDescriptor(self));
-}
-
-static PyObject* GetMethodsByName(PyBaseDescriptor* self, void *closure) {
- return NewServiceMethodsByName(_GetDescriptor(self));
-}
-
-static PyObject* FindMethodByName(PyBaseDescriptor *self, PyObject* arg) {
- Py_ssize_t name_size;
- char* name;
- if (PyString_AsStringAndSize(arg, &name, &name_size) < 0) {
- return NULL;
- }
-
- const MethodDescriptor* method_descriptor =
- _GetDescriptor(self)->FindMethodByName(string(name, name_size));
- if (method_descriptor == NULL) {
- PyErr_Format(PyExc_KeyError, "Couldn't find method %.200s", name);
- return NULL;
- }
-
- return PyMethodDescriptor_FromDescriptor(method_descriptor);
-}
-
-static PyObject* GetOptions(PyBaseDescriptor *self) {
- return GetOrBuildOptions(_GetDescriptor(self));
-}
-
-static PyObject* CopyToProto(PyBaseDescriptor *self, PyObject *target) {
- return CopyToPythonProto<ServiceDescriptorProto>(_GetDescriptor(self),
- target);
-}
-
-static PyGetSetDef Getters[] = {
- { "name", (getter)GetName, NULL, "Name", NULL},
- { "full_name", (getter)GetFullName, NULL, "Full name", NULL},
- { "index", (getter)GetIndex, NULL, "Index", NULL},
-
- { "methods", (getter)GetMethods, NULL, "Methods", NULL},
- { "methods_by_name", (getter)GetMethodsByName, NULL, "Methods by name", NULL},
- {NULL}
-};
-
-static PyMethodDef Methods[] = {
- { "GetOptions", (PyCFunction)GetOptions, METH_NOARGS },
- { "CopyToProto", (PyCFunction)CopyToProto, METH_O, },
- { "FindMethodByName", (PyCFunction)FindMethodByName, METH_O },
- {NULL}
-};
-
-} // namespace service_descriptor
-
-PyTypeObject PyServiceDescriptor_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
- FULL_MODULE_NAME ".ServiceDescriptor", // tp_name
- sizeof(PyBaseDescriptor), // tp_basicsize
- 0, // tp_itemsize
- 0, // tp_dealloc
- 0, // tp_print
- 0, // tp_getattr
- 0, // tp_setattr
- 0, // tp_compare
- 0, // tp_repr
- 0, // tp_as_number
- 0, // tp_as_sequence
- 0, // tp_as_mapping
- 0, // tp_hash
- 0, // tp_call
- 0, // tp_str
- 0, // tp_getattro
- 0, // tp_setattro
- 0, // tp_as_buffer
- Py_TPFLAGS_DEFAULT, // tp_flags
- "A Service Descriptor", // tp_doc
- 0, // tp_traverse
- 0, // tp_clear
- 0, // tp_richcompare
- 0, // tp_weaklistoffset
- 0, // tp_iter
- 0, // tp_iternext
- service_descriptor::Methods, // tp_methods
- 0, // tp_members
- service_descriptor::Getters, // tp_getset
- &descriptor::PyBaseDescriptor_Type, // tp_base
-};
-
-PyObject* PyServiceDescriptor_FromDescriptor(
- const ServiceDescriptor* service_descriptor) {
- return descriptor::NewInternedDescriptor(
- &PyServiceDescriptor_Type, service_descriptor, NULL);
-}
-
-namespace method_descriptor {
-
-// Unchecked accessor to the C++ pointer.
-static const MethodDescriptor* _GetDescriptor(
- PyBaseDescriptor *self) {
- return reinterpret_cast<const MethodDescriptor*>(self->descriptor);
-}
-
-static PyObject* GetName(PyBaseDescriptor* self, void *closure) {
- return PyString_FromCppString(_GetDescriptor(self)->name());
-}
-
-static PyObject* GetFullName(PyBaseDescriptor* self, void *closure) {
- return PyString_FromCppString(_GetDescriptor(self)->full_name());
-}
-
-static PyObject* GetIndex(PyBaseDescriptor *self, void *closure) {
- return PyInt_FromLong(_GetDescriptor(self)->index());
-}
-
-static PyObject* GetContainingService(PyBaseDescriptor *self, void *closure) {
- const ServiceDescriptor* containing_service =
- _GetDescriptor(self)->service();
- return PyServiceDescriptor_FromDescriptor(containing_service);
-}
-
-static PyObject* GetInputType(PyBaseDescriptor *self, void *closure) {
- const Descriptor* input_type = _GetDescriptor(self)->input_type();
- return PyMessageDescriptor_FromDescriptor(input_type);
-}
-
-static PyObject* GetOutputType(PyBaseDescriptor *self, void *closure) {
- const Descriptor* output_type = _GetDescriptor(self)->output_type();
- return PyMessageDescriptor_FromDescriptor(output_type);
-}
-
-static PyObject* GetOptions(PyBaseDescriptor *self) {
- return GetOrBuildOptions(_GetDescriptor(self));
-}
-
-static PyObject* CopyToProto(PyBaseDescriptor *self, PyObject *target) {
- return CopyToPythonProto<MethodDescriptorProto>(_GetDescriptor(self), target);
-}
-
-static PyGetSetDef Getters[] = {
- { "name", (getter)GetName, NULL, "Name", NULL},
- { "full_name", (getter)GetFullName, NULL, "Full name", NULL},
- { "index", (getter)GetIndex, NULL, "Index", NULL},
- { "containing_service", (getter)GetContainingService, NULL,
- "Containing service", NULL},
- { "input_type", (getter)GetInputType, NULL, "Input type", NULL},
- { "output_type", (getter)GetOutputType, NULL, "Output type", NULL},
- {NULL}
-};
-
-static PyMethodDef Methods[] = {
- { "GetOptions", (PyCFunction)GetOptions, METH_NOARGS, },
- { "CopyToProto", (PyCFunction)CopyToProto, METH_O, },
- {NULL}
-};
-
-} // namespace method_descriptor
-
-PyTypeObject PyMethodDescriptor_Type = {
- PyVarObject_HEAD_INIT(&PyType_Type, 0)
- FULL_MODULE_NAME ".MethodDescriptor", // tp_name
- sizeof(PyBaseDescriptor), // tp_basicsize
- 0, // tp_itemsize
- 0, // tp_dealloc
- 0, // tp_print
- 0, // tp_getattr
- 0, // tp_setattr
- 0, // tp_compare
- 0, // tp_repr
- 0, // tp_as_number
- 0, // tp_as_sequence
- 0, // tp_as_mapping
- 0, // tp_hash
- 0, // tp_call
- 0, // tp_str
- 0, // tp_getattro
- 0, // tp_setattro
- 0, // tp_as_buffer
- Py_TPFLAGS_DEFAULT, // tp_flags
- "A Method Descriptor", // tp_doc
- 0, // tp_traverse
- 0, // tp_clear
- 0, // tp_richcompare
- 0, // tp_weaklistoffset
- 0, // tp_iter
- 0, // tp_iternext
- method_descriptor::Methods, // tp_methods
- 0, // tp_members
- method_descriptor::Getters, // tp_getset
- &descriptor::PyBaseDescriptor_Type, // tp_base
-};
-
-PyObject* PyMethodDescriptor_FromDescriptor(
- const MethodDescriptor* method_descriptor) {
- return descriptor::NewInternedDescriptor(
- &PyMethodDescriptor_Type, method_descriptor, NULL);
-}
-
// Add a enum values to a type dictionary.
static bool AddEnumValues(PyTypeObject *type,
const EnumDescriptor* enum_descriptor) {
@@ -1838,12 +1573,6 @@ bool InitDescriptor() {
if (PyType_Ready(&PyOneofDescriptor_Type) < 0)
return false;
- if (PyType_Ready(&PyServiceDescriptor_Type) < 0)
- return false;
-
- if (PyType_Ready(&PyMethodDescriptor_Type) < 0)
- return false;
-
if (!InitDescriptorMappingTypes())
return false;

Powered by Google App Engine
This is Rietveld 408576698