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

Fixing bug in decoder eval for optional fields #354

Merged
merged 4 commits into from
Jun 13, 2023

Conversation

rpmcginty
Copy link
Contributor

Issue: #353

Problem

There is inconsistent behavior in how a custom decoder is used depending on whether the field of the custom decoder has Optional type.

For optional fields which can be None, you are supposed to use the Optional[...] type. However, when doing so, it seems that custom decoders are always evaluated.

It should be noted that fields where the default value is None but no Optional[...] typing is present, a custom decoder will only be used if a non-None value is provided.

Solution

Modified decoder function s.t. when field value is None, both cases where field type is not optional (existing logic) as well as where field type is optional are handled.

@rpmcginty
Copy link
Contributor Author

rpmcginty commented Jul 22, 2022

@lidatong is there any concern with this change?

@rpmcginty
Copy link
Contributor Author

@lidatong is there a timeline for merging into the package?

@TristanSpeakEasy
Copy link
Contributor

@lidatong we have run into this issue as well, can we get this merged and a new release created?

@simplesagar
Copy link

@lidatong Ran into this issue as well. Would love to know if its getting merged soon :)

@patricksnape
Copy link

patricksnape commented Jan 13, 2023

Whilst we are piling on - I would also love to see this merged, this causes very surprising results when a field is constructed incorrectly by passing None where None is not valid (you essentially just get a warning and then are provided with an invalid class back.

@TristanSpeakEasy
Copy link
Contributor

Unfortunately it seems that this project is likely abandoned, we have been maintaining a separate fork for our own use-case but would love to see this repo get some love @lidatong or a new maintainer take up the reigns (which might need to be via a fork of this if the original author doesn't respond)

@lidatong
Copy link
Owner

Unfortunately it seems that this project is likely abandoned, we have been maintaining a separate fork for our own use-case but would love to see this repo get some love @lidatong or a new maintainer take up the reigns (which might need to be via a fork of this if the original author doesn't respond)

hi, i'm really sorry for the long delay. it's been a combination of work stress and burnout, but that is no excuse for my procrastination. i do really appreciate PRs from the community and will try to review and merge the high-demand ones this weekend! i'm also open to granting write permissions to repeat contributors, to make this project more sustainable

@rpmcginty
Copy link
Contributor Author

Is there an option for the latter?

@rpmcginty
Copy link
Contributor Author

@lidatong Let us know if granting wire permissions are an option. It would be good to get a community to help you out with making updates to this really useful package

@lidatong
Copy link
Owner

@lidatong Let us know if granting wire permissions are an option. It would be good to get a community to help you out with making updates to this really useful package

sorry, i just fixed CI issues. definitely can grant write, though publishing is a final step i'll aim to not bottleneck -- it would be good to for to review all changes anyways before signing anything

lidatong
lidatong previously approved these changes Mar 18, 2023
tests/test_metadata.py Outdated Show resolved Hide resolved
@matt035343 matt035343 linked an issue Jun 10, 2023 that may be closed by this pull request
@matt035343
Copy link
Collaborator

Also, please sync your branch to latest master commit. Then we can proceed with a merge

@rpmcginty
Copy link
Contributor Author

@matt035343 I have rebased and fixed formatting errors

@matt035343 matt035343 self-requested a review June 13, 2023 08:23
@matt035343 matt035343 merged commit b2dd567 into lidatong:master Jun 13, 2023
5 checks passed
@george-zubrienko
Copy link
Collaborator

Unfortunately it seems that this project is likely abandoned, we have been maintaining a separate fork for our own use-case but would love to see this repo get some love @lidatong or a new maintainer take up the reigns (which might need to be via a fork of this if the original author doesn't respond)

No stress, there are extra hands on deck now :) please let me or @s-vitaliy or @matt035343 know if there are other PRs you want reviewed asap

bruxisma pushed a commit to ixm-one/pytest-cmake-presets that referenced this pull request Jul 20, 2023
[![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) |
`0.5.8` -> `0.5.12` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/dataclasses-json/0.5.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/dataclasses-json/0.5.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/dataclasses-json/0.5.8/0.5.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/dataclasses-json/0.5.8/0.5.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>lidatong/dataclasses-json (dataclasses-json)</summary>

###
[`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
[@&#8203;george-zubrienko](https://togithub.com/george-zubrienko) in
[lidatong/dataclasses-json#439

**Full Changelog**:
lidatong/dataclasses-json@v0.5.11...v0.5.12

###
[`v0.5.9`](https://togithub.com/lidatong/dataclasses-json/releases/tag/v0.5.9)

[Compare
Source](https://togithub.com/lidatong/dataclasses-json/compare/v0.5.8...v0.5.9)

#### What's Changed

- feat: add formalized issue template by
[@&#8203;s-vitaliy](https://togithub.com/s-vitaliy) in
[lidatong/dataclasses-json#417
- Fixing bug in decoder eval for optional fields by
[@&#8203;rpmcginty](https://togithub.com/rpmcginty) in
[lidatong/dataclasses-json#354
- Fix type order relevance for union wrapping 2 types by
[@&#8203;george-zubrienko](https://togithub.com/george-zubrienko) in
[lidatong/dataclasses-json#419
- Fix autocomplete when using annotation by
[@&#8203;george-zubrienko](https://togithub.com/george-zubrienko) in
[lidatong/dataclasses-json#411
- Add support for enhanced builtin instantiation by
[@&#8203;rpmcginty](https://togithub.com/rpmcginty) in
[lidatong/dataclasses-json#375
- Restore `schema()` type safety by fixing generic type alias misuse by
[@&#8203;andersk](https://togithub.com/andersk) in
[lidatong/dataclasses-json#371

#### New Contributors

- [@&#8203;s-vitaliy](https://togithub.com/s-vitaliy) made their first
contribution in
[lidatong/dataclasses-json#417
- [@&#8203;george-zubrienko](https://togithub.com/george-zubrienko) made
their first contribution in
[lidatong/dataclasses-json#419
- [@&#8203;andersk](https://togithub.com/andersk) made their first
contribution in
[lidatong/dataclasses-json#371

**Full Changelog**:
lidatong/dataclasses-json@v0.5.8...v0.5.9

</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:eyJjcmVhdGVkSW5WZXIiOiIzNS4xNDQuMiIsInVwZGF0ZWRJblZlciI6IjM2LjguMTEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->

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

[bug] Custom decoder for Optional field always evaluated
7 participants