commit-0 / commit0

Commit0: Library Generation from Scratch
https://commit-0.github.io/
MIT License
94 stars 8 forks source link

commit0 NoSectionError: No section: 'user' error when running base agent #85

Open VDhriti opened 1 week ago

VDhriti commented 1 week ago

Hi, I'm getting a NoSectionError: No section: 'user' error when running the base agent using claude 3.5 (default model default settings) on parsel/ simpy (tried a fresh setup and ran into the same error with both repos).

Working on ubuntu, here's how my environment is setup:

  1. I created a venv on python 3.12 using python3 -m venv .venv and source .venv/bin/activate
  2. I git cloned the most recent verison of the repo (through the fork) using git clone https://github.com/VDhriti/commit0.git.
  3. Then cd'ed into the repo and did a pip install to make the install development friendly using the following cd commit0 and pip install -e .
  4. Installed modal pip install modal and modal token new
  5. Navigated back to home directory. cd ..
  6. Set up the repo I wanted to work with commit0 setup parsel
  7. Installed playwright as that was giving me issues earlier: pip install playwright followed by playwright install to get chromium
  8. Set up the API key export ANTHROPIC_API_KEY = "..."
  9. Set up the basic agent agent config aider
  10. Ran the agent agent run commit0

Got the following error:

Details

(.venv) dverma1@DESKTOP-E05O6CF:~/codegen$ agent run commit0 Chrome installed successfully for Playwright Summary of Repository Processing: -------------------------------------------------------------------------------- Repository Time Taken Files Processed Money Spent -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- Total 19.00s 0 0.00$ -------------------------------------------------------------------------------- Summary has been written to processing_summary.json RemoteTraceback: """ Traceback (most recent call last): File "/usr/lib/python3.12/multiprocessing/pool.py", line 125, in worker result = (True, func(*args, **kwds)) ^^^^^^^^^^^^^^^^^^^ File "/home/dverma1/codegen/commit0/agent/run_agent.py", line 213, in run_agent_for_repo agent_return = agent.run(message, "", lint_cmd, [f], file_log_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/dverma1/codegen/commit0/agent/agents.py", line 146, in run coder.run(message) File "/home/dverma1/codegen/.venv/lib/python3.12/site-packages/aider/coders/base_coder.py", line 729, in run self.run_one(with_message, preproc) File "/home/dverma1/codegen/.venv/lib/python3.12/site-packages/aider/coders/base_coder.py", line 778, in run_one list(self.send_message(message)) File "/home/dverma1/codegen/.venv/lib/python3.12/site-packages/aider/coders/base_coder.py", line 1202, in send_message saved_message = self.auto_commit(edited) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/dverma1/codegen/.venv/lib/python3.12/site-packages/aider/coders/base_coder.py", line 1885, in auto_commit res = self.repo.commit(fnames=edited, context=context, aider_edits=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/dverma1/codegen/.venv/lib/python3.12/site-packages/aider/repo.py", line 128, in commit original_user_name = self.repo.config_reader().get_value("user", "name") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/dverma1/codegen/.venv/lib/python3.12/site-packages/git/config.py", line 793, in get_value valuestr = self.get(section, option) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/dverma1/codegen/.venv/lib/python3.12/site-packages/git/config.py", line 114, in assure_data_present return func(self, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/configparser.py", line 759, in get d = self._unify_values(section, vars) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/configparser.py", line 1132, in _unify_values raise NoSectionError(section) from None configparser.NoSectionError: No section: 'user' """ The above exception was the direct cause of the following exception: ╭────────────────────────────────────── Traceback (most recent call last) ───────────────────────────────────────╮ │ /home/dverma1/codegen/commit0/agent/cli.py:219 in run │ │ │ │ 216 ) -> None: │ │ 217 │ """Run the agent on the repository.""" │ │ 218 │ if show_rich_progress: │ │ ❱ 219 │ │ run_agent( │ │ 220 │ │ │ branch, │ │ 221 │ │ │ override_previous_changes, │ │ 222 │ │ │ backend, │ │ │ │ /home/dverma1/codegen/commit0/agent/run_agent.py:371 in run_agent │ │ │ │ 368 │ │ │ │ display.update_time_display(elapsed_time) │ │ 369 │ │ │ │ │ │ 370 │ │ │ │ for result in results: │ │ ❱ 371 │ │ │ │ │ result.get() │ │ 372 │ │ │ │ /usr/lib/python3.12/multiprocessing/pool.py:774 in get │ │ │ │ 771 │ │ if self._success: │ │ 772 │ │ │ return self._value │ │ 773 │ │ else: │ │ ❱ 774 │ │ │ raise self._value │ │ 775 │ │ │ 776 │ def _set(self, i, obj): │ │ 777 │ │ self._success, self._value = obj │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ NoSectionError: No section: 'user'

My agent.yaml file is as follows:

add_import_module_to_context: true agent_name: aider max_iteration: 3 max_lint_info_length: 10000 max_repo_info_length: 10000 max_spec_info_length: 10000 max_unit_tests_info_length: 10000 model_name: claude-3-5-sonnet-20240620 pre_commit_config_path: .pre-commit-config.yaml run_entire_dir_lint: false run_tests: false use_lint_info: false use_repo_info: false use_spec_info: false use_topo_sort_dependencies: true use_unit_tests_info: false use_user_prompt: false user_prompt: 'Here is your task: You need to complete the implementations for all functions (i.e., those with pass statements) and pass the unit tests. Do not change the names of existing functions or classes, as they may be referenced from other code like unit tests, etc. When you generate code, you must maintain the original formatting of the function stubs (such as whitespaces), otherwise we will not able to search/replace blocks for code modifications, and therefore you will receive a score of 0 for your generated code.'

And my .commit0.yaml file is as follows:

base_dir: /home/dverma1/codegen/repos dataset_name: wentingzhao/commit0_combined dataset_split: test repo_split: parsel

My aider chat history shows that edits were actually made:

Aider history # aider chat started at 2024-10-27 17:41:32 #### >>> Here is the Task: #### Here is your task: #### You need to complete the implementations for all functions (i.e., those with pass statements) and pass the unit tests. #### Do not change the names of existing functions or classes, as they may be referenced from other code like unit tests, etc. #### When you generate code, you must maintain the original formatting of the function stubs (such as whitespaces), otherwise we will not able to search/replace blocks for code modifications, and therefore you will receive a score of 0 for your generated code. Certainly! I'll complete the implementations for the functions with pass statements while maintaining the original formatting. I'll use the *SEARCH/REPLACE block* format as requested. Let's start with implementing the functions in the `TranslatorMixin` class and then move on to the `css2xpath` function. parsel/csstranslator.py ```python <<<<<<< SEARCH def xpath_pseudo_element(self, xpath: OriginalXPathExpr, pseudo_element: PseudoElement) -> OriginalXPathExpr: """ Dispatch method that transforms XPath to support pseudo-element """ pass ======= def xpath_pseudo_element(self, xpath: OriginalXPathExpr, pseudo_element: PseudoElement) -> OriginalXPathExpr: """ Dispatch method that transforms XPath to support pseudo-element """ if isinstance(pseudo_element, FunctionalPseudoElement): if pseudo_element.name == 'attr': return self.xpath_attr_functional_pseudo_element(xpath, pseudo_element) elif isinstance(pseudo_element, Element) and pseudo_element.element == 'text': return self.xpath_text_simple_pseudo_element(xpath) return xpath >>>>>>> REPLACE ``` Now, let's implement the `xpath_attr_functional_pseudo_element` method: parsel/csstranslator.py ```python <<<<<<< SEARCH def xpath_attr_functional_pseudo_element(self, xpath: OriginalXPathExpr, function: FunctionalPseudoElement) -> XPathExpr: """Support selecting attribute values using ::attr() pseudo-element""" pass ======= def xpath_attr_functional_pseudo_element(self, xpath: OriginalXPathExpr, function: FunctionalPseudoElement) -> XPathExpr: """Support selecting attribute values using ::attr() pseudo-element""" if not function.arguments: raise ExpressionError("The ::attr() pseudo-element requires an argument.") attribute = function.arguments[0] xpath = XPathExpr(xpath.path, xpath.element) xpath.attribute = attribute return xpath >>>>>>> REPLACE ``` Next, let's implement the `xpath_text_simple_pseudo_element` method: parsel/csstranslator.py ```python <<<<<<< SEARCH def xpath_text_simple_pseudo_element(self, xpath: OriginalXPathExpr) -> XPathExpr: """Support selecting text nodes using ::text pseudo-element""" pass ======= def xpath_text_simple_pseudo_element(self, xpath: OriginalXPathExpr) -> XPathExpr: """Support selecting text nodes using ::text pseudo-element""" xpath = XPathExpr(xpath.path, xpath.element) xpath.textnode = True return xpath >>>>>>> REPLACE ``` Finally, let's implement the `css2xpath` function: parsel/csstranslator.py ```python <<<<<<< SEARCH def css2xpath(query: str) -> str: """Return translated XPath version of a given CSS query""" pass ======= @lru_cache(maxsize=256) def css2xpath(query: str) -> str: """Return translated XPath version of a given CSS query""" return _translator.css_to_xpath(query) >>>>>>> REPLACE ``` These implementations should complete the functions while maintaining the original formatting and following the requirements. The `css2xpath` function is decorated with `@lru_cache` to improve performance by caching the results of frequently used CSS queries. Now that we've implemented all the required functions, the code should be ready to pass the unit tests. The implementations respect the existing class structure and function signatures, and they provide the necessary functionality for translating CSS selectors to XPath expressions, including support for pseudo-elements like `::text` and `::attr()`. > Tokens: 3.9k sent, 738 received. Cost: $0.02 message, $0.02 session. > Applied edit to parsel/csstranslator.py

Please tell me if theres any other information needed.

nanjiangwill commented 1 week ago

i am trying to reproduce the bug and it seems everything works on my end, could you send me log files? for example logs/agent/parsel/commit0/2024-10-27_22-41-56/parsel__utils/.aider.chat.history.md to see if aider successfully made the change

VDhriti commented 1 week ago

The contents of that file are in the aider history detail section above (right at the end of my post). I tried following the same steps twice and got the same bug so I'm not quite sure what's going wrong.

VDhriti commented 1 week ago

.aider.chat.history.md aider.log I thought I'd send them again just in case.

nanjiangwill commented 5 days ago

just a followup, is this issue solved?

wenting-zhao commented 4 days ago

@nanjiangwill can you summarize the issue and mention in README that we don't yet support ubuntu 24?