Use relative imports (or absolute imports for cimport)
authorW. Trevor King <wking@tremily.us>
Wed, 12 Jun 2013 12:40:16 +0000 (08:40 -0400)
committerW. Trevor King <wking@tremily.us>
Wed, 12 Jun 2013 13:20:00 +0000 (09:20 -0400)
The relative-import ticket is still open [1], but the Cython 0.15
release notes (2011-08-05) claim support for relative imports [2].
Relative cimports are not supported yet [3], but I've fixed them up to
use the full absolute import path.

[1]: http://trac.cython.org/cython_trac/ticket/542
[2]: http://wiki.cython.org/ReleaseNotes-0.15
[3]: http://thread.gmane.org/gmane.comp.python.cython.devel/14406

21 files changed:
pycomedi/_comedilib_h.pxd
pycomedi/_error.pyx
pycomedi/calibration.pxd
pycomedi/calibration.pyx
pycomedi/channel.pyx
pycomedi/chanspec.pyx
pycomedi/command.pxd
pycomedi/command.pyx
pycomedi/constant.pyx
pycomedi/device.pxd
pycomedi/device.pyx
pycomedi/device_holder.pxd
pycomedi/instruction.pxd
pycomedi/instruction.pyx
pycomedi/library.pyx
pycomedi/range.pxd
pycomedi/range.pyx
pycomedi/subdevice.pxd
pycomedi/subdevice.pyx
pycomedi/subdevice_holder.pxd
pycomedi/subdevice_holder.pyx

index 71563fa0c212fac60c68d470027a3bb049c5d92e..f1e92aa9331e3333dc472881bd8ee74af751f710 100644 (file)
@@ -16,7 +16,7 @@
 
 "Cython interface to comedilib.h"
 
-from _comedi_h cimport *
+from pycomedi._comedi_h cimport *
 
 
 cdef extern from 'comedilib.h':
index 6e8e9a801e038ff98162a5a1a39efa3492516b89..f222ffb41cea5bf022f873f51f3486c2e1498bdf 100644 (file)
 
 "Useful error checking wrappers around Comedilib function calls"
 
-# No relative imports in Cython yet, see
-#   http://trac.cython.org/cython_trac/ticket/542
-from pycomedi import LOG as _LOG
-from pycomedi import PyComediError as _PyComediError
+from . import LOG as _LOG
+from . import PyComediError as _PyComediError
 
-cimport _comedilib_h
+from pycomedi cimport _comedilib_h
 
 
 def raise_error(function_name=None, ret=None, error_msg=None):
index 12a4e3f5911b846c782e88184bb7a4af7fe04178..6e98b533cda9854eac26eff0201500eaaf75e660 100644 (file)
@@ -16,7 +16,7 @@
 
 "Expose `CalibratedConverter` internals at the C level for other Cython modules"
 
-cimport _comedilib_h
+from pycomedi cimport _comedilib_h
 
 
 cdef class CalibratedConverter (object):
index 18b776820a691c176f627eff267b14b195febe32..cac765a4345977cad8f7cc0e3fcebf451f6c35fd 100644 (file)
@@ -26,11 +26,11 @@ from libc cimport string as _string
 cimport numpy as _numpy
 import numpy as _numpy
 
-cimport _comedi_h
-cimport _comedilib_h
-import _error
-import constant as _constant
-import utility as _utility
+from pycomedi cimport _comedi_h
+from pycomedi cimport _comedilib_h
+from . import _error
+from . import constant as _constant
+from . import utility as _utility
 
 
 cdef void _python_to_charp(
index b111da9db6b5fc1e451119e29bf0d7988d44e659..4b0a3c1446695789ae7dc1d732426ef2d1ce0a9c 100644 (file)
@@ -22,18 +22,17 @@ cimport cython
 cimport numpy as _numpy
 import numpy as _numpy
 
-cimport _comedi_h
-cimport _comedilib_h
-from calibration cimport CalibratedConverter as _CalibratedConverter
-from calibration cimport Calibration as _Calibration
-from range cimport Range as _Range
-from subdevice_holder cimport SubdeviceHolder as _SubdeviceHolder
+from pycomedi cimport _comedi_h
+from pycomedi cimport _comedilib_h
+from pycomedi cimport calibration as _calibration
+from pycomedi cimport range as _range
+from pycomedi cimport subdevice_holder as _subdevice_holder
 
-from pycomedi import LOG as _LOG
-from chanspec import ChanSpec as _ChanSpec
-from pycomedi import PyComediError as _PyComediError
-import _error
-import constant as _constant
+from . import LOG as _LOG
+from . import PyComediError as _PyComediError
+from . import _error
+from . import chanspec as _chanspec
+from . import constant as _constant
 
 
 cdef class Channel (object):
@@ -58,7 +57,7 @@ cdef class Channel (object):
 
     >>> d.close()
     """
-    cdef public _SubdeviceHolder subdevice
+    cdef public _subdevice_holder.SubdeviceHolder subdevice
     cdef public int index
 
     def __cinit__(self):
@@ -89,13 +88,13 @@ cdef class Channel (object):
 
     cdef _get_range(self, index):
         cdef _comedilib_h.comedi_range *rng
-        cdef _Range ret
+        cdef _range.Range ret
         # Memory pointed to by the return value is freed on Device.close().
         rng = _comedilib_h.comedi_get_range(
             self._device(), self.subdevice.index, self.index, index)
         if rng is NULL:
             _error.raise_error(function_name='comedi_get_range')
-        ret = _Range(value=index)
+        ret = _range.Range(value=index)
         ret.set_comedi_range(rng[0])
         # rng[0] is a sneaky way to dereference rng, since Cython
         # doesn't support *rng.
@@ -280,7 +279,7 @@ cdef class AnalogChannel (Channel):
     >>> c.range
     <Range unit:volt min:-10.0 max:10.0>
     """
-    cdef public _Range range
+    cdef public _range.Range range
     cdef public object aref
 
     def __init__(self, range=None, aref=None, **kwargs):
@@ -381,11 +380,12 @@ cdef class AnalogChannel (Channel):
             _error.raise_error(function_name='comedi_data_write', ret=ret)
 
     def chanspec(self):
-        return _ChanSpec(chan=self.index, range=self.range, aref=self.aref)
+        return _chanspec.ChanSpec(
+            chan=self.index, range=self.range, aref=self.aref)
 
 
     cdef _comedilib_h.comedi_polynomial_t get_softcal_converter(
-        self, direction, _Calibration calibration) except *:
+        self, direction, _calibration.Calibration calibration) except *:
         """Get a calibration polynomial for a software-calibrated channel
 
         `direction` should be a value from `constant.CONVERSION_DIRECTION`.
@@ -417,9 +417,9 @@ cdef class AnalogChannel (Channel):
                                ret=rc)
         return poly
 
-    cdef _get_converter(self, _Calibration calibration):
+    cdef _get_converter(self, _calibration.Calibration calibration):
         cdef _comedilib_h.comedi_polynomial_t to_physical, from_physical
-        cdef _CalibratedConverter ret
+        cdef _calibration.CalibratedConverter ret
         flags = self.subdevice.get_flags()
         from_physical_error = None
         if flags.soft_calibrated:
@@ -439,7 +439,8 @@ cdef class AnalogChannel (Channel):
                 _constant.CONVERSION_DIRECTION.to_physical)
             from_physical = self.get_hardcal_converter(
                 _constant.CONVERSION_DIRECTION.from_physical)
-        ret = _CalibratedConverter(from_physical_error=from_physical_error)
+        ret = _calibration.CalibratedConverter(
+            from_physical_error=from_physical_error)
         ret._to_physical = to_physical
         if from_physical_error is None:
             ret._from_physical = from_physical
@@ -463,7 +464,7 @@ cdef class AnalogChannel (Channel):
                 function_name='comedi_apply_calibration', ret=ret)
         return ret
 
-    cdef _apply_parsed_calibration(self, _Calibration calibration):
+    cdef _apply_parsed_calibration(self, _calibration.Calibration calibration):
         ret = _comedilib_h.comedi_apply_parsed_calibration(
             self._device(), self.subdevice.index, self.index,
             _constant.bitwise_value(self.range),
@@ -474,7 +475,8 @@ cdef class AnalogChannel (Channel):
                 function_name='comedi_apply_parsed_calibration', ret=ret)
         return ret
 
-    def apply_calibration(self, _Calibration calibration=None, path=None):
+    def apply_calibration(self, _calibration.Calibration calibration=None,
+                          path=None):
         """Apply a calibration to this channel configuration
 
         `calibration` may None or a `Calibration` instance.  If it is
index c0a3fbf31b1af173052003e6bcbb650dee7914d6..725d18d859ba39deb14899df9191bdeda27351a2 100644 (file)
@@ -16,8 +16,8 @@
 
 "Replace Comedi's CR_PACK and related macros with a Python class"
 
-cimport _comedi_h
-import constant as _constant
+from pycomedi cimport _comedi_h
+from . import constant as _constant
 
 
 class ChanSpec (_constant.BitwiseOperator):
index 3cd8c2608907532a9bb7acff2e43b720e44f2f4f..6aef3c75038a23673cfb677172b5414da3c02154 100644 (file)
@@ -16,7 +16,7 @@
 
 "Expose `Command` internals at the C level for other Cython modules"
 
-cimport _comedi_h
+from pycomedi cimport _comedi_h
 
 
 cdef class Command (object):
index 38d818dc5ba3d9ac22603dbab0f345063e9ae14c..7975c98f6a71f1c5f993a1cffe6413dfacfc1928 100644 (file)
 cimport libc.stdlib as _stdlib
 import numpy as _numpy
 
-cimport _comedi_h
-cimport _comedilib_h
-from pycomedi import PyComediError as _PyComediError
-from chanspec import ChanSpec as _ChanSpec
-import constant as _constant
+from pycomedi cimport _comedi_h
+from pycomedi cimport _comedilib_h
+from . import PyComediError as _PyComediError
+from . import chanspec as _chanspec
+from . import constant as _constant
 
 
 cdef class Command (object):
@@ -230,7 +230,7 @@ cdef class Command (object):
     def _chanlist_get(self):
         ret = list()
         for i in range(self._cmd.chanlist_len):
-            c = _ChanSpec()
+            c = _chanspec.ChanSpec()
             c.value = self._cmd.chanlist[i]
             ret.append(c)
         return ret
index 196650aef5e36434d53d278e1888af4500bbf282..f99ddcf357022ed8eb5803911453a811a784add3 100644 (file)
@@ -117,7 +117,7 @@ import sys as _sys
 import numpy as _numpy
 import comedi as _comedi
 
-from pycomedi import LOG as _LOG
+from . import LOG as _LOG
 
 
 def bitwise_value(object):
index 9897881f9502eddddf9cd206ddc36ab378b10196..e6745c9e57e08df03d0b1dcc86c7286c4e0b08a2 100644 (file)
 
 "Expose `Device` internals at the C level for other Cython modules"
 
-cimport _comedilib_h
-from device_holder cimport DeviceHolder as _DeviceHolder
-from instruction cimport Insn as _Insn
+from pycomedi cimport _comedilib_h
+from pycomedi cimport device_holder as _device_holder
+from pycomedi cimport instruction as _instruction
 
 
-cdef class Device (_DeviceHolder):
+cdef class Device (_device_holder.DeviceHolder):
     cdef public object file
     cdef public object filename
 
     cpdef do_insnlist(self, insnlist)
-    cpdef do_insn(self, _Insn insn)
+    cpdef do_insn(self, _instruction.Insn insn)
index b0360eb571bdedb184bae8b1112e7356f351033d..18b44bef97d1850bbe9009e8dbccc60ac15f6b5d 100644 (file)
 import os as _os
 cimport libc.stdlib as _stdlib
 
-from pycomedi import LOG as _LOG
-from pycomedi import PyComediError as _PyComediError
-cimport _comedi_h
-cimport _comedilib_h
-import _error
-from calibration import Calibration as _Calibration
-from device_holder cimport DeviceHolder as _DeviceHolder
-from device_holder import DeviceHolder as _DeviceHolder
-from instruction cimport Insn as _Insn
-from instruction import Insn as _Insn
-from subdevice import Subdevice as _Subdevice
-
-
-cdef class Device (_DeviceHolder):
+from . import LOG as _LOG
+from . import PyComediError as _PyComediError
+from pycomedi cimport _comedi_h
+from pycomedi cimport _comedilib_h
+from . import _error
+from . import calibration as _calibration
+from pycomedi cimport device_holder as _device_holder
+from . import device_holder as _device_holder
+from pycomedi cimport instruction as _instruction
+from . import instruction as _instruction
+from . import subdevice as _subdevice
+
+
+cdef class Device (_device_holder.DeviceHolder):
     """A Comedi device
 
     >>> from . import constant
@@ -229,7 +229,7 @@ cdef class Device (_DeviceHolder):
         Returns the number of successfully completed instructions.
         """
         cdef _comedi_h.comedi_insnlist il
-        cdef _Insn i
+        cdef _instruction.Insn i
         il.n_insns = len(insnlist)
         if il.n_insns == 0:
             return
@@ -251,7 +251,7 @@ cdef class Device (_DeviceHolder):
             _error.raise_error(function_name='comedi_do_insnlist', ret=ret)
         return ret
 
-    cpdef do_insn(self, _Insn insn):
+    cpdef do_insn(self, _instruction.Insn insn):
         """Preform a single instruction.
 
         Returns an instruction-specific integer.
@@ -284,14 +284,14 @@ cdef class Device (_DeviceHolder):
         """
         if path is None:
             path = self.get_default_calibration_path()
-        c = _Calibration(device=self)
+        c = _calibration.Calibration(device=self)
         c.from_file(path)
         return c
 
     # extensions to make a more idomatic Python interface
 
     def insn(self):
-        return _Insn()
+        return _instruction.Insn()
 
     def subdevices(self, **kwargs):
         "Iterate through all available subdevices."
@@ -302,5 +302,5 @@ cdef class Device (_DeviceHolder):
             ret.append(self.subdevice(i, **kwargs))
         return ret
 
-    def subdevice(self, index, factory=_Subdevice, **kwargs):
+    def subdevice(self, index, factory=_subdevice.Subdevice, **kwargs):
         return factory(device=self, index=index, **kwargs)
index 9b49a570403dff0ab2eefb1ad9fa7257ad5c78f8..5796b045e29f0b54014ed8d2398311c72ad64973 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright
 
-cimport _comedilib_h
+from pycomedi cimport _comedilib_h
 
 
 cdef class DeviceHolder (object):
index f99c04db667e8713dd709e74b0ab7a5a526f0825..2297544851e0e5d94547c4d95a469159dec3b767 100644 (file)
@@ -16,7 +16,7 @@
 
 "Expose `Insn` internals at the C level for other Cython modules"
 
-cimport _comedi_h
+from pycomedi cimport _comedi_h
 
 
 cdef class Insn (object):
index 28d370a1ae73c5d6ff730331affeac391ff6a09e..c25939fc58c8dab14ee5692b428d14216726f5fc 100644 (file)
 cimport libc.stdlib as _stdlib
 import numpy as _numpy
 
-cimport _comedi_h
-cimport _comedilib_h
-from pycomedi import PyComediError as _PyComediError
-from chanspec import ChanSpec as _ChanSpec
-import constant as _constant
+from pycomedi cimport _comedi_h
+from pycomedi cimport _comedilib_h
+from . import PyComediError as _PyComediError
+from . import chanspec as _chanspec
+from . import constant as _constant
 
 
 cdef class Insn (object):
@@ -125,7 +125,7 @@ cdef class Insn (object):
     subdev = property(fget=_subdev_get, fset=_subdev_set)
 
     def _chanspec_get(self):
-        c = _ChanSpec()
+        c = _chanspec.ChanSpec()
         c.value = self._insn.chanspec
         return c
     def _chanspec_set(self, value):
index aadb336f01d75aa4d760a6b2b1d617a8ceb92fe1..2f5ccb68e5a35fe2e0512796f2a5ff34c1b9a6e1 100644 (file)
@@ -18,8 +18,8 @@
 
 import os as _os
 
-cimport _comedilib_h
-import constant as _constant
+from pycomedi cimport _comedilib_h
+from . import constant as _constant
 
 
 def set_loglevel(level):
index ac74ceeaefd9ad0470e53ddd8513a3eaccc720b6..0888ec1a2fa868b122117556d26d491e6da9f93f 100644 (file)
 
 "Expose `Range` internals at the C level for other Cython modules"
 
-cimport _comedilib_h
-from constant cimport BitwiseOperator as _BitwiseOperator
+from pycomedi cimport _comedilib_h
+from . import constant as _constant
 
 
-cdef class Range (_BitwiseOperator):
+cdef class Range (_constant.BitwiseOperator):
     cdef _comedilib_h.comedi_range range
 
     cdef set_comedi_range(self, _comedilib_h.comedi_range range)
index 7ceb5791552a792c96aaa8c62d218cbc154ceb30..6171a83c0af291c5c43338ef14b02e8c877d1a38 100644 (file)
 
 "Wrap `comedi_range` in a Python class"
 
-from constant cimport BitwiseOperator as _BitwiseOperator
-import constant as _constant
+from pycomedi import constant as _constant
+from . import constant as _constant
 
 
-cdef class Range (_BitwiseOperator):
+cdef class Range (_constant.BitwiseOperator):
     """Stucture displaying a possible channel range
 
     Warning: You probably want to use `channel.Channel.get_range()` or
index 1b85d28face06d168ba32b27ca6857441719194d..31bfcf65e2e1c697eff58bffa93b8fc5243abb4c 100644 (file)
 
 "Expose `Subdevice` internals at the C level for other Cython modules"
 
-cimport _comedilib_h
-from command cimport Command as _Command
-from subdevice_holder cimport SubdeviceHolder as _SubdeviceHolder
+from pycomedi cimport _comedilib_h
+from pycomedi cimport command as _command
+from pycomedi cimport subdevice_holder as _subdevice_holder
 
 
-cdef class Subdevice (_SubdeviceHolder):
+cdef class Subdevice (_subdevice_holder.SubdeviceHolder):
     cpdef dio_bitfield(self, unsigned int bits=*, write_mask=*, base_channel=*)
 
 
 cdef class StreamingSubdevice (Subdevice):
-    cdef public _Command cmd
+    cdef public _command.Command cmd
     cdef public list _command_test_errors
index 6acb33a6697c9e2f42cbd7a53b28811aa0b7c5fb..a04def28104d0bd88cf74c07b2be81873c1997e2 100644 (file)
 
 "Wrap subdevice-wide Comedi functions in `Subdevice` and related classes"
 
-cimport _comedi_h
-cimport _comedilib_h
-cimport command as _command
-from pycomedi import LOG as _LOG
-import _error
-from channel import Channel as _Channel
-import chanspec as _chanspec
-import constant as _constant
-import command as _command
-from subdevice_holder cimport SubdeviceHolder as _SubdeviceHolder
-from subdevice_holder import SubdeviceHolder as _SubdeviceHolder
-from utility import _subdevice_dtype, _subdevice_typecode
-
-
-cdef class Subdevice (_SubdeviceHolder):
+from pycomedi cimport _comedi_h
+from pycomedi cimport _comedilib_h
+from pycomedi cimport command as _command
+from . import LOG as _LOG
+from . import _error as _error
+from . import channel as _channel
+from . import constant as _constant
+from . import command as _command
+from pycomedi cimport subdevice_holder as _subdevice_holder
+from . import subdevice_holder as _subdevice_holder
+from .utility import _subdevice_dtype, _subdevice_typecode
+
+
+cdef class Subdevice (_subdevice_holder.SubdeviceHolder):
     """Class bundling subdevice-related functions
 
     >>> from .device import Device
@@ -158,7 +157,7 @@ cdef class Subdevice (_SubdeviceHolder):
             ret.append(self.channel(i, **kwargs))
         return ret
 
-    def channel(self, index, factory=_Channel, **kwargs):
+    def channel(self, index, factory=_channel.Channel, **kwargs):
         "`Channel` instance for the `index`\ed channel."
         return factory(subdevice=self, index=index, **kwargs)
 
index daa982c65b06dff29de04d3ab0a0b796c3d27d10..0cf8b0f29d80fc88459a30679067aa85d9558193 100644 (file)
@@ -1,11 +1,11 @@
 # Copyright
 
-cimport _comedilib_h
-from device_holder cimport DeviceHolder as _DeviceHolder
+from pycomedi cimport _comedilib_h
+from pycomedi cimport device_holder as _device_holder
 
 
 cdef class SubdeviceHolder (object):
-    cdef public _DeviceHolder device
+    cdef public _device_holder.DeviceHolder device
     cdef public int index
 
     cdef _comedilib_h.comedi_t * _device(self) except *
index 981ce22f6b8b7cc6f1096d334b58cb3180e35c73..81d869640f9966a733cb8301f57fffdd70bc7909 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright
 
-cimport _comedilib_h
+from pycomedi cimport _comedilib_h
 
 
 cdef class SubdeviceHolder (object):