summaryrefslogtreecommitdiff
path: root/python_agent/write_test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'python_agent/write_test.sh')
-rwxr-xr-xpython_agent/write_test.sh67
1 files changed, 67 insertions, 0 deletions
diff --git a/python_agent/write_test.sh b/python_agent/write_test.sh
new file mode 100755
index 0000000..053ce3e
--- /dev/null
+++ b/python_agent/write_test.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+[ ! -f .env ] || export $(grep -v '^#' .env | xargs)
+[ ! -f .teagent ] || export $(grep -v '^#' .teagent | xargs)
+if [ -z "$REPO" ]; then
+ exit 1
+fi
+# Default 5 minute maximum
+TIMEOUT_MAX="${TIMEOUT_MAX:-300}"
+SERVER="${OLLAMA_HOST:-http://localhost:11434}"
+MODEL="${OLLAMA_MODEL:-llama3.2}"
+
+echo "${SERVER}"
+for FILE in agent/ast/*.py; do
+ SOURCE_FILE="`head -n1 \"${FILE}\"`"
+ SOURCE_FILE="${SOURCE_FILE### Function derived from }"
+ SOURCE_IMPORT="${SOURCE_FILE##src/}"
+ PROMPT=$(cat << EOF
+You are an engineer in charge of freshening up old code. For this task, you will be given a source file. Please write tests for the function to make sure any future changes continue to cover expectations. The code is in Python and the test suite is pytest.
+To do this task, you will be drafting a PR. Therefore, you will output three pieces: a 'title' for the PR, the 'discussion' of the PR, and the 'code' of the PR.
+(You may treat any called functions from the histclass package as correctly working functions. Also, imports were removed so you can assume all symbols are properly imported already)
+The function/ class can be imported from ${SOURCE_IMPORT}
+
+File contents:
+`cat "${FILE}"`
+EOF
+)
+ echo "${PROMPT}"
+ SCHEMA="json"
+ OPTS='{"num_ctx": 8192}'
+ SCHEMA='{"type": "object", "properties": {"code": {"type": "string"}, "title": {"type": "string"}, "discussion": {"type": "string"}}, "required": ["code", "title", "dicussion"]}'
+ CDATA="$(jq -n --arg model "$MODEL" --arg prompt "$PROMPT" --argjson options "$OPTS" --argjson schema "$SCHEMA" \
+ '{model:$model, prompt:$prompt, options: $options, stream:false, format: $schema}')"
+ echo "${CDATA}"
+ RESPONSE=$(timeout "${TIMEOUT_MAX}" curl -s "$SERVER/api/generate" \
+ -H "Content-Type: application/json" \
+ -d "${CDATA}")
+ # '{model:$model, prompt:$prompt, stream:false}')" \
+ # | jq -r '.response')
+ echo "${RESPONSE}"
+ #echo "${RESPONSE}" | jq -r '.response' | jq
+ echo "${RESPONSE}" | jq -r '.response' | jq -r '.title'
+ echo "${RESPONSE}" | jq -r '.response' | jq -r '.discussion'
+ echo "${RESPONSE}" | jq -r '.response' | jq -r '.code'
+
+
+ TITLE="`echo "${RESPONSE}" | jq -r '.response' | jq -r '.title'`"
+ DISCUSSION="`echo "${RESPONSE}" | jq -r '.response' | jq -r '.discussion'`"
+ CODE="`echo "${RESPONSE}" | jq -r '.response' | jq -r '.code'`"
+
+ BODY=$(cat << EOF
+File Source: ${SOURCE_FILE}
+
+# Details
+${DISCUSSION}
+
+# Code
+\`\`\`python3
+${CODE}
+\`\`\`
+EOF
+)
+ echo "${BODY}"
+ echo "${TITLE}"
+
+ tea issues create --title "${TITLE}" --body "${BODY}" --login teagent --repo "cc/HistClass"
+done