abidlabs's picture
abidlabs HF Staff
Upload folder using huggingface_hub
7a3bf77 verified
import os
import random
import re
import sys
import time
from pathlib import Path
import huggingface_hub
from huggingface_hub.constants import HF_HOME
RESERVED_KEYS = ["project", "run", "timestamp", "step", "time"]
TRACKIO_DIR = os.path.join(HF_HOME, "trackio")
TRACKIO_LOGO_PATH = str(Path(__file__).parent.joinpath("trackio_logo.png"))
def generate_readable_name():
"""
Generates a random, readable name like "dainty-sunset-1"
"""
adjectives = [
"dainty",
"brave",
"calm",
"eager",
"fancy",
"gentle",
"happy",
"jolly",
"kind",
"lively",
"merry",
"nice",
"proud",
"quick",
"silly",
"tidy",
"witty",
"zealous",
"bright",
"shy",
"bold",
"clever",
"daring",
"elegant",
"faithful",
"graceful",
"honest",
"inventive",
"jovial",
"keen",
"lucky",
"modest",
"noble",
"optimistic",
"patient",
"quirky",
"resourceful",
"sincere",
"thoughtful",
"upbeat",
"valiant",
"warm",
"youthful",
"zesty",
"adventurous",
"breezy",
"cheerful",
"delightful",
"energetic",
"fearless",
"glad",
"hopeful",
"imaginative",
"joyful",
"kindly",
"luminous",
"mysterious",
"neat",
"outgoing",
"playful",
"radiant",
"spirited",
"tranquil",
"unique",
"vivid",
"wise",
"zany",
"artful",
"bubbly",
"charming",
"dazzling",
"earnest",
"festive",
"gentlemanly",
"hearty",
"intrepid",
"jubilant",
"knightly",
"lively",
"magnetic",
"nimble",
"orderly",
"peaceful",
"quick-witted",
"robust",
"sturdy",
"trusty",
"upstanding",
"vibrant",
"whimsical",
]
nouns = [
"sunset",
"forest",
"river",
"mountain",
"breeze",
"meadow",
"ocean",
"valley",
"sky",
"field",
"cloud",
"star",
"rain",
"leaf",
"stone",
"flower",
"bird",
"tree",
"wave",
"trail",
"island",
"desert",
"hill",
"lake",
"pond",
"grove",
"canyon",
"reef",
"bay",
"peak",
"glade",
"marsh",
"cliff",
"dune",
"spring",
"brook",
"cave",
"plain",
"ridge",
"wood",
"blossom",
"petal",
"root",
"branch",
"seed",
"acorn",
"pine",
"willow",
"cedar",
"elm",
"falcon",
"eagle",
"sparrow",
"robin",
"owl",
"finch",
"heron",
"crane",
"duck",
"swan",
"fox",
"wolf",
"bear",
"deer",
"moose",
"otter",
"beaver",
"lynx",
"hare",
"badger",
"butterfly",
"bee",
"ant",
"beetle",
"dragonfly",
"firefly",
"ladybug",
"moth",
"spider",
"worm",
"coral",
"kelp",
"shell",
"pebble",
"boulder",
"cobble",
"sand",
"wavelet",
"tide",
"current",
]
adjective = random.choice(adjectives)
noun = random.choice(nouns)
number = random.randint(1, 99)
return f"{adjective}-{noun}-{number}"
def block_except_in_notebook():
in_notebook = bool(getattr(sys, "ps1", sys.flags.interactive))
if in_notebook:
return
try:
while True:
time.sleep(0.1)
except (KeyboardInterrupt, OSError):
print("Keyboard interruption in main thread... closing dashboard.")
def simplify_column_names(columns: list[str]) -> dict[str, str]:
"""
Simplifies column names to first 10 alphanumeric or "/" characters with unique suffixes.
Args:
columns: List of original column names
Returns:
Dictionary mapping original column names to simplified names
"""
simplified_names = {}
used_names = set()
for col in columns:
alphanumeric = re.sub(r"[^a-zA-Z0-9/]", "", col)
base_name = alphanumeric[:10] if alphanumeric else f"col_{len(used_names)}"
final_name = base_name
suffix = 1
while final_name in used_names:
final_name = f"{base_name}_{suffix}"
suffix += 1
simplified_names[col] = final_name
used_names.add(final_name)
return simplified_names
def print_dashboard_instructions(project: str) -> None:
"""
Prints instructions for viewing the Trackio dashboard.
Args:
project: The name of the project to show dashboard for.
"""
YELLOW = "\033[93m"
BOLD = "\033[1m"
RESET = "\033[0m"
print("* View dashboard by running in your terminal:")
print(f'{BOLD}{YELLOW}trackio show --project "{project}"{RESET}')
print(f'* or by running in Python: trackio.show(project="{project}")')
def preprocess_space_and_dataset_ids(
space_id: str | None, dataset_id: str | None
) -> tuple[str | None, str | None]:
if space_id is not None and "/" not in space_id:
username = huggingface_hub.whoami()["name"]
space_id = f"{username}/{space_id}"
if dataset_id is not None and "/" not in dataset_id:
username = huggingface_hub.whoami()["name"]
dataset_id = f"{username}/{dataset_id}"
if space_id is not None and dataset_id is None:
dataset_id = f"{space_id}_dataset"
return space_id, dataset_id