From da74e67ecd221b5d325cca03ce88dd9960148e57 Mon Sep 17 00:00:00 2001 From: turtlebasket Date: Tue, 6 Dec 2022 17:35:18 -0800 Subject: [PATCH] fix python parsing, update deps python parsing was broken & openai changed their internal API --- Pipfile.lock | 6 +-- docugen-chatgpt.py | 32 +++--------- example/example_code-doc.md | 97 ++++++++++++++++++++++++++----------- example/example_code.py | 5 +- parse/__init__.py | 0 parse/py.py | 30 ++++++++++++ 6 files changed, 114 insertions(+), 56 deletions(-) create mode 100644 parse/__init__.py create mode 100644 parse/py.py diff --git a/Pipfile.lock b/Pipfile.lock index dea9ea6..2ac9be4 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -299,11 +299,11 @@ }, "revchatgpt": { "hashes": [ - "sha256:36860b0297d5e846172c2fcfcdf27b4f19b80eac299b4e00c93a5dccf27f18c1", - "sha256:3fce7e348a8817e4335130a9ab2e523633c8c49cad1d2ca577571aeaa4a00115" + "sha256:6217e51914300123bc01f1519de68eeece8bdca0aa68bca71e540d293cbbc23c", + "sha256:fcebca9815761b6fcb5abbfb8b28bbee810d2a01fc148c19429066818a29d933" ], "index": "pypi", - "version": "==0.0.23.5" + "version": "==0.0.30" }, "six": { "hashes": [ diff --git a/docugen-chatgpt.py b/docugen-chatgpt.py index 327712f..4238a4b 100644 --- a/docugen-chatgpt.py +++ b/docugen-chatgpt.py @@ -1,9 +1,10 @@ +import json import yaml from yaml import CLoader, CDumper from revChatGPT.revChatGPT import Chatbot import os from sys import argv -import re +from parse import py # from argparse import ArgumentParser @@ -23,39 +24,20 @@ infile = open(argv[1], "r") # print(infile) # top level functions only for now -functions = [] -function_head = "" -function_content = "" -function_body_indent_level = 0 -for line in infile: - curr_indent_level = len(line) - len(line.lstrip()) - function_found = re.search('^def(\s+)(.*)\(.*\)(\s*):$', line.strip()) - if function_found and len(function_head) == 0: - function_head = re.search("(\s+)(.*)\(.*\)", line).string.replace('def', '').replace('):', ')').strip() - function_content = line - function_body_indent_level = curr_indent_level + 1 - - elif len(function_head) > 0 and (curr_indent_level < function_body_indent_level): - functions.append({ - "head": function_head, - "content": function_content - }) - if function_found: - function_head = "" - function_content = "" - - elif len(function_head) > 0 and curr_indent_level >= function_body_indent_level: - function_content += line +functions = py.find_toplevel_funcs(infile) print(f"Found {len(functions)} functions.") doc_prompt_head = "Explain what this function does in one short sentence, then give example code that uses the function:\n" # doc_prompt_example = "Return only example code using this function:\n" +# for function in functions: +# print(function["content"]) +# print("------------------") + bot = Chatbot({ 'Authorization': config['Authorization'], 'session_token': config['session_token'], - # 'session': config['password'] }, conversation_id=None) bot.refresh_session() diff --git a/example/example_code-doc.md b/example/example_code-doc.md index ff23b3a..1153813 100644 --- a/example/example_code-doc.md +++ b/example/example_code-doc.md @@ -1,58 +1,101 @@ -# Documentation for `example_code.py` +# Documentation for `example/example_code.py` ## `remove_dirt(image)` -This function removes small dirt and noise from a binary image by closing small holes and removing small objects. +This function removes small elements from an image using area closing morphological operation. -Here is an example of how to use the function: +Example: ``` -import skimage.morphology as morphology -from skimage import data +# Import the required module +from skimage import morphology -# Load a binary image -image = data.coins() > 100 +# Load the image +image = skimage.io.imread('image.jpg') -# Remove dirt from the image -cleaned_image = remove_dirt(image) +# Apply the function to remove small elements from the image +image = remove_dirt(image) + +# Show the result +skimage.io.imshow(image) +``` + +## `calculate_area(countour)` +This function calculates the area of a contour in an image. + +Example: + +``` +# Import the required modules +import cv2 as cv +import numpy as np + +# Load the image and find the contours +image = cv.imread('image.jpg') +contours, _ = cv.findContours(image, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) + +# Iterate over the contours and calculate their areas +for contour in contours: + area = calculate_area(contour) + print('Area of contour:', area) ``` ## `center_of_mass(X)` -This function calculates the center of mass of a 2D shape defined by a set of points. +This function calculates the center of mass of a set of points. -Here is an example of how to use the function: +Example: ``` import numpy as np -# Define a set of points that define a shape -X = np.array([[0, 0], [0, 1], [1, 1], [1, 0]]) +# Define a set of points +X = np.array([[1,2], [3,4], [5,6]]) -# Calculate the center of mass of the shape -center_of_mass = center_of_mass(X) +# Calculate the center of mass of the points +center = center_of_mass(X) -# Print the center of mass -print(center_of_mass) +# Print the result +print('Center of mass:', center) ``` -The output will be `[0.5, 0.5]`, which is the coordinates of the center of the square defined by the points `X`. +The output will be `Center of mass: [3. 4.]`. ## `center_of_mass(X)` -This function calculates the center of mass of a 2D shape defined by a set of points. +This function calculates the center of mass of a set of points. -Here is an example of how to use the function: +Example: ``` import numpy as np -# Define a set of points that define a shape -X = np.array([[0, 0], [0, 1], [1, 1], [1, 0]]) +# Define a set of points +X = np.array([[1,2], [3,4], [5,6]]) -# Calculate the center of mass of the shape -center_of_mass = center_of_mass(X) +# Calculate the center of mass of the points +center = center_of_mass(X) -# Print the center of mass -print(center_of_mass) +# Print the result +print('Center of mass:', center) ``` -The output will be `[0.5, 0.5]`, which is the coordinates of the center of the square defined by the points `X`. +The output will be `Center of mass: [3. 4.]`. + +## `rg_ratio_normalize(imgarr)` +This function normalizes the temperature values in an image array using the RG ratio and a pyrometry calibration formula. + +Example: + +``` +# Import the required modules +import numpy as np + +# Load the image array +imgarr = np.array(...) + +# Normalize the temperature values in the image +imgnew, tmin, tmax = rg_ratio_normalize(imgarr) + +# Print the resulting minimum and maximum temperature values +print('Minimum temperature:', tmin) +print('Maximum temperature:', tmax) +``` diff --git a/example/example_code.py b/example/example_code.py index bd2cc65..d6c71f4 100644 --- a/example/example_code.py +++ b/example/example_code.py @@ -4,12 +4,14 @@ def remove_dirt(image): return image + def calculate_area(countour): c = np.expand_dims(countour.astype(np.float32), 1) c = cv.UMat(c) - + return cv.contourArea(c) + def center_of_mass(X): x = X[:,0] y = X[:,1] @@ -22,6 +24,7 @@ def center_of_mass(X): img = remove_dirt(thresh_gray) + def rg_ratio_normalize(imgarr): # set max & min to most extreme values, # work up & down respectively from there diff --git a/parse/__init__.py b/parse/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/parse/py.py b/parse/py.py new file mode 100644 index 0000000..0b157cc --- /dev/null +++ b/parse/py.py @@ -0,0 +1,30 @@ +import re + +def find_toplevel_funcs(lines): + functions = [] + function_head = "" + function_content = "" + function_body_indent_level = 0 + + for line in lines: + curr_indent_level = len(line) - len(line.lstrip()) + function_found = re.search('^def(\s+)(.*)\(.*\)(\s*):(\s*)$', line.strip()) + + if len(function_head.strip()) > 0 and (curr_indent_level < function_body_indent_level): + functions.append({ + "head": function_head, + "content": function_content + }) + if function_found: + function_head = "" + function_content = "" + + if function_found and len(function_head) == 0: + function_head = re.search("(\s+)(.*)\(.*\)", line).string.replace('def', '').replace('):', ')').strip() + function_content = line + function_body_indent_level = curr_indent_level + 1 + + elif not function_found and len(function_head.strip()) > 0 and curr_indent_level >= function_body_indent_level: + function_content += line + + return functions