File: hf-create-collection.py

package info (click to toggle)
llama.cpp 6641%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 43,824 kB
  • sloc: cpp: 218,020; ansic: 117,624; python: 29,020; lisp: 9,094; sh: 5,776; objc: 1,045; javascript: 828; xml: 259; makefile: 219
file content (106 lines) | stat: -rwxr-xr-x 3,454 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env python3

from huggingface_hub import HfApi
import argparse
import os
import sys


def create_collection(title, description, private=False, namespace=None, return_slug=False):
    """
    Create a new collection on Hugging Face

    Args:
        title: Collection title
        description: Collection description
        private: Whether the collection should be private (default: False)
        namespace: Optional namespace (defaults to your username)

    Returns:
        Collection object if successful, None if failed
    """

    # Check if HF_TOKEN is available
    token = os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN")
    if not token:
        print("āŒ No HF_TOKEN or HUGGINGFACE_HUB_TOKEN found in environment variables")
        print("Please set your Hugging Face token as an environment variable")
        return None

    # Initialize API
    api = HfApi()

    try:
        # Test authentication first
        user_info = api.whoami()
        if not return_slug:
            print(f"āœ… Authenticated as: {user_info['name']}")

        # Create the collection
        if not return_slug:
            print(f"šŸ“š Creating collection: '{title}'...")
        collection = api.create_collection(
            title=title,
            description=description,
            private=private,
            namespace=namespace
        )

        if not return_slug:
            print(f"āœ… Collection created successfully!")
            print(f"šŸ“‹ Collection slug: {collection.slug}")
            print(f"šŸ”— Collection URL: https://huggingface.co/collections/{collection.slug}")

        return collection

    except Exception as e:
        print(f"āŒ Error creating collection: {e}")
        return None

def main():
    # This script requires that the environment variable HF_TOKEN is set with your
    # Hugging Face API token.
    api = HfApi()

    parser = argparse.ArgumentParser(description='Create a Huggingface Collection')
    parser.add_argument('--name', '-n', help='The name/title of the Collection', required=True)
    parser.add_argument('--description', '-d', help='The description for the Collection', required=True)
    parser.add_argument('--namespace', '-ns', help='The namespace to add the Collection to', required=True)
    parser.add_argument('--private', '-p', help='Create a private Collection', action='store_true')  # Fixed
    parser.add_argument('--return-slug', '-s', help='Only output the collection slug', action='store_true')  # Fixed

    args = parser.parse_args()

    name = args.name
    description = args.description
    private = args.private
    namespace = args.namespace
    return_slug = args.return_slug

    if not return_slug:
        print("šŸš€ Creating Hugging Face Collection")
        print(f"Title: {name}")
        print(f"Description: {description}")
        print(f"Namespace: {namespace}")
        print(f"Private: {private}")

    collection = create_collection(
        title=name,
        description=description,
        private=private,
        namespace=namespace,
        return_slug=return_slug
    )

    if collection:
        if return_slug:
            print(collection.slug)
        else:
            print("\nšŸŽ‰ Collection created successfully!")
            print(f"Use this slug to add models: {collection.slug}")
    else:
        print("\nāŒ Failed to create collection")
        sys.exit(1)

if __name__ == "__main__":
    main()