Non-iterable value pkg_resources.working_set is used in an iterating context
33 import pkg_resources
34
35 return [
36 p.project_name + "==" + p.version for p in pkg_resources.working_set37 ]
38 else:
39 from pip._internal.operations import freeze
Description
A non-iterable value is being used in an iterating context, For example, a non-iterable value being passed into a for
loop. This will raise a TypeError
.
Bad practice
Using a non-iterable as object in a loop.
def fx(val=None):
return val
seq = fx()
for val in seq:
print(val)
Because seq
would be None
which is not an iterable, this code snippet will raise an error.
Recommended
Make sure only an iterable is passed to the iterator.
In our example, tweaking fx
to always return an iterable will fix the problem:
def fx(val=None):
val = val or []
return val
seq = fx()
for val in seq:
print(val)