Lehrstuhl für Informations- und Automatisierungssysteme issueshttps://git.rwth-aachen.de/groups/acplt/-/issues2021-10-28T21:15:44+02:00https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/119Remove Asset object2021-10-28T21:15:44+02:00Michael ThiesRemove Asset objectAfter updating to DotAAS version 3.0-rc1, we can remove the Asset object from our model, since it does not provide any information anymore.
To do so, we should:
* remove class `Asset`
* drop Assets in deserialized files silently
* still...After updating to DotAAS version 3.0-rc1, we can remove the Asset object from our model, since it does not provide any information anymore.
To do so, we should:
* remove class `Asset`
* drop Assets in deserialized files silently
* still, add an empty `Assets` list to serlized files to stay compliant to the schemas
* remove KeyElements.ASSET
* change Keys with type==Asset to type==GlobalReference in deserialized files silently
* Mention how we handled assets in (module) docstring(s)https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/70readme: Explain how to use compliance tool2020-05-19T12:33:45+02:00Michael Thiesreadme: Explain how to use compliance tool* We could just refer to the `--help` command
* If there's more to explain, we should probably create a new `README.md` file in `aas/compliance_tool/` and link to it* We could just refer to the `--help` command
* If there's more to explain, we should probably create a new `README.md` file in `aas/compliance_tool/` and link to itAlpha Release 0.1.0https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/44README: Add sections about features/project structure, getting started, and d...2020-03-25T15:27:12+01:00Michael ThiesREADME: Add sections about features/project structure, getting started, and development/contributing* [ ] Section "Features" or "Project Structure", explaining what functionality is implemented and in which Python package it lives
* [ ] Section "Getting started", giving a short introduction on how to install PyI40AAS (from Git or PyPI)...* [ ] Section "Features" or "Project Structure", explaining what functionality is implemented and in which Python package it lives
* [ ] Section "Getting started", giving a short introduction on how to install PyI40AAS (from Git or PyPI) and pointing to the tutorials and examples
* [ ] Section "Development", explaining how to set up a development environment and running tests (incl. )
* [ ] Section "Contributing", explaining our coding guidelines (how to run mypy and pycodestyle), workflows (GitLab PRs) and pointing to issueshttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/105object store: Add functionality to get a referable object by path (Identifica...2020-10-28T16:44:53+01:00Torben Minyobject store: Add functionality to get a referable object by path (Identification, List(IdShort))https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/45NamespaceSet: It should be allowed to insert an Referable with the same id_sh...2020-02-03T15:15:11+01:00Torben MinyNamespaceSet: It should be allowed to insert an Referable with the same id_short in another NamespaceSet of the same objectAt the moment it is not possible to add a concept dictionary and a view with the same id_short to the asset administration shellAt the moment it is not possible to add a concept dictionary and a view with the same id_short to the asset administration shellhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/27model: View does not inherit from HasDataSpecification, HasSemantics, Referable2019-12-16T10:53:23+01:00Michael Thiesmodel: View does not inherit from HasDataSpecification, HasSemantics, Referablehttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/36model.submodel.SubmodelElementCollection: class seems to miss parameters "all...2019-12-28T17:13:21+01:00Sebastian Heppners.heppner@iat.rwth-aachen.demodel.submodel.SubmodelElementCollection: class seems to miss parameters "allow_duplicate"Or is this something the serialization should be able to read from the specific object instance?Or is this something the serialization should be able to read from the specific object instance?https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/29model: Rename instance attributes to not contain trailing underscores2020-01-28T15:33:51+01:00Michael Thiesmodel: Rename instance attributes to not contain trailing underscoresTrailing underscores are nice for function parameters (including initializer parameters) to avoid name conflicts with global denominators (like module names and builtins). However, instance attributes form an own namespace and don't conf...Trailing underscores are nice for function parameters (including initializer parameters) to avoid name conflicts with global denominators (like module names and builtins). However, instance attributes form an own namespace and don't conflict with global denominators. Thus, trailing underscores are not required for them and I would prefer removing them to have less confusing attribute names.
However this should not be changed, before we merged the `features/json_adapter` branch.Leon Mauritz MöllerLeon Mauritz Möllerhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/97model: Remove `_`-suffix from parameters of `__init__` functions2020-11-25T10:42:57+01:00Leon Mauritz Möllermodel: Remove `_`-suffix from parameters of `__init__` functionsRemove `_`-suffix from parameters like `submodel_` and `security_` in the `__init__` function of all classes of the `model`, as Igor suggested on Zulip.Remove `_`-suffix from parameters like `submodel_` and `security_` in the `__init__` function of all classes of the `model`, as Igor suggested on Zulip.Stable library APIhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/83model: ReferenceElement.value should have type Reference instead of AASReference2020-10-28T16:59:11+01:00Michael Thiesmodel: ReferenceElement.value should have type Reference instead of AASReferenceDotAAS describes the `value` attribute as follows:
> Reference to any other referable element of the same of any other AAS or a reference to an external object or entity.
Thus, References to other objects/entities than AAS objects are ...DotAAS describes the `value` attribute as follows:
> Reference to any other referable element of the same of any other AAS or a reference to an external object or entity.
Thus, References to other objects/entities than AAS objects are also allowed.
This needs to be fixed in the deserialization adapters as well.ahttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/125model: Refereable._set_id_short should change the id_short entry in the Names...2021-02-01T10:35:36+01:00Michael Thiesmodel: Refereable._set_id_short should change the id_short entry in the Namespace's _backend dictCurrently we only check for duplicate id_shorts in the same Namespace, when an id_short is changed (#100). However, we must also update the NamespaceSet with the new id_short of the Referable object to ensure correct duplicate checking a...Currently we only check for duplicate id_shorts in the same Namespace, when an id_short is changed (#100). However, we must also update the NamespaceSet with the new id_short of the Referable object to ensure correct duplicate checking and id_short-resolving in the future.
This must also be implemented for other unique attributes in the future (see #121).Torben MinyTorben Minyhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/127model: Referable.update_from() not working properly for contained Referable o...2021-01-27T13:47:54+01:00Ghost Usermodel: Referable.update_from() not working properly for contained Referable objectsHi there,
I was testing the examples folder - especially the backend couchdb part - and there is a problem with the line `example_submodel1.update()`. Lines above that work fine. Seems like there is something wrong with `.update()` and ...Hi there,
I was testing the examples folder - especially the backend couchdb part - and there is a problem with the line `example_submodel1.update()`. Lines above that work fine. Seems like there is something wrong with `.update()` and `.commit()` ?
I'm receiving these errors:
```
PS C:\Users\samed\Desktop\pyi40aas\aas\examples> & "C:/Program Files/Python37/python.exe" "c:/Users/samed/Desktop/pyi40aas/aas/examples/tutorial_backend_couchdb.py"
Traceback (most recent call last):
File "C:\Users\samed\AppData\Roaming\Python\Python37\site-packages\aas\backend\backends.py", line 154, in get_backend
return _backends_map[scheme]
KeyError: 'couchdb'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "c:/Users/samed/Desktop/pyi40aas/aas/examples/tutorial_backend_couchdb.py", line 118, in <module>
example_submodel1.update()
File "C:\Users\samed\AppData\Roaming\Python\Python37\site-packages\aas\model\base.py", line 507, in update
backends.get_backend(self.source).update_object(updated_object=self,
File "C:\Users\samed\AppData\Roaming\Python\Python37\site-packages\aas\backend\backends.py", line 156, in get_backend
raise UnknownBackendException("Could not find Backend for source '{}'".format(url)) from e
aas.backend.backends.UnknownBackendException: Could not find Backend for source 'couchdb://localhost:5984/aas_test/IRI-http%3A%2F%2Facplt.org%2FSubmodels%2FAssets%2FTestAsset%2FIdentification'
```
Thanks and kind regards,
Samedhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/99model: Most repr() funcs don't fulfill the requirement obj == eval(repr(obj))2020-11-16T15:08:43+01:00Igor Garmaevmodel: Most repr() funcs don't fulfill the requirement obj == eval(repr(obj)) Most repr() funcs of classes don't fulfill the requirement obj == eval(repr(obj))
For example:
repr of Key:
Current:
```python
def __repr__(self) -> str:
return "Key(local={}, id_type={}, value={})".format(self.local, sel... Most repr() funcs of classes don't fulfill the requirement obj == eval(repr(obj))
For example:
repr of Key:
Current:
```python
def __repr__(self) -> str:
return "Key(local={}, id_type={}, value={})".format(self.local, self.id_type.name, self.value)
```
Should be:
```python
def __repr__(self) -> str:
return "Key(type_={}, local={}, id_type={}, value={})".format(self.type, self.local, self.id_type.name, repr(self.value))
```
repr of Identifiable:
Current version looks like __str__ but not __repr__:
```python
def __repr__(self) -> str:
return "Identifier({}={})".format(self.id_type.name, self.id)
```
Should be:
```python
def __str__(self) -> str:
return "Identifier({}={})".format(self.id_type.name, self.id)
def __repr__(self) -> str:
return "Identifier(id_={}, id_type={})".format(repr(self.id), self.id_type.name)
```https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/7model: Make HasKind.kind immutable2019-12-02T14:20:58+01:00Michael Thiesmodel: Make HasKind.kind immutableThis is a proposal to make handling of objects and enforcing of constraints more safe. Idea: A template-object should never be converted to an instance-object (without explicit creation of a new object) and vice versa. This would resolve...This is a proposal to make handling of objects and enforcing of constraints more safe. Idea: A template-object should never be converted to an instance-object (without explicit creation of a new object) and vice versa. This would resolve the issue with constraint AASd-008 (see #6).
We could also consider making other, more specific attributes immutable.
Implementation is possible using a property and a hidden attribute (`_kind`).https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/95model: Make abstract classes really abstract2020-11-25T10:42:57+01:00Igor Garmaevmodel: Make abstract classes really abstractNow all classes that are meant to be abstract are instantiable. That means they are not abstract. To solve the issue these classes must have abstract methods. I suggest to make `__init__` abstract for all these classesNow all classes that are meant to be abstract are instantiable. That means they are not abstract. To solve the issue these classes must have abstract methods. I suggest to make `__init__` abstract for all these classeshttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/16model: Initializer of AssetAdministrationShell misses `identification` parameter2019-12-02T15:18:17+01:00Michael Thiesmodel: Initializer of AssetAdministrationShell misses `identification` parameterhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/9model: Implement Registry and Reference.get()2019-12-03T10:17:14+01:00Michael Thiesmodel: Implement Registry and Reference.get()* Add `AbstractRegistry` (with `lookup()` method), `AbstractObjectStore` (inheriting from `AbstractRegistry`, with `add` and `remove` methods) and `DictObjectStore` (inherting from `AbstractObjectStore`)
* Add `Reference.get(registry: Ab...* Add `AbstractRegistry` (with `lookup()` method), `AbstractObjectStore` (inheriting from `AbstractRegistry`, with `add` and `remove` methods) and `DictObjectStore` (inherting from `AbstractObjectStore`)
* Add `Reference.get(registry: AbstractRegistry)` method
* Add testshttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/10model: Implement Magic dict-list-thingy2019-11-29T09:52:03+01:00Michael Thiesmodel: Implement Magic dict-list-thingyA magic dict of `str` → `Referable` that can be initialized from a list of `Referable`s and can yield a magic pseudo list of its values, which also allows adding and removing values from the dict.
This is required by #8A magic dict of `str` → `Referable` that can be initialized from a list of `Referable`s and can yield a magic pseudo list of its values, which also allows adding and removing values from the dict.
This is required by #8https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/25model: Implement DataSpecificationIEC613602020-01-21T12:26:05+01:00Michael Thiesmodel: Implement DataSpecificationIEC61360https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/12model: Fix mutable default parameters2019-11-28T08:59:23+01:00Michael Thiesmodel: Fix mutable default parametersCurrently, we use lists in many places as default initializer parameters. In Python, this means, that each call to this initializer without an explicit specification of that parameter will receive a reference to the *same* list. Thus all...Currently, we use lists in many places as default initializer parameters. In Python, this means, that each call to this initializer without an explicit specification of that parameter will receive a reference to the *same* list. Thus all those objects will use the *same* list of elements; adding an element to one of the objects will also add it to all other objects.
For some of our list attributes (all lists of `Referable`s, forming `Namespace`s), this will be fixed by #8. In all other cases, we should fix this by changing the default parameter to `None` and adding the following code to the initializer:
```python
if var is None:
var = []
```
This way, we create a new list for every default-initialized object.Torben MinyTorben Miny