python: Fix params/proxy import loop

There is a circular dependency between params and proxy at import
time. This causes issues for Python 3. Add the imports to the specific
methods with the dependencies to make the import happen when the
method is executed instead.

Change-Id: I770112fd3c07c395459e204976942bda3dc7236f
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15993
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Juha Jäykkä <juha.jaykka@arm.com>
This commit is contained in:
Andreas Sandberg
2019-01-26 09:23:16 +00:00
parent a3c81f9055
commit f4d3080f45
2 changed files with 5 additions and 6 deletions

View File

@@ -73,12 +73,15 @@ from . import ticks
from .util import *
def isSimObject(*args, **kwargs):
from . import SimObject
return SimObject.isSimObject(*args, **kwargs)
def isSimObjectSequence(*args, **kwargs):
from . import SimObject
return SimObject.isSimObjectSequence(*args, **kwargs)
def isSimObjectClass(*args, **kwargs):
from . import SimObject
return SimObject.isSimObjectClass(*args, **kwargs)
allParams = {}
@@ -175,6 +178,7 @@ class ParamDesc(object):
def __getattr__(self, attr):
if attr == 'ptype':
from . import SimObject
ptype = SimObject.allClasses[self.ptype_str]
assert isSimObjectClass(ptype)
self.ptype = ptype
@@ -2158,5 +2162,3 @@ __all__ = ['Param', 'VectorParam',
'NextEthernetAddr', 'NULL',
'MasterPort', 'SlavePort',
'VectorMasterPort', 'VectorSlavePort']
from . import SimObject

View File

@@ -50,7 +50,6 @@ from __future__ import absolute_import
import copy
from . import params
class BaseProxy(object):
def __init__(self, search_self, search_up):
@@ -235,6 +234,7 @@ class AllProxy(BaseProxy):
return 'all'
def isproxy(obj):
from . import params
if isinstance(obj, (BaseProxy, params.EthernetAddr)):
return True
elif isinstance(obj, (list, tuple)):
@@ -264,6 +264,3 @@ Self = ProxyFactory(search_self = True, search_up = False)
# limit exports on 'from proxy import *'
__all__ = ['Parent', 'Self']
# see comment on imports at end of __init__.py.
import params # for EthernetAddr