Spaces:
Running
Running
#!/usr/bin/env python3 | |
# -*- coding: utf-8 -*- | |
""" | |
Repository Input Component | |
This module provides the UI component for entering a GitHub repository URL. | |
""" | |
import gradio as gr | |
import re | |
import logging | |
logger = logging.getLogger(__name__) | |
def validate_github_url(url): | |
""" | |
Validate that the input is a proper GitHub repository URL. | |
Args: | |
url (str): The URL to validate. | |
Returns: | |
str or None: Error message if invalid, None if valid. | |
""" | |
if not url: | |
return None | |
# Basic GitHub URL pattern | |
pattern = r'^https?://github\.com/[\w.-]+/[\w.-]+/?$' | |
if not re.match(pattern, url): | |
return "Please enter a valid GitHub repository URL" | |
return None | |
def create_repo_input(): | |
""" | |
Create the repository input component. | |
Returns: | |
tuple: (repo_url, github_token, submit_btn) - The repository URL input, GitHub token input, and submit button. | |
""" | |
with gr.Group(): | |
gr.Markdown("### π GitHub Repository") | |
repo_url = gr.Textbox( | |
label="Repository URL", | |
placeholder="https://github.com/username/repository", | |
info="Enter the URL of a GitHub repository", | |
) | |
github_token = gr.Textbox( | |
label="GitHub Token (Optional)", | |
placeholder="For private repositories only", | |
info="Required only for private repositories", | |
type="password", | |
visible=True | |
) | |
submit_btn = gr.Button( | |
value="Analyze Repository", | |
variant="primary", | |
scale=0, | |
) | |
# Add validation for GitHub URL format | |
error_box = gr.Textbox( | |
label="Error", | |
visible=True, | |
interactive=False, | |
container=False, | |
show_label=False | |
) | |
repo_url.change( | |
fn=validate_github_url, | |
inputs=[repo_url], | |
outputs=[error_box], | |
show_progress=False | |
) | |
return repo_url, github_token, submit_btn |