bioguider 0.2.9__tar.gz → 0.2.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of bioguider might be problematic. Click here for more details.

Files changed (48) hide show
  1. {bioguider-0.2.9 → bioguider-0.2.10}/PKG-INFO +1 -1
  2. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/common_agent_2step.py +1 -1
  3. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/evaluation_task.py +3 -3
  4. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/identification_observe_step.py +2 -1
  5. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/managers/evaluation_manager.py +2 -2
  6. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/rag/data_pipeline.py +8 -19
  7. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/rag/rag.py +14 -10
  8. {bioguider-0.2.9 → bioguider-0.2.10}/pyproject.toml +1 -1
  9. {bioguider-0.2.9 → bioguider-0.2.10}/LICENSE +0 -0
  10. {bioguider-0.2.9 → bioguider-0.2.10}/README.md +0 -0
  11. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/__init__.py +0 -0
  12. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/__init__.py +0 -0
  13. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/agent_task.py +0 -0
  14. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/agent_tools.py +0 -0
  15. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/agent_utils.py +0 -0
  16. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/collection_execute_step.py +0 -0
  17. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/collection_observe_step.py +0 -0
  18. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/collection_plan_step.py +0 -0
  19. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/collection_task.py +0 -0
  20. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/collection_task_utils.py +0 -0
  21. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/common_agent.py +0 -0
  22. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/common_step.py +0 -0
  23. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/dockergeneration_execute_step.py +0 -0
  24. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/dockergeneration_observe_step.py +0 -0
  25. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/dockergeneration_plan_step.py +0 -0
  26. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/dockergeneration_task.py +0 -0
  27. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/dockergeneration_task_utils.py +0 -0
  28. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/evaluation_installation_task.py +0 -0
  29. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/identification_execute_step.py +0 -0
  30. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/identification_plan_step.py +0 -0
  31. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/identification_task.py +0 -0
  32. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/identification_task_utils.py +0 -0
  33. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/peo_common_step.py +0 -0
  34. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/prompt_utils.py +0 -0
  35. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/python_ast_repl_tool.py +0 -0
  36. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/agents/rag_collection_task.py +0 -0
  37. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/conversation.py +0 -0
  38. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/database/summarized_file_db.py +0 -0
  39. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/rag/__init__.py +0 -0
  40. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/rag/config.py +0 -0
  41. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/rag/embedder.py +0 -0
  42. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/settings.py +0 -0
  43. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/utils/constants.py +0 -0
  44. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/utils/default.gitignore +0 -0
  45. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/utils/file_utils.py +0 -0
  46. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/utils/gitignore_checker.py +0 -0
  47. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/utils/pyphen_utils.py +0 -0
  48. {bioguider-0.2.9 → bioguider-0.2.10}/bioguider/utils/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bioguider
3
- Version: 0.2.9
3
+ Version: 0.2.10
4
4
  Summary: An AI-Powered package to help biomedical developers to generate clear documentation
5
5
  License: MIT
6
6
  Author: Cankun Wang
@@ -154,7 +154,7 @@ class CommonAgentTwoChainSteps(CommonAgentTwoSteps):
154
154
  def _invoke_agent(self, system_prompt, instruction_prompt, schema, post_process = None, **kwargs):
155
155
  # Initialize the callback handler
156
156
  callback_handler = OpenAICallbackHandler()
157
- processed_system_prompt = system_prompt.replace("{", "(").replace("}", ")")
157
+ processed_system_prompt = system_prompt.replace("{", "{{").replace("}", "}}")
158
158
  cot_prompt = self._build_prompt_for_cot_step(
159
159
  system_prompt=processed_system_prompt,
160
160
  instruction_prompt=instruction_prompt
@@ -200,7 +200,7 @@ class EvaluationTask(ABC):
200
200
 
201
201
  class EvaluationREADMEResult(BaseModel):
202
202
  project_level: Optional[bool]=Field(description="A boolean value specifying if the README file is **project-level** README. TRUE: project-level, FALSE, folder-level")
203
- score: Optional[float]=Field(description="An overall score")
203
+ score: Optional[str]=Field(description="An overall score")
204
204
  key_strengths: Optional[str]=Field(description="A string specifying the key strengths of README file.")
205
205
  overall_improvement_suggestions: Optional[list[str]]=Field(description="A list of overall improvement suggestions")
206
206
 
@@ -214,7 +214,7 @@ EvaluationREADMEResultSchema = {
214
214
  "title": "Project Level"
215
215
  },
216
216
  "score": {
217
- "anyOf": [{"type": "number"}, {"type": "null"}],
217
+ "anyOf": [{"type": "string"}, {"type": "null"}],
218
218
  "description": "An overall score",
219
219
  "title": "Score"
220
220
  },
@@ -260,7 +260,7 @@ class EvaluationREADMETask(EvaluationTask):
260
260
  readme_evaluations[readme_file] = {
261
261
  "evaluation": {
262
262
  "project_level": "/" in readme_file,
263
- "score": 0,
263
+ "score": "Poor",
264
264
  "key_strengths": f"{readme_file} is an empty file.",
265
265
  "overall_improvement_suggestions": f"{readme_file} is an empty file.",
266
266
  },
@@ -25,7 +25,8 @@ Carefully review the **Goal**, **Repository File Structure**, and **Intermediate
25
25
  - Then provide your result under **FinalAnswer**
26
26
  ```
27
27
  **Analysis**: your analysis here
28
- **FinalAnswer**: your final answer here, in json format **without** json fence (```json ... ```), like {final_answer_example}
28
+ **FinalAnswer**: your final answer here, in **raw json format**, **including** the surrounding "{{}}" but **without** using code fence (```json ... ```),
29
+ For example, output exactly: {final_answer_example}
29
30
  ```
30
31
  - If the information is **not sufficient** to achieve the goal, simply explain why under **Thoughts**:
31
32
  ```
@@ -25,8 +25,8 @@ class EvaluationManager:
25
25
  self.repo_url = repo_url
26
26
  self.rag = RAG()
27
27
  self.rag.initialize_db_manager()
28
- self.rag.prepare_retriever(repo_url_or_path=repo_url)
29
-
28
+ self.rag.initialize_repo(repo_url_or_path=repo_url)
29
+
30
30
  author, repo_name = parse_repo_url(repo_url)
31
31
  self.summary_file_db = SummarizedFilesDb(author, repo_name)
32
32
 
@@ -504,7 +504,11 @@ class DatabaseManager:
504
504
  self.repo_url_or_path = None
505
505
  self.repo_paths = None
506
506
 
507
- def prepare_database(self, repo_url_or_path: str, access_token: str = None) -> Tuple[List[Document], List[Document]]:
507
+ def reset_database_and_create_repo(self, repo_url_or_path: str, access_token: str = None):
508
+ self._reset_database()
509
+ self._create_repo(repo_url_or_path, access_token)
510
+
511
+ def prepare_database(self) -> Tuple[List[Document], List[Document]]:
508
512
  """
509
513
  Create a new database from the repository.
510
514
 
@@ -515,9 +519,7 @@ class DatabaseManager:
515
519
  Returns:
516
520
  Tuple[List[Document], List[Document]]: Tuple of two Lists of Document objects
517
521
  """
518
- self.reset_database()
519
- self._create_repo(repo_url_or_path, access_token)
520
- return self.prepare_db_index()
522
+ return self._prepare_db_index()
521
523
 
522
524
  def _extract_repo_name_from_url(self, repo_url_or_path: str, repo_type: str) -> str:
523
525
  # Extract owner and repo name to create unique identifier
@@ -534,7 +536,7 @@ class DatabaseManager:
534
536
  repo_name = url_parts[-1].replace(".git", "")
535
537
  return repo_name
536
538
 
537
- def reset_database(self):
539
+ def _reset_database(self):
538
540
  """
539
541
  Reset the database to its initial state.
540
542
  """
@@ -608,7 +610,7 @@ class DatabaseManager:
608
610
  return self.repo_paths["save_repo_dir"]
609
611
  return None
610
612
 
611
- def prepare_db_index(self) -> Tuple[List[Document], List[Document]]:
613
+ def _prepare_db_index(self) -> Tuple[List[Document], List[Document]]:
612
614
  """
613
615
  Prepare the indexed database for the repository.
614
616
  :return: Tuple of two Lists of Document objects
@@ -647,16 +649,3 @@ class DatabaseManager:
647
649
  logger.info(f"Total transformed code documents: {len(transformed_code_documents)}")
648
650
  return transformed_doc_documents, transformed_code_documents
649
651
 
650
- def prepare_retriever(self, repo_url_or_path: str, access_token: str = None):
651
- """
652
- Prepare the retriever for a repository.
653
- This is a compatibility method for the isolated API.
654
-
655
- Args:
656
- repo_url_or_path (str): The URL or local path of the repository
657
- access_token (str, optional): Access token for private repositories
658
-
659
- Returns:
660
- List[Document]: List of Document objects
661
- """
662
- return self.prepare_database(repo_url_or_path, access_token)
@@ -50,22 +50,25 @@ class RAG(adal.Component):
50
50
  def initialize_db_manager(self):
51
51
  """Initialize the database manager with local storage"""
52
52
  self.db_manager = DatabaseManager()
53
- self.transformed_doc_documents = []
54
- self.transformed_code_documents = []
53
+ self.transformed_doc_documents: list | None = None
54
+ self.transformed_code_documents: list | None = None
55
+ self.access_token: str | None = None
55
56
 
56
- def prepare_retriever(self, repo_url_or_path: str, access_token: str = None):
57
+ def initialize_repo(self, repo_url_or_path: str, access_token: str = None):
58
+ self.repo_url_or_path = repo_url_or_path
59
+ self.access_token = access_token
60
+ self.db_manager.reset_database_and_create_repo(repo_url_or_path, access_token)
61
+
62
+ def _prepare_retriever(self):
57
63
  """
58
64
  Prepare the retriever for a repository.
59
65
  Will load database from local storage if available.
60
-
61
- Args:
62
- repo_url_or_path: URL or local path to the repository
63
- access_token: Optional access token for private repositories
64
66
  """
65
- self.initialize_db_manager()
66
- self.repo_url_or_path = repo_url_or_path
67
+ if self.transformed_code_documents is not None and self.transformed_doc_documents is not None:
68
+ # retrievers have been prepared
69
+ return
67
70
  self.transformed_doc_documents, self.transformed_code_documents \
68
- = self.db_manager.prepare_database(repo_url_or_path, access_token)
71
+ = self.db_manager.prepare_database()
69
72
  logger.info(f"Loaded {len(self.transformed_doc_documents)} doc documents for retrieval")
70
73
  logger.info(f"Loaded {len(self.transformed_code_documents)} code documents for retrieval")
71
74
  self.doc_retriever = FAISSRetriever(
@@ -93,6 +96,7 @@ class RAG(adal.Component):
93
96
  Returns:
94
97
  retrieved_documents: List of documents retrieved based on the query
95
98
  """
99
+ self._prepare_retriever()
96
100
  retrieved_documents = self.doc_retriever(query)
97
101
  # Fill in the documents
98
102
  retrieved_documents[0].documents = [
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "bioguider"
3
- version = "0.2.9"
3
+ version = "0.2.10"
4
4
  description = "An AI-Powered package to help biomedical developers to generate clear documentation"
5
5
  authors = [
6
6
  "Cankun Wang <Cankun.Wang@osumc.edu>",
File without changes
File without changes