/usr/lib/python2.7/dist-packages/woo/_monkey/aliases.py is in python-woo 1.0+dfsg1-1+b4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | '''Define various convenience attributes, such as ``Node.dem`` for accessing DEM data of a node (equivalent to ``node->getData<DemData>()`` in c++).'''
from woo import core
from woo.core import Master
import sys, warnings
core.Field.nod=core.Field.nodes
## proxy for attribute-like access to Scene.labels
## http://stackoverflow.com/questions/16061041/proxy-class-for-accessing-other-class-items-as-attributes-getitem-infinite
class LabelMapperProxy(object):
'Proxy for attribute-like access to :obj:`woo.core.LabelMapper`.'
def __init__(self,mapper,prefix=''): self.__dict__['_mapper'],self.__dict__['_prefix']=mapper,prefix
def __getattr__(self,key):
# some mapper method was requested
if key=='__dir__': return lambda: self._mapper.__dir__(self._prefix)
if key.startswith('_'):
if self._prefix: raise AttributeError('Attributes/methods starting with _ must be obtained from root LabelMapper or proxy (this instance has prefix "'+self._prefix+'")')
else: return getattr(self._mapper,key)
# submodule requested, return proxy with new prefix
if self._mapper._whereIs(self._prefix+key)==core.LabelMapper.inMod:
return LabelMapperProxy(self._mapper,prefix=self._prefix+key+'.')
# return object
return self._mapper[self._prefix+key]
def __setattr__(self,key,val): self._mapper[self._prefix+key]=val
def __delattr__(self,key): del self._mapper[self._prefix+key]
# this is necessary for py3k
def __dir__(self): return self._mapper.__dir__(prefix=self._prefix)
# def __len__(self): return self._mapper.__len__(prefix=self._prefix)
# def _newModule(self,mod): return self._mapper._newModule(self._prefix+mod)
def Scene_lab(scene):
return LabelMapperProxy(scene.labels,prefix='')
core.Scene.lab=property(Scene_lab)
## deprecated classes
# if old class name is used, the new object is constructed and a warning is issued about old name being used
# keep chronologically ordered, oldest first; script/rename-class.py appends at the end
_deprecated={
('woo.dem','FlexFacet'):('woo.fem','Membrane'),
('woo.gl','Gl1_FlexFacet'):('woo.gl','Gl1_Membrane'),
('woo.dem','In2_FlexFacet_ElastMat'):('woo.fem','In2_Membrane_ElastMat'),
#
('woo.dem','ParticleFactory'):('woo.dem','ParticleInlet'),
('woo.dem','RandomFactory'):('woo.dem','RandomInlet'),
('woo.dem','BoxFactory'):('woo.dem','BoxInlet'),
('woo.dem','CylinderFactory'):('woo.dem','CylinderInlet'),
('woo.dem','BoxFactory2d'):('woo.dem','BoxInlet2d'),
('woo.dem','ConveyorFactory'):('woo.dem','ConveyorInlet'),
('woo.dem','BoxDeleter'):('woo.dem','BoxOutlet'),
#
('woo.gl','TraceGlRep'):('woo.dem','TraceGlRep'),
('woo.gl','ScalarRange'):('woo.core','ScalarRange'),
('woo.gl','NodeGlRep'):('woo.core','NodeVisRep'),
#
### END_RENAMED_CLASSES_LIST ### (do not delete this line; scripts/rename-class.py uses it
}
def injectDeprecated():
''' Inject decprecated classes into woo modules as needed.
'''
proxyNamespace={}
class warnWrap:
def __init__(self,_old,_new):
self.old,self.new=_old,_new
def __call__(self,*args,**kw):
warnings.warn("%s.%s was renamed to %s.%s; update your code!"%(self.old[0],self.old[1],self.new.__module__,self.new.__name__),DeprecationWarning,stacklevel=2);
return self.new(*args,**kw)
# deprecated names
for deprec,curr in _deprecated.items():
# try to import both modules
try: mDep,mCurr=sys.modules[deprec[0]],sys.modules[curr[0]]
except KeyError: continue
# new name not found?!
try: setattr(mDep,deprec[1],warnWrap(deprec,getattr(mCurr,curr[1])))
except AttributeError: pass
injectDeprecated()
try:
from woo import dem
dem.DemField.par=dem.DemField.particles
dem.DemField.con=dem.DemField.contacts
dem.Particle.mat=dem.Particle.material
core.Scene.dem=property(lambda s: dem.DemField.sceneGetField(s))
core.Scene.hasDem=property(lambda s: dem.DemField.sceneHasField(s))
# DemData defines those methods, which are used for transparent access to respective data field
core.Node.dem=property(dem.DemData._getDataOnNode,dem.DemData._setDataOnNode)
# those are deprecated
def deprecWrapper(self,_oldName,_newName,_newFunc,*args,**kw):
warnings.warn('The %s function is deprecated, use %s instead.'%(_oldName,_newName),DeprecationWarning,stacklevel=3)
return _newFunc(self,*args,**kw)
dem.ParticleContainer.append=lambda self, *args,**kw: deprecWrapper(self,'dem.ParticleContainer.append','dem.ParticleContainer.add',dem.ParticleContainer.add,*args,**kw)
dem.ParticleContainer.appendClumped=lambda self, *args,**kw: deprecWrapper(self,'dem.ParticleContainer.appendClumped','dem.ParticleContainer.addClumped',dem.ParticleContainer.addClumped,*args,**kw)
# nicer names
import woo.utils
dem.DemField.minimalEngines=staticmethod(woo.utils.defaultEngines)
dem.Sphere.make=staticmethod(woo.utils.sphere)
dem.Ellipsoid.make=staticmethod(woo.utils.ellipsoid)
dem.Capsule.make=staticmethod(woo.utils.capsule)
dem.Wall.make=staticmethod(woo.utils.wall)
dem.Wall.makeBox=staticmethod(woo.utils.wallBox)
dem.InfCylinder.make=staticmethod(woo.utils.infCylinder)
dem.Facet.make=staticmethod(woo.utils.facet)
dem.Rod.make=staticmethod(woo.utils.rod)
dem.Truss.make=staticmethod(woo.utils.truss)
except ImportError:
core.Scene.hasDem=lambda o: False
try:
from woo import fem
fem.Membrane.make=staticmethod(woo.utils.membrane)
fem.Tetra.make=staticmethod(woo.utils.tetra)
fem.Tet4.make=staticmethod(woo.utils.tet4)
except ImportError:
pass
try:
from woo import sparc
core.Scene.sparc=property(lambda s: sparc.SparcField.sceneGetField(s))
core.Scene.hasSparc=property(lambda s: sparc.SparcField.sceneHasField(s))
core.Node.sparc=property(sparc.SparcData._getDataOnNode,sparc.SparcData._setDataOnNode)
except ImportError:
core.Scene.hasSparc=lambda o: False
try:
import woo.cld
core.Scene.clDem=property(lambda s: cld.CLDemField.sceneGetField(s))
core.Scene.hasClDem=property(lambda s: woo.clDem.CLDemField.sceneHasField(s))
core.Node.clDem=property(woo.cld.CLDemData._getDataOnNode,woo.cld.CLDemData._setDataOnNode)
except ImportError:
core.Scene.hasClDem=lambda o: False
try:
from woo import gl
core.Node.gl=property(gl.GlData._getDataOnNode,gl.GlData._setDataOnNode)
except ImportError: pass
#try:
# from woo import ancf
# core.Node.ancf=property(ancf.AncfData._getDataOnNode,ancf.AncfData._setDataOnNode)
#except ImportError: pass
|