MCPcopy Create free account
hub / github.com/catboost/catboost / AsyncAddArrowNumColumn

Function AsyncAddArrowNumColumn

catboost/python-package/catboost/arrow.cpp:382–483  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

380 }
381
382 void AsyncAddArrowNumColumn(
383 ui32 flatFeatureIdx,
384 PyObject* capsule,
385 IRawFeaturesOrderDataVisitor* builderVisitor,
386 TVector<std::future<void>>* result
387 ) {
388 auto callback = [=] (TArrowSchemaHolderPtr schema, TArrowArrayHolderPtr array) {
389 auto process = [=] () {
390 try {
391 CB_ENSURE(array->Data.n_buffers == 2, "Expected two buffers");
392
393 const ui8* __restrict validity = static_cast<const ui8*>(array->Data.buffers[0]);
394 const void* dataBuf = array->Data.buffers[1];
395 auto arrayOffset = array->Data.offset;
396 auto arraySize = array->Data.length;
397
398 ITypedSequencePtr<float> result;
399
400 auto typedProcessing = [&] (const auto* __restrict typedDataBuf) {
401 using TSrcType = std::remove_cvref_t<decltype(*typedDataBuf)>;
402 auto arrayDataHolder = TMaybeOwningConstArrayHolder<TSrcType>::CreateOwning(
403 {typedDataBuf + arrayOffset, typedDataBuf + arrayOffset + arraySize},
404 array
405 );
406
407 if (validity) {
408 using TInner = TArrayWithValidityHolder<TMaybeOwningConstArrayHolder<TSrcType>>;
409 result = MakeIntrusive<TArrayLikeAsFloatSequence<TInner>>(
410 TInner(
411 std::move(arrayDataHolder),
412 TMaybeOwnedBitMap(validity, arrayOffset, arraySize, array)
413 )
414 );
415 } else {
416 result = MakeTypeCastArrayHolder<float>(std::move(arrayDataHolder));
417 }
418 };
419
420 auto boolProcessing = [&] () {
421 auto data = TMaybeOwnedBitMap(
422 static_cast<const ui8*>(dataBuf),
423 arrayOffset,
424 arraySize,
425 array
426 );
427 if (validity) {
428 using TInner = TArrayWithValidityHolder<TMaybeOwnedBitMap>;
429 result = MakeIntrusive<TArrayLikeAsFloatSequence<TInner>>(
430 TInner(
431 std::move(data),
432 TMaybeOwnedBitMap(validity, arrayOffset, arraySize, array)
433 )
434 );
435 } else {
436 result = MakeIntrusive<TArrayLikeAsFloatSequence<TMaybeOwnedBitMap>>(std::move(data));
437 }
438 };
439

Callers

nothing calls this directly

Calls 10

TMaybeOwnedBitMapClass · 0.85
InstanceFunction · 0.85
CurrentExceptionMessageFunction · 0.85
ProcessArrowArrayStreamFunction · 0.85
TInnerClass · 0.50
moveFunction · 0.50
HANDLE_TYPEFunction · 0.50
GetMethod · 0.45
AddFloatFeatureMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected