def upload_profile(dataset_profile: DatasetProfile) -> None: tmp_dir = tempfile.mkdtemp() profile_path = os.path.join(tmp_dir, "profile.bin") dataset_profile.write_protobuf(profile_path) dataset_timestamp = dataset_profile.dataset_timestamp or datetime.datetime.now(datetime.timezone.utc) dataset_timestamp = int(dataset_timestamp.timestamp() * 1000) if _session_token: _upload_guest_session(dataset_timestamp, profile_path) else: _upload_whylabs(dataset_profile, dataset_timestamp, profile_path)
def _write_protobuf(profile: DatasetProfile, rotation_suffix: str = None, **kwargs): """ Write a protobuf the dataset profile to disk in binary format to MlFlow """ import mlflow # import whylogs.mlflow.patcher as patcher name = profile.name tmp_dir = tempfile.mkdtemp() logger.debug("Using tmp dir: %s", tmp_dir) dataset_dir = name or "default" output_dir = os.path.join(tmp_dir, dataset_dir) os.makedirs(output_dir, exist_ok=True) output = os.path.join(output_dir, "profile.bin") logger.debug("Writing logger %s's data to %s", output, f"whylogs/{dataset_dir}") profile.write_protobuf(output) mlflow.log_artifact(output, artifact_path=f"whylogs/{dataset_dir}") logger.debug("Successfully uploaded logger %s data to MLFlow", name)