Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CodeAnt AI: Made Changes to the file #10

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 19 additions & 10 deletions integration/test_call_script.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,7 @@ def call_script_callback(self, result):
def call_script_callback_other_arg(self, result, other_arg):
self.results.append([other_arg, result])

def call_scripts_inline_yield(self):
yield rx.call_script("inline1()")
yield rx.call_script("inline2()")
yield rx.call_script("inline3()")
yield rx.call_script("inline4()")
call_scripts_yield_inline()

def call_script_inline_return(self):
return rx.call_script("inline2()")
Expand Down Expand Up @@ -89,11 +85,7 @@ def get_inline_counter(self):
callback=CallScriptState.set_inline_counter, # type: ignore
)

def call_scripts_external_yield(self):
yield rx.call_script("external1()")
yield rx.call_script("external2()")
yield rx.call_script("external3()")
yield rx.call_script("external4()")
call_scripts_yield_external()

def call_script_external_return(self):
return rx.call_script("external2()")
Expand Down Expand Up @@ -135,12 +127,28 @@ def reset_(self):
yield rx.call_script("inline_counter = 0; external_counter = 0")
self.reset()

def call_scripts_yield_inline():
def call_scripts_inline_yield(self):
yield rx.call_script("inline1()")
yield rx.call_script("inline2()")
yield rx.call_script("inline3()")
yield rx.call_script("inline4()")

def call_scripts_yield_external():
def call_scripts_external_yield(self):
yield rx.call_script("external1()")
yield rx.call_script("external2()")
yield rx.call_script("external3()")
yield rx.call_script("external4()")

app = rx.App(state=rx.State)
with open("assets/external.js", "w") as f:
f.write(external_scripts)

@app.add_page
def index():
return create_ui_elements()
def create_ui_elements():
return rx.vstack(
rx.input(
value=CallScriptState.router.session.client_token,
Expand Down Expand Up @@ -228,6 +236,7 @@ def index():
)



@pytest.fixture(scope="session")
def call_script(tmp_path_factory) -> Generator[AppHarness, None, None]:
"""Start CallScript app at tmp_path via AppHarness.
Expand Down
1 change: 1 addition & 0 deletions response_cache.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"# Code\ndef CallScript():\n \"\"\"A test app for browser javascript integration.\"\"\"\n import reflex as rx\n\n inline_scripts = \"\"\"\n let inline_counter = 0\n function inline1() {\n inline_counter += 1\n return \"inline1\"\n }\n function inline2() {\n inline_counter += 1\n console.log(\"inline2\")\n }\n function inline3() {\n inline_counter += 1\n return {inline3: 42, a: [1, 2, 3], s: 'js', o: {a: 1, b: 2}}\n }\n async function inline4() {\n inline_counter += 1\n return \"async inline4\"\n }\n \"\"\"\n\n external_scripts = inline_scripts.replace(\"inline\", \"external\")\n\n class CallScriptState(rx.State):\n results: list[str | dict | list | None] = []\n inline_counter: int = 0\n external_counter: int = 0\n\n def call_script_callback(self, result):\n self.results.append(result)\n\n def call_script_callback_other_arg(self, result, other_arg):\n self.results.append([other_arg, result])\n\n def call_scripts_inline_yield(self):\n yield rx.call_script(\"inline1()\")\n yield rx.call_script(\"inline2()\")\n yield rx.call_script(\"inline3()\")\n yield rx.call_script(\"inline4()\")\n\n def call_script_inline_return(self):\n return rx.call_script(\"inline2()\")\n\n def call_scripts_inline_yield_callback(self):\n yield rx.call_script(\n \"inline1()\", callback=CallScriptState.call_script_callback\n )\n yield rx.call_script(\n \"inline2()\", callback=CallScriptState.call_script_callback\n )\n yield rx.call_script(\n \"inline3()\", callback=CallScriptState.call_script_callback\n )\n yield rx.call_script(\n \"inline4()\", callback=CallScriptState.call_script_callback\n )\n\n def call_script_inline_return_callback(self):\n return rx.call_script(\n \"inline3()\", callback=CallScriptState.call_script_callback\n )\n\n def call_script_inline_return_lambda(self):\n return rx.call_script(\n \"inline2()\",\n callback=lambda result: CallScriptState.call_script_callback_other_arg( # type: ignore\n result, \"lambda\"\n ),\n )\n\n def get_inline_counter(self):\n return rx.call_script(\n \"inline_counter\",\n callback=CallScriptState.set_inline_counter, # type: ignore\n )\n\n def call_scripts_external_yield(self):\n yield rx.call_script(\"external1()\")\n yield rx.call_script(\"external2()\")\n yield rx.call_script(\"external3()\")\n yield rx.call_script(\"external4()\")\n\n def call_script_external_return(self):\n return rx.call_script(\"external2()\")\n\n def call_scripts_external_yield_callback(self):\n yield rx.call_script(\n \"external1()\", callback=CallScriptState.call_script_callback\n )\n yield rx.call_script(\n \"external2()\", callback=CallScriptState.call_script_callback\n )\n yield rx.call_script(\n \"external3()\", callback=CallScriptState.call_script_callback\n )\n yield rx.call_script(\n \"external4()\", callback=CallScriptState.call_script_callback\n )\n\n def call_script_external_return_callback(self):\n return rx.call_script(\n \"external3()\", callback=CallScriptState.call_script_callback\n )\n\n def call_script_external_return_lambda(self):\n return rx.call_script(\n \"external2()\",\n callback=lambda result: CallScriptState.call_script_callback_other_arg( # type: ignore\n result, \"lambda\"\n ),\n )\n\n def get_external_counter(self):\n return rx.call_script(\n \"external_counter\",\n callback=CallScriptState.set_external_counter, # type: ignore\n )\n\n def reset_(self):\n yield rx.call_script(\"inline_counter = 0; external_counter = 0\")\n self.reset()\n\n app = rx.App(state=rx.State)\n with open(\"assets/external.js\", \"w\") as f:\n f.write(external_scripts)\n\n @app.add_page\n def index():\n return rx.vstack(\n rx.input(\n value=CallScriptState.router.session.client_token,\n is_read_only=True,\n id=\"token\",\n ),\n rx.input(\n value=CallScriptState.inline_counter.to(str), # type: ignore\n id=\"inline_counter\",\n is_read_only=True,\n ),\n rx.input(\n value=CallScriptState.external_counter.to(str), # type: ignore\n id=\"external_counter\",\n is_read_only=True,\n ),\n rx.text_area(\n value=CallScriptState.results.to_string(), # type: ignore\n id=\"results\",\n is_read_only=True,\n ),\n rx.script(inline_scripts),\n rx.script(src=\"/external.js\"),\n rx.button(\n \"call_scripts_inline_yield\",\n on_click=CallScriptState.call_scripts_inline_yield,\n id=\"inline_yield\",\n ),\n rx.button(\n \"call_script_inline_return\",\n on_click=CallScriptState.call_script_inline_return,\n id=\"inline_return\",\n ),\n rx.button(\n \"call_scripts_inline_yield_callback\",\n on_click=CallScriptState.call_scripts_inline_yield_callback,\n id=\"inline_yield_callback\",\n ),\n rx.button(\n \"call_script_inline_return_callback\",\n on_click=CallScriptState.call_script_inline_return_callback,\n id=\"inline_return_callback\",\n ),\n rx.button(\n \"call_script_inline_return_lambda\",\n on_click=CallScriptState.call_script_inline_return_lambda,\n id=\"inline_return_lambda\",\n ),\n rx.button(\n \"call_scripts_external_yield\",\n on_click=CallScriptState.call_scripts_external_yield,\n id=\"external_yield\",\n ),\n rx.button(\n \"call_script_external_return\",\n on_click=CallScriptState.call_script_external_return,\n id=\"external_return\",\n ),\n rx.button(\n \"call_scripts_external_yield_callback\",\n on_click=CallScriptState.call_scripts_external_yield_callback,\n id=\"external_yield_callback\",\n ),\n rx.button(\n \"call_script_external_return_callback\",\n on_click=CallScriptState.call_script_external_return_callback,\n id=\"external_return_callback\",\n ),\n rx.button(\n \"call_script_external_return_lambda\",\n on_click=CallScriptState.call_script_external_return_lambda,\n id=\"external_return_lambda\",\n ),\n rx.button(\n \"Update Inline Counter\",\n on_click=CallScriptState.get_inline_counter,\n id=\"update_inline_counter\",\n ),\n rx.button(\n \"Update External Counter\",\n on_click=CallScriptState.get_external_counter,\n id=\"update_external_counter\",\n ),\n rx.button(\"Reset\", id=\"reset\", on_click=CallScriptState.reset_),\n )\n\n# Instructions\nExtract code verbatim from the function_to_refactor using EXTRACT sections according to the user request. These extractions will be used later to refactor the code.\n* Choose specific and informative names for these functions under new_function_name.\n* We must copy the code verbatim. Keep whitespace and comments.\n* Extractions must not overlap.\n* Extractions should be removable without breaking the code. For example, they should not break up a try except block. We use rope to refactor, so DO NOT extract any code that contains `continue` or `return`\n* Extracted functions should be at least 2 lines long and at most 25 lines long.\n\nRespond in the following format with XML tags:\n\n<contextual_request_analysis>\nFirst, determine the valid section(s) you want to make more modular. Choose extractions that simplify the overall flow of the code and pass the instructions.\nAnalyze the user request to identify each section of the code that should be extracted.\nFor each new function outline the first and last lines of code that should be extracted.\n</contextual_request_analysis>\n\n<extractions>\n```\n<<<<<<< EXTRACT\nfirst few lines to be extracted from function_to_refactor\n...\nlast few lines to be extracted from function_to_refactor\n>>>>>>>\n...\n```\n</extractions>\n\n<new_function_names>\n\"new_function_name\"\n...\n</new_function_names>:gpt-4": "<contextual_request_analysis>\nThe code provided does not contain a clear user request. However, the following sections are identified to be good candidates for extractions as they are repeated several times and to make code modular and more manageable:\n1. Inline script calling function on different counters as inline and external, this can be made into a single function with the name passed as an argument.\n2. Similarly, for the external script calling function.\n3. Creating the user interface elements in the \"index\" function can also be split into smaller sections according to the functionality, and then these sections can be extracted into new functions. \n</contextual_request_analysis>\n\n<extractions>\n```\n<<<<<<< EXTRACT\n def call_scripts_inline_yield(self):\n yield rx.call_script(\"inline1()\")\n yield rx.call_script(\"inline2()\")\n yield rx.call_script(\"inline3()\")\n yield rx.call_script(\"inline4()\")\n>>>>>>>>\n```\n```\n<<<<<<< EXTRACT\n def call_scripts_external_yield(self):\n yield rx.call_script(\"external1()\")\n yield rx.call_script(\"external2()\")\n yield rx.call_script(\"external3()\")\n yield rx.call_script(\"external4()\")\n>>>>>>>>\n```\n```\n<<<<<<< EXTRACT\n return rx.vstack(\n rx.input(\n value=CallScriptState.router.session.client_token,\n is_read_only=True,\n id=\"token\",\n ),\n rx.input(\n value=CallScriptState.inline_counter.to(str), # type: ignore\n id=\"inline_counter\",\n is_read_only=True,\n ),\n rx.input(\n value=CallScriptState.external_counter.to(str), # type: ignore\n id=\"external_counter\",\n is_read_only=True,\n ),\n rx.text_area(\n value=CallScriptState.results.to_string(), # type: ignore\n id=\"results\",\n is_read_only=True,\n ),\n ...\n )\n>>>>>>>>\n```\n</extractions>\n\n<new_function_names>\n\"call_scripts_yield_inline\"\n\"call_scripts_yield_external\"\n\"create_ui_elements\"\n</new_function_names>"}