Closed victorjzsun closed 3 years ago
Generally LGTM. Thanks for spotting this. Waiting for tests to be fixed.
Tests failing due to generators having different length reprs for different operating systems (https://github.com/alexmojaki/cheap_repr/issues/20)
Thanks for the heads up. Alex is usually responsive, so we can wait for him to fix the issue.
❌ Merging this PR will decrease code quality in the affected files by 0.49%.
Quality metrics | Before | After | Change |
---|---|---|---|
Complexity | 2.61 ⭐ | 2.68 ⭐ | 0.07 👎 |
Method Length | 31.14 ⭐ | 32.00 ⭐ | 0.86 👎 |
Working memory | 4.95 ⭐ | 5.00 ⭐ | 0.05 👎 |
Quality | 87.00% ⭐ | 86.51% ⭐ | -0.49% 👎 |
Other metrics | Before | After | Change |
---|---|---|---|
Lines | 235 | 242 | 7 |
Changed files | Quality Before | Quality After | Quality Change |
---|---|---|---|
cyberbrain/utils.py | 87.00% ⭐ | 86.51% ⭐ | -0.49% 👎 |
Here are some functions in these files that still need a tune-up:
File | Function | Complexity | Length | Working Memory | Quality | Recommendation |
---|
The emojis denote the absolute quality of the code:
The 👍 and 👎 indicate whether the quality has improved or gotten worse with this pull request.
Please see our documentation here for details on how these metrics are calculated.
We are actively working on this report - lots more documentation and extra metrics to come!
Help us improve this quality report!
If we bind a variable to a generator, we parse the value from the frame using jsonencode. Just like how it serializes a list, it will exhaust the generator to serialize its values. However, the generator is the same one being used in the frame/actual execution, so when it is used after we serialize, we get a StopIteration error, since the generator has already been exhausted. You can see the StopIteration error if you run the new test on master.
My solution is to check if the value is an iterator type and if it is, just skip jsonencode and return get_repr instead, as we do for non-serializable types