import jinja2
from datazen import GLOBAL_KEY as GLOBAL_KEY
from datazen.classes.base_environment import dep_slug_unwrap as dep_slug_unwrap
from datazen.classes.task_environment import TaskEnvironment as TaskEnvironment, get_path as get_path
from datazen.fingerprinting import build_fingerprint as build_fingerprint
from datazen.paths import get_file_ext as get_file_ext
from datazen.targets import resolve_dep_data as resolve_dep_data
from typing import Any, List, Optional, Tuple

LOG: Any

def render_name_to_key(name: str) -> str: ...
def indent_str(data: str, indent: int, sep: str = ...) -> str: ...
def get_render_str(template: jinja2.Template, name: str, indent: int, data: dict = ..., out_data: dict = ...) -> str: ...
def get_render_children(children: dict, dep_data: dict, default_op: str, indent: int, delimeter: str = ...) -> None: ...

class RenderEnvironment(TaskEnvironment):
    def __init__(self) -> None: ...
    def perform_render(self, template: jinja2.Template, path: Optional[str], entry: dict, data: dict = ...) -> Tuple[bool, bool]: ...
    def store_render(self, entry: dict, data: dict) -> None: ...
    def valid_render(self, entry: dict, namespace: str, dep_data: dict = ..., deps_changed: List[str] = ...) -> Tuple[bool, bool]: ...
