Skip to content

Commit

Permalink
Replace deprecated ast.NameConstant usage and add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lizdenhup committed Apr 3, 2024
1 parent f7bf3f7 commit a99bfeb
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
2 changes: 1 addition & 1 deletion scrapy/utils/misc.py
Expand Up @@ -264,7 +264,7 @@ def is_generator_with_return_value(callable: Callable) -> bool:
def returns_none(return_node: ast.Return) -> bool:
value = return_node.value
return (
value is None or isinstance(value, ast.NameConstant) and value.value is None
value is None or isinstance(value, ast.Constant) and value.value is None
)

if inspect.isgeneratorfunction(callable):
Expand Down
Expand Up @@ -2,6 +2,7 @@
import warnings
from functools import partial
from unittest import mock
import ast

from scrapy.utils.misc import (
is_generator_with_return_value,
Expand Down Expand Up @@ -70,11 +71,16 @@ def i1():
yield url
return 1

def j1():
yield 1
return ast.Return(value=ast.Constant(value=42))

assert is_generator_with_return_value(top_level_return_something)
assert is_generator_with_return_value(f1)
assert is_generator_with_return_value(g1)
assert is_generator_with_return_value(h1)
assert is_generator_with_return_value(i1)
assert is_generator_with_return_value(j1)

with warnings.catch_warnings(record=True) as w:
warn_on_generator_with_return_value(None, top_level_return_something)
Expand Down Expand Up @@ -137,6 +143,12 @@ def k2():
def l2():
return

def m2():
return ast.Return(value=None)

def n2():
return ast.Return(value=ast.Constant(value=None))

assert not is_generator_with_return_value(top_level_return_none)
assert not is_generator_with_return_value(f2)
assert not is_generator_with_return_value(g2)
Expand All @@ -145,6 +157,9 @@ def l2():
assert not is_generator_with_return_value(j2) # not recursive
assert not is_generator_with_return_value(k2) # not recursive
assert not is_generator_with_return_value(l2)
assert not is_generator_with_return_value(m2)
assert not is_generator_with_return_value(n2)


with warnings.catch_warnings(record=True) as w:
warn_on_generator_with_return_value(None, top_level_return_none)
Expand Down

0 comments on commit a99bfeb

Please sign in to comment.