Skip to content

Conversation

@Frosty2500
Copy link
Contributor

@Frosty2500 Frosty2500 commented Dec 30, 2024

This fixes the redirects from the AAS repository paths to the Submodel repository paths to work properly.

Furthermore, the installation of dependencies inside the server Docker image was previously using the latest release of the SDK. This means, that we could not ensure that each commit in the main branch of our monorepo would be interoperable between SDK and server, as a PR would have to be closed in order for the server CI would not report any errors. In order to fix this, issue in the development process, the server Docker image now installs the SDK from the local repository, rather than from GitHub.

Lastly, this fixes a wrong status code reported when specifing a model that is malformed or missing information. The specification expects a 400 (Bad Request) response, but the server sent a 422 (Unprocessable Content).

Fixes #315

@Frosty2500 Frosty2500 changed the title http.py: fix redirect http.py: fix redirect and sdk intallation Dec 30, 2024
@s-heppner s-heppner added this to the Release v1.1.1 milestone Jan 29, 2025
Frosty2500 and others added 19 commits March 30, 2025 12:55
…asyx#363)

We add a missing import statement of `basyx.aas.adapter.json`. 

Fixes eclipse-basyx#352
…syx#356)

Currently, there are several wrong imports and
outdated unittests in the `compliance-tool` 
package.

This fixes these issues.

Fixes eclipse-basyx#354
…ce` (eclipse-basyx#337)

Previously, if the `semantic_id` was a 
`ModelReference`, it very often had the generic 
`type` "`model.Referable`" instead of the actual
type of the object it points to. This lead to a 
bug in the AASX writer, where 
`ConceptDescription`s were not written to the 
AASX, even though they existed in the 
`ObjectStore`.

This fixes this problem by tackling three separate
points: 

1. In `json_deserialization.py`, we now infer the
`type` of the `ModelReference` via the Reference's
last `Key`. This is more of a hotfix and issue 
eclipse-basyx#367 tracks the creation of a better solution. 

2. In `aasx.py`, an unneccessary `logger.info` 
call is removed, that previously cluttered the 
output of the writer if a `semantic_id` was not 
pointing to a `ConceptDescription`, which is not
something worth noting. Furthermore, we improve
other log messages. 

3. In `examples.data._helper`, we improve the test
for `semantic_id` equality, namely by comparing
the `ModelReference`'s attributes explicitly, when
it happens to be one, instead of relying on simple
string comparision.
This updates the minimum version of the dependency `pyecma376` in the `pyproject.toml`, ensuring that our AASX files allow for spaces in file names. 

Fixes eclipse-basyx#236
…-basyx#369)

Previously, some `sdk` dependencies, that are only 
necessary for testing were included in the 
mandatory dependencies.

For improving package footprint, these are moved 
into the `[dev]` section of optional dependencies
in the `pyproject.toml`.

---------

Co-authored-by: s-heppner <iat@s-heppner.com>
This adds a new `SetObjectStore` that is backed by 
a set. Its main advantage is that it does not have 
the problem with not updated `Identifier`s
that the `DictObjectStore` has (See eclipse-basyx#216).

We make sure to document the differences between
`DictObjectStore` and `SetObjectStore` in their
respective class docstrings.
… updated (eclipse-basyx#344)

Previously, there was no check if the copyright
statement on top of each file (due to the MIT
license) was up to date. 

This adapts our `update_copyright_year.sh` script
with a checking mode to determine if any file
needs adapting and then adds this check to the CI.

At the same time, this also updates all necessary
files to the year 2025.

Fixes eclipse-basyx#260
Fixes eclipse-basyx#331

---------

Co-authored-by: s-heppner <iat@s-heppner.com>
…pse-basyx#359)

Previously, we were accidentally still trying to 
install dependencies from the already deleted 
`requirements.txt` when generating the 
documentation.

This fixes this and installs them instead from 
the `pyproject.toml`.

Co-authored-by: s-heppner <iat@s-heppner.com>
This refactors away from `setup.py` and towards
`pyproject.toml` for the `compliance_tool` 
package.

At the same step, we also update the relevant CI 
checks as well.
@Frosty2500
Copy link
Contributor Author

@s-heppner, before you merge this, I have found 2 new bugs in the server that I first need to fix on this branch.

@Frosty2500 Frosty2500 requested a review from s-heppner April 3, 2025 21:21
@Frosty2500 Frosty2500 changed the title http.py: fix redirect and sdk intallation http.py: bug fixes and sdk installation Apr 4, 2025
Copy link
Contributor

@s-heppner s-heppner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Frosty2500 please quickly confirm here that there were no changes outside of http.py and the server package.
Other than the weird GitHub display bug, the actual changes LGTM.

Copy link
Contributor

@s-heppner s-heppner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me now. Let's hope GitHub soon fixes that display bug, that made it really hard to review.

@s-heppner s-heppner changed the title http.py: bug fixes and sdk installation http.py: Fix redirects, bugs, and SDK installation Apr 15, 2025
@s-heppner s-heppner merged commit 8c46dfe into eclipse-basyx:develop Apr 15, 2025
15 checks passed
@s-heppner s-heppner deleted the fix_server branch April 15, 2025 11:58
s-heppner pushed a commit that referenced this pull request Apr 23, 2025
This fixes the redirects from the AAS repository 
paths to the Submodel repository paths to work
properly.

Furthermore, the installation of dependencies 
inside the server Docker image was previously 
using the latest release of the SDK. This means,
that we could not ensure that each commit in the
`main` branch of our monorepo would be 
interoperable between SDK and server, as a PR 
would have to be closed in order for the server CI
would not report any errors. In order to fix this,
issue in the development process, the server 
Docker image now installs the SDK from the local
repository, rather than from GitHub.

Lastly, this fixes a wrong status code reported
when specifing a model that is malformed or 
missing information. The specification expects a
400 (Bad Request) response, but the server sent a 
422 (Unprocessable Content). 

Fixes #315
zrgt added a commit to rwth-iat/basyx-python-sdk that referenced this pull request May 22, 2025
zrgt added a commit that referenced this pull request Sep 8, 2025
* fix some typos

* fix README.md

* tutorial_serialization_deserialization: Fix missing import (#363)

We add a missing import statement of `basyx.aas.adapter.json`. 

Fixes #352

* README.md: Fix typo in Markdown Link

* compliance-tool: Fix compliance tool imports and unitests (#356)

Currently, there are several wrong imports and
outdated unittests in the `compliance-tool` 
package.

This fixes these issues.

Fixes #354

* aasx.adapter: Fix `semantic_id` type deserialization of `ModelReference` (#337)

Previously, if the `semantic_id` was a 
`ModelReference`, it very often had the generic 
`type` "`model.Referable`" instead of the actual
type of the object it points to. This lead to a 
bug in the AASX writer, where 
`ConceptDescription`s were not written to the 
AASX, even though they existed in the 
`ObjectStore`.

This fixes this problem by tackling three separate
points: 

1. In `json_deserialization.py`, we now infer the
`type` of the `ModelReference` via the Reference's
last `Key`. This is more of a hotfix and issue 
#367 tracks the creation of a better solution. 

2. In `aasx.py`, an unneccessary `logger.info` 
call is removed, that previously cluttered the 
output of the writer if a `semantic_id` was not 
pointing to a `ConceptDescription`, which is not
something worth noting. Furthermore, we improve
other log messages. 

3. In `examples.data._helper`, we improve the test
for `semantic_id` equality, namely by comparing
the `ModelReference`'s attributes explicitly, when
it happens to be one, instead of relying on simple
string comparision.

* sdk: Update version of pyecma dependency in pyproject.toml

This updates the minimum version of the dependency `pyecma376` in the `pyproject.toml`, ensuring that our AASX files allow for spaces in file names. 

Fixes #236

* sdk: Move testing depencies to dev section in pyproject.toml (#369)

Previously, some `sdk` dependencies, that are only 
necessary for testing were included in the 
mandatory dependencies.

For improving package footprint, these are moved 
into the `[dev]` section of optional dependencies
in the `pyproject.toml`.

---------

Co-authored-by: s-heppner <iat@s-heppner.com>

* basyx.provider: Add SetObjectStore to provider (#340)

This adds a new `SetObjectStore` that is backed by 
a set. Its main advantage is that it does not have 
the problem with not updated `Identifier`s
that the `DictObjectStore` has (See #216).

We make sure to document the differences between
`DictObjectStore` and `SetObjectStore` in their
respective class docstrings.

* scripts.set_copyright_year: Add a CI check to ensure the copyright is updated (#344)

Previously, there was no check if the copyright
statement on top of each file (due to the MIT
license) was up to date. 

This adapts our `update_copyright_year.sh` script
with a checking mode to determine if any file
needs adapting and then adds this check to the CI.

At the same time, this also updates all necessary
files to the year 2025.

Fixes #260
Fixes #331

---------

Co-authored-by: s-heppner <iat@s-heppner.com>

* sdk/.readthedocs.yaml: Install dependencies from pyproject.toml (#359)

Previously, we were accidentally still trying to 
install dependencies from the already deleted 
`requirements.txt` when generating the 
documentation.

This fixes this and installs them instead from 
the `pyproject.toml`.

Co-authored-by: s-heppner <iat@s-heppner.com>

* compliance_tool: add pyproject.toml (#361)

This refactors away from `setup.py` and towards
`pyproject.toml` for the `compliance_tool` 
package.

At the same step, we also update the relevant CI 
checks as well.

* http.py: Fix redirects, bugs, and SDK installation (#362)

This fixes the redirects from the AAS repository 
paths to the Submodel repository paths to work
properly.

Furthermore, the installation of dependencies 
inside the server Docker image was previously 
using the latest release of the SDK. This means,
that we could not ensure that each commit in the
`main` branch of our monorepo would be 
interoperable between SDK and server, as a PR 
would have to be closed in order for the server CI
would not report any errors. In order to fix this,
issue in the development process, the server 
Docker image now installs the SDK from the local
repository, rather than from GitHub.

Lastly, this fixes a wrong status code reported
when specifing a model that is malformed or 
missing information. The specification expects a
400 (Bad Request) response, but the server sent a 
422 (Unprocessable Content). 

Fixes #315

* CONTRIBUTING.md: Improve codestyle and testing section (#376)

Previously, the section "Codestyle and Testing"
was outdated, still from the time where there was
only the SDK inside this repository.

This greatly extends the section, renaming it to
"Code Quality" and introducing subsections for
"Codestyle" and "Testing", where we describe how
to run the necessary tests locally on the
developer's machine for each of the packages
inside this monorepository.

Fixes #353

* compliance_tool: Remove setup.py (#377)

We previously refactored the compliance_tool from
`setup.py` to `pyproject.toml` (See #361).
However, somehow the `setup.py` slipped through
and is still in the `compliance_tool` directory.

This removes the `setup.py` from the
`compliance_tool` completely.

* Add CI job to release compliance-tool to PyPI (#382)

This adds a job `compliance-tool-publish` to the `release.yml` that
automatically publishes the compliance-tool package to PyPI upon
release. It is simply copied from the SDK job, with adapted paths.

* sdk: Update lxml and mypy dependency in pyproject.toml (#392)

* sdk: Update lxml dependency in pyproject.toml

Previously, the `lxml` dependency in the `pyproject.toml` was pinned to
versions `>=4.2,<5`. This caused a faulty installation via `pip` on
Windows due to missing binary wheels.

This updates the `lxml` dependency to versions `>=5.3` to resolve the
issue.

Additionally, the `mypy` dependency in the `pyproject.toml` was unpinned,
leading to the installation of the latest version. The recent release of
`mypy 1.16.0` introduced changes not yet supported by our codebase,
resulting in CI pipeline failures.

This restricts the `mypy` dependency to version `1.15.0` until we have
proper support for `1.16.0` and its new features.

Fixes #391

---------

Co-authored-by: Sercan Sahin <s.sahin@iat.rwth-aachen.de>
Co-authored-by: Frosty2500 <125310380+Frosty2500@users.noreply.github.com>
Co-authored-by: Julian Vogel <julian.vogel@sms-group.com>
Co-authored-by: Igor Garmaev <56840636+zrgt@users.noreply.github.com>
Co-authored-by: Moritz Sommer <moritz.sommer@rwth-aachen.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants