[Ray DAG] Move dag project folder out of experimental (#25532)

This commit is contained in:
Jiao 2022-06-16 19:15:39 -07:00 committed by GitHub
parent e111b173e9
commit f6735f90c7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
49 changed files with 164 additions and 108 deletions

View file

@ -481,3 +481,15 @@
--test_env=PULL_POLICY=IfNotPresent
--test_env=KUBECONFIG=/root/.kube/config
python/ray/tests/...
- label: ":python: Ray DAG Tests"
conditions:
[
"RAY_CI_PYTHON_AFFECTED",
]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/build/upload_build_info.sh; fi }; trap cleanup EXIT
- pip install -U pydot
- sudo apt-get install -y graphviz
- bazel test --config=ci $(./scripts/bazel_export_options)
--test_tag_filters=ray_dag_tests
python/ray/dag/...

View file

@ -122,8 +122,7 @@ as args of ``dag_node.execute()``
# `ray start --head` has been run to launch a local cluster
import ray
# TODO (jiaodong): Update this once DAG is out of experimental folder.
from ray.experimental.dag.input_node import InputNode
from ray.dag.input_node import InputNode
@ray.remote
def a(user_input):

View file

@ -1,6 +1,6 @@
import ray
from ray import serve
from ray.experimental.dag.input_node import InputNode
from ray.dag.input_node import InputNode
ray.init()

View file

@ -4,7 +4,7 @@ from pydantic import BaseModel
import ray
from ray import serve
from ray.serve.drivers import DAGDriver
from ray.experimental.dag.input_node import InputNode
from ray.dag.input_node import InputNode
ray.init()

View file

@ -4,7 +4,6 @@ from ray.serve.deployment_graph import InputNode
ray.init()
serve.start()
@serve.deployment

View file

@ -27,11 +27,11 @@ with InputNode() as user_input:
dag = combine.bind(m1_output, m2_output, kwargs_output=user_input[2])
# Partial DAG visualization
graph = ray.experimental.dag.vis_utils.dag_to_dot(m1_output)
graph = ray.dag.vis_utils.dag_to_dot(m1_output)
to_string = graph.to_string()
print(to_string)
# Entire DAG visualization
graph = ray.experimental.dag.vis_utils.dag_to_dot(dag)
graph = ray.dag.vis_utils.dag_to_dot(dag)
to_string = graph.to_string()
print(to_string)

View file

@ -85,7 +85,7 @@ For example, the json request adapters parse JSON in HTTP body:
```python
from ray.serve.drivers import DAGDriver
from ray.serve.http_adapters import json_request
from ray.experimental.dag.input_node import InputNode
from ray.dag.input_node import InputNode
with InputNode() as input_node:
...

View file

@ -573,7 +573,7 @@ class ActorClass:
For Ray DAG building that creates static graph from decorated
class or functions.
"""
from ray.experimental.dag.class_node import ClassNode
from ray.dag.class_node import ClassNode
return ClassNode(
actor_cls.__ray_metadata__.modified_class,
@ -937,7 +937,7 @@ class ActorClass:
For Ray DAG building that creates static graph from decorated
class or functions.
"""
from ray.experimental.dag.class_node import ClassNode
from ray.dag.class_node import ClassNode
return ClassNode(
self.__ray_metadata__.modified_class, args, kwargs, self._default_options

45
python/ray/dag/BUILD Normal file
View file

@ -0,0 +1,45 @@
# This is a dummy test dependency that causes the above tests to be
# re-run if any of these files changes.
py_library(
name = "dag_lib",
srcs = glob(["**/*.py"], exclude=["tests/**/*.py"]),
visibility = [
"//python/ray/dag:__pkg__",
"//python/ray/dag:__subpackages__",
"//release:__pkg__"
],
)
dag_tests_srcs = glob(["tests/**/*.py"])
py_test(
name = "test_function_dag",
size = "small",
srcs = dag_tests_srcs,
tags = ["exclusive", "team:core", "ray_dag_tests"],
deps = [":dag_lib"],
)
py_test(
name = "test_class_dag",
size = "small",
srcs = dag_tests_srcs,
tags = ["exclusive", "team:core", "ray_dag_tests"],
deps = [":dag_lib"],
)
py_test(
name = "test_input_node",
size = "small",
srcs = dag_tests_srcs,
tags = ["exclusive", "team:core", "ray_dag_tests"],
deps = [":dag_lib"],
)
py_test(
name = "test_plot",
size = "small",
srcs = dag_tests_srcs,
tags = ["exclusive", "team:core", "ray_dag_tests"],
deps = [":dag_lib"],
)

View file

@ -1,17 +1,17 @@
from ray.experimental.dag.dag_node import DAGNode
from ray.experimental.dag.function_node import FunctionNode
from ray.experimental.dag.class_node import ClassNode, ClassMethodNode
from ray.experimental.dag.input_node import (
from ray.dag.dag_node import DAGNode
from ray.dag.function_node import FunctionNode
from ray.dag.class_node import ClassNode, ClassMethodNode
from ray.dag.input_node import (
InputNode,
InputAttributeNode,
DAGInputData,
)
from ray.experimental.dag.constants import (
from ray.dag.constants import (
PARENT_CLASS_NODE_KEY,
PREV_CLASS_METHOD_CALL_KEY,
DAGNODE_TYPE_KEY,
)
from ray.experimental.dag.vis_utils import plot
from ray.dag.vis_utils import plot
__all__ = [
"ClassNode",

View file

@ -1,8 +1,8 @@
import ray
from ray.experimental.dag.dag_node import DAGNode
from ray.experimental.dag.input_node import InputNode
from ray.experimental.dag.format_utils import get_dag_node_str
from ray.experimental.dag.constants import (
from ray.dag.dag_node import DAGNode
from ray.dag.input_node import InputNode
from ray.dag.format_utils import get_dag_node_str
from ray.dag.constants import (
PARENT_CLASS_NODE_KEY,
PREV_CLASS_METHOD_CALL_KEY,
DAGNODE_TYPE_KEY,

View file

@ -1,5 +1,5 @@
import ray
from ray.experimental.dag.py_obj_scanner import _PyObjScanner
from ray.dag.py_obj_scanner import _PyObjScanner
from typing import (
Optional,

View file

@ -1,4 +1,4 @@
from ray.experimental.dag import DAGNode
from ray.dag import DAGNode
def get_indentation(num_spaces=4):

View file

@ -2,9 +2,9 @@ from typing import Any, Dict, List
import ray
from ray.experimental.dag.dag_node import DAGNode
from ray.experimental.dag.format_utils import get_dag_node_str
from ray.experimental.dag.constants import DAGNODE_TYPE_KEY
from ray.dag.dag_node import DAGNode
from ray.dag.format_utils import get_dag_node_str
from ray.dag.constants import DAGNODE_TYPE_KEY
class FunctionNode(DAGNode):

View file

@ -1,8 +1,8 @@
from typing import Any, Dict, List, Union
from ray.experimental.dag import DAGNode
from ray.experimental.dag.format_utils import get_dag_node_str
from ray.experimental.dag.constants import DAGNODE_TYPE_KEY
from ray.dag import DAGNode
from ray.dag.format_utils import get_dag_node_str
from ray.dag.constants import DAGNODE_TYPE_KEY
IN_CONTEXT_MANAGER = "__in_context_manager__"

View file

@ -16,7 +16,7 @@ else:
from typing import List, Dict, Any, TypeVar, TYPE_CHECKING
if TYPE_CHECKING:
from ray.experimental.dag.dag_node import DAGNode
from ray.dag.dag_node import DAGNode
T = TypeVar("T")
@ -43,9 +43,9 @@ class _PyObjScanner(ray.cloudpickle.CloudPickler):
self._uuid = uuid.uuid4().hex
_PyObjScanner._instances[self._uuid] = self
# Register pickler override for DAGNode types.
from ray.experimental.dag.function_node import FunctionNode
from ray.experimental.dag.class_node import ClassNode, ClassMethodNode
from ray.experimental.dag.input_node import InputNode, InputAttributeNode
from ray.dag.function_node import FunctionNode
from ray.dag.class_node import ClassNode, ClassMethodNode
from ray.dag.input_node import InputNode, InputAttributeNode
from ray.serve.deployment_node import DeploymentNode
from ray.serve.deployment_method_node import DeploymentMethodNode
from ray.serve.deployment_function_node import DeploymentFunctionNode

View file

@ -2,7 +2,7 @@ import pytest
import pickle
import ray
from ray.experimental.dag import (
from ray.dag import (
DAGNode,
PARENT_CLASS_NODE_KEY,
PREV_CLASS_METHOD_CALL_KEY,

View file

@ -4,7 +4,7 @@ request, for all DAGNode types.
"""
import pytest
from ray.experimental.dag.input_node import InputNode
from ray.dag.input_node import InputNode
from typing import Any, TypeVar
import ray

View file

@ -21,10 +21,10 @@ def test_basic_dag_with_names_plot():
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(dag, to_file)
ray.dag.plot(dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(dag)
graph = ray.dag.vis_utils.dag_to_dot(dag)
to_string = graph.to_string()
assert "tmp1 -> tmp3" in to_string
assert "tmp2 -> tmp3" in to_string
@ -49,10 +49,10 @@ def test_basic_dag_without_names_plot():
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(dag, to_file)
ray.dag.plot(dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(dag)
graph = ray.dag.vis_utils.dag_to_dot(dag)
to_string = graph.to_string()
assert "a_5 -> a_4" in to_string
assert "a_2 -> a_1" in to_string

View file

@ -1,6 +1,6 @@
from typing import Dict
from ray.experimental.dag import (
from ray.dag import (
DAGNode,
InputNode,
InputAttributeNode,

View file

@ -1,9 +1,9 @@
from ray.experimental.dag import DAGNode
from ray.dag import DAGNode
import os
import tempfile
from ray.experimental.dag.utils import DAGNodeNameGenerator
from ray.dag.utils import DAGNodeNameGenerator
def check_pydot_and_graphviz():

View file

@ -168,7 +168,7 @@ class RemoteFunction:
For Ray DAG building that creates static graph from decorated
class or functions.
"""
from ray.experimental.dag.function_node import FunctionNode
from ray.dag.function_node import FunctionNode
return FunctionNode(func_cls._function, args, kwargs, updated_options)
@ -342,6 +342,6 @@ class RemoteFunction:
class or functions.
"""
from ray.experimental.dag.function_node import FunctionNode
from ray.dag.function_node import FunctionNode
return FunctionNode(self._function, args, kwargs, self._default_options)

View file

@ -18,8 +18,8 @@ from uvicorn.lifespan.on import LifespanOn
import ray
from ray import cloudpickle
from ray.dag import DAGNode
from ray._private.usage import usage_lib
from ray.experimental.dag import DAGNode
from ray.util.annotations import PublicAPI
from ray.serve.application import Application

View file

@ -1,4 +1,4 @@
from ray.experimental.dag.input_node import InputNode
from ray.dag.input_node import InputNode
__all__ = [
"InputNode",

View file

@ -11,8 +11,8 @@ from typing import (
)
from ray.serve.context import get_global_client
from ray.experimental.dag.class_node import ClassNode
from ray.experimental.dag.function_node import FunctionNode
from ray.dag.class_node import ClassNode
from ray.dag.function_node import FunctionNode
from ray.serve.config import (
AutoscalingConfig,
DeploymentConfig,

View file

@ -1,9 +1,9 @@
from typing import Any, Dict, List
from ray.experimental.dag import DAGNode
from ray.dag import DAGNode
from ray.serve.deployment_method_executor_node import DeploymentMethodExecutorNode
from ray.experimental.dag.constants import DAGNODE_TYPE_KEY, PARENT_CLASS_NODE_KEY
from ray.experimental.dag.format_utils import get_dag_node_str
from ray.dag.constants import DAGNODE_TYPE_KEY, PARENT_CLASS_NODE_KEY
from ray.dag.format_utils import get_dag_node_str
from ray.serve.handle import RayServeHandle

View file

@ -1,10 +1,10 @@
from typing import Any, Dict, List, Union
from ray import ObjectRef
from ray.experimental.dag import DAGNode
from ray.dag import DAGNode
from ray.serve.handle import RayServeSyncHandle, RayServeHandle
from ray.experimental.dag.constants import DAGNODE_TYPE_KEY
from ray.experimental.dag.format_utils import get_dag_node_str
from ray.dag.constants import DAGNODE_TYPE_KEY
from ray.dag.format_utils import get_dag_node_str
class DeploymentFunctionExecutorNode(DAGNode):

View file

@ -1,8 +1,8 @@
import inspect
from typing import Any, Callable, Dict, List, Union
from ray.experimental.dag.dag_node import DAGNode
from ray.experimental.dag.format_utils import get_dag_node_str
from ray.dag.dag_node import DAGNode
from ray.dag.format_utils import get_dag_node_str
from ray.serve.deployment import Deployment, schema_to_deployment
from ray.serve.config import DeploymentConfig
from ray.serve.handle import RayServeLazySyncHandle

View file

@ -1,10 +1,10 @@
from contextlib import contextmanager
import json
from ray.experimental.dag.class_node import ClassNode # noqa: F401
from ray.experimental.dag.function_node import FunctionNode # noqa: F401
from ray.experimental.dag.input_node import InputNode # noqa: F401
from ray.experimental.dag import DAGNode # noqa: F401
from ray.dag.class_node import ClassNode # noqa: F401
from ray.dag.function_node import FunctionNode # noqa: F401
from ray.dag.input_node import InputNode # noqa: F401
from ray.dag import DAGNode # noqa: F401
from ray.util.annotations import PublicAPI
import ray.serve.client

View file

@ -12,15 +12,16 @@ from ray.serve.deployment_method_executor_node import DeploymentMethodExecutorNo
from ray.serve.deployment_function_executor_node import DeploymentFunctionExecutorNode
from ray.serve.json_serde import DAGNodeEncoder
from ray.experimental.dag import (
from ray.dag import (
DAGNode,
ClassNode,
ClassMethodNode,
PARENT_CLASS_NODE_KEY,
)
from ray.experimental.dag.function_node import FunctionNode
from ray.experimental.dag.input_node import InputNode
from ray.experimental.dag.utils import DAGNodeNameGenerator
from ray.dag.function_node import FunctionNode
from ray.dag.input_node import InputNode
from ray.dag.utils import DAGNodeNameGenerator
def build(ray_dag_root_node: DAGNode) -> List[Deployment]:

View file

@ -1,9 +1,9 @@
from typing import Any, Dict, List
from ray import ObjectRef
from ray.experimental.dag import DAGNode
from ray.experimental.dag.constants import DAGNODE_TYPE_KEY, PARENT_CLASS_NODE_KEY
from ray.experimental.dag.format_utils import get_dag_node_str
from ray.dag import DAGNode
from ray.dag.constants import DAGNODE_TYPE_KEY, PARENT_CLASS_NODE_KEY
from ray.dag.format_utils import get_dag_node_str
class DeploymentMethodExecutorNode(DAGNode):

View file

@ -1,8 +1,8 @@
from typing import Any, Dict, Optional, Tuple, List
from ray.experimental.dag import DAGNode
from ray.experimental.dag.format_utils import get_dag_node_str
from ray.experimental.dag.constants import PARENT_CLASS_NODE_KEY
from ray.dag import DAGNode
from ray.dag.format_utils import get_dag_node_str
from ray.dag.constants import PARENT_CLASS_NODE_KEY
from ray.serve.deployment import Deployment

View file

@ -1,7 +1,7 @@
import inspect
from typing import Any, Callable, Dict, Optional, List, Tuple, Union
from ray.experimental.dag import DAGNode
from ray.dag import DAGNode
from ray.serve.deployment_executor_node import DeploymentExecutorNode
from ray.serve.deployment_function_executor_node import (
DeploymentFunctionExecutorNode,
@ -11,10 +11,10 @@ from ray.serve.deployment_method_executor_node import (
)
from ray.serve.handle import RayServeLazySyncHandle
from ray.dag.constants import PARENT_CLASS_NODE_KEY
from ray.dag.format_utils import get_dag_node_str
from ray.serve.deployment_method_node import DeploymentMethodNode
from ray.serve.deployment_function_node import DeploymentFunctionNode
from ray.experimental.dag.constants import PARENT_CLASS_NODE_KEY
from ray.experimental.dag.format_utils import get_dag_node_str
from ray.serve.deployment import Deployment, schema_to_deployment
from ray.serve.config import DeploymentConfig
from ray.serve.schema import DeploymentSchema

View file

@ -3,7 +3,7 @@ from importlib import import_module
import json
from ray.experimental.dag import (
from ray.dag import (
DAGNode,
ClassNode,
FunctionNode,

View file

@ -4,7 +4,7 @@ from ray.serve.tests.resources.test_modules import (
combine,
NESTED_HANDLE_KEY,
)
from ray.experimental.dag.input_node import InputNode
from ray.dag.input_node import InputNode
def get_simple_func_dag():

View file

@ -6,7 +6,7 @@ from python.ray.serve import constants as serve_constants
import ray
from ray import serve
from ray.serve.drivers import DAGDriver
from ray.experimental.dag.input_node import InputNode
from ray.dag.input_node import InputNode
from ray.serve.deployment_state import ReplicaState
from ray._private.test_utils import SignalActor, wait_for_condition

View file

@ -2,7 +2,7 @@ import pytest
import ray
from ray import serve
from ray.experimental.dag import InputNode
from ray.dag import InputNode
from ray.serve.handle import RayServeLazySyncHandle
from ray.serve.deployment_graph_build import (
transform_ray_dag_to_serve_dag,
@ -23,7 +23,7 @@ from ray.serve.tests.resources.test_dags import (
get_multi_instantiation_class_nested_deployment_arg_dag,
get_simple_func_dag,
)
from ray.experimental.dag.utils import DAGNodeNameGenerator
from ray.dag.utils import DAGNodeNameGenerator
def _validate_consistent_python_output(

View file

@ -3,10 +3,10 @@ import json
from typing import TypeVar
import ray
from ray.experimental.dag.dag_node import DAGNode
from ray.experimental.dag.input_node import InputNode
from ray.dag.dag_node import DAGNode
from ray.dag.input_node import InputNode
from ray import serve
from ray.experimental.dag.utils import DAGNodeNameGenerator
from ray.dag.utils import DAGNodeNameGenerator
from ray.serve.handle import (
RayServeSyncHandle,
serve_handle_to_json_dict,

View file

@ -5,8 +5,8 @@ import tempfile
import ray
from ray import serve
from ray.experimental.dag import DAGNode
from ray.experimental.dag.utils import DAGNodeNameGenerator
from ray.dag import DAGNode
from ray.dag.utils import DAGNodeNameGenerator
from ray.serve.deployment_graph import RayServeDAGHandle
from ray.serve.deployment_graph import InputNode
from ray.serve.drivers import DAGDriver
@ -130,10 +130,10 @@ def test_serve_pipeline_single_func_no_input_plot():
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(serve_dag, to_file)
ray.dag.plot(serve_dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(serve_dag)
graph = ray.dag.vis_utils.dag_to_dot(serve_dag)
to_string = graph.to_string()
assert "fn_hello -> NoargDriver" in to_string
@ -146,10 +146,10 @@ def test_serve_pipeline_single_func_deployment_dag_plot():
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(serve_dag, to_file)
ray.dag.plot(serve_dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(serve_dag)
graph = ray.dag.vis_utils.dag_to_dot(serve_dag)
to_string = graph.to_string()
assert "INPUT_NODE -> INPUT_ATTRIBUTE_NODE" in to_string
assert "INPUT_NODE -> INPUT_ATTRIBUTE_NODE_1" in to_string
@ -175,10 +175,10 @@ def test_serve_pipeline_chained_function_plot():
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(serve_dag, to_file)
ray.dag.plot(serve_dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(serve_dag)
graph = ray.dag.vis_utils.dag_to_dot(serve_dag)
to_string = graph.to_string()
assert "INPUT_NODE -> func_1" in to_string
assert "INPUT_NODE -> func_2" in to_string
@ -195,10 +195,10 @@ def test_serve_pipeline_class_with_class_method_plot():
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(serve_dag, to_file)
ray.dag.plot(serve_dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(serve_dag)
graph = ray.dag.vis_utils.dag_to_dot(serve_dag)
to_string = graph.to_string()
assert "Model -> forward" in to_string
assert "INPUT_NODE -> forward" in to_string
@ -217,10 +217,10 @@ def test_serve_pipeline_func_class_with_class_method_plot():
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(serve_dag, to_file)
ray.dag.plot(serve_dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(serve_dag)
graph = ray.dag.vis_utils.dag_to_dot(serve_dag)
to_string = graph.to_string()
assert "INPUT_NODE -> INPUT_ATTRIBUTE_NODE" in to_string
assert "INPUT_NODE -> INPUT_ATTRIBUTE_NODE_1" in to_string
@ -246,10 +246,10 @@ def test_serve_pipeline_multi_instantiation_class_deployment_in_init_args_plot()
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(serve_dag, to_file)
ray.dag.plot(serve_dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(serve_dag)
graph = ray.dag.vis_utils.dag_to_dot(serve_dag)
to_string = graph.to_string()
assert "Model -> Combine" in to_string
assert "Model_1 -> Combine" in to_string
@ -268,10 +268,10 @@ def test_serve_pipeline_test_shared_deployment_handle_plot():
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(serve_dag, to_file)
ray.dag.plot(serve_dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(serve_dag)
graph = ray.dag.vis_utils.dag_to_dot(serve_dag)
to_string = graph.to_string()
assert "Model -> Combine" in to_string
assert "Combine -> __call__" in to_string
@ -290,10 +290,10 @@ def test_serve_pipeline_multi_instantiation_class_nested_deployment_arg_dag_plot
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(serve_dag, to_file)
ray.dag.plot(serve_dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(serve_dag)
graph = ray.dag.vis_utils.dag_to_dot(serve_dag)
to_string = graph.to_string()
assert "Model -> Combine" in to_string
assert "Model_1 -> Combine" in to_string
@ -311,10 +311,10 @@ def test_serve_pipeline_class_factory_plot():
with tempfile.TemporaryDirectory() as tmpdir:
to_file = os.path.join(tmpdir, "tmp.png")
ray.experimental.dag.plot(serve_dag, to_file)
ray.dag.plot(serve_dag, to_file)
assert os.path.isfile(to_file)
graph = ray.experimental.dag.vis_utils.dag_to_dot(serve_dag)
graph = ray.dag.vis_utils.dag_to_dot(serve_dag)
to_string = graph.to_string()
assert "MyInlineClass -> get" in to_string
assert "get -> NoargDriver" in to_string

View file

@ -3,8 +3,8 @@ from typing import Dict, Set, List, Tuple, Union, Optional, Any
import time
import ray
from ray.experimental.dag import DAGNode
from ray.experimental.dag.input_node import DAGInputData
from ray.dag import DAGNode
from ray.dag.input_node import DAGInputData
from ray.remote_function import RemoteFunction
from ray.workflow import execution

View file

@ -7,7 +7,7 @@ from ray.remote_function import RemoteFunction
from ray.workflow.storage import Storage
from ray.workflow.common import WorkflowStatus
from ray.experimental.dag import DAGNode
from ray.dag import DAGNode
T0 = TypeVar("T0")
T1 = TypeVar("T1")

View file

@ -2,8 +2,8 @@ from typing import Any
from ray.workflow.common import WORKFLOW_OPTIONS, WorkflowStepRuntimeOptions, StepType
from ray.experimental.dag import DAGNode, FunctionNode, InputNode
from ray.experimental.dag.input_node import InputAttributeNode, DAGInputData
from ray.dag import DAGNode, FunctionNode, InputNode
from ray.dag.input_node import InputAttributeNode, DAGInputData
def _make_workflow_step_function(node: FunctionNode):

View file

@ -4,7 +4,7 @@ import pytest
import ray
from ray import workflow
from ray.experimental.dag import InputNode
from ray.dag import InputNode
def test_dag_to_workflow_execution(workflow_start_regular_shared):

View file

@ -13,7 +13,7 @@ from typing import Optional
import ray
from ray import serve
from ray.experimental.dag import InputNode
from ray.dag import InputNode
from ray.serve.drivers import DAGDriver
from serve_test_cluster_utils import (
setup_local_single_node_cluster,

View file

@ -19,7 +19,7 @@ from typing import Optional
import ray
from ray import serve
from ray.experimental.dag import InputNode
from ray.dag import InputNode
from ray.serve.drivers import DAGDriver
from serve_test_cluster_utils import (
setup_local_single_node_cluster,