-
Notifications
You must be signed in to change notification settings - Fork 154
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
Fix an issue introduced with hetero tuple decode #493
Conversation
Coverage Report
|
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.
@george-zubrienko Actually, in the referenced issue, the type hint does not match the actual value of the field/variable. Let me quote the Python doc, Annotating Tuples
# OK: ``x`` is assigned to a tuple of length 1 where the sole element is an int
x: tuple[int] = (5,)
# OK: ``y`` is assigned to a tuple of length 2;
# element 1 is an int, element 2 is a str
y: tuple[int, str] = (5, "foo")
# Error: the type annotation indicates a tuple of length 1,
# but ``z`` has been assigned to a tuple of length 3
z: tuple[int] = (1, 2, 3)
The latter case is what is described in the issue. I think raising an error for tuples where number of elements != number of type args would be appropriate.
@matt035343 so I just leave the |
I guess that should do it. Btw, why did you opt for |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [dataclasses-json](https://togithub.com/lidatong/dataclasses-json) ([changelog](https://togithub.com/lidatong/dataclasses-json/releases)) | `^0.5.7` -> `^0.6.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/dataclasses-json/0.6.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/dataclasses-json/0.6.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/dataclasses-json/0.5.9/0.6.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/dataclasses-json/0.5.9/0.6.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- > [!WARNING] > Some dependencies could not be looked up. Check the warning logs for more information. --- ### Release Notes <details> <summary>lidatong/dataclasses-json (dataclasses-json)</summary> ### [`v0.6.3`](https://togithub.com/lidatong/dataclasses-json/releases/tag/v0.6.3) [Compare Source](https://togithub.com/lidatong/dataclasses-json/compare/v0.6.2...v0.6.3) #### What's Changed - Fixes catchall inheritance issue by [@​jasonrock-a3](https://togithub.com/jasonrock-a3) in [https://github.com/lidatong/dataclasses-json/pull/500](https://togithub.com/lidatong/dataclasses-json/pull/500) #### New Contributors - [@​jasonrock-a3](https://togithub.com/jasonrock-a3) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/500](https://togithub.com/lidatong/dataclasses-json/pull/500) **Full Changelog**: lidatong/dataclasses-json@v0.6.2...v0.6.3 ### [`v0.6.2`](https://togithub.com/lidatong/dataclasses-json/releases/tag/v0.6.2) [Compare Source](https://togithub.com/lidatong/dataclasses-json/compare/v0.6.1...v0.6.2) #### What's Changed - fix: allow using CatchAll with postponed evaluation of annotations by [@​2ynn](https://togithub.com/2ynn) in [https://github.com/lidatong/dataclasses-json/pull/490](https://togithub.com/lidatong/dataclasses-json/pull/490) - Fix PEP 0673 before 3.11 by [@​george-zubrienko](https://togithub.com/george-zubrienko) in [https://github.com/lidatong/dataclasses-json/pull/487](https://togithub.com/lidatong/dataclasses-json/pull/487) - fix mypy error when assigning to dataclass_json_config by [@​MickaelBergem](https://togithub.com/MickaelBergem) in [https://github.com/lidatong/dataclasses-json/pull/486](https://togithub.com/lidatong/dataclasses-json/pull/486) - Fix an issue introduced with hetero tuple decode by [@​george-zubrienko](https://togithub.com/george-zubrienko) in [https://github.com/lidatong/dataclasses-json/pull/493](https://togithub.com/lidatong/dataclasses-json/pull/493) #### New Contributors - [@​2ynn](https://togithub.com/2ynn) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/490](https://togithub.com/lidatong/dataclasses-json/pull/490) - [@​MickaelBergem](https://togithub.com/MickaelBergem) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/486](https://togithub.com/lidatong/dataclasses-json/pull/486) **Full Changelog**: lidatong/dataclasses-json@v0.6.1...v0.6.2 ### [`v0.6.1`](https://togithub.com/lidatong/dataclasses-json/releases/tag/v0.6.1) [Compare Source](https://togithub.com/lidatong/dataclasses-json/compare/v0.6.0...v0.6.1) ##### What's Changed - Add links to make PyPI a better maintainer reference by [@​pydanny](https://togithub.com/pydanny) in [https://github.com/lidatong/dataclasses-json/pull/482](https://togithub.com/lidatong/dataclasses-json/pull/482) - improve Union deserialization when "\__type" field specifier is not present by [@​idbentley](https://togithub.com/idbentley) in [https://github.com/lidatong/dataclasses-json/pull/478](https://togithub.com/lidatong/dataclasses-json/pull/478) ##### New Contributors - [@​pydanny](https://togithub.com/pydanny) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/482](https://togithub.com/lidatong/dataclasses-json/pull/482) - [@​idbentley](https://togithub.com/idbentley) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/478](https://togithub.com/lidatong/dataclasses-json/pull/478) **Full Changelog**: lidatong/dataclasses-json@v0.6.0...v0.6.1 ### [`v0.6.0`](https://togithub.com/lidatong/dataclasses-json/releases/tag/v0.6.0) [Compare Source](https://togithub.com/lidatong/dataclasses-json/compare/v0.5.14...v0.6.0) ##### What's Changed - Improve dataclass_json and \_process_class type annotations by [@​ringohoffman](https://togithub.com/ringohoffman) in [https://github.com/lidatong/dataclasses-json/pull/475](https://togithub.com/lidatong/dataclasses-json/pull/475) - Update Poetry version used for 3.7 test suite and change Requires-Python boundary by [@​george-zubrienko](https://togithub.com/george-zubrienko) in [https://github.com/lidatong/dataclasses-json/pull/476](https://togithub.com/lidatong/dataclasses-json/pull/476) - Fix for [#​239](https://togithub.com/lidatong/dataclasses-json/issues/239): Union inside List or Dict is not deserialized as the correspond… by [@​pawelwilczewski](https://togithub.com/pawelwilczewski) in [https://github.com/lidatong/dataclasses-json/pull/464](https://togithub.com/lidatong/dataclasses-json/pull/464) Due to a behaviour change discovered in [https://github.com/lidatong/dataclasses-json/issues/466](https://togithub.com/lidatong/dataclasses-json/issues/466) and also as a matter of preparation for full deprecation of Py3.7, we are bumping the minor version to 0.6.0. Most important change is that since 0.5.9 builtins are coerced automatically without throwing an exception. Please visit the issue for more info :) ##### New Contributors - [@​ringohoffman](https://togithub.com/ringohoffman) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/475](https://togithub.com/lidatong/dataclasses-json/pull/475) - [@​pawelwilczewski](https://togithub.com/pawelwilczewski) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/464](https://togithub.com/lidatong/dataclasses-json/pull/464) **Full Changelog**: lidatong/dataclasses-json@v0.5.15...v0.6.0 ### [`v0.5.14`](https://togithub.com/lidatong/dataclasses-json/releases/tag/v0.5.14) [Compare Source](https://togithub.com/lidatong/dataclasses-json/compare/v0.5.13...v0.5.14) #### What's Changed - Temporarily disable code coverage publish for fork PRs by [@​george-zubrienko](https://togithub.com/george-zubrienko) in [https://github.com/lidatong/dataclasses-json/pull/444](https://togithub.com/lidatong/dataclasses-json/pull/444) - fix mashmallow fields.Tuple creation by [@​healthmatrice](https://togithub.com/healthmatrice) in [https://github.com/lidatong/dataclasses-json/pull/434](https://togithub.com/lidatong/dataclasses-json/pull/434) - Allow the global config dictionary keys to also be Optional\[type] by [@​sumnerevans](https://togithub.com/sumnerevans) in [https://github.com/lidatong/dataclasses-json/pull/255](https://togithub.com/lidatong/dataclasses-json/pull/255) - Fix global_config.mm_fields having no effect by [@​sigmunau](https://togithub.com/sigmunau) in [https://github.com/lidatong/dataclasses-json/pull/253](https://togithub.com/lidatong/dataclasses-json/pull/253) - Fixes recursion bug related to enum flags by [@​matt035343](https://togithub.com/matt035343) in [https://github.com/lidatong/dataclasses-json/pull/447](https://togithub.com/lidatong/dataclasses-json/pull/447) - Update Python version boundaries to include 3.12 by [@​cdce8p](https://togithub.com/cdce8p) in [https://github.com/lidatong/dataclasses-json/pull/449](https://togithub.com/lidatong/dataclasses-json/pull/449) #### New Contributors - [@​healthmatrice](https://togithub.com/healthmatrice) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/434](https://togithub.com/lidatong/dataclasses-json/pull/434) - [@​sigmunau](https://togithub.com/sigmunau) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/253](https://togithub.com/lidatong/dataclasses-json/pull/253) - [@​cdce8p](https://togithub.com/cdce8p) made their first contribution in [https://github.com/lidatong/dataclasses-json/pull/449](https://togithub.com/lidatong/dataclasses-json/pull/449) **Full Changelog**: lidatong/dataclasses-json@v0.5.13...v0.5.14 ### [`v0.5.13`](https://togithub.com/lidatong/dataclasses-json/releases/tag/v0.5.13) [Compare Source](https://togithub.com/lidatong/dataclasses-json/compare/v0.5.12...v0.5.13) #### What's Changed - Fixes bug related to Tuples defined with ellipsis by [@​matt035343](https://togithub.com/matt035343) in [https://github.com/lidatong/dataclasses-json/pull/440](https://togithub.com/lidatong/dataclasses-json/pull/440) - Revert type hint in annotation call by [@​george-zubrienko](https://togithub.com/george-zubrienko) in [https://github.com/lidatong/dataclasses-json/pull/441](https://togithub.com/lidatong/dataclasses-json/pull/441) **Full Changelog**: lidatong/dataclasses-json@v0.5.12...v0.5.13 ### [`v0.5.12`](https://togithub.com/lidatong/dataclasses-json/releases/tag/v0.5.12) [Compare Source](https://togithub.com/lidatong/dataclasses-json/compare/v0.5.9...v0.5.12) #### What's Changed - Fix multiline scripts in CI by [@​george-zubrienko](https://togithub.com/george-zubrienko) in [https://github.com/lidatong/dataclasses-json/pull/439](https://togithub.com/lidatong/dataclasses-json/pull/439) **Full Changelog**: lidatong/dataclasses-json@v0.5.11...v0.5.12 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/ixm-one/pytest-cmake-presets). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi43OS4xIiwidXBkYXRlZEluVmVyIjoiMzcuODEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> --------- Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Izzy Muerte <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Izzy Muerte <[email protected]>
Fixes #491
I believe one way to fix this is to simply narrow down use cases for hetero tuples to either types == elements in tuple, or a single type :)