pnb.mcl.metamodel.standard module¶
Standard implementation of pnb.mcl.metamodel.
- class pnb.mcl.metamodel.standard.AbstractClass(name: str, superTypes: Iterable[Class] = (), members=())¶
Bases:
Class- isAbstract = True¶
- class pnb.mcl.metamodel.standard.AbstractDataType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
DataType- isAbstract = True¶
- class pnb.mcl.metamodel.standard.AggregatedDataType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
DataType- ownedAttributes¶
A MembersProperty that can be directly modified. It does not depend on any other MembersProperty.
- class pnb.mcl.metamodel.standard.BooleanType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
PrimitiveType
- class pnb.mcl.metamodel.standard.Class(name: str, superTypes: Iterable[Class] = (), members=())¶
Bases:
TypeThis class is abstract.
- add(element)¶
- property attributes¶
- ownedAttributes¶
A MembersProperty that can be directly modified. It does not depend on any other MembersProperty.
- class pnb.mcl.metamodel.standard.CompositionProperty(name: str, type_: Class, lower: int, upper: int | None, isOrdered: bool, redefines: Iterable[ObjectProperty] = ())¶
Bases:
ObjectProperty- property isUnique¶
- property oppositeLower¶
- property oppositeUpper¶
- class pnb.mcl.metamodel.standard.ConcreteClass(name: str, superTypes: Iterable[Class] = (), members=())¶
Bases:
Class- isAbstract = False¶
- class pnb.mcl.metamodel.standard.DataProperty(name: str, type_: CDataType, lower: int = 1, upper: T.Optional[int | str] = 'lower', isOrdered: bool = False, isUnique: bool = False, redefines: T.Iterable[ReferenceProperty] = ())¶
Bases:
Property- property isUnique¶
- class pnb.mcl.metamodel.standard.DataType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
TypeThis class is abstract.
- isAbstract = False¶
- class pnb.mcl.metamodel.standard.DateTimeType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
PrimitiveType
- class pnb.mcl.metamodel.standard.DerivedMembersProperty(slots: list[str], member_type: type[MemberType], sorting: Literal['alpha', 'none'] = 'alpha', derived_properties: Iterable[DerivedMembersProperty] = (), base_properties: Iterable[MembersProperty] = ())¶
Bases:
Generic[MemberType],MembersProperty[MemberType]A MembersProperty that depends on a single other MembersProperty.
- class pnb.mcl.metamodel.standard.DoubleType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
PrimitiveType
- class pnb.mcl.metamodel.standard.Element(**kwargs)¶
Bases:
objectThis class is abstract.
- __repr__()¶
Return repr(self).
- classmethod get_meta_class_name() str¶
- property info¶
- property model¶
- class pnb.mcl.metamodel.standard.Enumeration(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
DataType- orderedOwnedLiterals¶
- ownedLiterals¶
- class pnb.mcl.metamodel.standard.EnumerationLiteral(name: str, enumeration: Enumeration)¶
Bases:
NamedElement- property type¶
- class pnb.mcl.metamodel.standard.InstanceSpecification(name: str | None, **kwargs)¶
Bases:
NamedElementThis class is abstract.
- class pnb.mcl.metamodel.standard.IntType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
PrimitiveType
- class pnb.mcl.metamodel.standard.Members(*args, **kwargs)¶
Bases:
Generic[MemberType],Sized,Iterable[MemberType]A container for the members of
Namespaceobjects.Membersobjects cannot be created from user code; they are rather retrieved from aNamespaceobject.Example
1from pnb.mcl.metamodel import standard as metamodel 2 3spam = metamodel.Model('spam', 'http://www.spam.org') 4spam.packagedElements.add(metamodel.Package('SubSpam')) 5for member in spam.members: 6 print(member)
↳ <Package 'spam.SubSpam'>
spam.packagedElementsis aMutableMembersobject that contains thepackagedElementsofModelspam. We call itsadd()method to add aPackageto thepackagedElements.spam.membersis a (non-mutable)Membersobject that contains allmembersofModelspam, including thepackagedElements. Here, we iterate overspam.members(cf.__iter__) and retrieve thePackagewe have just added.
- __contains__(name_or_element: str | NamedElement) bool¶
Check if the
Membersobject contains a name or an element.If
name_or_elementis astr, returnsTrueif theMembersobject contains an element with that name.If
name_or_elementis anElement, returnsTrueif theMembersobject contains theElement.
- __getattr__(name: str) MemberType¶
Get a member by its name.
__getattr__is overwritten in order to provide a more concise alternative forat(). For instance, assume thatspamis someModelobject. Thenspam.packagedElements.foo
is the same as
spam.packagedElements.at('foo')
(except that the former code would raise a
AttributeError, whereas the latter would raise aKeyErrorifspamhas no packaged element namedfoo).Warning
Be aware that
__getattr__will only be called by Python as a last resort when ‘normal’ attribute access has failed. For example,spam.packagedElements.infowill never retrieve a member element, but rather the value of theinfoproperty defined in theMembersclass.Syntax restrictions may also prevent member access via
__getattr__. For example,"class"is a validname, but it happens to be a Python keyword, andspam.packagedElements.classwill raise aSyntaxError.__getattr__is not intended for dynamic member retrieval, i.e., when the member name is not a hard-typed literal. Do not writegetattr(spam.packagedElements, some_variable)
or even
spam.packagedElements.__getattr__(some_variable)
- __iter__() Iterator[MemberType]¶
Iterate over the contained members.
If not mentioned otherwise, iteration is in alphanumeric order w.r.t. the members’ names. If applicable, unnamed members (i.e.,
NamedElementswithname== None) are yielded after the named members in arbitrary order.
- __len__() int¶
Get the number of contained members.
- __repr__()¶
A short description of the
Membersobject that includes the names of the underlyingMembersPropertyandNamespaceobject.from pnb.mcl.metamodel import standard as metamodel spam = metamodel.Model('spam', 'http://www.spam.org') print(repr(spam.packagedElements))
↳ <Model.packagedElements of Model 'spam' (http://www.spam.org)>
- at(name: str) MemberType¶
Get the member with the given name.
- Raises:
KeyError – if there is no member with the given name
- get(name: str) MemberType | None¶
- get(name: str, default: DefaultType) MemberType | DefaultType
Get the member with the given name, or default if there is no such member.
- property info: str¶
A short description of the
Membersobject that includes the names of the underlyingMembersPropertyandNamespaceobject.from pnb.mcl.metamodel import standard as metamodel spam = metamodel.Model('spam', 'http://www.spam.org') print(spam.packagedElements.info)
↳ Model.packagedElements of Model 'spam' (http://www.spam.org)
- property names: Iterator[str]¶
Iterator over the names of the contained members. If not mentioned otherwise, iteration is in alphanumeric order.
- class pnb.mcl.metamodel.standard.MembersProperty(member_type: type[MemberType], sorting: Literal['alpha', 'none'], derived_properties: Iterable[DerivedMembersProperty[NamedElement]])¶
Bases:
Generic[MemberType],ABC- __get__(obj: MemberType, objtype: type[MemberType]) Members[MemberType]¶
- __get__(obj: None, objtype: type[MemberType]) MembersProperty[MemberType]
- __repr__()¶
Return repr(self).
- property info: str¶
- property member_type: type[MemberType]¶
- class pnb.mcl.metamodel.standard.MetaData¶
Bases:
object- get(element, prop, default=<object object>)¶
- static read(path, model_by_name)¶
- set(element, prop, value)¶
- write(path)¶
- class pnb.mcl.metamodel.standard.Model(name: str, uri: str, members=())¶
Bases:
Namespace- add(element)¶
- property info¶
- packagedElements¶
A MembersProperty that can be directly modified. It does not depend on any other MembersProperty.
- property unnamedObjects¶
- property uri¶
- class pnb.mcl.metamodel.standard.MutableMembers(*args, **kwargs)¶
Bases:
Generic[MemberType],Members[MemberType]A container for the members of
Namespaceobjects that can be directly modified by client code (seeadd()).- add(member: MemberType) MemberType¶
Add a
memberto theMutableMemberscontainer.This method returns the added
member:1from pnb.mcl.metamodel import standard as metamodel 2 3spam = metamodel.Model('spam', 'http://www.spam.org') 4foo = spam.packagedElements.add(metamodel.Package('SubSpam')) 5print(foo)
↳ <Package 'spam.SubSpam'>
- class pnb.mcl.metamodel.standard.MutableMembersProperty(slots: list[str], member_type: type[MemberType], is_composition: bool, sorting: Literal['alpha', 'none'] = 'alpha', derived_properties: Iterable[DerivedMembersProperty] = ())¶
Bases:
Generic[MemberType],MembersProperty[MemberType]A MembersProperty that can be directly modified. It does not depend on any other MembersProperty.
- __get__(obj: MemberType, objtype: type[MemberType]) MutableMembers[MemberType]¶
- __get__(obj: None, objtype: type[MemberType]) MutableMembersProperty[MemberType]
- class pnb.mcl.metamodel.standard.NamedElement(name: str | None, **kwargs)¶
Bases:
ElementThis class is abstract.
- property info¶
- property name: str | None¶
- property qualifiedName: str | None¶
- class pnb.mcl.metamodel.standard.Namespace(members=(), **kwargs)¶
Bases:
NamedElementThis class is abstract.
- members¶
All members of the Namespace.
- ownedMembers¶
The owned members of the Namespace.
- importedMembers¶
The imported members of the Namespace.
- __getattr__(name) NamedElement¶
- __iter__() Iterator[NamedElement]¶
- importedMembers¶
- members¶
- ownedMembers¶
- class pnb.mcl.metamodel.standard.Object(type_: ConcreteClass, name=None, **kwargs)¶
Bases:
PackageableElement- __getattr__(name)¶
- property type: ConcreteClass¶
- class pnb.mcl.metamodel.standard.ObjectProperty(lower: int, upper: int | None, type_: ~pnb.mcl.metamodel.standard.Type, isOrdered=<class 'bool'>, **kwargs)¶
Bases:
PropertyThis class is abstract.
- class pnb.mcl.metamodel.standard.Package(name: str, members=())¶
Bases:
Namespace,PackageableElement- add(element)¶
- packagedElements¶
A MembersProperty that can be directly modified. It does not depend on any other MembersProperty.
- class pnb.mcl.metamodel.standard.PackageableElement(name: str | None, **kwargs)¶
Bases:
NamedElementThis class is abstract.
- class pnb.mcl.metamodel.standard.PrimitiveType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
DataTypeThis class is abstract.
- class pnb.mcl.metamodel.standard.Property(lower: int, upper: int | None, type_: ~pnb.mcl.metamodel.standard.Type, isOrdered=<class 'bool'>, **kwargs)¶
Bases:
TypedElementThis class is abstract.
- class pnb.mcl.metamodel.standard.ReferenceProperty(name: str, type_: Class, lower: int, upper: int | None, isOrdered: bool, isUnique: bool, oppositeLower: int = 0, oppositeUpper: int | None = None, redefines: Iterable[ReferenceProperty] = ())¶
Bases:
ObjectProperty- property isUnique¶
- property oppositeLower¶
- property oppositeUpper¶
- class pnb.mcl.metamodel.standard.SingletonType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
DataType- property value¶
- class pnb.mcl.metamodel.standard.SingletonValue(name, type_: SingletonType)¶
Bases:
PackageableElement- property type¶
- class pnb.mcl.metamodel.standard.StringType(name: str, superTypes: Iterable[AbstractDataType] = ())¶
Bases:
PrimitiveType
- class pnb.mcl.metamodel.standard.Type(name: str, superTypes: Iterable[Type], **kwargs)¶
Bases:
Namespace,PackageableElementThis class is abstract.
cf. Classifier 7.5.3.1 All Types in UML are Classifiers
- property allSubTypes¶
- property isAbstract¶
- ownedAttributes = []¶
- property subTypes¶
- class pnb.mcl.metamodel.standard.TypedElement(lower: int, upper: int | None, type_: ~pnb.mcl.metamodel.standard.Type, isOrdered=<class 'bool'>, **kwargs)¶
Bases:
NamedElementThis class is abstract.
merged with UML MultiplicityElement
- property isOrdered: bool¶
- abstract property isUnique: bool¶
- property lower: int¶
- property upper: int | None¶
- class pnb.mcl.metamodel.standard.UnionMembersProperty(slots: list[str], member_type: type[MemberType], sorting: Literal['alpha', 'none'] = 'alpha', derived_properties: Iterable[DerivedMembersProperty] = (), base_properties: Iterable[MembersProperty] = ())¶
Bases:
Generic[MemberType],DerivedMembersProperty[MemberType]