Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SDS-335] Resolve import cycles using postponed annotations #137

Merged
merged 3 commits into from
Mar 17, 2022

Conversation

tomrijnbeek
Copy link

Postponed annotations allow us to use forward code references without having access to them statically, but we can have access at runtime. Using the TYPE_CHECKING constant from typing makes sure that we don't have circular dependencies in the actual code.

The "correct" approach would be to extract interfaces. For example, we could have a generic API interface or a generic Job interface that exposes the methods and properties that we need access to. However, this is not particularly "Pythonese", so this approach seemed more lightweight.

@coveralls
Copy link

Coverage Status

Coverage decreased (-0.2%) to 99.777% when pulling f87bfdf on feature/SDS-335/postponed-annotations into 3023295 on dev.

1 similar comment
@coveralls
Copy link

Coverage Status

Coverage decreased (-0.2%) to 99.777% when pulling f87bfdf on feature/SDS-335/postponed-annotations into 3023295 on dev.

@coveralls
Copy link

coveralls commented Mar 11, 2022

Coverage Status

Coverage remained the same at 100.0% when pulling cd52e55 on feature/SDS-335/postponed-annotations into c2e6546 on dev.

Copy link
Author

@tomrijnbeek tomrijnbeek left a comment

Choose a reason for hiding this comment

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

Thanks for the review.

@tomrijnbeek tomrijnbeek requested a review from QFer March 14, 2022 14:20
@koffie
Copy link
Contributor

koffie commented Mar 14, 2022

@tomrijnbeek This comment is not intended as a review of this PR. But python does have abstract classes as part of the standard library: https://docs.python.org/3/library/abc.html

Postponed annotations allow us to use forward code references without having access to them statically, but we can have access at runtime. Using the TYPE_CHECKING constant from typing makes sure that we don't have circular dependencies in the actual code.

The "correct" approach would be to extract interfaces. For example, we could have a generic API interface or a generic Job interface that exposes the methods and properties that we need access to. However, this is not particularly "Pythonese", so this approach seemed more lightweight.
@tomrijnbeek tomrijnbeek force-pushed the feature/SDS-335/postponed-annotations branch from e359fe7 to 5f48413 Compare March 17, 2022 10:00
@tomrijnbeek tomrijnbeek force-pushed the feature/SDS-335/postponed-annotations branch from 5f48413 to cd52e55 Compare March 17, 2022 13:19
@tomrijnbeek tomrijnbeek merged commit 3848324 into dev Mar 17, 2022
@tomrijnbeek tomrijnbeek deleted the feature/SDS-335/postponed-annotations branch March 17, 2022 13:26
oschusler pushed a commit that referenced this pull request Feb 2, 2025
Bumps [qutechopenql](https://github.com/QuTech-Delft/OpenQL) from 0.11.1 to 0.12.2.
- [Release notes](https://github.com/QuTech-Delft/OpenQL/releases)
- [Changelog](https://github.com/QuTech-Delft/OpenQL/blob/develop/CHANGELOG.md)
- [Commits](QuTech-Delft/OpenQL@v0.11.1...0.12.2)

---
updated-dependencies:
- dependency-name: qutechopenql
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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