I'd add a call to `setdefault()` to save yourself the additional logic:

```python
for version_dict in versions:
    version_dict.setdefault("rank", current_rank)
    version = SoftwareVersion(**version_dict)
    version.software = software
    current_rank = max(version.rank, current_rank) + 100
```