from .client import FeathrClient
from .spark_provider.feathr_configurations import SparkExecutionConfiguration
from .definition.feature_derivations import *
from .definition.anchor import *
from .definition.feature import *
from .definition.feathrconfig import *
from .definition.transformation import *
from .definition.dtype import *
from .definition.source import *
from .definition.typed_key import *
from .definition.materialization_settings import *
from .definition.monitoring_settings import *
from .definition.sink import *
from .definition.query_feature_list import *
from .definition.lookup_feature import *
from .definition.aggregation import *
from .definition.settings import *
from .utils.job_utils import *
from .utils.feature_printer import *
from .version import __version__

# skipped class as they are internal methods:
# RepoDefinitions, HoconConvertible,
# expose the modules so docs can build
# referencee： https://stackoverflow.com/questions/15115514/how-do-i-document-classes-without-the-module-name/31594545#31594545

# __all__ = []
# for v in dir():
#     if not v.startswith('__') and v != 'mypackage':
#         __all__.append(v)


__all__ = [
    'FeatureJoinJobParams',
    'FeatureGenerationJobParams',
    'FeathrClient',
    'DerivedFeature',
    'FeatureAnchor',
    'Feature',
    'ValueType',
    'WindowAggTransformation',
    'TypedKey',
    'DUMMYKEY',
    'BackfillTime',
    'MaterializationSettings',
    'MonitoringSettings',
    'RedisSink',
    'HdfsSink',
    'MonitoringSqlSink',
    'AerospikeSink',
    'FeatureQuery',
    'LookupFeature',
    'Aggregation',
    'get_result_df',
    'AvroJsonSchema',
    'Source',
    'InputContext',
    'HdfsSource',
    'KafkaConfig',
    'KafKaSource',
    'ValueType',
    'BooleanFeatureType',
    'Int32FeatureType',
    'Int64FeatureType',
    'FloatFeatureType',
    'DoubleFeatureType',
    'StringFeatureType',
    'BytesFeatureType',
    'FloatVectorFeatureType',
    'Int32VectorFeatureType',
    'Int64VectorFeatureType',
    'DoubleVectorFeatureType',
    'FeatureNameValidationError',
    'ObservationSettings',
    'FeaturePrinter',
    'SparkExecutionConfiguration',
    __version__,
 ]
