ccpnmodel.ccpncore.memops.metamodel package

Submodules

ccpnmodel.ccpncore.memops.metamodel.Constants module

Module Documentation here

class ccpnmodel.ccpncore.memops.metamodel.Constants.DummyClass[source]

Bases: object

exception ccpnmodel.ccpncore.memops.metamodel.Constants.MemopsError[source]

Bases: Exception

Base class for all Memops Errors

ccpnmodel.ccpncore.memops.metamodel.MetaModel module

Module Documentation here

class ccpnmodel.ccpncore.memops.metamodel.MetaModel.AbstractDataType(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.ConstrainedElement, ccpnmodel.ccpncore.memops.metamodel.MetaModel.HasSupertype

abstract class for abstract data types (classes, simple and complex dataypes)

allowedTags = {}
checkValid(complete=False)[source]

Check that object is valid.

getAllConstraints()[source]

get all constraints, including those from supertypes

getConstraint(name)[source]

Get constraint called name Return None if nothing found

Recursively search supertypes till you find constraint

parameterData = {'constraints': {'type': 'content'}, 'container': {'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isAbstract': {'default': False, 'type': 'Boolean'}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isLeaf': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'isRoot': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'subtypes': {'hicard': -1, 'setterFunc': 'unsettable'}, 'supertype': {'default': None, 'getterFunc': 'getSupertype', 'setterFunc': 'unsettable'}, 'supertypes': {'hicard': -1, 'setterFunc': 'setSupertypes'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': True, 'type': 'Token'}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.AbstractValue(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.ConstrainedElement

abstract class for abstract values (parameters, attributes, and roles)

allowedTags = {'originalGuid': None}
checkValid(complete=False)[source]

Check that object is valid.

parameterData = {'constraints': {'type': 'content'}, 'container': {'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'hicard': {'default': 1, 'type': <class 'int'>}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isOrdered': {'default': False, 'type': 'Boolean'}, 'isUnique': {'default': True, 'type': 'Boolean'}, 'locard': {'default': 0, 'type': <class 'int'>}, 'name': {'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.ClassElement(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.AbstractValue

abstract class class elements (attributes and roles)

allowedTags = {'originalGuid': None}
checkValid(complete=False)[source]

Check that object is valid.

parameterData = {'baseName': {'type': 'Token'}, 'changeability': {'default': 'changeable', 'enumeration': ('changeable', 'frozen', 'add_only'), 'type': 'Token'}, 'constraints': {'type': 'content'}, 'container': {'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'hicard': {'default': 1, 'type': <class 'int'>}, 'isAbstract': {'default': False, 'type': 'Boolean'}, 'isAutomatic': {'default': False, 'type': 'Boolean'}, 'isDerived': {'default': False, 'type': 'Boolean'}, 'isImplementation': {'default': False, 'type': 'Boolean'}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isOrdered': {'default': False, 'type': 'Boolean'}, 'isUnique': {'default': True, 'type': 'Boolean'}, 'locard': {'default': 0, 'type': <class 'int'>}, 'name': {'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': True, 'type': 'Token'}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.ComplexDataType(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.AbstractDataType

Abstract superclass of MetaClass and MetaDataObjType

addConstructorCodeStub(tag, value)[source]

Add constructorCodeStub

allowedTags = {'specificImplementation': ('db', 'file')}
checkValid(complete=False)[source]

Check that object is valid.

getAllAttributes()[source]

get contained atttributes, including those from supertypes

getAllOperations()[source]

get contained operations, including those from supertypes

getAttribute(name)

Get contained element called name Return None if nothing found

Recursively search supertypes till you find element

getElement(name)[source]

Get contained element called name Return None if nothing found

Recursively search supertypes till you find element

getOperation(name)

Get contained element called name Return None if nothing found

Recursively search supertypes till you find element

inheritDown()[source]

Copy all contained elements and constraints down to subtypes

parameterData = {'attributes': {'namelist': '_ComplexDataType__attributeNames', 'type': 'content'}, 'constraints': {'type': 'content'}, 'constructorCodeStubs': {'default': {}, 'type': 'StringDict'}, 'container': {'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isAbstract': {'default': False, 'type': 'Boolean'}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isLeaf': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'isRoot': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'operations': {'namelist': '_ComplexDataType__operationNames', 'type': 'content'}, 'subtypes': {'hicard': -1, 'setterFunc': 'unsettable'}, 'supertype': {'default': None, 'getterFunc': 'getSupertype', 'setterFunc': 'unsettable'}, 'supertypes': {'hicard': -1, 'setterFunc': 'setSupertypes'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': True, 'type': 'Token'}}
removeConstructorCodeStub(tag)[source]

Remove existing ConstructorCodeStub

class ccpnmodel.ccpncore.memops.metamodel.MetaModel.ConstrainedElement(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement

abstract class for elements

allowedTags = {}
checkValid(complete=False)[source]

Check that object is valid.

getAllConstraints()[source]

Not really necessary here, but in some subclasses it is overridden.

getConstraint(name)[source]

get contraint by name

parameterData = {'constraints': {'type': 'content'}, 'container': {'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.HasParameters(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement

abstract class for elements that have parameters , i.e. MetaOperations and MetaExceptions

allowedTags = {}
checkValid(complete=False)[source]

Check that object is valid.

parameterData = {'container': {'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'parameters': {'namelist': '_HasParameters__parameterNames', 'type': 'content'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': False, 'type': 'Token'}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.HasSupertype(**params)[source]

Bases: object

Abstract class to provide supertype/subtype functionality

addSupertype(supertype)[source]

add supertype/subtypes link

getAllElements(clazz=None)[source]

utility function - to get all elements, possibly only of a given type

NB should be private in languages that support the concept.

getAllSubtypes()[source]

recursively get list of self and all its subtypes self is the first element of the list

getAllSupertypes()[source]

recursively get list of self and all its supertypes self is the first element of the list. Search is depth-first and repects order of individual supertypes

getNonAbstractSubtypes()[source]

recursively get list of self and all its non-abstract subtypes

getSupertype()[source]

get supertype (derived attribute)

removeSupertype(supertype)[source]

remove supertype/subtypes link

setSupertypes(supertypes)[source]

setter for link supertypes

class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaAttribute(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.ClassElement

class for roles (link ends)

allowedTags = {'forceUndoNotify': ('False',), 'originalGuid': None}
checkValid(complete=False)[source]

Check that object is valid.

parameterData = {'baseName': {'type': 'Token'}, 'changeability': {'default': 'changeable', 'enumeration': ('changeable', 'frozen', 'add_only'), 'type': 'Token'}, 'constraints': {'type': 'content'}, 'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.ComplexDataType'>}, 'defaultValue': {'default': [], 'hicard': -1}, 'documentation': {'default': '', 'type': <class 'str'>}, 'forceUndoNotify': {'default': True, 'type': 'Boolean'}, 'guid': {'type': <class 'str'>}, 'hicard': {'default': 1, 'type': <class 'int'>}, 'isAbstract': {'default': False, 'type': 'Boolean'}, 'isAutomatic': {'default': False, 'type': 'Boolean'}, 'isDerived': {'default': False, 'type': 'Boolean'}, 'isImplementation': {'default': False, 'type': 'Boolean'}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isOrdered': {'default': False, 'type': 'Boolean'}, 'isUnique': {'default': True, 'type': 'Boolean'}, 'locard': {'default': 0, 'type': <class 'int'>}, 'name': {'type': 'Token'}, 'scope': {'default': 'instance_level', 'enumeration': ('instance_level', 'classifier_level'), 'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'valueType': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.AbstractDataType'>}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': True, 'type': 'Token'}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaClass(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.ComplexDataType

class for normal Classes

addDestructorCodeStub(tag, value)[source]

Add destructorCodeStub

addKeyName(name)[source]

add mainkey name to list

addPostConstructorCodeStub(tag, value)[source]

Add postConstructorCodeStub

addPostDestructorCodeStub(tag, value)[source]

Add destructorCodeStub

allowedTags = {'specificImplementation': ('db', 'file')}
checkValid(complete=False)[source]

Check that object is valid.

delete()[source]

remove links to other MetaElements, check that delete is legal. Intended for elements specific to some implementation NB delete does not cascade.

getAllClassElements()[source]

get all roles and attributes, included inherited ones

getAllMultipleClassElements()[source]

get all roles and attributes with hicard != 1, included inherited ones

getAllRoles()[source]

get contained roles, including those from supertypes

getAllSingleClassElements()[source]

get roles and attributes with hicard == 1, included inherited ones

getChildRoles()[source]

get child roles

getClassElements()[source]

get roles and attributes

getKeyNames()[source]

get keyNames list, from class or a superclass

getMultipleClassElements()[source]

get roles and attributes with hicard != 1

getParentClass()[source]

get class on other side of parent role

getParentRole()[source]

get class on other side of parent role

getRole(name)

Get contained element called name Return None if nothing found

Recursively search supertypes till you find element

getSingleClassElements()[source]

get roles and attributes with hicard == 1

parameterData = {'attributes': {'namelist': '_ComplexDataType__attributeNames', 'type': 'content'}, 'constraints': {'type': 'content'}, 'constructorCodeStubs': {'default': {}, 'type': 'StringDict'}, 'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage'>}, 'destructorCodeStubs': {'default': {}, 'type': 'StringDict'}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isAbstract': {'default': False, 'type': 'Boolean'}, 'isDerived': {'default': False, 'type': 'Boolean'}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isLeaf': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'isRoot': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'isSingleton': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'keyNames': {'default': [], 'getterFunc': 'getKeyNames', 'hicard': -1, 'type': <class 'str'>}, 'name': {'type': 'Token'}, 'operations': {'namelist': '_ComplexDataType__operationNames', 'type': 'content'}, 'parentRole': {'default': None, 'getterFunc': 'getParentRole', 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaRole'>}, 'partitionsChildren': {'default': False, 'type': 'Boolean'}, 'postConstructorCodeStubs': {'default': {}, 'type': 'StringDict'}, 'postDestructorCodeStubs': {'default': {}, 'type': 'StringDict'}, 'roles': {'namelist': '_MetaClass__roleNames', 'type': 'content'}, 'subtypes': {'hicard': -1, 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaClass'>}, 'supertype': {'default': None, 'getterFunc': 'getSupertype', 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaClass'>}, 'supertypes': {'hicard': -1, 'isLink': True, 'setterFunc': 'setSupertypes', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaClass'>}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': True, 'type': 'Token'}}
removeDestructorCodeStub(tag)[source]

Remove existing DestructorCodeStub

removeKeyName(name)[source]

remove mainkey name from list

removePostConstructorCodeStub(tag)[source]

Remove existing PostConstructorCodeStub

removePostDestructorCodeStub(tag)[source]

Remove existing DestructorCodeStub

class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaConstant(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement

class for static constants

allowedTags = {}
checkValid(complete=False)[source]

Check that object is valid.

parameterData = {'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'value': {}, 'valueType': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataType'>}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaConstraint(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement

abstract class for elements

addCodeStub(tag, value)[source]

Add codeStub

allowedTags = {}
checkValid(complete=False)[source]

Check that object is valid.

parameterData = {'codeStubs': {'default': {}, 'type': 'StringDict'}, 'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.ConstrainedElement'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}}
removeCodeStub(tag)[source]

Remove existing CodeStub

class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataObjType(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.ComplexDataType

class for complex data objects

allowedTags = {'specificImplementation': ('db', 'file')}
checkValid(complete=False)[source]

Check that object is valid.

getIsChangeable()[source]
parameterData = {'attributes': {'namelist': '_ComplexDataType__attributeNames', 'type': 'content'}, 'constraints': {'type': 'content'}, 'constructorCodeStubs': {'default': {}, 'type': 'StringDict'}, 'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isAbstract': {'default': False, 'type': 'Boolean'}, 'isChangeable': {'getterFunc': 'getIsChangeable', 'type': <class 'int'>}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isLeaf': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'isRoot': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'operations': {'namelist': '_ComplexDataType__operationNames', 'type': 'content'}, 'subtypes': {'hicard': -1, 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataObjType'>}, 'supertype': {'default': None, 'getterFunc': 'getSupertype', 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataObjType'>}, 'supertypes': {'hicard': -1, 'isLink': True, 'setterFunc': 'setSupertypes', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataObjType'>}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': True, 'type': 'Token'}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataType(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.AbstractDataType

class for data types

addTypeCode(tag, value)[source]

Add typeCode

allowedTags = {}
checkValid(complete=False)[source]

Check that object is valid.

isValid(value)[source]

This function is needed because value constants must be checked for validity as part of the MetaModel. NB for enumerations values must be added to the enumeration before the check works.

parameterData = {'constraints': {'type': 'content'}, 'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'enumeration': {'default': [], 'hicard': -1}, 'guid': {'type': <class 'str'>}, 'isAbstract': {'default': False, 'type': 'Boolean'}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isLeaf': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'isOpen': {'default': True, 'type': 'Boolean'}, 'isRoot': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'length': {'default': None, 'type': <class 'int'>}, 'name': {'type': 'Token'}, 'subtypes': {'hicard': -1, 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataType'>}, 'supertype': {'default': None, 'getterFunc': 'getSupertype', 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataType'>}, 'supertypes': {'hicard': -1, 'isLink': True, 'setterFunc': 'setSupertypes', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataType'>}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'typeCodes': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': True, 'type': 'Token'}}
removeTypeCode(tag)[source]

Remove existing TypeCode

class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaException(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.HasParameters, ccpnmodel.ccpncore.memops.metamodel.MetaModel.HasSupertype

class for exceptions

allowedTags = {}
checkValid(complete=False)[source]

Check that object is valid.

getAllParameters()[source]
getElement(name)

Get contained element called name Return None if nothing found

Recursively search supertypes till you find element

getParameter(name)

Get contained element called name Return None if nothing found

Recursively search supertypes till you find element

parameterData = {'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'parameters': {'namelist': '_HasParameters__parameterNames', 'type': 'content'}, 'scope': {'default': 'instance_level', 'enumeration': ('instance_level', 'classifier_level'), 'isFixed': True, 'type': 'Token'}, 'subtypes': {'hicard': -1, 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaException'>}, 'supertype': {'default': None, 'isLink': True, 'setterFunc': 'setSupertype', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaException'>}, 'supertypes': {'hicard': -1, 'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaException'>}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': False, 'type': 'Token'}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement(**params)[source]

Bases: object

Base class for all MetaModel elements

addTaggedValue(tag, value)[source]

Add tagged value

allowedTags = {}
canAccess(target)[source]

check if target is accessible from self

checkValid(complete=False)[source]

Check that object is valid. Recursively checks contents Includes general attribute checks

getUsename()[source]

getter for semiderived attribute usename

guidDict = None
metaObjFromQualName(qname)[source]

find MetaObject given qualified name

parameterData = {'container': {'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}}
qualifiedName()[source]

Get qualified name of MetaElement relative to topmost package (‘root’)

removeTaggedValue(tag)[source]

Remove existing tagged value

topPackage()[source]

return root package (topmost container)

class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaOperation(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.HasParameters

class for operations

addCodeStub(tag, value)[source]

Add codeStub

addException(value)[source]

Add exception to exceptions list

allowedTags = {'originalGuid': None}
checkValid(complete=False)[source]

Check that object is valid.

getElement(name)[source]

Get contained element called name Return None if nothing found

getParameter(name)

Get contained element called name Return None if nothing found

parameterData = {'codeStubs': {'default': {}, 'type': 'StringDict'}, 'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.ComplexDataType'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'exceptions': {'default': [], 'hicard': -1, 'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaException'>}, 'guid': {'type': <class 'str'>}, 'isAbstract': {'default': False, 'type': 'Boolean'}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isQuery': {'type': 'Boolean'}, 'name': {'type': 'Token'}, 'opSubType': {'default': None, 'type': 'Token'}, 'opType': {'enumeration': ('get', 'findFirst', 'findAll', 'sorted', 'set', 'add', 'remove', 'new', 'init', 'clone', 'fullDelete', 'fullUnDelete', 'checkDelete', 'singleDelete', 'singleUnDelete', 'checkValid', 'checkAllValid', 'getAttr', 'setAttr', 'getByKey', 'getFullKey', 'getLocalKey', 'otherQuery', 'otherModify', 'otherCreate', 'otherDelete', 'other'), 'type': 'Token'}, 'parameters': {'namelist': '_HasParameters__parameterNames', 'type': 'content'}, 'scope': {'default': 'instance_level', 'enumeration': ('instance_level', 'classifier_level'), 'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'target': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement'>}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': False, 'type': 'Token'}}
removeCodeStub(tag)[source]

Remove existing codeStub

removeException(value)[source]

Remove existing exception

class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaModelElement

abstract class for elements

addImportedPackage(importedPackage)[source]

Add imported package (two-way link)

allowedTags = {'docDiagramNames': None, 'isDraft': ('True',), 'isReferenceData': ('True',), 'packageGroup': ('nmr', 'pp', 'core')}
checkValid(complete=False)[source]

Check that object is valid.

getClass(name)

Get contained element called name Return None if nothing found

getConstant(name)

Get contained element called name Return None if nothing found

getContainedPackage(name)

Get contained element called name Return None if nothing found

getDataObjType(name)

Get contained element called name Return None if nothing found

getDataType(name)

Get contained element called name Return None if nothing found

getElement(name)[source]

Get contained element called name Return None if nothing found

getException(name)

Get contained element called name Return None if nothing found

parameterData = {'accessedPackages': {'hicard': -1, 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage'>}, 'classes': {'namelist': '_MetaPackage__classNames', 'type': 'content'}, 'constants': {'namelist': '_MetaPackage__constantNames', 'type': 'content'}, 'containedPackages': {'namelist': '_MetaPackage__containedPackageNames', 'type': 'content'}, 'container': {'default': None, 'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage'>}, 'dataObjTypes': {'namelist': '_MetaPackage__dataObjTypeNames', 'type': 'content'}, 'dataTypes': {'namelist': '_MetaPackage__dataTypeNames', 'type': 'content'}, 'documentation': {'default': '', 'type': <class 'str'>}, 'exceptions': {'namelist': '_MetaPackage__exceptionNames', 'type': 'content'}, 'guid': {'type': <class 'str'>}, 'importedPackages': {'default': [], 'hicard': -1, 'isLink': True, 'setterFunc': 'setImportedPackages', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage'>}, 'isAbstract': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isLeaf': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'isRoot': {'default': False, 'isFixed': True, 'type': 'Boolean'}, 'name': {'type': 'Token'}, 'shortName': {'default': None, 'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'topObjectClass': {'default': None, 'isLink': True, 'setterFunc': 'unsettable', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaClass'>}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': True, 'type': 'Token'}}
removeImportedPackage(importedPackage)[source]

Remove existing importedPackage

setImportedPackages(importedPackages)[source]

setter for link importedPackages

class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaParameter(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.AbstractValue

class for roles (link ends)

allowedTags = {'isSubdivided': ('True',), 'originalGuid': None}
checkValid(complete=False)[source]

Check that object is valid.

parameterData = {'constraints': {'type': 'content'}, 'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.HasParameters'>}, 'defaultValue': {'default': None}, 'direction': {'enumeration': ('in_dir', 'out_dir', 'inout_dir', 'return_dir'), 'type': 'Token'}, 'documentation': {'default': '', 'type': <class 'str'>}, 'guid': {'type': <class 'str'>}, 'hicard': {'default': 1, 'type': <class 'int'>}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isOrdered': {'default': False, 'type': 'Boolean'}, 'isUnique': {'default': True, 'type': 'Boolean'}, 'locard': {'default': 1, 'type': <class 'int'>}, 'name': {'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'valueType': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.AbstractDataType'>}}
class ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaRole(**params)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.MetaModel.ClassElement

class for roles (link ends)

allowedTags = {'forceUndoNotify': ('False',), 'originalGuid': None}
checkValid(complete=False)[source]

Check that object is valid.

parameterData = {'aggregation': {'default': None, 'enumeration': (None, 'composite'), 'type': 'Token'}, 'baseName': {'type': 'Token'}, 'changeability': {'default': 'changeable', 'enumeration': ('changeable', 'frozen', 'add_only'), 'type': 'Token'}, 'constraints': {'type': 'content'}, 'container': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaClass'>}, 'documentation': {'default': '', 'type': <class 'str'>}, 'forceUndoNotify': {'default': True, 'type': 'Boolean'}, 'guid': {'type': <class 'str'>}, 'hicard': {'default': 1, 'type': <class 'int'>}, 'hierarchy': {'default': None, 'enumeration': ('parent', 'child', None), 'type': 'Token'}, 'isAbstract': {'default': False, 'type': 'Boolean'}, 'isAutomatic': {'default': False, 'type': 'Boolean'}, 'isDerived': {'default': False, 'type': 'Boolean'}, 'isImplementation': {'default': False, 'type': 'Boolean'}, 'isImplicit': {'default': False, 'type': 'Boolean'}, 'isOrdered': {'default': False, 'type': 'Boolean'}, 'isUnique': {'default': True, 'type': 'Boolean'}, 'locard': {'default': 0, 'type': <class 'int'>}, 'name': {'type': 'Token'}, 'noDeleteIfSet': {'default': False, 'type': 'Boolean'}, 'otherRole': {'default': None, 'isLink': True, 'setterFunc': 'setOtherRole', 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaRole'>}, 'partitionsChildren': {'default': False, 'type': 'Boolean'}, 'scope': {'default': 'instance_level', 'enumeration': ('instance_level', 'classifier_level'), 'isFixed': True, 'type': 'Token'}, 'taggedValues': {'default': {}, 'type': 'StringDict'}, 'usename': {'default': None, 'getterFunc': 'getUsename', 'type': 'Token'}, 'valueType': {'isLink': True, 'type': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaClass'>}, 'visibility': {'default': 'public_vis', 'enumeration': ('public_vis', 'protected_vis', 'private_vis'), 'isFixed': True, 'type': 'Token'}}
removeOtherRole()[source]

remove otherRole link

setOtherRole(value)[source]

set otherRole link

ccpnmodel.ccpncore.memops.metamodel.MetaModel.cls

alias of ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaConstraint

ccpnmodel.ccpncore.memops.metamodel.MetaModel.compareElements(ee, ee2, ignoreImplicit=True, language='python')[source]

compare two MetaModelElements. Returns list of tags that differ. Language-specific values are only compared for language ‘language’

ccpnmodel.ccpncore.memops.metamodel.MetaModel.compareModels(model1, model2, elementPairings=None, ignoreImplicit=True)[source]

Compare two models assuming same guid means same element

model1 and model2 may be either MetaModelElements or file names

elementPairings are pairs of guids (model1, model2) that are set to be identical even though the guids differ. Necessary e.g. when an element is divided among subclasses, or several elements are merged in a new superclass.

If ignoreImplicit implicit elements and the usename tag are ignored

NBNB TBD May need reworking to allow for inherited-down elements (using originalGuid)

Returns dictionary : { ‘dict1’: ‘guid:element’ dictionary for model 1 ‘dict2’: ‘guid:element’ dictionary for model 2 ‘unique1: set of elements found only in model1 ‘unique2: set of elements found only in model2 ‘differ’: dictionary of ‘guid:list-of-tag’ of

which tags differ for which guids

‘namematch’: dictionary of ‘qualifiedName:list-of-tag’ of

which tags differ for unique objects with identical names but different guids

ccpnmodel.ccpncore.memops.metamodel.MetaModel.finaliseMetaClass(clazz)[source]

Enforces some of the design rules for MetaClasses and their parameters, and sets some derived parameter attributes

ccpnmodel.ccpncore.memops.metamodel.MetaModel.makeObjDict(rootElement, ignoreImplicit=False, crucialOnly=False)[source]

make a guid:element dictionary

ccpnmodel.ccpncore.memops.metamodel.MetaModel.transferGuid(obj, targetContainer)[source]

Make new guid for obj when copied into a new container, e.g. for inheriting down an element. guid is deterministic, being composed of object and container guid

ccpnmodel.ccpncore.memops.metamodel.ModelPortal module

Module Documentation here

class ccpnmodel.ccpncore.memops.metamodel.ModelPortal.ModelPortal(topPackage, dataModelVersion=None)[source]

Bases: object

Access to In-memory model. Independent of language and storage. All functions (except for __init__) are queries on the model

branchPackages()[source]

branch packages, alphabetically sorted by name

branchPackagesAlphabetic()

branch packages, alphabetically sorted by name

checkModelFlavour(key, val)[source]

check that modelflavour for key is indeed val

classesAlphabetic(package)[source]

classes sorted alphabetically by name

classesByInheritance(package)[source]

classes sorted by inheritance (supertype before subtype)

constantsAlphabetic(package)[source]

constants sorted alphabetically by name

dataObjTypesAlphabetic(package)[source]

data types sorted alphabetically by name

dataObjTypesByInheritance(package)[source]

data types sorted by inheritance (supertype before subtype)

dataTypesAlphabetic(package)[source]

data types sorted alphabetically by name

dataTypesByInheritance(package)[source]

data types sorted by inheritance (supertype before subtype)

exceptionsAlphabetic(package)[source]

exceptions sorted alphabetically by name

exceptionsByInheritance(package)[source]

exceptions sorted by inheritance (supertype before subtype)

leafPackagesAlphabetic()[source]

leaf packages sorted alphabetically

leafPackagesByImport()[source]

leaf packages sorted by import (imported before importing)

metaObjFromQualName(qname)[source]

find MetaObject given qualified name

requiredInputElements(complexDataType)[source]

Return elements that must be passed to the constructor Elements are sorted alpahabetically by name

resetObjectDicts()[source]
setModelFlavour(key, val)[source]

set modelflavour tag, checking that it is not set already

twigPackages()[source]

branch packages directly containing leafPackages, alphabetically sorted by name

twigPackagesAlphabetic()

branch packages directly containing leafPackages, alphabetically sorted by name

ccpnmodel.ccpncore.memops.metamodel.ModelTraverse module

Module Documentation here

class ccpnmodel.ccpncore.memops.metamodel.ModelTraverse.ModelTraverse[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.ModelTraverse_py_2_1.ModelTraverse_py_2_1, object

ccpnmodel.ccpncore.memops.metamodel.ModelTraverse_py_2_1 module

Module Documentation here

class ccpnmodel.ccpncore.memops.metamodel.ModelTraverse_py_2_1.ModelTraverse_py_2_1[source]

Bases: object

Tools for traversing a model - loops and calls empty functions Also model query functions that may need overriding elsewhere.

addModelFlavour(key, val)[source]

Add model flavour to local requirements, checking for conflicts

baseClassName = 'memops.Implementation.MemopsObject'
baseDataTypeObjName = 'memops.Implementation.MemopsDataTypeObject'
dataObjClassName = 'memops.Implementation.DataObject'
dataRootName = 'memops.Implementation.MemopsRoot'
defineFunc(op)[source]

write function definition

endClass(clazz)[source]

processing actions for end of class

endDataObjType(clazz)[source]

processing actions for end of class

endLeafPackage(package)[source]

processing actions for end of LeafPackage

endOperation(op, inClass)[source]

processing actions for end of operation

getFuncname(op, inClass=None)[source]

get function calling name for operation

the name is the operation name of the corresponding operation with opSubType==None

getImportName(oo, pp=None, subDirs=None)[source]
getPartitioningLinkages(inputRole)[source]

get chains of roles leading upwards from inputRole.container and inputRole.valueType to reach an object that must be shared from both sides. Return values are (uplinks, partitionRoles)

Examples: if <xyz> indicates a MetaRole names ‘xyz’, we have :

For ccp.molecule.Molecule.MolResLinkEnd.molResLink, the return is [[<molResidue>,<molecule>],[<molecule>]],[None,None]

while for ccp/nmr.NmrConstraint.AbstractConstraintList.experiments it is [[<nmrConstraintStore>],[<nmrProject>]],[<nmrProject>,<nmrConstraintStores>])

Note that the roles in uplinks[0], uplinks[1] and either partitionRoles[0] or partitionRoles[1] (if either is set) combine to make a chain of links that connect inputRole.container and inputRole.valueType

For MetaRoles contained in classes without a parentRole, the uplinks are [<topObject>,<memopsRoot>]

NB - as written this code checks that:

  • no partitioning links between parent and descendant

  • No two partitioning links (inherited or not) between same pair of classes

  • If two partitioning links span the same up-down path in the parent tree, one link cannot be lower in the tree in one branch and higher in the other Doing the checks in MetaModel would be better (and faster) but would require partially duplicating some quite complicated code. The code will be slow, considering that it is called for every writeModifier and some getValue for roles.

implObjClassName = 'memops.Implementation.ImplementationObject'
implPackageName = 'memops.Implementation'
initClass(clazz)[source]

processing actions for start of class

initDataObjType(clazz)[source]

processing actions for start of class

initLeafPackage(package)[source]

processing actions for start of LeafPackage

initOperation(op, inClass)[source]

processing actions for start of operation

processAttribute(attribute, inClass)[source]

processing actions for attribute

processBranchPackage(package)[source]

processing actions for branch package

processClass(clazz)[source]

processing actions for body of class

processConstant(constant)[source]

processing actions for constant

processDataObjType(clazz)[source]

processing actions for body of class

processDataType(dataType)[source]

processing actions for data type

processException(exception)[source]

processing actions for exception

processLeafPackage(package)[source]

processing actions for body of leaf package

NB programmers note: Processing may rely on the model being valid and all subclasses being known at the time of processing the superclass. Any overriding that adds classes must maintain this.

Also note that DataTypes are needed in many other elements, and that exceptions are needed for operations. The processing order matters.

processModel()[source]

top function that does all actions. Only function that should be called from outside the module.

processOperation(op, inClass)[source]

processing actions for body of operation

processParameter(parameter, inElement)[source]

processing actions for operation/exception parameter

processRole(role, inClass)[source]

processing actions for role

rootClassName = 'memops.Implementation.ComplexDataType'
topObjClassName = 'memops.Implementation.TopObject'
valueIsNone(var)[source]
valueIsNotNone(var)[source]
valueVar(element, doInstance=False, prefix='')[source]

ccpnmodel.ccpncore.memops.metamodel.OpTypes module

Module Documentation here

ccpnmodel.ccpncore.memops.metamodel.OpTypes.getTarget(metaOp, opData=None)[source]

gets target for MetaOperation based on target class and operation name. opData overrides the standard operationData, for use e.g. in ModelAdapt. NB used within ObjectDomain to make targets for Operations entered in UML

The converse operation is ModelAdapt.getOperationName

  • for target ‘container’ assumes nothing

  • for target ‘masterOp’ assumes names of the form somename_somesubtypesuffix

  • for ClassElement and ChildClass targets assumes names of the form prefixElementname_somesubtypesuffix

ccpnmodel.ccpncore.memops.metamodel.TaggedValues module

Module Documentation here

ccpnmodel.ccpncore.memops.metamodel.TextWriter module

Module Documentation here

class ccpnmodel.ccpncore.memops.metamodel.TextWriter.TextWriter[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.TextWriter_py_2_1.TextWriter_py_2_1, object

ccpnmodel.ccpncore.memops.metamodel.TextWriter_py_2_1 module

Module Documentation here

class ccpnmodel.ccpncore.memops.metamodel.TextWriter_py_2_1.TextWriter_py_2_1[source]

Bases: object

DEBUG_OUTPUT = False
INDENT = 2
clearOutDir(topDirName, forceClearOut=False)[source]

NB DANGEROUS! clears out contents of topDirName - as in ‘cd topDirName; m -rf *’

if forceClearOut directories are cleared even if they contain clearOutGuards The clearOutGuards are not deleted or entered into even so.

clearOutGuards = ('CVS',)
closeFile()[source]
createDir(dirName)[source]

set up as recursive function (instead of using os.makedirs) as some implementations might want to do other things in each directory.

getCreditsString(metaobj, programType)[source]
getDirDepth()[source]
getObjDirName(metaObj, absoluteName=True)[source]
getObjFileName(metaObj, absoluteName=True, addSuffix=False)[source]

Get filename for metaObj If absoluteName is True the file name is absolute otherwise it is relative to the relevant baseDir

getVersionString(metaobj=None, scriptName=None, date=None)[source]

Function that returns the version header that should be inserted in each generated file. Parameters are the metaobj, the name and revision of the generating script, and the date. Name defaults to self.scriptName, if this is set. Date defaults to the current date - it is a parameter mainly to allow the suppression of date writing (for Model.py files).

openFile(fileName)[source]
openObjFile(metaObj)[source]
write(ss, compress=True)[source]

Refactored for speed Rasmus Fogh 24/11/06

writeComment(comment=None)[source]
writeMultilineComment(comment=None, compress=True)[source]
writeNewline()[source]
writeOne(ss)[source]

Write one line and handle indentation - faster than ‘write’ Prepends the indentation and appends a linebreak, doing no checks or strips

writeStatement(s)[source]
writeToFile(ss)[source]

ccpnmodel.ccpncore.memops.metamodel.Util module

Module Documentation here

class ccpnmodel.ccpncore.memops.metamodel.Util.SimpleGuidGenerator(operator, organisation, initialSerial=1)[source]

Bases: object

Generator for simple, low-quality GUIDs (operator_organisation_timeStamp_serial) Only appropriate for controlled environments.

newGuid()[source]

generate new GUID. Writeable in XML without character escapes

ccpnmodel.ccpncore.memops.metamodel.Util.breakString(text, separator=' ', joiner='\n', maxChars=72)[source]

Splits text on separator and then joins pieces back together using joiner so that each piece either single element or no longer than maxChars

Modified to speed up and add parameter defaults, Rasmus Fogh 28 Aug 2003 Modified to split into two functions and to add separator to end of each line Modified to separate string breaking from list modification Rasmus Fogh 29/6/06 Added special case for text empty or None Rasmus Fogh 07/07/06

ccpnmodel.ccpncore.memops.metamodel.Util.checkLinkCircularity(myself, tag)[source]

check for circular relationships in -to-one links

ccpnmodel.ccpncore.memops.metamodel.Util.coerceToList(params)[source]
ccpnmodel.ccpncore.memops.metamodel.Util.compactStringList(stringList, separator='', maxChars=80)[source]

compact stringList into shorter list of longer strings, each either made from a single start string, or no longer than maxChars

From previous breakString function. Modified to speed up and add parameter defaults, Rasmus Fogh 28 Aug 2003 Modified to split into two functions and to add separator to end of each line, Rasmus Fogh 12 Sep 03 Modified to separate string breaking from list modification Rasmus Fogh 29/6/06 Modified to return single-element lists unchanged Rasmus Fogh 29/6/06

ccpnmodel.ccpncore.memops.metamodel.Util.dataObjTypeDependencies(obj, tag)[source]

return dataObjypes that depend on this one. For use in topologicalSortSubgraph

ccpnmodel.ccpncore.memops.metamodel.Util.getFuncname(op, inClass=None)[source]

get function calling name for operation

the name is the operation name of the corresponding operation with opSubType==None

ccpnmodel.ccpncore.memops.metamodel.Util.getOperation(target, opType, inClass=None, opSubType=None)[source]

get existing operation. If none found return None

ccpnmodel.ccpncore.memops.metamodel.Util.getReferenceName(oo, pp=None, subDirs=None)[source]

get name to refer to an object oo from package pp If pp is not None the routine will return a short form of the name whenever oo is contained within pp. Otherwise the routine returns the full import name. NB the function is used also to generate names for documentation. Unless oo is an object contained within a package, the result will not be valid for the purpose of importing oo.

ccpnmodel.ccpncore.memops.metamodel.Util.getReturnPar(op)[source]

select and return MetaParameter with direction ‘return’, if any

ccpnmodel.ccpncore.memops.metamodel.Util.lowerFirst(s)[source]

lowercase first letter

ccpnmodel.ccpncore.memops.metamodel.Util.parseCardinality(cardString)[source]

parse cardinality string expression and get locard and hicard

ccpnmodel.ccpncore.memops.metamodel.Util.semideepcopy(dd, doneDict=None)[source]

does a semi-deep copy of a nested dictionary, for copying mappings. Dictionaries are copied recursively, . Lists are copied, but not recursively. In either case a single copy is made from a single object no matter how many times it appears. Keys and other values are passed unchanged

ccpnmodel.ccpncore.memops.metamodel.Util.sortByAttribute(objList, tag)[source]

sorts list of objects on value of obj.tag. Returns new list

ccpnmodel.ccpncore.memops.metamodel.Util.sortByDataObjTypeDependency(objList)[source]

partially sort objList so that dependent MetaDataObjTypes come after the ones they depend on.

ccpnmodel.ccpncore.memops.metamodel.Util.sortByInheritance(objList)[source]

partially sort objList so that supertype comes before subtype

NB signature has changed. No ‘container’ parameter any longer - the routine always sorts the entire list presented to it.

ccpnmodel.ccpncore.memops.metamodel.Util.sortByMethodCall(objList, tag)[source]

sorts list of objects on value of obj.tag(). Returns new list

ccpnmodel.ccpncore.memops.metamodel.Util.topObjLinksByImport(root)[source]

get child link names of root in import order

ccpnmodel.ccpncore.memops.metamodel.Util.topologicalSortSubgraph(objList, tag, func=<built-in function getattr>)[source]

Assumes that func(obj,tag) is a list of objects, of which some (but not all) may be in objList. This corresponds to a subset of the nodes of a graph in edge-list representation. The function returns a copy of objList sorted so that if ‘objA in func(objB,tag)’ then objB is before objA in the list. If the graph contains cycles an error is raised. The algorithm is linear in the number of objects and the number of edges.

See http://www.bitformation.com/art/python_toposort.html or http://www.brpreiss.com/books/opus7/html/page555.html for the sources for this algorithm

ccpnmodel.ccpncore.memops.metamodel.Util.upperFirst(s)[source]

uppercase first letter

ccpnmodel.ccpncore.memops.metamodel.XmlModelIo module

Module Documentation here

class ccpnmodel.ccpncore.memops.metamodel.XmlModelIo.TempHolder[source]

Bases: object

class for temporary storage of parameter data

class ccpnmodel.ccpncore.memops.metamodel.XmlModelIo.XmlModelGen(**kw)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.TextWriter_py_2_1.TextWriter_py_2_1, ccpnmodel.ccpncore.memops.metamodel.ModelTraverse_py_2_1.ModelTraverse_py_2_1

codeDirName = None
endXmlElement(metaObj)[source]

Write end of XML element for MetaObj.

endXmlFile()[source]
processBranchPackage(package)[source]

processing actions for branch package

processLeafPackage(package)[source]

processing actions for LeafPackage

processPackageContent(metaObj)[source]

processing actions package content

startXmlElement(metaObj)[source]

Write start of XML element for MetaObj.

startXmlFile(obj)[source]
toXmlString(metaObj, tag, value=None)[source]

Convert metaObj.tag to string ready to write to XML

writeElementRecursive(metaObj)[source]

processing actions package content

writeList(metaObj, tag)[source]

write List element

writePlainXmlElement(metaObj, tag)[source]

write xmlElement for metaObj.tag

writeStringDict(metaObj, tag)[source]

write StringDict element

writeXmlInclude(filePath, objName=None, isMandatory=True)[source]

write an XML include statement pointing to the file. If inclusion is non-mandatory (default), the fallback will be an empty string.

class ccpnmodel.ccpncore.memops.metamodel.XmlModelIo.XmlModelRead(**kw)[source]

Bases: ccpnmodel.ccpncore.memops.metamodel.TextWriter_py_2_1.TextWriter_py_2_1

classNameMapping = {'MetaAttribute': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaAttribute'>, 'MetaClass': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaClass'>, 'MetaConstant': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaConstant'>, 'MetaConstraint': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaConstraint'>, 'MetaDataObjType': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataObjType'>, 'MetaDataType': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaDataType'>, 'MetaException': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaException'>, 'MetaOperation': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaOperation'>, 'MetaPackage': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaPackage'>, 'MetaParameter': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaParameter'>, 'MetaRole': <class 'ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaRole'>}
clazz

alias of ccpnmodel.ccpncore.memops.metamodel.MetaModel.MetaConstraint

codeDirName = None
finaliseObjects()[source]

set remaining parameters from _tempData

getHref(elem, mandatory=True)[source]

get href attribute value. NB this is a hack to handle known bugs innamespace handling for xmllib, conf. elementtree.SimpleXMLTreeBuilder.

loadDelayedData()[source]

create objects that have been postponed, because their container was not available

loadXmlFile(absFilename)[source]

Recursively load XML file and all Xincluded XML files, creating Memops model objects from contents

readModel()[source]

read model and return top package. self.objMap is left as a complete guid:object map of the model

ccpnmodel.ccpncore.memops.metamodel.XmlModelIo.bool2str(value)[source]
ccpnmodel.ccpncore.memops.metamodel.XmlModelIo.readModel(versionTag=None, rootFileName=None, rootDirName=None, excludePackageNames=None, includePackageNames=None, checkValidity=True, **kw)[source]

XML model reader excludePackageNames is a tuple or list of package qualifiedNames that will be ignored together with their contents. includePackageNames is a tuple or list of package qualifiedNames that will be used together with their contents and containers, with all other packages being ignored. NB only leaf package names should be put in includePackageNames. The names of containing packages will be added automatically. Putting e.g. ‘ccp’ in includePackageNames will not cause packages contained in ccp to be included.

ccpnmodel.ccpncore.memops.metamodel.XmlModelIo.str2bool(value)[source]
ccpnmodel.ccpncore.memops.metamodel.XmlModelIo.writeModel(topPackage=None, modelPortal=None, rootFileName=None, rootDirName=None, releaseVersion=None, skipImplicit=None, versionTag=None, **kw)[source]

write XML file version of model