From 4c6a4178f82264db69f9e6eb497ec4ae47b68708 Mon Sep 17 00:00:00 2001 From: Guilhem Saurel <guilhem.saurel@laas.fr> Date: Wed, 2 Oct 2019 21:54:23 +0200 Subject: [PATCH] [Python 3] fix imports --- src/dynamic_graph/__init__.py | 19 +++++++++----- src/dynamic_graph/entity.py | 9 +++---- src/dynamic_graph/script_shortcuts.py | 6 ++--- src/dynamic_graph/signal_base.py | 36 ++++++++++++++------------- src/dynamic_graph/tools.py | 2 -- 5 files changed, 39 insertions(+), 33 deletions(-) diff --git a/src/dynamic_graph/__init__.py b/src/dynamic_graph/__init__.py index 605b829..a585334 100644 --- a/src/dynamic_graph/__init__.py +++ b/src/dynamic_graph/__init__.py @@ -5,15 +5,22 @@ Author: Florent Lamiraux import sys -import DLFCN -import entity # noqa -import signal_base # noqa +from . import entity # noqa +from . import signal_base # noqa + +try: + from DLFCN import RTLD_NOW, RTLD_GLOBAL +except ModuleNotFoundError: # Python 3 + from os import RTLD_NOW, RTLD_GLOBAL + +flags = sys.getdlopenflags() # Import C++ symbols in a global scope # This is necessary for signal compiled in different modules to be compatible -flags = sys.getdlopenflags() -sys.setdlopenflags(DLFCN.RTLD_NOW | DLFCN.RTLD_GLOBAL) -from wrap import * # noqa + +sys.setdlopenflags(RTLD_NOW | RTLD_GLOBAL) +from .wrap import * # noqa + # Recover previous flags sys.setdlopenflags(flags) diff --git a/src/dynamic_graph/entity.py b/src/dynamic_graph/entity.py index 5ec7966..ca6643d 100644 --- a/src/dynamic_graph/entity.py +++ b/src/dynamic_graph/entity.py @@ -3,12 +3,11 @@ Author: Florent Lamiraux, Nicolas Mansard """ -import new +import types from enum import Enum -import signal_base -import wrap -from attrpath import setattrpath +from . import signal_base, wrap +from .attrpath import setattrpath if 'display' not in globals().keys(): @@ -248,7 +247,7 @@ class Entity(object): docstring = wrap.entity_get_command_docstring(self.obj, cmdName) cmd = Entity.createCommandBind(cmdName, docstring) # Limitation (todo): does not handle for path attribute name (see setattrpath). - setattr(self, cmdName, new.instancemethod(cmd, self, self.__class__)) + setattr(self, cmdName, types.MethodType(cmd, self)) def boundAllNewCommands(self): """ diff --git a/src/dynamic_graph/script_shortcuts.py b/src/dynamic_graph/script_shortcuts.py index 79b7ced..7ee4ca6 100644 --- a/src/dynamic_graph/script_shortcuts.py +++ b/src/dynamic_graph/script_shortcuts.py @@ -11,9 +11,9 @@ # Changing prompt import sys -from dynamic_graph.entity import Entity -from dynamic_graph.signal_base import SignalBase -from matlab import matlab +from .entity import Entity +from .matlab import matlab +from .signal_base import SignalBase # Enables shortcut "name" diff --git a/src/dynamic_graph/signal_base.py b/src/dynamic_graph/signal_base.py index 1b91904..d589e41 100644 --- a/src/dynamic_graph/signal_base.py +++ b/src/dynamic_graph/signal_base.py @@ -5,8 +5,10 @@ """ import re -import entity -import wrap +from .wrap import (create_signal_wrapper, signal_base_display, signal_base_display_dependencies, + signal_base_get_class_name, signal_base_get_name, signal_base_get_time, signal_base_get_value, + signal_base_getPlugged, signal_base_isPlugged, signal_base_recompute, signal_base_set_time, + signal_base_set_value, signal_base_unplug) def stringToTuple(vector): @@ -110,7 +112,7 @@ def objectToString(obj): else: # vector return tupleToString(obj) - elif isinstance(obj, entity.Entity): + elif hasattr(obj, 'name'): return obj.name else: return str(obj) @@ -176,7 +178,7 @@ class SignalBase(object): """ Get time of signal """ - return wrap.signal_base_get_time(self.obj) + return signal_base_get_time(self.obj) @time.setter def time(self, val): @@ -186,7 +188,7 @@ class SignalBase(object): Input: - an integer """ - return wrap.signal_base_set_time(self.obj, val) + return signal_base_set_time(self.obj, val) @property def value(self): @@ -210,7 +212,7 @@ class SignalBase(object): >>> s.value (2.5, 0.1, 100.0) """ - string = wrap.signal_base_get_value(self.obj) + string = signal_base_get_value(self.obj) return stringToObject(string) @value.setter @@ -220,64 +222,64 @@ class SignalBase(object): If the signal is plugged, it will be unplugged """ string = objectToString(val) - return wrap.signal_base_set_value(self.obj, string) + return signal_base_set_value(self.obj, string) def getName(self): """ Get name of signal """ - return wrap.signal_base_get_name(self.obj) + return signal_base_get_name(self.obj) @property def name(self): """ Get name of signal """ - return wrap.signal_base_get_name(self.obj) + return signal_base_get_name(self.obj) def getClassName(self): """ Get class name of signal """ - return wrap.signal_base_get_class_name(self.obj) + return signal_base_get_class_name(self.obj) def recompute(self, time): """ Force signal to recompute the value at given time. """ - return wrap.signal_base_recompute(self.obj, time) + return signal_base_recompute(self.obj, time) def unplug(self): """ Unplug a PTR signal. """ - return wrap.signal_base_unplug(self.obj) + return signal_base_unplug(self.obj) def isPlugged(self): """ Return whether a signal is plugged. """ - return wrap.signal_base_isPlugged(self.obj) + return signal_base_isPlugged(self.obj) def getPlugged(self): """ Return the plugged signal. """ - return SignalBase(obj=wrap.signal_base_getPlugged(self.obj)) + return SignalBase(obj=signal_base_getPlugged(self.obj)) def __str__(self): """ Print signal in a string """ - return wrap.signal_base_display(self.obj) + return signal_base_display(self.obj) def displayDependencies(self, iter): """ Print signal dependencies in a string """ - return (wrap.signal_base_display_dependencies(self.obj, iter)) + return (signal_base_display_dependencies(self.obj, iter)) class SignalWrapper(SignalBase): def __init__(self, name, type, func): - super(SignalWrapper, self).__init__(name, wrap.create_signal_wrapper(name, type, func)) + super(SignalWrapper, self).__init__(name, create_signal_wrapper(name, type, func)) diff --git a/src/dynamic_graph/tools.py b/src/dynamic_graph/tools.py index 75173fd..5cfe45a 100644 --- a/src/dynamic_graph/tools.py +++ b/src/dynamic_graph/tools.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- # Copyright 2011, Florent Lamiraux, Thomas Moulard, JRL, CNRS/AIST -from __future__ import print_function - def addTrace(robot, trace, entityName, signalName, autoRecompute=True): """ -- GitLab