import logging
from datazen import CACHE_SUFFIX as CACHE_SUFFIX
from datazen.environment.base import dep_slug_unwrap as dep_slug_unwrap
from datazen.environment.command import CommandEnvironment as CommandEnvironment
from datazen.environment.compile import CompileEnvironment as CompileEnvironment
from datazen.environment.group import GroupEnvironment as GroupEnvironment
from datazen.environment.render import RenderEnvironment as RenderEnvironment
from typing import Any, List, Tuple

LOG: Any

class Environment(CompileEnvironment, RenderEnvironment, GroupEnvironment, CommandEnvironment):
    visited: Any
    default: str
    logger: Any
    def __init__(self, logger: logging.Logger = ...) -> None: ...
    def execute(self, target: str = ..., should_cache: bool = ...) -> Tuple[bool, bool]: ...
    def execute_targets(self, targets: List[str]) -> bool: ...
    def group(self, target: str) -> Tuple[bool, bool]: ...
    def compile(self, target: str) -> Tuple[bool, bool]: ...
    def render(self, target: str) -> Tuple[bool, bool]: ...
    def command(self, target: str) -> Tuple[bool, bool]: ...

def from_manifest(manifest_path: str, data_cache_name: str = ..., logger: logging.Logger = ...) -> Environment: ...
