-
Notifications
You must be signed in to change notification settings - Fork 678
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
Make the token serializer configurable #521
Conversation
rest_framework_simplejwt/views.py
Outdated
@@ -37,7 +38,7 @@ class TokenObtainPairView(TokenViewBase): | |||
token pair to prove the authentication of those credentials. | |||
""" | |||
|
|||
serializer_class = serializers.TokenObtainPairSerializer | |||
serializer_class = api_settings.TOKEN_OBTAIN_SERIALIZER |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does DRF have a method for grabbing the serializer class? I feel like importing all serializers during settings initliaization would be a performance hit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do you have any good way to about this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea, GenericAPIView has a get_serializer_class method. Override that method and use import_string to get the serializers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so, should I override that method in each subclass view?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no. Change serializer_class to be a different attribute that utilizes the API_SETTINGS, perhaps just with an _ prefix. Don't do the string imports in the settings. Make an abstract view that grabs the attribute and import like that
rest_framework_simplejwt/settings.py
Outdated
} | ||
|
||
IMPORT_STRINGS = ( | ||
"AUTH_TOKEN_CLASSES", | ||
"TOKEN_USER_CLASS", | ||
"USER_AUTHENTICATION_RULE", | ||
"SLIDING_TOKEN_OBTAIN_SERIALIZER", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It could just be awhile, but aren't there more views with other serializers? I think this functionality would just need to add support for all views.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTY I'll commit to adding support for other serializers as well.
@@ -14,6 +16,14 @@ class TokenViewBase(generics.GenericAPIView): | |||
|
|||
www_authenticate_realm = "api" | |||
|
|||
def get_serializer_class(self): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This code only imports one serializer. Thanks for letting me know.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great stuff! Thanks again!
@Andrew-Chen-Wang We need to update some documentation with this change |
@2ykwang yes. Classes have swamped me, but I plan to make a release next week. Do you mind putting together the CHANGELOG and recompiling the languages? We should be moving to 5.0.1. Also we need to drop the PyJWT minimum constraint, but that means including PyJWT in the test suite. So that needs figuring out in tox.ini. If we can get that to happen, we can bump version to 5.1.0. |
* Fix ES locale translation error (jazzband#499) * chore: test on Django 4.0 (jazzband#495) * chore: test on Django 4.0 * Remove Django 3.1 support from trove * Remove Django 3.1 from tox * Remove 3.1 reference in tox.ini Co-authored-by: Andrew Chen Wang <[email protected]> * Stop deleting blacklist on user delete (jazzband#516) * OutstandingToken user on_delete should be null * Add test to verify that deleting a User doesn't remove tokens from the blacklist This is a rather unexpected default behavior. Deleting a User means that their blacklisted tokens become live again. * Add migration for cascading User deletion to SET_NULL instead of DELETE * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: Andrew Chen Wang <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#498) updates: - [github.com/pre-commit/pre-commit-hooks: v4.0.1 → v4.1.0](pre-commit/pre-commit-hooks@v4.0.1...v4.1.0) - [github.com/asottile/yesqa: v1.2.3 → v1.3.0](asottile/yesqa@v1.2.3...v1.3.0) - [github.com/pycqa/isort: 5.9.3 → 5.10.1](PyCQA/isort@5.9.3...5.10.1) - [github.com/psf/black: 21.9b0 → 21.12b0](psf/black@21.9b0...21.12b0) - [github.com/pre-commit/pre-commit-hooks: v4.0.1 → v4.1.0](pre-commit/pre-commit-hooks@v4.0.1...v4.1.0) - [github.com/asottile/pyupgrade: v2.28.0 → v2.31.0](asottile/pyupgrade@v2.28.0...v2.31.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Enable ECDSA algorithms supported by PyJWT (jazzband#520) * Parameterize some tests to reduce duplication and make it easy to add more algorithms This way new algorithms can be added to the basic test set simply by adding their backends to TestTokenBackend.backends. * Enable ECDSA algorithms supported by PyJWT Enable the algorithms and add basic tests for them. Also convert the ALLOWED_ALGORITHMS constant to a set for a minor style cleanup. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Simplify using custom token classes in serializers (jazzband#517) For most cases this could be done by overriding get_token, which is simple enough. The exception was TokenRefreshSerializer.validate where the entire method needed to be copy-pasted to allow using a custom replacement for RefreshToken. The other cases are changed the same way mainly for consistency. * [pre-commit.ci] pre-commit autoupdate (jazzband#524) updates: - [github.com/psf/black: 21.12b0 → 22.1.0](psf/black@21.12b0...22.1.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Make the token serializer configurable (jazzband#521) * Update translation files (jazzband#526) * Add default __getattr__ behavior to models.TokenUser (jazzband#528) * Add default __getattr__ behavior to models.TokenUser to allow getting custom claims defined in serializers * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Allow overriding access token class (jazzband#529) * Maintain compatibility with serializer_class overrides (jazzband#530) * Consider leeway when checking expiry (jazzband#458) * Add locale checker to CI (jazzband#456) * Add locale checker to CI * Just pip install Django * Add gettext package to OS * Add sudo to apt-get * Use @2ykwang 's updated script * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Only update on push to master * To avoid pain points of PRs and histories being split * Trying to use Andrew's username for pushing to see if that works * Use separate workflow file Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Update CHANGELOG.md for v5.1.0 (jazzband#527) * Update CHANGELOG.md for v5.0.1 * Update CHANGELOG.md * Remove looking for maintainers in README since Jazzband Co-authored-by: Andrew Chen Wang <[email protected]> * Fix i18n CI (jazzband#538) * Open PR on i18n (jazzband#539) * fix small typo (jazzband#540) * Setup initial PyJWT 1.7.1 support (jazzband#536) * Fix release locale checker (jazzband#541) * Update locale files (jazzband#542) * [pre-commit.ci] pre-commit autoupdate (jazzband#545) updates: - [github.com/asottile/pyupgrade: v2.31.0 → v2.31.1](asottile/pyupgrade@v2.31.0...v2.31.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Remove the JWTTokenUserAuthentication from the Experimental Features jazzband#546 (jazzband#547) * Change from git protocol to https protocol (jazzband#555) * [pre-commit.ci] pre-commit autoupdate (jazzband#551) updates: - [github.com/psf/black: 22.1.0 → 22.3.0](psf/black@22.1.0...22.3.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Fix leeway type error (jazzband#554) * Fix lewway type error * Add test case * Update Korean translation * Add type hints * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix translation revert POT-Creation-Date * update translation Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#557) * Add info on TokenBlacklistView to the docs (jazzband#558) * chore(ci): add informational Codecov status checks (jazzband#559) * Update JWTStatelessUserAuthentication docs (jazzband#561) * Allow none jti claim token type claim (jazzband#567) * Allow customizing token JSON encoding (jazzband#568) * Allow specifying custom JSONEncoder for TokenBackend * Make TokenBackend JSONEncoder configurable * [pre-commit.ci] pre-commit autoupdate (jazzband#571) updates: - [github.com/asottile/pyupgrade: v2.32.0 → v2.32.1](asottile/pyupgrade@v2.32.0...v2.32.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Update CHANGELOG to 5.2.0 (jazzband#573) * Locale update (jazzband#574) * update & correct supported versions in docs (jazzband#576) * update & correct supported versions in docs * Add DRF supported version Co-authored-by: Andrew Chen Wang <[email protected]> * Add Swedish translations (jazzband#579) * Fixed issue jazzband#543 (jazzband#586) * Allow optional installation of the 'cryptography' package (jazzband#543) * Update docs (jazzband#543) * Update docs (jazzband#543) * Update docs/getting_started.rst Co-authored-by: Andrew Chen Wang <[email protected]> * fix for code-block (jazzband#543) * another fix for code-block (jazzband#543) * fix: removed extra line (jazzband#543) Co-authored-by: Andrew Chen Wang <[email protected]> * [pre-commit.ci] pre-commit autoupdate (jazzband#587) updates: - [github.com/pre-commit/pre-commit-hooks: v4.2.0 → v4.3.0](pre-commit/pre-commit-hooks@v4.2.0...v4.3.0) - [github.com/pre-commit/pre-commit-hooks: v4.2.0 → v4.3.0](pre-commit/pre-commit-hooks@v4.2.0...v4.3.0) - [github.com/asottile/pyupgrade: v2.32.1 → v2.34.0](asottile/pyupgrade@v2.32.1...v2.34.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#589) updates: - [github.com/psf/black: 22.3.0 → 22.6.0](psf/black@22.3.0...22.6.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#590) * removed some unwanted files * removed some unwanted files * code lint Co-authored-by: Marc Salat <[email protected]> Co-authored-by: Christofer Bertonha <[email protected]> Co-authored-by: Andrew Chen Wang <[email protected]> Co-authored-by: vainu-arto <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: yeongkwang <[email protected]> Co-authored-by: Oscar Y Chen <[email protected]> Co-authored-by: totycro <[email protected]> Co-authored-by: Byron Motoche <[email protected]> Co-authored-by: Vladimir <[email protected]> Co-authored-by: Tom Hu <[email protected]> Co-authored-by: Dennis Dinwiddie <[email protected]> Co-authored-by: abdurrahman <[email protected]> Co-authored-by: Pasindu Prabhashitha <[email protected]> Co-authored-by: Armenak Baburyan <[email protected]>
* Fix ES locale translation error (jazzband#499) * chore: test on Django 4.0 (jazzband#495) * chore: test on Django 4.0 * Remove Django 3.1 support from trove * Remove Django 3.1 from tox * Remove 3.1 reference in tox.ini Co-authored-by: Andrew Chen Wang <[email protected]> * Stop deleting blacklist on user delete (jazzband#516) * OutstandingToken user on_delete should be null * Add test to verify that deleting a User doesn't remove tokens from the blacklist This is a rather unexpected default behavior. Deleting a User means that their blacklisted tokens become live again. * Add migration for cascading User deletion to SET_NULL instead of DELETE * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: Andrew Chen Wang <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#498) updates: - [github.com/pre-commit/pre-commit-hooks: v4.0.1 → v4.1.0](pre-commit/pre-commit-hooks@v4.0.1...v4.1.0) - [github.com/asottile/yesqa: v1.2.3 → v1.3.0](asottile/yesqa@v1.2.3...v1.3.0) - [github.com/pycqa/isort: 5.9.3 → 5.10.1](PyCQA/isort@5.9.3...5.10.1) - [github.com/psf/black: 21.9b0 → 21.12b0](psf/black@21.9b0...21.12b0) - [github.com/pre-commit/pre-commit-hooks: v4.0.1 → v4.1.0](pre-commit/pre-commit-hooks@v4.0.1...v4.1.0) - [github.com/asottile/pyupgrade: v2.28.0 → v2.31.0](asottile/pyupgrade@v2.28.0...v2.31.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Enable ECDSA algorithms supported by PyJWT (jazzband#520) * Parameterize some tests to reduce duplication and make it easy to add more algorithms This way new algorithms can be added to the basic test set simply by adding their backends to TestTokenBackend.backends. * Enable ECDSA algorithms supported by PyJWT Enable the algorithms and add basic tests for them. Also convert the ALLOWED_ALGORITHMS constant to a set for a minor style cleanup. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Simplify using custom token classes in serializers (jazzband#517) For most cases this could be done by overriding get_token, which is simple enough. The exception was TokenRefreshSerializer.validate where the entire method needed to be copy-pasted to allow using a custom replacement for RefreshToken. The other cases are changed the same way mainly for consistency. * [pre-commit.ci] pre-commit autoupdate (jazzband#524) updates: - [github.com/psf/black: 21.12b0 → 22.1.0](psf/black@21.12b0...22.1.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Make the token serializer configurable (jazzband#521) * Update translation files (jazzband#526) * Add default __getattr__ behavior to models.TokenUser (jazzband#528) * Add default __getattr__ behavior to models.TokenUser to allow getting custom claims defined in serializers * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Allow overriding access token class (jazzband#529) * Maintain compatibility with serializer_class overrides (jazzband#530) * Consider leeway when checking expiry (jazzband#458) * Add locale checker to CI (jazzband#456) * Add locale checker to CI * Just pip install Django * Add gettext package to OS * Add sudo to apt-get * Use @2ykwang 's updated script * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Only update on push to master * To avoid pain points of PRs and histories being split * Trying to use Andrew's username for pushing to see if that works * Use separate workflow file Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Update CHANGELOG.md for v5.1.0 (jazzband#527) * Update CHANGELOG.md for v5.0.1 * Update CHANGELOG.md * Remove looking for maintainers in README since Jazzband Co-authored-by: Andrew Chen Wang <[email protected]> * Fix i18n CI (jazzband#538) * Open PR on i18n (jazzband#539) * fix small typo (jazzband#540) * Setup initial PyJWT 1.7.1 support (jazzband#536) * Fix release locale checker (jazzband#541) * Update locale files (jazzband#542) * [pre-commit.ci] pre-commit autoupdate (jazzband#545) updates: - [github.com/asottile/pyupgrade: v2.31.0 → v2.31.1](asottile/pyupgrade@v2.31.0...v2.31.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Remove the JWTTokenUserAuthentication from the Experimental Features jazzband#546 (jazzband#547) * Change from git protocol to https protocol (jazzband#555) * [pre-commit.ci] pre-commit autoupdate (jazzband#551) updates: - [github.com/psf/black: 22.1.0 → 22.3.0](psf/black@22.1.0...22.3.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Fix leeway type error (jazzband#554) * Fix lewway type error * Add test case * Update Korean translation * Add type hints * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix translation revert POT-Creation-Date * update translation Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#557) * Add info on TokenBlacklistView to the docs (jazzband#558) * chore(ci): add informational Codecov status checks (jazzband#559) * Update JWTStatelessUserAuthentication docs (jazzband#561) * Allow none jti claim token type claim (jazzband#567) * Allow customizing token JSON encoding (jazzband#568) * Allow specifying custom JSONEncoder for TokenBackend * Make TokenBackend JSONEncoder configurable * [pre-commit.ci] pre-commit autoupdate (jazzband#571) updates: - [github.com/asottile/pyupgrade: v2.32.0 → v2.32.1](asottile/pyupgrade@v2.32.0...v2.32.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Update CHANGELOG to 5.2.0 (jazzband#573) * Locale update (jazzband#574) * update & correct supported versions in docs (jazzband#576) * update & correct supported versions in docs * Add DRF supported version Co-authored-by: Andrew Chen Wang <[email protected]> * Add Swedish translations (jazzband#579) * Fixed issue jazzband#543 (jazzband#586) * Allow optional installation of the 'cryptography' package (jazzband#543) * Update docs (jazzband#543) * Update docs (jazzband#543) * Update docs/getting_started.rst Co-authored-by: Andrew Chen Wang <[email protected]> * fix for code-block (jazzband#543) * another fix for code-block (jazzband#543) * fix: removed extra line (jazzband#543) Co-authored-by: Andrew Chen Wang <[email protected]> * [pre-commit.ci] pre-commit autoupdate (jazzband#587) updates: - [github.com/pre-commit/pre-commit-hooks: v4.2.0 → v4.3.0](pre-commit/pre-commit-hooks@v4.2.0...v4.3.0) - [github.com/pre-commit/pre-commit-hooks: v4.2.0 → v4.3.0](pre-commit/pre-commit-hooks@v4.2.0...v4.3.0) - [github.com/asottile/pyupgrade: v2.32.1 → v2.34.0](asottile/pyupgrade@v2.32.1...v2.34.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#589) updates: - [github.com/psf/black: 22.3.0 → 22.6.0](psf/black@22.3.0...22.6.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#590) * [pre-commit.ci] pre-commit autoupdate (jazzband#594) updates: - [github.com/asottile/pyupgrade: v2.37.1 → v2.37.2](asottile/pyupgrade@v2.37.1...v2.37.2) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#597) updates: - [github.com/asottile/pyupgrade: v2.37.2 → v2.37.3](asottile/pyupgrade@v2.37.2...v2.37.3) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * [pre-commit.ci] pre-commit autoupdate (jazzband#601) updates: - [github.com/asottile/yesqa: v1.3.0 → v1.4.0](asottile/yesqa@v1.3.0...v1.4.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Fix uncaught exception with JWK (jazzband#600) * Fix uncaught exception with JWK * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Allow tests to run on older JWT versions Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Test on Django 4.1 (jazzband#604) * [pre-commit.ci] pre-commit autoupdate (jazzband#609) * Add v5.2.1 changes (jazzband#611) * use non-deprecated UTC timezone (jazzband#606) RemovedInDjango50Warning * Added Romanian translations (jazzband#591) * Added Romanian translations * Changed some translations according to the grammatical rules of the Romanian language * Changed some translations according to the advices of: https://github.com/marcellefter https://github.com/uoxiu Co-authored-by: Daniel Cuznetov <[email protected]> * allow verification skipping (jazzband#605) * allow verify skip verification if VERIFYING_KEY is not set * Update settings.py * Update authentication.py * Update settings.py * Update authentication.py * [pre-commit.ci] pre-commit autoupdate (jazzband#619) * [pre-commit.ci] pre-commit autoupdate (jazzband#620) * Update locale files (jazzband#624) * Revert 605 (jazzband#629) * [pre-commit.ci] pre-commit autoupdate (jazzband#630) * [Docs] Fix typo in blacklist_app.rst (jazzband#593) * Fix typo in blacklist_app.rst `TokenBlackListView` -> `TokenBlacklistView` * Append CHANGELOG Co-authored-by: Andrew-Chen-Wang <[email protected]> Co-authored-by: Marc Salat <[email protected]> Co-authored-by: Christofer Bertonha <[email protected]> Co-authored-by: Andrew Chen Wang <[email protected]> Co-authored-by: vainu-arto <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: yeongkwang <[email protected]> Co-authored-by: Oscar Y Chen <[email protected]> Co-authored-by: totycro <[email protected]> Co-authored-by: Byron Motoche <[email protected]> Co-authored-by: Vladimir <[email protected]> Co-authored-by: Tom Hu <[email protected]> Co-authored-by: Dennis Dinwiddie <[email protected]> Co-authored-by: abdurrahman <[email protected]> Co-authored-by: Pasindu Prabhashitha <[email protected]> Co-authored-by: Armenak Baburyan <[email protected]> Co-authored-by: Jeremy Mayeres <[email protected]> Co-authored-by: Benedikt S. Vogler <[email protected]> Co-authored-by: Daniel Cuzneţov <[email protected]> Co-authored-by: Daniel Cuznetov <[email protected]> Co-authored-by: Domenico <[email protected]> Co-authored-by: Boseong Choi <[email protected]> Co-authored-by: Andrew-Chen-Wang <[email protected]>
#256 Issue