Merge remote-tracking branch 'origin/main'

# Conflicts:
#	pilot/helpers/agents/Developer.py
#	pilot/utils/arguments.py
#	pilot/utils/llm_connection.py
This commit is contained in:
Nicholas Albion
2023-09-11 14:15:11 +10:00
18 changed files with 34 additions and 38 deletions

View File

@@ -13,10 +13,10 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.7, 3.8, 3.9, 3.10, 3.11]
python-version: ['3.8', '3.9', '3.10', '3.11']
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
@@ -30,14 +30,15 @@ jobs:
- name: Lint
run: |
pip install flake8
pip install flake8 ruff
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# stop the build if there are Python syntax errors or undefined names
#ruff --format=github --select=E9,F63,F7,F82 --target-version=py37 .
ruff --format=github --select=E9,F63,F7,F82 --target-version=py37 .
# default set of ruff rules with GitHub Annotations
#ruff --format=github --target-version=py37 .
#ruff --format=github --target-version=py37 --ignore=F401,E501 .
- name: Run tests
run: |
pip install pytest
pytest
cd pilot
PYTHONPATH=. pytest

View File

@@ -12,4 +12,4 @@ class Architecture(ProgressStep):
architecture = JSONField() # Custom JSON field for SQLite
class Meta:
db_table = 'architecture'
table_name = 'architecture'

View File

@@ -13,7 +13,7 @@ class CommandRuns(BaseModel):
previous_step = ForeignKeyField('self', null=True, column_name='previous_step')
class Meta:
db_table = 'command_runs'
table_name = 'command_runs'
indexes = (
(('app', 'hash_id'), True),
)

View File

@@ -5,4 +5,4 @@ from database.models.components.progress_step import ProgressStep
class Development(ProgressStep):
class Meta:
db_table = 'development'
table_name = 'development'

View File

@@ -12,4 +12,4 @@ class DevelopmentPlanning(ProgressStep):
development_plan = JSONField() # Custom JSON field for SQLite
class Meta:
db_table = 'development_planning'
table_name = 'development_planning'

View File

@@ -20,7 +20,7 @@ class DevelopmentSteps(BaseModel):
previous_step = ForeignKeyField('self', null=True, column_name='previous_step')
class Meta:
db_table = 'development_steps'
table_name = 'development_steps'
indexes = (
(('app', 'hash_id'), True),
)

View File

@@ -3,4 +3,4 @@ from database.models.components.progress_step import ProgressStep
class EnvironmentSetup(ProgressStep):
class Meta:
db_table = 'environment_setup'
table_name = 'environment_setup'

View File

@@ -12,7 +12,7 @@ class FileSnapshot(BaseModel):
content = TextField()
class Meta:
db_table = 'file_snapshot'
table_name = 'file_snapshot'
indexes = (
(('development_step', 'file'), True),
)

View File

@@ -7,4 +7,4 @@ class ProjectDescription(ProgressStep):
summary = TextField()
class Meta:
db_table = 'project_description'
table_name = 'project_description'

View File

@@ -12,7 +12,7 @@ class UserApps(BaseModel):
workspace = CharField(null=True)
class Meta:
db_table = 'user_apps'
table_name = 'user_apps'
indexes = (
(('app', 'user'), True),
)

View File

@@ -13,7 +13,7 @@ class UserInputs(BaseModel):
previous_step = ForeignKeyField('self', null=True, column_name='previous_step')
class Meta:
db_table = 'user_inputs'
table_name = 'user_inputs'
indexes = (
(('app', 'hash_id'), True),
)

View File

@@ -11,4 +11,4 @@ class UserStories(ProgressStep):
else:
user_stories = JSONField() # Custom JSON field for SQLite
class Meta:
db_table = 'user_stories'
table_name = 'user_stories'

View File

@@ -12,4 +12,4 @@ class UserTasks(ProgressStep):
user_tasks = JSONField() # Custom JSON field for SQLite
class Meta:
db_table = 'user_tasks'
table_name = 'user_tasks'

0
pilot/logger/__init__.py Normal file
View File

View File

@@ -2,13 +2,10 @@
from __future__ import print_function, unicode_literals
import sys
from dotenv import load_dotenv
from termcolor import colored
load_dotenv()
from termcolor import colored
from helpers.Project import Project
from utils.arguments import get_arguments
from utils.exit import exit_gpt_pilot
from logger.logger import logger

View File

@@ -1,12 +1,10 @@
import hashlib
import os
import re
import getpass
import hashlib
import sys
import uuid
from getpass import getuser
from termcolor import colored
from database.database import get_app, get_app_by_user_workspace
@@ -27,7 +25,7 @@ def get_arguments():
arguments[arg] = True
if 'user_id' not in arguments:
arguments['user_id'] = username_to_uuid(getpass.getuser())
arguments['user_id'] = username_to_uuid(getuser())
app = None
if 'workspace' in arguments:
@@ -42,7 +40,6 @@ def get_arguments():
if app is None:
app = get_app(arguments['app_id'])
# arguments['user_id'] = str(app.user.id)
arguments['app_type'] = app.app_type
arguments['name'] = app.name
# Add any other fields from the App model you wish to include
@@ -57,11 +54,10 @@ def get_arguments():
arguments['app_id'] = str(uuid.uuid4())
print(colored('\n------------------ STARTING NEW PROJECT ----------------------', 'green', attrs=['bold']))
print(f"If you wish to continue with this project in future run:")
print("If you wish to continue with this project in future run:")
print(colored(f'python {sys.argv[0]} app_id={arguments["app_id"]}', 'green', attrs=['bold']))
print(colored('--------------------------------------------------------------\n', 'green', attrs=['bold']))
if 'email' not in arguments:
arguments['email'] = get_email()

View File

@@ -118,7 +118,7 @@ def create_gpt_chat_completion(messages: List[dict], req_type, min_tokens=MIN_TO
# Check if the error message is related to token limit
if "context_length_exceeded" in error_message.lower():
raise Exception(f'Too many tokens in the request. Please try to continue the project with some previous development step.')
raise Exception('Too many tokens in the request. Please try to continue the project with some previous development step.')
else:
print('The request to OpenAI API failed. Here is the error message:')
print(e)
@@ -163,7 +163,7 @@ def retry_on_exception(func):
continue
spinner_stop(spinner)
print(colored(f'There was a problem with request to openai API:', 'red'))
print(colored('There was a problem with request to openai API:', 'red'))
print(err_str)
user_message = questionary.text(
@@ -251,7 +251,7 @@ def stream_gpt_completion(data, req_type):
if json_line['choices'][0]['finish_reason'] == 'function_call':
function_calls['arguments'] = load_data_to_json(function_calls['arguments'])
return return_result({'function_calls': function_calls}, lines_printed);
return return_result({'function_calls': function_calls}, lines_printed)
json_line = json_line['choices'][0]['delta']

View File

@@ -10,8 +10,9 @@ def test_email_found_in_gitconfig():
name = test_user
email = test@example.com
"""
with patch('builtins.open', mock_open(read_data=mock_file_content)):
assert get_email() == "test@example.com"
with patch('os.path.exists', return_value=True):
with patch('builtins.open', mock_open(read_data=mock_file_content)):
assert get_email() == "test@example.com"
def test_email_not_found_in_gitconfig():
@@ -21,9 +22,10 @@ def test_email_not_found_in_gitconfig():
"""
mock_uuid = "12345678-1234-5678-1234-567812345678"
with patch('builtins.open', mock_open(read_data=mock_file_content)):
with patch.object(uuid, "uuid4", return_value=mock_uuid):
assert get_email() == mock_uuid
with patch('os.path.exists', return_value=True):
with patch('builtins.open', mock_open(read_data=mock_file_content)):
with patch.object(uuid, "uuid4", return_value=mock_uuid):
assert get_email() == mock_uuid
def test_gitconfig_not_present():