Skip to content

fix: handle missing molecule_yml_date_modified key in state#4606

Merged
alisonlhart merged 1 commit intoansible:mainfrom
Redhat-forks:fix/issue-4597-keyerror-molecule-yml-date
Feb 12, 2026
Merged

fix: handle missing molecule_yml_date_modified key in state#4606
alisonlhart merged 1 commit intoansible:mainfrom
Redhat-forks:fix/issue-4597-keyerror-molecule-yml-date

Conversation

@dmzoneill
Copy link
Member

Summary

fixes the keyerror when molecule_yml_date_modified key is missing from state file

changed state.py line 187 to use .get() instead of direct dict access. older state files or files loaded from disk might not have this key, which was causing crashes.

the property type hint says float | None so returning None is correct behavior when the key is missing.

Test plan

  • ran existing unit tests - all pass
  • tested with state files that have and don't have the key
  • verified None is returned when key is missing
  • verified timestamp is returned when key exists

fixes #4597

…sible#4597)

Use .get() instead of direct dict access for the molecule_yml_date_modified
property to handle state files that don't have this key. Older state files
or state files loaded from disk may not contain this key, causing KeyError.

The property type hint is float | None, so returning None when the key is
missing is the correct behavior.
@alisonlhart alisonlhart merged commit 7fff8fd into ansible:main Feb 12, 2026
20 checks passed
rija added a commit to rmenage/ansible-role-hardened-docker that referenced this pull request Mar 3, 2026
This MR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [molecule](https://github.com/ansible-community/molecule) ([changelog](https://github.com/ansible-community/molecule/releases)) | `>=25.0.0,<26.0.0` → `>=26.2.0,<26.3.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/molecule/26.2.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/molecule/25.12.0/26.2.0?slim=true) |

---

### Release Notes

<details>
<summary>ansible-community/molecule (molecule)</summary>

### [`v26.2.0`](https://github.com/ansible/molecule/releases/tag/v26.2.0)

[Compare Source](ansible/molecule@v25.12.0...v26.2.0)

#### Features

- feat: improve scenario selection and filtering for large collection trees ([#&#8203;4613](ansible/molecule#4613)) [@&#8203;cidrblock](https://github.com/cidrblock)
- feat: support nested scenario directories in collection mode ([#&#8203;4611](ansible/molecule#4611)) [@&#8203;cidrblock](https://github.com/cidrblock)

#### Fixes

- fix: remove use of click-help-colors ([#&#8203;4569](ansible/molecule#4569)) [@&#8203;ssbarnea](https://github.com/ssbarnea)
- fix: validate .git directories in find\_vcs\_root() ([#&#8203;4610](ansible/molecule#4610)) [@&#8203;skeetmtp](https://github.com/skeetmtp)
- fix: handle missing molecule\_yml\_date\_modified key in state ([#&#8203;4606](ansible/molecule#4606)) [@&#8203;dmzoneill](https://github.com/dmzoneill)
- Add execution flow documentation ([#&#8203;4589](ansible/molecule#4589)) [@&#8203;Qalthos](https://github.com/Qalthos)
- Modify contact links in issue template config ([#&#8203;4586](ansible/molecule#4586)) [@&#8203;alisonlhart](https://github.com/alisonlhart)

#### Maintenance

- chore(deps): update all dependencies ([#&#8203;4612](ansible/molecule#4612)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore: replace pre-commit with prek ([#&#8203;4614](ansible/molecule#4614)) [@&#8203;ssbarnea](https://github.com/ssbarnea)
- chore: use tox>=4.46.0 during testing ([#&#8203;4615](ansible/molecule#4615)) [@&#8203;ssbarnea](https://github.com/ssbarnea)
- chore(deps): update pep621 ([#&#8203;4609](ansible/molecule#4609)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- Bump cryptography from 46.0.4 to 46.0.5 ([#&#8203;4604](ansible/molecule#4604)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- Bump pillow from 12.1.0 to 12.1.1 ([#&#8203;4605](ansible/molecule#4605)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot)
- chore(deps): update all dependencies ([#&#8203;4608](ansible/molecule#4608)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4603](ansible/molecule#4603)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4599](ansible/molecule#4599)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update dependencies \[security] ([#&#8203;4601](ansible/molecule#4601)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4598](ansible/molecule#4598)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4595](ansible/molecule#4595)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4594](ansible/molecule#4594)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4593](ansible/molecule#4593)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4592](ansible/molecule#4592)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4591](ansible/molecule#4591)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4590](ansible/molecule#4590)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore(deps): update all dependencies ([#&#8203;4587](ansible/molecule#4587)) @&#8203;[renovate\[bot\]](https://github.com/apps/renovate)
- chore: adopt pytest>=9.0.0 config ([#&#8203;4583](ansible/molecule#4583)) [@&#8203;Qalthos](https://github.com/Qalthos)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45OS4wIiwidXBkYXRlZEluVmVyIjoiNDIuOTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->


Refs:  rmenage/ansible-role-hardened-docker!23
See-also:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

KeyError: 'molecule_yml_date_modified' in molecule/state.py (line 187) — use safe .get() to avoid crash

2 participants