try-else clauses measured at 1 more than correct complexity
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 681
- Forks
- 65
- PR merge metrics
- No merged PRs in 30d
Description
Currently the below code generates the following graph, giving a complexity of 5:
def f():
try:
print(1)
except TypeA:
print(2)
except TypeB:
print(3)
else:
print(4)
finally:
if x:
print(5.1)
else:
print(5.2)

I don't think this models the try-else clause correctly. The above graph seems to indicate that the else sometimes runs instead of the main clause, which isn't correct. I believe this is the correct model:

This seems to correctly indicate that the else always runs directly after the main try clause, if it runs, and never in a line of execution that involves the exception handlers. This has 1 less complexity than the above graph. This yields one less complexity than the current interpretation.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the supplied function and inspect the generated complexity graph, comparing the current try/except/else/finally control flow with the proposed graph. The work is done when try-else execution is represented correctly and the reported complexity is one lower for this example, without treating else as an alternative to the try body.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100