def load_primitive_from_file(filepath): """load primitive objects in a file""" module = os.path.basename(filepath)[:-3] if is_python_2(): # for python 2.7 module = imp.load_source(module, filepath) else: # TODO: what is the first argument"? # for python >3.5 spec = importlib.util.spec_from_file_location(module, filepath) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) primitives = [] for primitive_name in vars(module): primitive_class = getattr(module, primitive_name) if (isclass(primitive_class) and issubclass(primitive_class, PrimitiveBase) and primitive_class not in (AggregationPrimitive, TransformPrimitive)): primitives.append((primitive_name, primitive_class)) if len(primitives) == 0: raise RuntimeError("No primitive defined in file %s" % filepath) elif len(primitives) > 1: raise RuntimeError("More than one primitive defined in file %s" % filepath) return primitives[0]
import datetime import json import os import shutil import tarfile import boto3 from featuretools.utils.gen_utils import (is_python_2, use_s3fs_es, use_smartopen_es) from featuretools.utils.wrangle import _is_s3, _is_url if is_python_2(): from backports import tempfile else: import tempfile FORMATS = ['csv', 'pickle', 'parquet'] SCHEMA_VERSION = "1.0.0" def entity_to_description(entity): '''Serialize entity to data description. Args: entity (Entity) : Instance of :class:`.Entity`. Returns: dictionary (dict) : Description of :class:`.Entity`. ''' index = entity.df.columns.isin(