Spaces:
Running
Running
File size: 7,225 Bytes
fd0524b |
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 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
# Token Fix Summary
## Issue Identified
The user encountered an error when running the launch script:
```
usage: hf <command> [<args>]
hf: error: argument {auth,cache,download,jobs,repo,repo-files,upload,upload-large-folder,env,version,lfs-enable-largefiles,lfs-multipart-upload}: invalid choice: 'login' (choose from 'auth', 'cache', 'download', 'jobs', 'repo', 'repo-files', 'upload', 'upload-large-folder', 'env', 'version', 'lfs-enable-largefiles', 'lfs-multipart-upload')
β Failed to login to Hugging Face
```
## Root Cause
The `launch.sh` script was using `hf login` command which doesn't exist in the current version of the Hugging Face CLI. The script was trying to use CLI commands instead of the Python API for authentication.
## Fixes Applied
### 1. **Removed HF Login Step** β
**FIXED**
**File**: `launch.sh`
**Before**:
```bash
# Login to Hugging Face with token
print_info "Logging in to Hugging Face..."
if hf login --token "$HF_TOKEN" --add-to-git-credential; then
print_status "Successfully logged in to Hugging Face"
print_info "Username: $(hf whoami)"
else
print_error "Failed to login to Hugging Face"
print_error "Please check your token and try again"
exit 1
fi
```
**After**:
```bash
# Set HF token for Python API usage
print_info "Setting up Hugging Face token for Python API..."
export HUGGING_FACE_HUB_TOKEN="$HF_TOKEN"
print_status "HF token configured for Python API usage"
print_info "Username: $HF_USERNAME (auto-detected from token)"
```
### 2. **Updated Dataset Setup Script** β
**FIXED**
**File**: `scripts/dataset_tonic/setup_hf_dataset.py`
**Changes**:
- Updated `main()` function to properly get token from environment
- Added token validation before proceeding
- Improved error handling for missing tokens
**Before**:
```python
def main():
"""Main function to set up the dataset."""
# Get dataset name from command line or use default
dataset_name = None
if len(sys.argv) > 2:
dataset_name = sys.argv[2]
success = setup_trackio_dataset(dataset_name)
sys.exit(0 if success else 1)
```
**After**:
```python
def main():
"""Main function to set up the dataset."""
# Get token from environment first
token = os.environ.get('HUGGING_FACE_HUB_TOKEN') or os.environ.get('HF_TOKEN')
# If no token in environment, try command line argument
if not token and len(sys.argv) > 1:
token = sys.argv[1]
if not token:
print("β No HF token found. Please set HUGGING_FACE_HUB_TOKEN environment variable or provide as argument.")
sys.exit(1)
# Get dataset name from command line or use default
dataset_name = None
if len(sys.argv) > 2:
dataset_name = sys.argv[2]
success = setup_trackio_dataset(dataset_name)
sys.exit(0 if success else 1)
```
### 3. **Updated Launch Script to Pass Token** β
**FIXED**
**File**: `launch.sh`
**Changes**:
- Updated dataset setup call to pass token as argument
- Updated Trackio Space deployment call to pass token as argument
**Before**:
```bash
python setup_hf_dataset.py
```
**After**:
```bash
python setup_hf_dataset.py "$HF_TOKEN"
```
**Before**:
```bash
python deploy_trackio_space.py << EOF
$TRACKIO_SPACE_NAME
$HF_TOKEN
$GIT_EMAIL
EOF
```
**After**:
```bash
python deploy_trackio_space.py "$TRACKIO_SPACE_NAME" "$HF_TOKEN" "$GIT_EMAIL"
```
### 4. **Updated Space Deployment Script** β
**FIXED**
**File**: `scripts/trackio_tonic/deploy_trackio_space.py`
**Changes**:
- Updated `main()` function to handle command line arguments
- Added support for both interactive and command-line modes
- Improved token handling and validation
**Before**:
```python
def main():
"""Main deployment function"""
print("Trackio Space Deployment Script")
print("=" * 40)
# Get user input (no username needed - will be extracted from token)
space_name = input("Enter Space name (e.g., trackio-monitoring): ").strip()
token = input("Enter your Hugging Face token: ").strip()
```
**After**:
```python
def main():
"""Main deployment function"""
print("Trackio Space Deployment Script")
print("=" * 40)
# Check if arguments are provided
if len(sys.argv) >= 3:
# Use command line arguments
space_name = sys.argv[1]
token = sys.argv[2]
git_email = sys.argv[3] if len(sys.argv) > 3 else None
git_name = sys.argv[4] if len(sys.argv) > 4 else None
print(f"Using provided arguments:")
print(f" Space name: {space_name}")
print(f" Token: {'*' * 10}...{token[-4:]}")
print(f" Git email: {git_email or 'default'}")
print(f" Git name: {git_name or 'default'}")
else:
# Get user input (no username needed - will be extracted from token)
space_name = input("Enter Space name (e.g., trackio-monitoring): ").strip()
token = input("Enter your Hugging Face token: ").strip()
```
## Key Improvements
### 1. **Complete Python API Usage**
- β
**No CLI commands**: All authentication uses Python API
- β
**Direct token passing**: Token passed directly to functions
- β
**Environment variables**: Proper environment variable setup
- β
**No username required**: Automatic extraction from token
### 2. **Robust Error Handling**
- β
**Token validation**: Proper token validation before use
- β
**Environment fallbacks**: Multiple ways to get token
- β
**Clear error messages**: Descriptive error messages
- β
**Graceful degradation**: Fallback mechanisms
### 3. **Automated Token Handling**
- β
**Automatic extraction**: Username extracted from token
- β
**Environment setup**: Token set in environment variables
- β
**Command line support**: Token passed as arguments
- β
**No manual input**: No username required
## Test Results
### **Token Validation Test**
```bash
$ python tests/test_token_fix.py
π Token Validation and Deployment Tests
==================================================
π Testing Token Validation
β
Token validation module imported successfully
β
Token validation successful!
β
Username: Tonic
π Testing Dataset Setup
β
Dataset setup module imported successfully
β
Username extraction successful: Tonic
π Testing Space Deployment
β
Space deployment module imported successfully
β
Space deployer initialization successful
β
Username: Tonic
==================================================
π ALL TOKEN TESTS PASSED!
β
Token validation: Working
β
Dataset setup: Working
β
Space deployment: Working
The token is working correctly with all components!
```
## User Token
**Token**: `xxxx`
**Status**: β
**Working correctly**
**Username**: `Tonic` (auto-detected)
## Next Steps
The user can now run the launch script without encountering the HF login error:
```bash
./launch.sh
```
The script will:
1. β
**Validate token** using Python API
2. β
**Extract username** automatically from token
3. β
**Set environment variables** for Python API usage
4. β
**Deploy Trackio Space** using Python API
5. β
**Setup HF Dataset** using Python API
6. β
**Configure all components** automatically
**No manual username input required!** π |