ó
£áSc           @  s‡   d  d l  m Z m Z d  d l Z d  d l Z d  d l m Z m Z m Z m Z d  d l	 Z	 d Z
 d Z d Z e d „ Z d „  Z d S(	   iÿÿÿÿ(   t   divisiont   print_functionN(   t   TypeApit   GlobalVarApit   FunctionApit   BoolValuesApisœ  
#ifdef _MULTIARRAYMODULE

typedef struct {
        PyObject_HEAD
        npy_bool obval;
} PyBoolScalarObject;

#ifdef NPY_ENABLE_SEPARATE_COMPILATION
extern NPY_NO_EXPORT PyTypeObject PyArrayMapIter_Type;
extern NPY_NO_EXPORT PyTypeObject PyArrayNeighborhoodIter_Type;
extern NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2];
#else
NPY_NO_EXPORT PyTypeObject PyArrayMapIter_Type;
NPY_NO_EXPORT PyTypeObject PyArrayNeighborhoodIter_Type;
NPY_NO_EXPORT PyBoolScalarObject _PyArrayScalar_BoolValues[2];
#endif

%s

#else

#if defined(PY_ARRAY_UNIQUE_SYMBOL)
#define PyArray_API PY_ARRAY_UNIQUE_SYMBOL
#endif

#if defined(NO_IMPORT) || defined(NO_IMPORT_ARRAY)
extern void **PyArray_API;
#else
#if defined(PY_ARRAY_UNIQUE_SYMBOL)
void **PyArray_API;
#else
static void **PyArray_API=NULL;
#endif
#endif

%s

#if !defined(NO_IMPORT_ARRAY) && !defined(NO_IMPORT)
static int
_import_array(void)
{
  int st;
  PyObject *numpy = PyImport_ImportModule("numpy.core.multiarray");
  PyObject *c_api = NULL;

  if (numpy == NULL) {
      PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import");
      return -1;
  }
  c_api = PyObject_GetAttrString(numpy, "_ARRAY_API");
  Py_DECREF(numpy);
  if (c_api == NULL) {
      PyErr_SetString(PyExc_AttributeError, "_ARRAY_API not found");
      return -1;
  }

#if PY_VERSION_HEX >= 0x03000000
  if (!PyCapsule_CheckExact(c_api)) {
      PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is not PyCapsule object");
      Py_DECREF(c_api);
      return -1;
  }
  PyArray_API = (void **)PyCapsule_GetPointer(c_api, NULL);
#else
  if (!PyCObject_Check(c_api)) {
      PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is not PyCObject object");
      Py_DECREF(c_api);
      return -1;
  }
  PyArray_API = (void **)PyCObject_AsVoidPtr(c_api);
#endif
  Py_DECREF(c_api);
  if (PyArray_API == NULL) {
      PyErr_SetString(PyExc_RuntimeError, "_ARRAY_API is NULL pointer");
      return -1;
  }

  /* Perform runtime check of C API version */
  if (NPY_VERSION != PyArray_GetNDArrayCVersion()) {
      PyErr_Format(PyExc_RuntimeError, "module compiled against "\
             "ABI version %%x but this version of numpy is %%x", \
             (int) NPY_VERSION, (int) PyArray_GetNDArrayCVersion());
      return -1;
  }
  if (NPY_FEATURE_VERSION > PyArray_GetNDArrayCFeatureVersion()) {
      PyErr_Format(PyExc_RuntimeError, "module compiled against "\
             "API version %%x but this version of numpy is %%x", \
             (int) NPY_FEATURE_VERSION, (int) PyArray_GetNDArrayCFeatureVersion());
      return -1;
  }

  /*
   * Perform runtime check of endianness and check it matches the one set by
   * the headers (npy_endian.h) as a safeguard
   */
  st = PyArray_GetEndianness();
  if (st == NPY_CPU_UNKNOWN_ENDIAN) {
      PyErr_Format(PyExc_RuntimeError, "FATAL: module compiled as unknown endian");
      return -1;
  }
#if NPY_BYTE_ORDER == NPY_BIG_ENDIAN
  if (st != NPY_CPU_BIG) {
      PyErr_Format(PyExc_RuntimeError, "FATAL: module compiled as "\
             "big endian, but detected different endianness at runtime");
      return -1;
  }
#elif NPY_BYTE_ORDER == NPY_LITTLE_ENDIAN
  if (st != NPY_CPU_LITTLE) {
      PyErr_Format(PyExc_RuntimeError, "FATAL: module compiled as "\
             "little endian, but detected different endianness at runtime");
      return -1;
  }
#endif

  return 0;
}

#if PY_VERSION_HEX >= 0x03000000
#define NUMPY_IMPORT_ARRAY_RETVAL NULL
#else
#define NUMPY_IMPORT_ARRAY_RETVAL
#endif

#define import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return NUMPY_IMPORT_ARRAY_RETVAL; } }

#define import_array1(ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return ret; } }

#define import_array2(msg, ret) {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, msg); return ret; } }

#endif

#endif
s{   
/* These pointers will be stored in the C-object for use in other
    extension modules
*/

void *PyArray_API[] = {
%s
};
s%   
===========
Numpy C-API
===========
c         C  s¡   d } t  j j |  d | ƒ } t  j j |  d | ƒ } t  j j |  d | ƒ } | | | f } t j } | r� t j | t j t g ƒ r� | St | | ƒ | S(   Nt   multiarray_apis   __%s.hs   __%s.cs   %s.txt(	   t   ost   patht   joint	   numpy_apiR   t   genapit   should_rebuildt   __file__t   do_generate_api(   t
   output_dirt   forcet   basenamet   h_filet   c_filet   d_filet   targetst   sources(    (    sW   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/core/generate_numpy_api.pyt   generate_api£   s    	#c         C  s4  |  d } |  d } |  d } | d } | d } | d } | d } | d }	 | d  | d }
 g  } g  } g  } t  j |
 ƒ } t  j | ƒ t  j d |	 ƒ } t  j |	 ƒ } d } i  } xI | D]A } | j } |	 | } t | j | | j | j | ƒ | | j <qÄ Wx= | j	 ƒ  D]/ \ } } | | } t
 | | | | ƒ | | <qWx0 | j	 ƒ  D]" \ } } t | | | ƒ | | <qVWx3 | j	 ƒ  D]% \ } } t | | d | ƒ | | <q‰Wt | ƒ t | ƒ k rït d	 t | ƒ t | ƒ f ƒ ‚ n  g  } x` t  j | ƒ D]O \ } } | | } | j | j ƒ  ƒ | j | j ƒ  ƒ | j | j ƒ  ƒ qWt | d
 ƒ } t d j | ƒ d j | ƒ f } | j | ƒ | j ƒ  t | d
 ƒ } t d j | ƒ } | j | ƒ | j ƒ  t | d
 ƒ } | j t ƒ x. | D]& } | j | j ƒ  ƒ | j d ƒ qüW| j ƒ  |  S(   Ni    i   i   i   i   t	   NUMPY_APIt   PyArray_APIt   PyTypeObjects"   Multiarray API size mismatch %d %dt   ws   
s   ,
s   

(   R   t   merge_api_dictst   check_api_dictt   get_api_functionst
   order_dictt   nameR   t   return_typet   argst   itemsR   R   R   t   lent   AssertionErrort   appendt   define_from_array_api_stringt   array_api_definet   internal_definet   opent
   h_templateR	   t   writet   closet
   c_templatet   c_api_headert   to_ReST(   R   R   t   header_fileR   t   doc_filet   global_varst   global_vars_typest   scalar_bool_valuest	   types_apit   multiarray_funcsR   t   module_listt   extension_listt	   init_listt   multiarray_api_indext   numpyapi_listt   ordered_funcs_apit   api_namet   multiarray_api_dictt   fR    t   indext   typet   api_itemt   fidt   st   func(    (    sW   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/core/generate_numpy_api.pyR   ´   sn    







			


"


(   t
   __future__R    R   R   R   R   R   R   R   R
   R+   R.   R/   t   FalseR   R   (    (    (    sW   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/numpy/core/generate_numpy_api.pyt   <module>   s   "‡