[ 
https://issues.apache.org/jira/browse/ARROW-972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16244881#comment-16244881
 ] 

ASF GitHub Bot commented on ARROW-972:
--------------------------------------

pcmoritz commented on a change in pull request #1216: ARROW-972: UnionArray in 
pyarrow
URL: https://github.com/apache/arrow/pull/1216#discussion_r149819821
 
 

 ##########
 File path: python/pyarrow/types.pxi
 ##########
 @@ -1066,6 +1079,30 @@ def struct(fields):
     return pyarrow_wrap_data_type(struct_type)
 
 
+def union(children_types, mode):
+    """
+    Create UnionType from children types
+    """
+    cdef:
+        Field f
+        DataType child_type
+        vector[shared_ptr[CField]] c_fields
+        vector[uint8_t] type_codes
+        shared_ptr[CDataType] union_type
+        int i
+
+    for i, child_type in enumerate(children_types):
+        type_codes.push_back(i)
+        f = field(str(i), child_type)
+        c_fields.push_back(f.sp_field)
+
+    if mode == UnionMode_SPARSE:
 
 Review comment:
   If we don't do this and plug mode in directly below, clang complains:
   ```
   [ 33%] Building CXX object CMakeFiles/lib.dir/lib.cxx.o
   
/Users/pcmoritz/arrow/python/build/temp.macosx-10.7-x86_64-3.5/lib.cxx:100873:100:
 error: invalid operands to binary expression ('enum arrow::UnionMode' and 
'int')
                               return (enum  arrow::UnionMode) (((((enum  
arrow::UnionMode)digits[1]) << PyLong_SHIFT) | (enum  
arrow::UnionMode)digits[0]));
                                                                  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~
   
/Users/pcmoritz/arrow/python/build/temp.macosx-10.7-x86_64-3.5/lib.cxx:100882:102:
 error: invalid operands to binary expression ('enum arrow::UnionMode' and 
'int')
                               return (enum  arrow::UnionMode) (((((((enum  
arrow::UnionMode)digits[2]) << PyLong_SHIFT) | (enum  
arrow::UnionMode)digits[1]) << PyLong_SHIFT) ...
                                                                    
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~
   
/Users/pcmoritz/arrow/python/build/temp.macosx-10.7-x86_64-3.5/lib.cxx:100891:104:
 error: invalid operands to binary expression ('enum arrow::UnionMode' and 
'int')
                               return (enum  arrow::UnionMode) (((((((((enum  
arrow::UnionMode)digits[3]) << PyLong_SHIFT) | (enum  
arrow::UnionMode)digits[2]) << PyLong_SHIFT...
                                                                      
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~
   
/Users/pcmoritz/arrow/python/build/temp.macosx-10.7-x86_64-3.5/lib.cxx:100929:130:
 error: invalid operands to binary expression ('enum arrow::UnionMode' and 
'int')
                               return (enum  arrow::UnionMode) (((enum  
arrow::UnionMode)-1)*(((((enum  arrow::UnionMode)digits[1]) << PyLong_SHIFT) | 
(enum  arrow::UnionMode)d...
                                                                                
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~
   
/Users/pcmoritz/arrow/python/build/temp.macosx-10.7-x86_64-3.5/lib.cxx:100938:101:
 error: invalid operands to binary expression ('enum arrow::UnionMode' and 
'int')
                               return (enum  arrow::UnionMode) ((((((enum  
arrow::UnionMode)digits[1]) << PyLong_SHIFT) | (enum  
arrow::UnionMode)digits[0])));
                                                                   
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~
   
/Users/pcmoritz/arrow/python/build/temp.macosx-10.7-x86_64-3.5/lib.cxx:100947:132:
 error: invalid operands to binary expression ('enum arrow::UnionMode' and 
'int')
                               return (enum  arrow::UnionMode) (((enum  
arrow::UnionMode)-1)*(((((((enum  arrow::UnionMode)digits[2]) << PyLong_SHIFT) 
| (enum  arrow::UnionMode...
                                                                                
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~
   
/Users/pcmoritz/arrow/python/build/temp.macosx-10.7-x86_64-3.5/lib.cxx:100956:103:
 error: invalid operands to binary expression ('enum arrow::UnionMode' and 
'int')
                               return (enum  arrow::UnionMode) ((((((((enum  
arrow::UnionMode)digits[2]) << PyLong_SHIFT) | (enum  
arrow::UnionMode)digits[1]) << PyLong_SHIFT) ...
                                                                     
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~
   
/Users/pcmoritz/arrow/python/build/temp.macosx-10.7-x86_64-3.5/lib.cxx:100965:134:
 error: invalid operands to binary expression ('enum arrow::UnionMode' and 
'int')
                               return (enum  arrow::UnionMode) (((enum  
arrow::UnionMode)-1)*(((((((((enum  arrow::UnionMode)digits[3]) << 
PyLong_SHIFT) | (enum  arrow::UnionMo...
                                                                                
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~
   
/Users/pcmoritz/arrow/python/build/temp.macosx-10.7-x86_64-3.5/lib.cxx:100974:105:
 error: invalid operands to binary expression ('enum arrow::UnionMode' and 
'int')
                               return (enum  arrow::UnionMode) ((((((((((enum  
arrow::UnionMode)digits[3]) << PyLong_SHIFT) | (enum  
arrow::UnionMode)digits[2]) << PyLong_SHIFT...
                                                                       
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~
   9 errors generated.
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> [Python] Add test cases and basic APIs for UnionArray
> -----------------------------------------------------
>
>                 Key: ARROW-972
>                 URL: https://issues.apache.org/jira/browse/ARROW-972
>             Project: Apache Arrow
>          Issue Type: New Feature
>          Components: Python
>    Affects Versions: 0.3.0
>            Reporter: Wes McKinney
>            Assignee: Philipp Moritz
>              Labels: pull-request-available
>             Fix For: 0.8.0
>
>
> While this is implemented in C++, there isn't any API exposure yet in Python



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to