Changeset 4668:94b0987c458d in orange


Ignore:
Timestamp:
05/19/08 00:39:56 (6 years ago)
Author:
janezd <janez.demsar@…>
Branch:
default
Convert:
a9156346a6777685932e4994406c878661dea700
Message:
  • loadDataByPython now expects the user-defined data loaders to handle createNewOn and to return status
File:
1 edited

Legend:

Unmodified
Added
Removed
  • source/orange/lib_kernel.cpp

    r4360 r4668  
    18151815  fileFound = fi!=filetypeDefinitions.end(); 
    18161816 
    1817   if (fileFound) { 
    1818     PyObject *res = PyObject_Call((*fi).loader, argstuple, keywords); 
    1819     if (!res) 
    1820       throw pyexception(); 
    1821     if (res == Py_None) 
    1822       return res; 
    1823  
    1824     if (PyOrExampleTable_Check(res)) 
    1825       return res; 
    1826  
    1827     PExampleGenerator gen; 
    1828     if (!exampleGenFromParsedArgs(res, gen)) 
    1829       return PYNULL; 
    1830  
    1831     TExampleTable *table = gen.AS(TExampleTable); 
    1832     if (!table) 
    1833       return PYNULL; 
    1834  
     1817  if (!fileFound)  
     1818    return PYNULL; 
     1819 
     1820  PyObject *res = PyObject_Call((*fi).loader, argstuple, keywords); 
     1821  if (!res) 
     1822    throw pyexception(); 
     1823  if (res == Py_None) 
     1824    return res; 
     1825 
     1826  bool gotTuple = PyTuple_Check(res); 
     1827  PyObject *res1 = gotTuple ? PyTuple_GET_ITEM(res, 0) : res; 
     1828     
     1829  if (PyOrExampleTable_Check(res1)) 
     1830    return res; 
     1831 
     1832  PExampleGenerator gen; 
     1833  if (!exampleGenFromParsedArgs(res1, gen)) { 
     1834    Py_DECREF(res); 
     1835    return PYNULL; 
     1836  } 
     1837 
     1838  TExampleTable *table = gen.AS(TExampleTable); 
     1839  if (!table) { 
     1840    Py_DECREF(res); 
     1841    return PYNULL; 
     1842  } 
     1843 
     1844  if (gotTuple) { 
     1845    PyObject *nres = PyTuple_New(PyTuple_Size(res)); 
     1846    PyTuple_SetItem(nres, 0, WrapNewOrange(table, type)); 
     1847    for(int i = 1; i < PyTuple_Size(res); i++) 
     1848      PyTuple_SetItem(nres, i, PyTuple_GET_ITEM(res, i)); 
     1849       
     1850    Py_DECREF(res); 
     1851    return nres; 
     1852  } 
     1853  else { 
     1854    Py_DECREF(res); 
    18351855    return WrapNewOrange(table, type); 
    18361856  } 
    1837  
    1838   return PYNULL; 
    18391857} 
    18401858 
     
    18681886  bool pythonFileFound; 
    18691887  res = loadDataByPython(type, filename, argstuple, keywords, false, pythonFileFound); 
    1870   if (res) 
    1871     if (res != Py_None) 
    1872       return res; 
     1888  if (res) { 
     1889    if (res != Py_None) { 
     1890      if (!PyTuple_Check(res)) 
     1891        return res; 
     1892 
     1893      PyObject *pygen = PyTuple_GetItem(res, 0); 
     1894      Py_INCREF(pygen); 
     1895       
     1896      if (PyTuple_Size(res) >= 2) 
     1897        Orange_setattrDictionary((TPyOrange *)pygen, "attributeLoadStatus", PyTuple_GET_ITEM(res, 1), false); 
     1898      if (PyTuple_Size(res) >= 3) 
     1899        Orange_setattrDictionary((TPyOrange *)pygen, "metaAttributeLoadStatus", PyTuple_GET_ITEM(res, 2), false); 
     1900      return pygen; 
     1901    } 
     1902       
    18731903    else 
    18741904      Py_DECREF(Py_None); 
     1905  } 
    18751906 
    18761907  PyErr_Clear(); 
Note: See TracChangeset for help on using the changeset viewer.