Give better error for old-style actor classes. (#3793)

This commit is contained in:
Robert Nishihara
2019-01-17 19:05:04 -08:00
committed by Philipp Moritz
parent 0537508106
commit 9af5a62e05
2 changed files with 17 additions and 0 deletions
+7
View File
@@ -779,6 +779,13 @@ class ActorHandle(object):
def make_actor(cls, num_cpus, num_gpus, resources, actor_method_cpus,
checkpoint_interval, max_reconstructions):
# Give an error if cls is an old-style class.
if not issubclass(cls, object):
raise TypeError(
"The @ray.remote decorator cannot be applied to old-style "
"classes. In Python 2, you must declare the class with "
"'class ClassName(object):' instead of 'class ClassName:'.")
if checkpoint_interval is None:
checkpoint_interval = -1
if max_reconstructions is None:
+10
View File
@@ -98,6 +98,16 @@ def test_actor_init_error_propagated(ray_start_regular):
ray.get(actor.foo.remote())
@pytest.mark.skipif(
sys.version_info >= (3, 0), reason="This test requires Python 2.")
def test_old_style_error(ray_start_regular):
with pytest.raises(TypeError):
@ray.remote
class Actor:
pass
def test_keyword_args(ray_start_regular):
@ray.remote
class Actor(object):