summaryrefslogtreecommitdiffstats
path: root/src/arrow/python/pyarrow/includes/libarrow_flight.pxd
diff options
context:
space:
mode:
Diffstat (limited to 'src/arrow/python/pyarrow/includes/libarrow_flight.pxd')
-rw-r--r--src/arrow/python/pyarrow/includes/libarrow_flight.pxd560
1 files changed, 560 insertions, 0 deletions
diff --git a/src/arrow/python/pyarrow/includes/libarrow_flight.pxd b/src/arrow/python/pyarrow/includes/libarrow_flight.pxd
new file mode 100644
index 000000000..2ac737aba
--- /dev/null
+++ b/src/arrow/python/pyarrow/includes/libarrow_flight.pxd
@@ -0,0 +1,560 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+
+# distutils: language = c++
+
+from pyarrow.includes.common cimport *
+from pyarrow.includes.libarrow cimport *
+
+
+cdef extern from "arrow/flight/api.h" namespace "arrow" nogil:
+ cdef char* CPyServerMiddlewareName\
+ " arrow::py::flight::kPyServerMiddlewareName"
+
+ cdef cppclass CActionType" arrow::flight::ActionType":
+ c_string type
+ c_string description
+
+ cdef cppclass CAction" arrow::flight::Action":
+ c_string type
+ shared_ptr[CBuffer] body
+
+ cdef cppclass CFlightResult" arrow::flight::Result":
+ CFlightResult()
+ CFlightResult(CFlightResult)
+ shared_ptr[CBuffer] body
+
+ cdef cppclass CBasicAuth" arrow::flight::BasicAuth":
+ CBasicAuth()
+ CBasicAuth(CBuffer)
+ CBasicAuth(CBasicAuth)
+ c_string username
+ c_string password
+
+ cdef cppclass CResultStream" arrow::flight::ResultStream":
+ CStatus Next(unique_ptr[CFlightResult]* result)
+
+ cdef cppclass CDescriptorType \
+ " arrow::flight::FlightDescriptor::DescriptorType":
+ bint operator==(CDescriptorType)
+
+ CDescriptorType CDescriptorTypeUnknown\
+ " arrow::flight::FlightDescriptor::UNKNOWN"
+ CDescriptorType CDescriptorTypePath\
+ " arrow::flight::FlightDescriptor::PATH"
+ CDescriptorType CDescriptorTypeCmd\
+ " arrow::flight::FlightDescriptor::CMD"
+
+ cdef cppclass CFlightDescriptor" arrow::flight::FlightDescriptor":
+ CDescriptorType type
+ c_string cmd
+ vector[c_string] path
+ CStatus SerializeToString(c_string* out)
+
+ @staticmethod
+ CStatus Deserialize(const c_string& serialized,
+ CFlightDescriptor* out)
+ bint operator==(CFlightDescriptor)
+
+ cdef cppclass CTicket" arrow::flight::Ticket":
+ CTicket()
+ c_string ticket
+ bint operator==(CTicket)
+ CStatus SerializeToString(c_string* out)
+
+ @staticmethod
+ CStatus Deserialize(const c_string& serialized, CTicket* out)
+
+ cdef cppclass CCriteria" arrow::flight::Criteria":
+ CCriteria()
+ c_string expression
+
+ cdef cppclass CLocation" arrow::flight::Location":
+ CLocation()
+ c_string ToString()
+ c_bool Equals(const CLocation& other)
+
+ @staticmethod
+ CStatus Parse(c_string& uri_string, CLocation* location)
+
+ @staticmethod
+ CStatus ForGrpcTcp(c_string& host, int port, CLocation* location)
+
+ @staticmethod
+ CStatus ForGrpcTls(c_string& host, int port, CLocation* location)
+
+ @staticmethod
+ CStatus ForGrpcUnix(c_string& path, CLocation* location)
+
+ cdef cppclass CFlightEndpoint" arrow::flight::FlightEndpoint":
+ CFlightEndpoint()
+
+ CTicket ticket
+ vector[CLocation] locations
+
+ bint operator==(CFlightEndpoint)
+
+ cdef cppclass CFlightInfo" arrow::flight::FlightInfo":
+ CFlightInfo(CFlightInfo info)
+ int64_t total_records()
+ int64_t total_bytes()
+ CStatus GetSchema(CDictionaryMemo* memo, shared_ptr[CSchema]* out)
+ CFlightDescriptor& descriptor()
+ const vector[CFlightEndpoint]& endpoints()
+ CStatus SerializeToString(c_string* out)
+
+ @staticmethod
+ CStatus Deserialize(const c_string& serialized,
+ unique_ptr[CFlightInfo]* out)
+
+ cdef cppclass CSchemaResult" arrow::flight::SchemaResult":
+ CSchemaResult(CSchemaResult result)
+ CStatus GetSchema(CDictionaryMemo* memo, shared_ptr[CSchema]* out)
+
+ cdef cppclass CFlightListing" arrow::flight::FlightListing":
+ CStatus Next(unique_ptr[CFlightInfo]* info)
+
+ cdef cppclass CSimpleFlightListing" arrow::flight::SimpleFlightListing":
+ CSimpleFlightListing(vector[CFlightInfo]&& info)
+
+ cdef cppclass CFlightPayload" arrow::flight::FlightPayload":
+ shared_ptr[CBuffer] descriptor
+ shared_ptr[CBuffer] app_metadata
+ CIpcPayload ipc_message
+
+ cdef cppclass CFlightDataStream" arrow::flight::FlightDataStream":
+ shared_ptr[CSchema] schema()
+ CStatus Next(CFlightPayload*)
+
+ cdef cppclass CFlightStreamChunk" arrow::flight::FlightStreamChunk":
+ CFlightStreamChunk()
+ shared_ptr[CRecordBatch] data
+ shared_ptr[CBuffer] app_metadata
+
+ cdef cppclass CMetadataRecordBatchReader \
+ " arrow::flight::MetadataRecordBatchReader":
+ CResult[shared_ptr[CSchema]] GetSchema()
+ CStatus Next(CFlightStreamChunk* out)
+ CStatus ReadAll(shared_ptr[CTable]* table)
+
+ CResult[shared_ptr[CRecordBatchReader]] MakeRecordBatchReader\
+ " arrow::flight::MakeRecordBatchReader"(
+ shared_ptr[CMetadataRecordBatchReader])
+
+ cdef cppclass CMetadataRecordBatchWriter \
+ " arrow::flight::MetadataRecordBatchWriter"(CRecordBatchWriter):
+ CStatus Begin(shared_ptr[CSchema] schema,
+ const CIpcWriteOptions& options)
+ CStatus WriteMetadata(shared_ptr[CBuffer] app_metadata)
+ CStatus WriteWithMetadata(const CRecordBatch& batch,
+ shared_ptr[CBuffer] app_metadata)
+
+ cdef cppclass CFlightStreamReader \
+ " arrow::flight::FlightStreamReader"(CMetadataRecordBatchReader):
+ void Cancel()
+ CStatus ReadAllWithStopToken" ReadAll"\
+ (shared_ptr[CTable]* table, const CStopToken& stop_token)
+
+ cdef cppclass CFlightMessageReader \
+ " arrow::flight::FlightMessageReader"(CMetadataRecordBatchReader):
+ CFlightDescriptor& descriptor()
+
+ cdef cppclass CFlightMessageWriter \
+ " arrow::flight::FlightMessageWriter"(CMetadataRecordBatchWriter):
+ pass
+
+ cdef cppclass CFlightStreamWriter \
+ " arrow::flight::FlightStreamWriter"(CMetadataRecordBatchWriter):
+ CStatus DoneWriting()
+
+ cdef cppclass CRecordBatchStream \
+ " arrow::flight::RecordBatchStream"(CFlightDataStream):
+ CRecordBatchStream(shared_ptr[CRecordBatchReader]& reader,
+ const CIpcWriteOptions& options)
+
+ cdef cppclass CFlightMetadataReader" arrow::flight::FlightMetadataReader":
+ CStatus ReadMetadata(shared_ptr[CBuffer]* out)
+
+ cdef cppclass CFlightMetadataWriter" arrow::flight::FlightMetadataWriter":
+ CStatus WriteMetadata(const CBuffer& message)
+
+ cdef cppclass CServerAuthReader" arrow::flight::ServerAuthReader":
+ CStatus Read(c_string* token)
+
+ cdef cppclass CServerAuthSender" arrow::flight::ServerAuthSender":
+ CStatus Write(c_string& token)
+
+ cdef cppclass CClientAuthReader" arrow::flight::ClientAuthReader":
+ CStatus Read(c_string* token)
+
+ cdef cppclass CClientAuthSender" arrow::flight::ClientAuthSender":
+ CStatus Write(c_string& token)
+
+ cdef cppclass CServerAuthHandler" arrow::flight::ServerAuthHandler":
+ pass
+
+ cdef cppclass CClientAuthHandler" arrow::flight::ClientAuthHandler":
+ pass
+
+ cdef cppclass CServerCallContext" arrow::flight::ServerCallContext":
+ c_string& peer_identity()
+ c_string& peer()
+ c_bool is_cancelled()
+ CServerMiddleware* GetMiddleware(const c_string& key)
+
+ cdef cppclass CTimeoutDuration" arrow::flight::TimeoutDuration":
+ CTimeoutDuration(double)
+
+ cdef cppclass CFlightCallOptions" arrow::flight::FlightCallOptions":
+ CFlightCallOptions()
+ CTimeoutDuration timeout
+ CIpcWriteOptions write_options
+ vector[pair[c_string, c_string]] headers
+ CStopToken stop_token
+
+ cdef cppclass CCertKeyPair" arrow::flight::CertKeyPair":
+ CCertKeyPair()
+ c_string pem_cert
+ c_string pem_key
+
+ cdef cppclass CFlightMethod" arrow::flight::FlightMethod":
+ bint operator==(CFlightMethod)
+
+ CFlightMethod CFlightMethodInvalid\
+ " arrow::flight::FlightMethod::Invalid"
+ CFlightMethod CFlightMethodHandshake\
+ " arrow::flight::FlightMethod::Handshake"
+ CFlightMethod CFlightMethodListFlights\
+ " arrow::flight::FlightMethod::ListFlights"
+ CFlightMethod CFlightMethodGetFlightInfo\
+ " arrow::flight::FlightMethod::GetFlightInfo"
+ CFlightMethod CFlightMethodGetSchema\
+ " arrow::flight::FlightMethod::GetSchema"
+ CFlightMethod CFlightMethodDoGet\
+ " arrow::flight::FlightMethod::DoGet"
+ CFlightMethod CFlightMethodDoPut\
+ " arrow::flight::FlightMethod::DoPut"
+ CFlightMethod CFlightMethodDoAction\
+ " arrow::flight::FlightMethod::DoAction"
+ CFlightMethod CFlightMethodListActions\
+ " arrow::flight::FlightMethod::ListActions"
+ CFlightMethod CFlightMethodDoExchange\
+ " arrow::flight::FlightMethod::DoExchange"
+
+ cdef cppclass CCallInfo" arrow::flight::CallInfo":
+ CFlightMethod method
+
+ # This is really std::unordered_multimap, but Cython has no
+ # bindings for it, so treat it as an opaque class and bind the
+ # methods we need
+ cdef cppclass CCallHeaders" arrow::flight::CallHeaders":
+ cppclass const_iterator:
+ pair[c_string, c_string] operator*()
+ const_iterator operator++()
+ bint operator==(const_iterator)
+ bint operator!=(const_iterator)
+ const_iterator cbegin()
+ const_iterator cend()
+
+ cdef cppclass CAddCallHeaders" arrow::flight::AddCallHeaders":
+ void AddHeader(const c_string& key, const c_string& value)
+
+ cdef cppclass CServerMiddleware" arrow::flight::ServerMiddleware":
+ c_string name()
+
+ cdef cppclass CServerMiddlewareFactory\
+ " arrow::flight::ServerMiddlewareFactory":
+ pass
+
+ cdef cppclass CClientMiddleware" arrow::flight::ClientMiddleware":
+ pass
+
+ cdef cppclass CClientMiddlewareFactory\
+ " arrow::flight::ClientMiddlewareFactory":
+ pass
+
+ cdef cppclass CFlightServerOptions" arrow::flight::FlightServerOptions":
+ CFlightServerOptions(const CLocation& location)
+ CLocation location
+ unique_ptr[CServerAuthHandler] auth_handler
+ vector[CCertKeyPair] tls_certificates
+ c_bool verify_client
+ c_string root_certificates
+ vector[pair[c_string, shared_ptr[CServerMiddlewareFactory]]] middleware
+
+ cdef cppclass CFlightClientOptions" arrow::flight::FlightClientOptions":
+ c_string tls_root_certs
+ c_string cert_chain
+ c_string private_key
+ c_string override_hostname
+ vector[shared_ptr[CClientMiddlewareFactory]] middleware
+ int64_t write_size_limit_bytes
+ vector[pair[c_string, CIntStringVariant]] generic_options
+ c_bool disable_server_verification
+
+ @staticmethod
+ CFlightClientOptions Defaults()
+
+ cdef cppclass CFlightClient" arrow::flight::FlightClient":
+ @staticmethod
+ CStatus Connect(const CLocation& location,
+ const CFlightClientOptions& options,
+ unique_ptr[CFlightClient]* client)
+
+ CStatus Authenticate(CFlightCallOptions& options,
+ unique_ptr[CClientAuthHandler] auth_handler)
+
+ CResult[pair[c_string, c_string]] AuthenticateBasicToken(
+ CFlightCallOptions& options,
+ const c_string& username,
+ const c_string& password)
+
+ CStatus DoAction(CFlightCallOptions& options, CAction& action,
+ unique_ptr[CResultStream]* results)
+ CStatus ListActions(CFlightCallOptions& options,
+ vector[CActionType]* actions)
+
+ CStatus ListFlights(CFlightCallOptions& options, CCriteria criteria,
+ unique_ptr[CFlightListing]* listing)
+ CStatus GetFlightInfo(CFlightCallOptions& options,
+ CFlightDescriptor& descriptor,
+ unique_ptr[CFlightInfo]* info)
+ CStatus GetSchema(CFlightCallOptions& options,
+ CFlightDescriptor& descriptor,
+ unique_ptr[CSchemaResult]* result)
+ CStatus DoGet(CFlightCallOptions& options, CTicket& ticket,
+ unique_ptr[CFlightStreamReader]* stream)
+ CStatus DoPut(CFlightCallOptions& options,
+ CFlightDescriptor& descriptor,
+ shared_ptr[CSchema]& schema,
+ unique_ptr[CFlightStreamWriter]* stream,
+ unique_ptr[CFlightMetadataReader]* reader)
+ CStatus DoExchange(CFlightCallOptions& options,
+ CFlightDescriptor& descriptor,
+ unique_ptr[CFlightStreamWriter]* writer,
+ unique_ptr[CFlightStreamReader]* reader)
+
+ cdef cppclass CFlightStatusCode" arrow::flight::FlightStatusCode":
+ bint operator==(CFlightStatusCode)
+
+ CFlightStatusCode CFlightStatusInternal \
+ " arrow::flight::FlightStatusCode::Internal"
+ CFlightStatusCode CFlightStatusTimedOut \
+ " arrow::flight::FlightStatusCode::TimedOut"
+ CFlightStatusCode CFlightStatusCancelled \
+ " arrow::flight::FlightStatusCode::Cancelled"
+ CFlightStatusCode CFlightStatusUnauthenticated \
+ " arrow::flight::FlightStatusCode::Unauthenticated"
+ CFlightStatusCode CFlightStatusUnauthorized \
+ " arrow::flight::FlightStatusCode::Unauthorized"
+ CFlightStatusCode CFlightStatusUnavailable \
+ " arrow::flight::FlightStatusCode::Unavailable"
+ CFlightStatusCode CFlightStatusFailed \
+ " arrow::flight::FlightStatusCode::Failed"
+
+ cdef cppclass FlightStatusDetail" arrow::flight::FlightStatusDetail":
+ CFlightStatusCode code()
+ c_string extra_info()
+
+ @staticmethod
+ shared_ptr[FlightStatusDetail] UnwrapStatus(const CStatus& status)
+
+ cdef cppclass FlightWriteSizeStatusDetail\
+ " arrow::flight::FlightWriteSizeStatusDetail":
+ int64_t limit()
+ int64_t actual()
+
+ @staticmethod
+ shared_ptr[FlightWriteSizeStatusDetail] UnwrapStatus(
+ const CStatus& status)
+
+ cdef CStatus MakeFlightError" arrow::flight::MakeFlightError" \
+ (CFlightStatusCode code, const c_string& message)
+
+ cdef CStatus MakeFlightError" arrow::flight::MakeFlightError" \
+ (CFlightStatusCode code,
+ const c_string& message,
+ const c_string& extra_info)
+
+# Callbacks for implementing Flight servers
+# Use typedef to emulate syntax for std::function<void(..)>
+ctypedef CStatus cb_list_flights(object, const CServerCallContext&,
+ const CCriteria*,
+ unique_ptr[CFlightListing]*)
+ctypedef CStatus cb_get_flight_info(object, const CServerCallContext&,
+ const CFlightDescriptor&,
+ unique_ptr[CFlightInfo]*)
+ctypedef CStatus cb_get_schema(object, const CServerCallContext&,
+ const CFlightDescriptor&,
+ unique_ptr[CSchemaResult]*)
+ctypedef CStatus cb_do_put(object, const CServerCallContext&,
+ unique_ptr[CFlightMessageReader],
+ unique_ptr[CFlightMetadataWriter])
+ctypedef CStatus cb_do_get(object, const CServerCallContext&,
+ const CTicket&,
+ unique_ptr[CFlightDataStream]*)
+ctypedef CStatus cb_do_exchange(object, const CServerCallContext&,
+ unique_ptr[CFlightMessageReader],
+ unique_ptr[CFlightMessageWriter])
+ctypedef CStatus cb_do_action(object, const CServerCallContext&,
+ const CAction&,
+ unique_ptr[CResultStream]*)
+ctypedef CStatus cb_list_actions(object, const CServerCallContext&,
+ vector[CActionType]*)
+ctypedef CStatus cb_result_next(object, unique_ptr[CFlightResult]*)
+ctypedef CStatus cb_data_stream_next(object, CFlightPayload*)
+ctypedef CStatus cb_server_authenticate(object, CServerAuthSender*,
+ CServerAuthReader*)
+ctypedef CStatus cb_is_valid(object, const c_string&, c_string*)
+ctypedef CStatus cb_client_authenticate(object, CClientAuthSender*,
+ CClientAuthReader*)
+ctypedef CStatus cb_get_token(object, c_string*)
+
+ctypedef CStatus cb_middleware_sending_headers(object, CAddCallHeaders*)
+ctypedef CStatus cb_middleware_call_completed(object, const CStatus&)
+ctypedef CStatus cb_client_middleware_received_headers(
+ object, const CCallHeaders&)
+ctypedef CStatus cb_server_middleware_start_call(
+ object,
+ const CCallInfo&,
+ const CCallHeaders&,
+ shared_ptr[CServerMiddleware]*)
+ctypedef CStatus cb_client_middleware_start_call(
+ object,
+ const CCallInfo&,
+ unique_ptr[CClientMiddleware]*)
+
+cdef extern from "arrow/python/flight.h" namespace "arrow::py::flight" nogil:
+ cdef cppclass PyFlightServerVtable:
+ PyFlightServerVtable()
+ function[cb_list_flights] list_flights
+ function[cb_get_flight_info] get_flight_info
+ function[cb_get_schema] get_schema
+ function[cb_do_put] do_put
+ function[cb_do_get] do_get
+ function[cb_do_exchange] do_exchange
+ function[cb_do_action] do_action
+ function[cb_list_actions] list_actions
+
+ cdef cppclass PyServerAuthHandlerVtable:
+ PyServerAuthHandlerVtable()
+ function[cb_server_authenticate] authenticate
+ function[cb_is_valid] is_valid
+
+ cdef cppclass PyClientAuthHandlerVtable:
+ PyClientAuthHandlerVtable()
+ function[cb_client_authenticate] authenticate
+ function[cb_get_token] get_token
+
+ cdef cppclass PyFlightServer:
+ PyFlightServer(object server, PyFlightServerVtable vtable)
+
+ CStatus Init(CFlightServerOptions& options)
+ int port()
+ CStatus ServeWithSignals() except *
+ CStatus Shutdown()
+ CStatus Wait()
+
+ cdef cppclass PyServerAuthHandler\
+ " arrow::py::flight::PyServerAuthHandler"(CServerAuthHandler):
+ PyServerAuthHandler(object handler, PyServerAuthHandlerVtable vtable)
+
+ cdef cppclass PyClientAuthHandler\
+ " arrow::py::flight::PyClientAuthHandler"(CClientAuthHandler):
+ PyClientAuthHandler(object handler, PyClientAuthHandlerVtable vtable)
+
+ cdef cppclass CPyFlightResultStream\
+ " arrow::py::flight::PyFlightResultStream"(CResultStream):
+ CPyFlightResultStream(object generator,
+ function[cb_result_next] callback)
+
+ cdef cppclass CPyFlightDataStream\
+ " arrow::py::flight::PyFlightDataStream"(CFlightDataStream):
+ CPyFlightDataStream(object data_source,
+ unique_ptr[CFlightDataStream] stream)
+
+ cdef cppclass CPyGeneratorFlightDataStream\
+ " arrow::py::flight::PyGeneratorFlightDataStream"\
+ (CFlightDataStream):
+ CPyGeneratorFlightDataStream(object generator,
+ shared_ptr[CSchema] schema,
+ function[cb_data_stream_next] callback,
+ const CIpcWriteOptions& options)
+
+ cdef cppclass PyServerMiddlewareVtable\
+ " arrow::py::flight::PyServerMiddleware::Vtable":
+ PyServerMiddlewareVtable()
+ function[cb_middleware_sending_headers] sending_headers
+ function[cb_middleware_call_completed] call_completed
+
+ cdef cppclass PyClientMiddlewareVtable\
+ " arrow::py::flight::PyClientMiddleware::Vtable":
+ PyClientMiddlewareVtable()
+ function[cb_middleware_sending_headers] sending_headers
+ function[cb_client_middleware_received_headers] received_headers
+ function[cb_middleware_call_completed] call_completed
+
+ cdef cppclass CPyServerMiddleware\
+ " arrow::py::flight::PyServerMiddleware"(CServerMiddleware):
+ CPyServerMiddleware(object middleware, PyServerMiddlewareVtable vtable)
+ void* py_object()
+
+ cdef cppclass CPyServerMiddlewareFactory\
+ " arrow::py::flight::PyServerMiddlewareFactory"\
+ (CServerMiddlewareFactory):
+ CPyServerMiddlewareFactory(
+ object factory,
+ function[cb_server_middleware_start_call] start_call)
+
+ cdef cppclass CPyClientMiddleware\
+ " arrow::py::flight::PyClientMiddleware"(CClientMiddleware):
+ CPyClientMiddleware(object middleware, PyClientMiddlewareVtable vtable)
+
+ cdef cppclass CPyClientMiddlewareFactory\
+ " arrow::py::flight::PyClientMiddlewareFactory"\
+ (CClientMiddlewareFactory):
+ CPyClientMiddlewareFactory(
+ object factory,
+ function[cb_client_middleware_start_call] start_call)
+
+ cdef CStatus CreateFlightInfo" arrow::py::flight::CreateFlightInfo"(
+ shared_ptr[CSchema] schema,
+ CFlightDescriptor& descriptor,
+ vector[CFlightEndpoint] endpoints,
+ int64_t total_records,
+ int64_t total_bytes,
+ unique_ptr[CFlightInfo]* out)
+
+ cdef CStatus CreateSchemaResult" arrow::py::flight::CreateSchemaResult"(
+ shared_ptr[CSchema] schema,
+ unique_ptr[CSchemaResult]* out)
+
+ cdef CStatus DeserializeBasicAuth\
+ " arrow::py::flight::DeserializeBasicAuth"(
+ c_string buf,
+ unique_ptr[CBasicAuth]* out)
+
+ cdef CStatus SerializeBasicAuth" arrow::py::flight::SerializeBasicAuth"(
+ CBasicAuth basic_auth,
+ c_string* out)
+
+
+cdef extern from "arrow/util/variant.h" namespace "arrow" nogil:
+ cdef cppclass CIntStringVariant" arrow::util::Variant<int, std::string>":
+ CIntStringVariant()
+ CIntStringVariant(int)
+ CIntStringVariant(c_string)