# Copyright 2025 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
"""hyper parallel interface"""
from hyper_parallel.platform import get_platform
from hyper_parallel.core.hsdp.api import hsdp, hsdp_sync_stream, HSDPCell
from hyper_parallel.core.layout import Layout
from hyper_parallel.core.device_mesh import DeviceMesh, init_device_mesh
from hyper_parallel.core.dtensor import DTensor, SkipDTensorDispatch
from hyper_parallel.core.parameter_init import init_parameters
from hyper_parallel.core.shard.api import shard_module
from hyper_parallel.core.shard.api import parallelize_value_and_grad
from hyper_parallel.core.shard.local_func import custom_shard
from hyper_parallel.core.pipeline_parallel import (PipelineStage, ScheduleInterleaved1F1B, MetaStep, MetaStepType,
                                                   BatchDimSpec)
from hyper_parallel.collectives.cc import (init_process_group, destroy_process_group,
                                                    get_process_group_ranks, get_backend, split_group)

__all__ = ["get_platform", "hsdp", "hsdp_sync_stream", "HSDPCell", "Layout", "DTensor",
           "Layout", "DeviceMesh", "init_device_mesh",
           "init_parameters", "shard_module", "custom_shard", "parallelize_value_and_grad", "SkipDTensorDispatch",
           "MetaStep", "MetaStepType", "BatchDimSpec", "PipelineStage", "ScheduleInterleaved1F1B",
           "init_process_group", "destroy_process_group", "get_process_group_ranks", "get_backend", "split_group"]