from libc.stdlib cimport malloc, realloc, free
from types cimport *
-{{if BUILD_DOC}}
-include "mock_cephfs.pxi"
-cdef class Rados:
- cdef:
- rados_t cluster
-{{else}}
-from c_cephfs cimport *
-from rados cimport Rados
-{{endif}}
+IF BUILD_DOC:
+ include "mock_cephfs.pxi"
+ cdef class Rados:
+ cdef:
+ rados_t cluster
+ELSE:
+ from c_cephfs cimport *
+ from rados cimport Rados
from collections import namedtuple, deque
from datetime import datetime
try:
from Cython.Build import cythonize
from Cython.Distutils import build_ext
- from Cython import Tempita
cmdclass = {'build_ext': build_ext}
except ImportError:
source = "cephfs.c"
else:
- # Process Tempita template
- source_pyx = os.path.join(
- os.path.dirname(os.path.abspath(__file__)),
- "cephfs.pyx"
- )
-
- # Read the template from source
- with open(source_pyx) as f:
- template_content = f.read()
-
- # Process the template with cython_constants
- processed = Tempita.sub(template_content, **cython_constants)
-
- # Write processed output to current working directory
- # (which is the build directory when invoked by CMake)
- output_pyx = "cephfs_processed.pyx"
-
- with open(output_pyx, 'w') as f:
- f.write(processed)
-
- source = output_pyx
+ source = "cephfs.pyx"
# Disable cythonification if we're not really building anything
if (len(sys.argv) >= 2 and
#
# Copyright 2016 Mehdi Abaakouk <sileht@redhat.com>
-cdef extern from *:
- """
- #ifdef BUILD_DOC
- typedef void* rados_t;
- typedef void* rados_config_t;
- typedef void* rados_ioctx_t;
- #else
- #include "rados/librados.h"
- #endif
- """
- ctypedef void* rados_t
- ctypedef void* rados_config_t
- ctypedef void* rados_ioctx_t
+IF BUILD_DOC:
+ cdef:
+ ctypedef void* rados_t
+ ctypedef void* rados_config_t
+ ctypedef void* rados_ioctx_t
+ELSE:
+ cdef extern from "rados/librados.h" nogil:
+ ctypedef void* rados_t
+ ctypedef void* rados_config_t
+ ctypedef void* rados_ioctx_t
cdef class Rados(object):
from libc cimport errno
from libc.stdint cimport *
from libc.stdlib cimport malloc, realloc, free
-
-{{if BUILD_DOC}}
-include "mock_rados.pxi"
-{{else}}
-from c_rados cimport *
-{{endif}}
+IF BUILD_DOC:
+ include "mock_rados.pxi"
+ELSE:
+ from c_rados cimport *
import threading
import time
"RADOS connection was shutdown (%s)" % message, errno)
-# Build errno mapping based on platform
-# FreeBSD uses ENOATTR while Linux uses ENODATA
-{{if UNAME_SYSNAME == "FreeBSD"}}
-cdef errno_to_exception = {
- errno.EPERM : PermissionError,
- errno.ENOENT : ObjectNotFound,
- errno.EIO : IOError,
- errno.ENOSPC : NoSpace,
- errno.EEXIST : ObjectExists,
- errno.EBUSY : ObjectBusy,
- errno.ENOATTR : NoData,
- errno.EINTR : InterruptedOrTimeoutError,
- errno.ETIMEDOUT : TimedOut,
- errno.EACCES : PermissionDeniedError,
- errno.EINPROGRESS : InProgress,
- errno.EISCONN : IsConnected,
- errno.EINVAL : InvalidArgumentError,
- errno.ENOTCONN : NotConnected,
- errno.ESHUTDOWN : ConnectionShutdown,
-}
-{{else}}
-cdef errno_to_exception = {
- errno.EPERM : PermissionError,
- errno.ENOENT : ObjectNotFound,
- errno.EIO : IOError,
- errno.ENOSPC : NoSpace,
- errno.EEXIST : ObjectExists,
- errno.EBUSY : ObjectBusy,
- errno.ENODATA : NoData,
- errno.EINTR : InterruptedOrTimeoutError,
- errno.ETIMEDOUT : TimedOut,
- errno.EACCES : PermissionDeniedError,
- errno.EINPROGRESS : InProgress,
- errno.EISCONN : IsConnected,
- errno.EINVAL : InvalidArgumentError,
- errno.ENOTCONN : NotConnected,
- errno.ESHUTDOWN : ConnectionShutdown,
-}
-{{endif}}
+IF UNAME_SYSNAME == "FreeBSD":
+ cdef errno_to_exception = {
+ errno.EPERM : PermissionError,
+ errno.ENOENT : ObjectNotFound,
+ errno.EIO : IOError,
+ errno.ENOSPC : NoSpace,
+ errno.EEXIST : ObjectExists,
+ errno.EBUSY : ObjectBusy,
+ errno.ENOATTR : NoData,
+ errno.EINTR : InterruptedOrTimeoutError,
+ errno.ETIMEDOUT : TimedOut,
+ errno.EACCES : PermissionDeniedError,
+ errno.EINPROGRESS : InProgress,
+ errno.EISCONN : IsConnected,
+ errno.EINVAL : InvalidArgumentError,
+ errno.ENOTCONN : NotConnected,
+ errno.ESHUTDOWN : ConnectionShutdown,
+ }
+ELSE:
+ cdef errno_to_exception = {
+ errno.EPERM : PermissionError,
+ errno.ENOENT : ObjectNotFound,
+ errno.EIO : IOError,
+ errno.ENOSPC : NoSpace,
+ errno.EEXIST : ObjectExists,
+ errno.EBUSY : ObjectBusy,
+ errno.ENODATA : NoData,
+ errno.EINTR : InterruptedOrTimeoutError,
+ errno.ETIMEDOUT : TimedOut,
+ errno.EACCES : PermissionDeniedError,
+ errno.EINPROGRESS : InProgress,
+ errno.EISCONN : IsConnected,
+ errno.EINVAL : InvalidArgumentError,
+ errno.ENOTCONN : NotConnected,
+ errno.ESHUTDOWN : ConnectionShutdown,
+ }
cdef make_ex(ret: int, msg: str):
from itertools import filterfalse, takewhile
import os
-import platform
import shutil
import sys
import tempfile
if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = dict(extra_compile_args=['-DBUILD_DOC'])
- cython_constants = dict(BUILD_DOC=True, UNAME_SYSNAME=platform.system())
+ ext_args = {}
+ cython_constants = dict(BUILD_DOC=True)
elif check_sanity():
ext_args = get_python_flags(['rados'])
- cython_constants = dict(BUILD_DOC=False, UNAME_SYSNAME=platform.system())
+ cython_constants = dict(BUILD_DOC=False)
else:
sys.exit(1)
try:
from Cython.Build import cythonize
from Cython.Distutils import build_ext
- from Cython import Tempita
cmdclass = {'build_ext': build_ext}
except ImportError:
source = "rados.c"
else:
- # Process Tempita template
- source_pyx = os.path.join(
- os.path.dirname(os.path.abspath(__file__)),
- "rados.pyx"
- )
-
- # Read the template from source
- with open(source_pyx) as f:
- template_content = f.read()
-
- # Process the template with cython_constants
- processed = Tempita.sub(template_content, **cython_constants)
-
- # Write processed output to current working directory
- # (which is the build directory when invoked by CMake)
- output_pyx = "rados_processed.pyx"
-
- with open(output_pyx, 'w') as f:
- f.write(processed)
-
- source = output_pyx
+ source = "rados.pyx"
# Disable cythonification if we're not really building anything
if (len(sys.argv) >= 2 and
from itertools import chain
import time
-{{if BUILD_DOC}}
-include "mock_rbd.pxi"
-{{else}}
-from c_rbd cimport *
-cimport rados
-{{endif}}
+IF BUILD_DOC:
+ include "mock_rbd.pxi"
+ELSE:
+ from c_rbd cimport *
+ cimport rados
cdef extern from "Python.h":
return OSError(msg, errno=ret)
-{{if BUILD_DOC}}
-cdef rados_t convert_rados(rados) nogil:
- return <rados_t>0
+IF BUILD_DOC:
+ cdef rados_t convert_rados(rados) nogil:
+ return <rados_t>0
-cdef rados_ioctx_t convert_ioctx(ioctx) nogil:
- return <rados_ioctx_t>0
-{{else}}
-cdef rados_t convert_rados(rados.Rados rados) except? NULL:
- return <rados_t>rados.cluster
+ cdef rados_ioctx_t convert_ioctx(ioctx) nogil:
+ return <rados_ioctx_t>0
+ELSE:
+ cdef rados_t convert_rados(rados.Rados rados) except? NULL:
+ return <rados_t>rados.cluster
-cdef rados_ioctx_t convert_ioctx(rados.Ioctx ioctx) except? NULL:
- return <rados_ioctx_t>ioctx.io
-{{endif}}
+ cdef rados_ioctx_t convert_ioctx(rados.Ioctx ioctx) except? NULL:
+ return <rados_ioctx_t>ioctx.io
cdef int progress_callback(uint64_t offset, uint64_t total, void* ptr) with gil:
return (<object>ptr)(offset, total)
from Cython.Build import cythonize
from Cython.Distutils import build_ext
from Cython import __version__ as cython_version
- from Cython import Tempita
cmdclass = {'build_ext': build_ext}
source = "rbd.c"
else:
- # Process Tempita template
- source_pyx = os.path.join(
- os.path.dirname(os.path.abspath(__file__)),
- "rbd.pyx"
- )
-
- # Read the template from source
- with open(source_pyx) as f:
- template_content = f.read()
-
- # Process the template with cython_constants
- processed = Tempita.sub(template_content, **cython_constants)
-
- # Write processed output to current working directory
- # (which is the build directory when invoked by CMake)
- source = "rbd_processed.pyx"
-
- with open(source, 'w') as f:
- f.write(processed)
+ source = "rbd.pyx"
# Disable cythonification if we're not really building anything
if (len(sys.argv) >= 2 and
from cstat cimport stat
cimport libcpp
-{{if BUILD_DOC}}
-include "mock_rgw.pxi"
-{{else}}
-from c_rgw cimport *
-cimport rados
-{{endif}}
+IF BUILD_DOC:
+ include "mock_rgw.pxi"
+ELSE:
+ from c_rgw cimport *
+ cimport rados
from collections import namedtuple
from datetime import datetime
class OutOfRange(Error):
pass
-
-# Build errno mapping based on platform
-# FreeBSD uses ENOATTR while Linux uses ENODATA
-{{if UNAME_SYSNAME == "FreeBSD"}}
-cdef errno_to_exception = {
- errno.EPERM : PermissionError,
- errno.ENOENT : ObjectNotFound,
- errno.EIO : IOError,
- errno.ENOSPC : NoSpace,
- errno.EEXIST : ObjectExists,
- errno.ENOATTR : NoData,
- errno.EINVAL : InvalidValue,
- errno.EOPNOTSUPP : OperationNotSupported,
- errno.ERANGE : OutOfRange,
- errno.EWOULDBLOCK: WouldBlock,
-}
-{{else}}
-cdef errno_to_exception = {
- errno.EPERM : PermissionError,
- errno.ENOENT : ObjectNotFound,
- errno.EIO : IOError,
- errno.ENOSPC : NoSpace,
- errno.EEXIST : ObjectExists,
- errno.ENODATA : NoData,
- errno.EINVAL : InvalidValue,
- errno.EOPNOTSUPP : OperationNotSupported,
- errno.ERANGE : OutOfRange,
- errno.EWOULDBLOCK: WouldBlock,
-}
-{{endif}}
+IF UNAME_SYSNAME == "FreeBSD":
+ cdef errno_to_exception = {
+ errno.EPERM : PermissionError,
+ errno.ENOENT : ObjectNotFound,
+ errno.EIO : IOError,
+ errno.ENOSPC : NoSpace,
+ errno.EEXIST : ObjectExists,
+ errno.ENOATTR : NoData,
+ errno.EINVAL : InvalidValue,
+ errno.EOPNOTSUPP : OperationNotSupported,
+ errno.ERANGE : OutOfRange,
+ errno.EWOULDBLOCK: WouldBlock,
+ }
+ELSE:
+ cdef errno_to_exception = {
+ errno.EPERM : PermissionError,
+ errno.ENOENT : ObjectNotFound,
+ errno.EIO : IOError,
+ errno.ENOSPC : NoSpace,
+ errno.EEXIST : ObjectExists,
+ errno.ENODATA : NoData,
+ errno.EINVAL : InvalidValue,
+ errno.EOPNOTSUPP : OperationNotSupported,
+ errno.ERANGE : OutOfRange,
+ errno.EWOULDBLOCK: WouldBlock,
+ }
cdef class FileHandle(object):
shutil.rmtree(tmp_dir)
-import platform
-
if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
ext_args = {}
- cython_constants = dict(BUILD_DOC=True, UNAME_SYSNAME=platform.system())
+ cython_constants = dict(BUILD_DOC=True)
cythonize_args = dict(compile_time_env=cython_constants)
elif check_sanity():
ext_args = get_python_flags(['rados', 'rgw'])
- cython_constants = dict(BUILD_DOC=False, UNAME_SYSNAME=platform.system())
+ cython_constants = dict(BUILD_DOC=False)
include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
cythonize_args = dict(compile_time_env=cython_constants,
include_path=include_path)
try:
from Cython.Build import cythonize
from Cython.Distutils import build_ext
- from Cython import Tempita
cmdclass = {'build_ext': build_ext}
except ImportError:
source = "rgw.c"
else:
- # Process Tempita template
- source_pyx = os.path.join(
- os.path.dirname(os.path.abspath(__file__)),
- "rgw.pyx"
- )
-
- # Read the template from source
- with open(source_pyx) as f:
- template_content = f.read()
-
- # Process the template with cython_constants
- processed = Tempita.sub(template_content, **cython_constants)
-
- # Write processed output to current working directory
- # (which is the build directory when invoked by CMake)
- output_pyx = "rgw_processed.pyx"
-
- with open(output_pyx, 'w') as f:
- f.write(processed)
-
- source = output_pyx
+ source = "rgw.pyx"
# Disable cythonification if we're not really building anything
if (len(sys.argv) >= 2 and