Spaces:
Runtime error
Runtime error
import json | |
import requests | |
BASE_URL = 'https://caffeinecrew-techdocs.hf.space' | |
def get_access_token(data, return_refresh_token=False): | |
""" | |
This function sends a POST request to the specified URL to get an access token. | |
Arguments: | |
data (dict): A dictionary containing the credentials required for authentication. | |
return_refresh_token (bool, optional): A flag to indicate if the refresh token should be returned. Defaults to False. | |
Returns: | |
str or tuple: If return_refresh_token is False, the function returns the access token as a string. If return_refresh_token is True, the function returns a tuple containing the access token and the refresh token. | |
Raises: | |
Exception: If an error occurs during the execution of the function, an Exception is raised. | |
""" | |
'\n This function sends a POST request to the specified URL to get an access token.\n \n Arguments:\n data (dict): A dictionary containing the credentials required for authentication.\n return_refresh_token (bool, optional): A flag to indicate if the refresh token should be returned. Defaults to False.\n \n Returns:\n str or tuple: If return_refresh_token is False, the function returns the access token as a string. If return_refresh_token is True, the function returns a tuple containing the access token and the refresh token.\n \n Raises:\n Exception: If an error occurs during the execution of the function, an Exception is raised.\n ' | |
'\n This function sends a POST request to the specified URL to get an access token.\n \n Arguments:\n data (dict): A dictionary containing the credentials required for authentication.\n return_refresh_token (bool, optional): A flag to indicate if the refresh token should be returned. Defaults to False.\n \n Returns:\n str or tuple: If return_refresh_token is False, the function returns the access token as a string. If return_refresh_token is True, the function returns a tuple containing the access token and the refresh token.\n \n Raises:\n Exception: If an error occurs during the execution of the function, an Exception is raised.\n ' | |
try: | |
url = BASE_URL + '/auth/login' | |
headers = {'accept': 'application/json'} | |
data = json.dumps(data) | |
response = requests.post(url, data=data, headers=headers) | |
access_token = response.json()['access_token'] | |
if return_refresh_token: | |
refresh_token = response.json()['refresh_token'] | |
return (access_token, refresh_token) | |
return access_token | |
except Exception as e: | |
print('Invlaid Credentials') | |
return None | |
def request_inference(config, code_block, max_retries=1): | |
""" | |
Usage: request_inference(config, code_block, max_retries=1) | |
Purpose: | |
This function sends a POST request to the API server to perform code inference. | |
Arguments: | |
- config (dict): A dictionary containing the necessary authentication details like 'access_token', 'api_key' and 'username'. | |
- code_block (str): The code block that needs to be inferenced. | |
- max_retries (int, optional): The maximum number of times the function should retry in case of an error. Defaults to 1. | |
Returns: | |
- str: The docstring of the inferenced code block. | |
Raises: | |
- Exception: If the maximum number of retries (specified by max_retries) is reached and the API server still returns an error. | |
""" | |
"\nUsage: request_inference(config, code_block, max_retries=1)\n\nPurpose:\nThis function sends a POST request to the API server to perform code inference.\n\nArguments:\n- config (dict): A dictionary containing the necessary authentication details like 'access_token', 'api_key' and 'username'.\n- code_block (str): The code block that needs to be inferenced.\n- max_retries (int, optional): The maximum number of times the function should retry in case of an error. Defaults to 1.\n\nReturns:\n- str: The docstring of the inferenced code block.\n\nRaises:\n- Exception: If the maximum number of retries (specified by max_retries) is reached and the API server still returns an error.\n" | |
"\nUsage: request_inference(config, code_block, max_retries=1)\n\nPurpose:\nThis function sends a POST request to the API server to perform code inference.\n\nArguments:\n- config (dict): A dictionary containing the necessary authentication details like 'access_token', 'api_key' and 'username'.\n- code_block (str): The code block that needs to be inferenced.\n- max_retries (int, optional): The maximum number of times the function should retry in case of an error. Defaults to 1.\n\nReturns:\n- str: The docstring of the inferenced code block.\n\nRaises:\n- Exception: If the maximum number of retries (specified by max_retries) is reached and the API server still returns an error.\n" | |
if max_retries == 0: | |
return None | |
url = BASE_URL + '/api/inference' | |
headers = {'accept': 'application/json', 'Authorization': f"Bearer {config['access_token']}"} | |
code_input = code_block | |
response = requests.post(url=url, headers=headers, data=json.dumps({'code_block': code_input, 'api_key': config['api_key']})) | |
if response.status_code == 200: | |
return response.json()['docstr'] | |
else: | |
data = {'username': config['username'], 'password': config['password']} | |
print('Encountered error retrying...') | |
config.update({'access_token': get_access_token(data)}) | |
return request_inference(config, code_block, max_retries=max_retries - 1) | |
def update_file(file_path, docstr_code): | |
""" | |
This function updates the docstring of a Python file. | |
Arguments: | |
file_path (str): The path of the Python file to be updated. | |
docstr_code (str): The new docstring to be written to the file. | |
Returns: | |
None | |
Raises: | |
FileNotFoundError: If the specified file does not exist. | |
IOError: If there is an error while writing to the file. | |
""" | |
'\n This function performs some operation on the given arguments.\n\n Arguments:\n arg1 (int): The first argument. A positive integer.\n arg2 (float): The second argument. A positive floating point number.\n arg3 (str): The third argument. A string containing only alphabets.\n arg4 (bool): The fourth argument. A boolean value.\n\n Returns:\n None\n\n Raises:\n TypeError: If any argument is not of the expected type.\n ValueError: If arg1 is less than or equal to zero, or if arg2 is not a positive number, or if arg3 contains any non-alphabetic character, or if arg4 is not a boolean value.\n ' | |
'\n This function updates the docstring of a Python file.\n\n Arguments:\n file_path (str): The path of the Python file to be updated.\n docstr_code (str): The new docstring to be written to the file.\n\n Returns:\n None\n\n Raises:\n FileNotFoundError: If the specified file does not exist.\n IOError: If there is an error while writing to the file.\n ' | |
with open(file_path, 'w', errors='ignore') as file: | |
file.write(docstr_code) | |
def issue_api_key(config): | |
""" | |
This function generates a new API key for the given user. | |
Arguments: | |
config: dict, A dictionary containing the user's configuration details. | |
- access_token: str, The user's access token. | |
- username: str, The user's username. | |
Returns: | |
None, Prints the new API key to the console. | |
Raises: | |
Exception, If the API key generation fails. The error message will be printed to the console. | |
""" | |
"\n This function generates a new API key for the given user.\n\n Arguments:\n config: dict, A dictionary containing the user's configuration details.\n - access_token: str, The user's access token.\n - username: str, The user's username.\n\n Returns:\n None, Prints the new API key to the console.\n\n Raises:\n Exception, If the API key generation fails. The error message will be printed to the console.\n\n " | |
"\n This function generates a new API key for the given user.\n\n Arguments:\n config: A dictionary containing the user's configuration details.\n - access_token: str, The user's access token.\n - username: str, The user's username.\n\n Returns:\n None, prints the new API key to the console.\n\n Raises:\n Exception, If the API key generation fails. The error message will be printed to the console.\n " | |
try: | |
headers = {'accept': 'application/json', 'Authorization': f"Bearer {config['access_token']}"} | |
response = requests.put(url=BASE_URL + '/auth/regenerate_api_key', headers=headers, data=json.dumps({'username': config['username']})) | |
if response.status_code != 200: | |
raise Exception('API Key Generation Failed') | |
print(f"$ API_KEY:{response.json()['api_key']}") | |
except Exception as e: | |
print(f'$ {e}') | |
def signup(config): | |
""" | |
This function is used to sign up a user with the provided configuration. | |
Arguments: | |
config: dict | |
A dictionary containing the user's signup information. | |
Returns: | |
None | |
Raises: | |
Exception | |
If the username or email already exists. | |
If there's a general error during the sign up process. | |
""" | |
"\n This function is used to sign up a user with the provided configuration.\n\n Arguments:\n config: dict\n A dictionary containing the user's signup information.\n\n Returns:\n None\n\n Raises:\n Exception\n If the username or email already exists.\n If there's a general error during the sign up process.\n " | |
'\ndef signup(config: dict) -> None:\n ' | |
try: | |
headers = {'accept': 'application/json'} | |
response = requests.post(url=BASE_URL + '/auth/signup', headers=headers, data=json.dumps(config)) | |
if response.status_code == 226: | |
raise Exception('username or email already exists') | |
elif response.status_code != 200: | |
raise Exception('Something went wrong, please try again later') | |
print('Signed up successfully, please issue a new `API_KEY` to continue') | |
except Exception as e: | |
print(e) |