import os import random import sys import time from pathlib import Path from huggingface_hub.constants import HF_HOME RESERVED_KEYS = ["project", "run", "timestamp", "step"] 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.")