Replace string annotations with PEP 563 postponed evaluation - #103
Open
eda-s-claude-bot[bot] wants to merge 3 commits into
Open
Replace string annotations with PEP 563 postponed evaluation#103eda-s-claude-bot[bot] wants to merge 3 commits into
eda-s-claude-bot[bot] wants to merge 3 commits into
Conversation
All 121 annotations written as string literals are plain annotations now, and the four affected modules carry 'from __future__ import annotations'. The future import is what makes this safe rather than cosmetic: five of them are genuine forward references, and Python 3.11-3.13 evaluate annotations eagerly, so unquoting alone would raise NameError at import time on exactly the versions the pipeline tests. Each import section is grouped - future, standard library, third-party, own package - with one empty line between the groups and a single 'import' column across them. Co-Authored-By: Patrick Lehmann <Paebbels@gmail.com>
❌ 75 Tests Failed:
View the top 3 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
Paebbels
reviewed
Aug 22, 2026
The grouping script came from the pyTooling repository, where 'pyTooling' *is* the own package - so it sorted pyTooling into the fourth group and pyEDAA.OutputFilter into the third, exactly the wrong way round. The own package is a parameter now. Sections are: future import, standard library, third-party (ruamel.yaml, pyTooling, other pyEDAA.* packages), own package. Co-Authored-By: Patrick Lehmann <Paebbels@gmail.com>
Paebbels
reviewed
Aug 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Breaking Changes
from __future__ import annotations, so on Python 3.11-3.13SomeClass.__annotations__yields stringswhere it previously yielded type objects; on Python 3.14 (PEP 649) they are
computed lazily and read as before. Code introspecting these classes at runtime must resolve them itself with
typing.get_type_hints(SomeClass), which works on every supported version.Changes
All 121 annotations written as string literals are plain annotations now:
Nullable[Processor]instead ofNullable["Processor"].pyEDAA.OutputFilter.Xilinx: 102 ·pyEDAA.OutputFilter: 9 ·pyEDAA.OutputFilter.CLI.Configuration: 8 ·pyEDAA.OutputFilter.Xilinx.SynthesizeDesign: 2.Five are genuine forward references, which is why the future import is required rather than cosmetic: Python
3.11-3.13 evaluate annotations eagerly and would raise
NameErrorat import time without it. Python 3.14 wouldhave accepted the unquoted code locally and let CI find it.
Each import section is grouped - future import, standard library, third-party, own package - with one empty line
between the groups that exist and a single
importcolumn shared across them, matching the layout settled inpyTooling.
Union[...]annotations are untouched and are not part of this pull-request.Related Issues and Pull-Requests