Techdocs / testing /pack /functools.py
mayureshagashe2105's picture
Add logger to CLI
aa7111b
raw
history blame
10.2 kB
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)