bioguider 0.2.52__py3-none-any.whl

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.
Files changed (84) hide show
  1. bioguider/__init__.py +0 -0
  2. bioguider/agents/__init__.py +0 -0
  3. bioguider/agents/agent_task.py +92 -0
  4. bioguider/agents/agent_tools.py +176 -0
  5. bioguider/agents/agent_utils.py +504 -0
  6. bioguider/agents/collection_execute_step.py +182 -0
  7. bioguider/agents/collection_observe_step.py +125 -0
  8. bioguider/agents/collection_plan_step.py +156 -0
  9. bioguider/agents/collection_task.py +184 -0
  10. bioguider/agents/collection_task_utils.py +142 -0
  11. bioguider/agents/common_agent.py +137 -0
  12. bioguider/agents/common_agent_2step.py +215 -0
  13. bioguider/agents/common_conversation.py +61 -0
  14. bioguider/agents/common_step.py +85 -0
  15. bioguider/agents/consistency_collection_step.py +102 -0
  16. bioguider/agents/consistency_evaluation_task.py +57 -0
  17. bioguider/agents/consistency_evaluation_task_utils.py +14 -0
  18. bioguider/agents/consistency_observe_step.py +110 -0
  19. bioguider/agents/consistency_query_step.py +77 -0
  20. bioguider/agents/dockergeneration_execute_step.py +186 -0
  21. bioguider/agents/dockergeneration_observe_step.py +154 -0
  22. bioguider/agents/dockergeneration_plan_step.py +158 -0
  23. bioguider/agents/dockergeneration_task.py +158 -0
  24. bioguider/agents/dockergeneration_task_utils.py +220 -0
  25. bioguider/agents/evaluation_installation_task.py +270 -0
  26. bioguider/agents/evaluation_readme_task.py +767 -0
  27. bioguider/agents/evaluation_submission_requirements_task.py +172 -0
  28. bioguider/agents/evaluation_task.py +206 -0
  29. bioguider/agents/evaluation_tutorial_task.py +169 -0
  30. bioguider/agents/evaluation_tutorial_task_prompts.py +187 -0
  31. bioguider/agents/evaluation_userguide_prompts.py +179 -0
  32. bioguider/agents/evaluation_userguide_task.py +154 -0
  33. bioguider/agents/evaluation_utils.py +127 -0
  34. bioguider/agents/identification_execute_step.py +181 -0
  35. bioguider/agents/identification_observe_step.py +104 -0
  36. bioguider/agents/identification_plan_step.py +140 -0
  37. bioguider/agents/identification_task.py +270 -0
  38. bioguider/agents/identification_task_utils.py +22 -0
  39. bioguider/agents/peo_common_step.py +64 -0
  40. bioguider/agents/prompt_utils.py +253 -0
  41. bioguider/agents/python_ast_repl_tool.py +69 -0
  42. bioguider/agents/rag_collection_task.py +130 -0
  43. bioguider/conversation.py +67 -0
  44. bioguider/database/code_structure_db.py +500 -0
  45. bioguider/database/summarized_file_db.py +146 -0
  46. bioguider/generation/__init__.py +39 -0
  47. bioguider/generation/benchmark_metrics.py +610 -0
  48. bioguider/generation/change_planner.py +189 -0
  49. bioguider/generation/document_renderer.py +157 -0
  50. bioguider/generation/llm_cleaner.py +67 -0
  51. bioguider/generation/llm_content_generator.py +1128 -0
  52. bioguider/generation/llm_injector.py +809 -0
  53. bioguider/generation/models.py +85 -0
  54. bioguider/generation/output_manager.py +74 -0
  55. bioguider/generation/repo_reader.py +37 -0
  56. bioguider/generation/report_loader.py +166 -0
  57. bioguider/generation/style_analyzer.py +36 -0
  58. bioguider/generation/suggestion_extractor.py +436 -0
  59. bioguider/generation/test_metrics.py +189 -0
  60. bioguider/managers/benchmark_manager.py +785 -0
  61. bioguider/managers/evaluation_manager.py +215 -0
  62. bioguider/managers/generation_manager.py +686 -0
  63. bioguider/managers/generation_test_manager.py +107 -0
  64. bioguider/managers/generation_test_manager_v2.py +525 -0
  65. bioguider/rag/__init__.py +0 -0
  66. bioguider/rag/config.py +117 -0
  67. bioguider/rag/data_pipeline.py +651 -0
  68. bioguider/rag/embedder.py +24 -0
  69. bioguider/rag/rag.py +138 -0
  70. bioguider/settings.py +103 -0
  71. bioguider/utils/code_structure_builder.py +59 -0
  72. bioguider/utils/constants.py +135 -0
  73. bioguider/utils/default.gitignore +140 -0
  74. bioguider/utils/file_utils.py +215 -0
  75. bioguider/utils/gitignore_checker.py +175 -0
  76. bioguider/utils/notebook_utils.py +117 -0
  77. bioguider/utils/pyphen_utils.py +73 -0
  78. bioguider/utils/python_file_handler.py +65 -0
  79. bioguider/utils/r_file_handler.py +551 -0
  80. bioguider/utils/utils.py +163 -0
  81. bioguider-0.2.52.dist-info/LICENSE +21 -0
  82. bioguider-0.2.52.dist-info/METADATA +51 -0
  83. bioguider-0.2.52.dist-info/RECORD +84 -0
  84. bioguider-0.2.52.dist-info/WHEEL +4 -0
@@ -0,0 +1,163 @@
1
+ import logging
2
+ from pathlib import Path
3
+ import re
4
+ import subprocess
5
+ from typing import Optional
6
+ from enum import Enum
7
+ from pydantic import BaseModel
8
+ import tiktoken
9
+ from bs4 import BeautifulSoup
10
+
11
+ from bioguider.utils.constants import DEFAULT_TOKEN_USAGE
12
+ logger = logging.getLogger(__name__)
13
+
14
+ def count_tokens(text: str, local_ollama: bool = False) -> int:
15
+ """
16
+ Count the number of tokens in a text string using tiktoken.
17
+
18
+ Args:
19
+ text (str): The text to count tokens for.
20
+ local_ollama (bool, optional): Whether using local Ollama embeddings. Default is False.
21
+
22
+ Returns:
23
+ int: The number of tokens in the text.
24
+ """
25
+ try:
26
+ if local_ollama:
27
+ encoding = tiktoken.get_encoding("cl100k_base")
28
+ else:
29
+ encoding = tiktoken.encoding_for_model("text-embedding-3-small")
30
+
31
+ return len(encoding.encode(text))
32
+ except Exception as e:
33
+ # Fallback to a simple approximation if tiktoken fails
34
+ logger.warning(f"Error counting tokens with tiktoken: {e}")
35
+ # Rough approximation: 4 characters per token
36
+ return len(text) // 4
37
+
38
+
39
+ def run_command(command: list, cwd: str = None, timeout: int = None):
40
+ """
41
+ Run a shell command with optional timeout and return stdout, stderr, and return code.
42
+ """
43
+ try:
44
+ result = subprocess.run(
45
+ command,
46
+ cwd=cwd,
47
+ stdout=subprocess.PIPE,
48
+ stderr=subprocess.PIPE,
49
+ text=True,
50
+ timeout=timeout
51
+ )
52
+ return result.stdout, result.stderr, result.returncode
53
+ except subprocess.TimeoutExpired as e:
54
+ return e.stdout or "", e.stderr or f"Command timed out after {timeout} seconds", -1
55
+
56
+ def escape_braces(text: str) -> str:
57
+ def fix_braces(m):
58
+ s = m.group(0)
59
+ # If odd number of braces, double the last one
60
+ if len(s) % 2 == 1:
61
+ return s + s[-1]
62
+ return s
63
+ # Handle both { and } sequences
64
+ text = re.sub(r'{+|}+', fix_braces, text)
65
+ return text
66
+
67
+ def increase_token_usage(
68
+ token_usage: Optional[dict] = None,
69
+ incremental: dict = {**DEFAULT_TOKEN_USAGE},
70
+ ):
71
+ if token_usage is None:
72
+ token_usage = {**DEFAULT_TOKEN_USAGE}
73
+ token_usage["total_tokens"] += incremental["total_tokens"]
74
+ token_usage["completion_tokens"] += incremental["completion_tokens"]
75
+ token_usage["prompt_tokens"] += incremental["prompt_tokens"]
76
+
77
+ return token_usage
78
+
79
+ def clean_action_input(action_input: str) -> str:
80
+ replaced_input = ""
81
+
82
+ while (True):
83
+ replaced_input = action_input.strip()
84
+ replaced_input = replaced_input.strip("`")
85
+ replaced_input = replaced_input.strip('"')
86
+ replaced_input = replaced_input.strip()
87
+ replaced_input = replaced_input.strip("`")
88
+ replaced_input = replaced_input.strip('"')
89
+ replaced_input = replaced_input.strip()
90
+ if (replaced_input == action_input):
91
+ break
92
+ action_input = replaced_input
93
+
94
+ action_input = action_input.replace("'", '"')
95
+ action_input = action_input.replace("`", '"')
96
+ return action_input
97
+
98
+ # Convert BaseModel objects to dictionaries for JSON serialization
99
+ def convert_to_serializable(obj):
100
+ if isinstance(obj, BaseModel):
101
+ return obj.model_dump()
102
+ elif hasattr(obj, 'model_dump'):
103
+ return obj.model_dump()
104
+ elif isinstance(obj, Enum):
105
+ return obj.value
106
+ elif isinstance(obj, dict):
107
+ return {k: convert_to_serializable(v) for k, v in obj.items()}
108
+ elif isinstance(obj, list):
109
+ return [convert_to_serializable(item) for item in obj]
110
+ elif isinstance(obj, tuple):
111
+ return [convert_to_serializable(item) for item in obj]
112
+ elif hasattr(obj, '__dict__') and not isinstance(obj, (str, int, float, bool, type(None))):
113
+ # Handle regular class instances by converting their __dict__ to a dictionary
114
+ # Exclude built-in types that might have __dict__ but shouldn't be converted
115
+ return {k: convert_to_serializable(v) for k, v in vars(obj).items()}
116
+ else:
117
+ return obj
118
+
119
+ def convert_html_to_text(html_path: str | Path, exclude_tags: list[str] = ["script", "style", "img", "svg", "meta", "link"]) -> str:
120
+ """
121
+ This function is used to convert html string to text, that is,
122
+ extract text from html content, including tables.
123
+ """
124
+ html_path = Path(html_path)
125
+ if not html_path.exists():
126
+ raise FileNotFoundError(f"File {html_path} does not exist")
127
+ with html_path.open("r", encoding="utf-8") as f:
128
+ html_content = f.read()
129
+ soup = BeautifulSoup(html_content, "html.parser")
130
+ if exclude_tags is not None:
131
+ for tag in exclude_tags:
132
+ for element in soup.find_all(tag):
133
+ element.decompose()
134
+ text = soup.get_text(separator="\n", strip=True)
135
+ return text
136
+
137
+ def get_overall_score(grade_levels: list[int | bool | float | str | None], weights: list[int]) -> int:
138
+ max_score = 100
139
+ min_score = 0
140
+ def get_grade_level_score(grade_level: int | bool | float | str | None) -> int:
141
+ if grade_level is None:
142
+ return 0
143
+ if isinstance(grade_level, bool):
144
+ if grade_level:
145
+ return max_score
146
+ else:
147
+ return min_score
148
+ try:
149
+ return int(float(grade_level))
150
+ except Exception:
151
+ logger.warning(f"Failed to convert grade level {grade_level} to int")
152
+ return 0
153
+ if len(grade_levels) != len(weights):
154
+ raise ValueError("The length of grade_levels and weights must be the same")
155
+ score = round(sum(
156
+ get_grade_level_score(grade_level) * weight for grade_level, weight in zip(grade_levels, weights)
157
+ ) / sum(weight * max_score for weight in weights), 2)
158
+
159
+ return int(score*max_score) if score > 0 else min_score
160
+
161
+
162
+
163
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 OSU_BMBL
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,51 @@
1
+ Metadata-Version: 2.3
2
+ Name: bioguider
3
+ Version: 0.2.52
4
+ Summary: An AI-Powered package to help biomedical developers to generate clear documentation
5
+ License: MIT
6
+ Author: Cankun Wang
7
+ Author-email: Cankun.Wang@osumc.edu
8
+ Requires-Python: >=3.11,<4.0
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Natural Language :: English
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
20
+ Requires-Dist: adalflow (>=1.0.4,<2.0.0)
21
+ Requires-Dist: azure-ai-formrecognizer (>=3.3.3,<4.0.0)
22
+ Requires-Dist: azure-ai-textanalytics (>=5.3.0,<6.0.0)
23
+ Requires-Dist: azure-core (>=1.36.0,<2.0.0)
24
+ Requires-Dist: azure-identity (>=1.25.1,<2.0.0)
25
+ Requires-Dist: beautifulsoup4 (>=4.13.3,<5.0.0)
26
+ Requires-Dist: binaryornot (>=0.4.4,<0.5.0)
27
+ Requires-Dist: faiss-cpu (>=1.11.0,<2.0.0)
28
+ Requires-Dist: grandalf (>=0.8,<0.9)
29
+ Requires-Dist: langchain (>=0.3.20,<0.4.0)
30
+ Requires-Dist: langchain-anthropic (>=0.3.10,<0.4.0)
31
+ Requires-Dist: langchain-deepseek (>=0.1.2,<0.2.0)
32
+ Requires-Dist: langchain-experimental (>=0.3.4,<0.4.0)
33
+ Requires-Dist: langchain-google-genai (>=2.1.4,<3.0.0)
34
+ Requires-Dist: langchain-openai (>=0.3.8,<0.4.0)
35
+ Requires-Dist: langgraph (>=0.3.11,<0.4.0)
36
+ Requires-Dist: markdownify (>=1.1.0,<2.0.0)
37
+ Requires-Dist: nanoid (>=2.0.0,<3.0.0)
38
+ Requires-Dist: pydantic (>=2.10.6,<3.0.0)
39
+ Requires-Dist: pydantic-settings (>=2.8.1,<3.0.0)
40
+ Requires-Dist: pyphen (>=0.17.2,<0.18.0)
41
+ Requires-Dist: pytest (>=8.3.5,<9.0.0)
42
+ Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
43
+ Requires-Dist: python-iso639 (>=2025.2.18,<2026.0.0)
44
+ Requires-Dist: python-magic (>=0.4.27,<0.5.0)
45
+ Requires-Dist: tenacity (>=9.1.2,<10.0.0)
46
+ Requires-Dist: textstat (>=0.7.6,<0.8.0)
47
+ Requires-Dist: tiktoken (>=0.9.0,<0.10.0)
48
+ Requires-Dist: tqdm (>=4.67.1,<5.0.0)
49
+ Description-Content-Type: text/markdown
50
+
51
+ # bioguider
@@ -0,0 +1,84 @@
1
+ bioguider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ bioguider/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ bioguider/agents/agent_task.py,sha256=TL0Zx8zOmiAVslmNbfMPQ38qTQ73QospY6Dwrwf8POg,2890
4
+ bioguider/agents/agent_tools.py,sha256=r21wHV6a-Ic2T0dk4YzA-_d7PodHPM3GzRxJqv-llSw,7286
5
+ bioguider/agents/agent_utils.py,sha256=PX0776MafJ2hAzjBJbfHLvwy8S-uKsdalr4tTVL7WIM,17671
6
+ bioguider/agents/collection_execute_step.py,sha256=jE_oSQZI5WDaz0bJjUWoAfqWfVbGUqN--cvITSWCGiI,5614
7
+ bioguider/agents/collection_observe_step.py,sha256=1xOw6N3uIoyh4h4_vcULAc5x5KZ9G-zZo42AhRidyn8,5373
8
+ bioguider/agents/collection_plan_step.py,sha256=Nn0f8AOkEDCDtnhaqE7yCQoi7PVpsHmiUcsIqC0T0dQ,5956
9
+ bioguider/agents/collection_task.py,sha256=sP6b2Bz7KNRWKB9pXImnGCswYzp7V-L9a8w3Mj2gIsU,7459
10
+ bioguider/agents/collection_task_utils.py,sha256=mCmjHFD4HY1mSwkfqPaJbZ8sm6ijjdhnNKj40xudE98,5424
11
+ bioguider/agents/common_agent.py,sha256=TpfxbYskwuwWrjs1g9RaG7sdA5rOLdiVac7If7uK2sg,4558
12
+ bioguider/agents/common_agent_2step.py,sha256=rGiDzUkmmUIFnmJJxzXK5M5BfIyINHXLZ0pmPRUVqQg,7911
13
+ bioguider/agents/common_conversation.py,sha256=_9l6SunRmOZ_3R4Q8CTO9oE_qmP7aYYKFX1EiFBIrm8,2589
14
+ bioguider/agents/common_step.py,sha256=GdOCbmj1pwh4etg-futVFYVDQuoUG89DnIrw-B6QbzM,2594
15
+ bioguider/agents/consistency_collection_step.py,sha256=evgb0W3PD5pXfViuP_0T5LqLnNxQCuvP14oY0KEtwSc,3424
16
+ bioguider/agents/consistency_evaluation_task.py,sha256=OOeZGADiKqfMcWIRzTgdSUs4XbpDu1QV2UTfZfWbWj0,1908
17
+ bioguider/agents/consistency_evaluation_task_utils.py,sha256=TIUeXiAGuzt-tX33lQRqJvOaDL1iytB_38mIJMFapkU,444
18
+ bioguider/agents/consistency_observe_step.py,sha256=Mj_vbjG5qD9LX17V6-xjmcKhk7sTq9PUMjhWL6DMQGg,4658
19
+ bioguider/agents/consistency_query_step.py,sha256=SCsCd-WGUKdMoMuKlSl3NH1WT8v6thdsqGspc_w6EiQ,4039
20
+ bioguider/agents/dockergeneration_execute_step.py,sha256=F92jDlkc6KjAvTkX7q1FsCYP8J15SCaNgmwh3YPqfDo,6500
21
+ bioguider/agents/dockergeneration_observe_step.py,sha256=Bo5Td0fzMYLbLki0FvwamzqRFOy4eu3AvIUa8oFApE4,6131
22
+ bioguider/agents/dockergeneration_plan_step.py,sha256=SB8tQM9PkIKsD2o1DFD7bedcxz6r6hSy8n_EVK60Fz0,7235
23
+ bioguider/agents/dockergeneration_task.py,sha256=mYmorLKnJ-Jku3Qq_Y_kcSTsbYIo3RiVdD0puxqXY5Q,6221
24
+ bioguider/agents/dockergeneration_task_utils.py,sha256=v7emqrJlVW-A5ZdLmPSdiaMSKCR8uzy9UYzx_1cgzyo,9041
25
+ bioguider/agents/evaluation_installation_task.py,sha256=Ae9OUTdlNkzT6dfZxUT4iSl2OABicT1yX-afCT4a2Rk,12577
26
+ bioguider/agents/evaluation_readme_task.py,sha256=Yl02Uhew73rzUKvA-ebk6DnCreGfY57HjihS60SWubw,39605
27
+ bioguider/agents/evaluation_submission_requirements_task.py,sha256=J_6C-M2AfYue2C-gWBHl7KqGrTBuFBn9zmMV5vSRk-U,7834
28
+ bioguider/agents/evaluation_task.py,sha256=uu0BjalctF9hQjGtT53whbeJHv2RVvs8_2woVUmOLRE,8132
29
+ bioguider/agents/evaluation_tutorial_task.py,sha256=L3B081RSQvOVjKnSW8Xk3shvvVXTNXMrtGe6IWOsufk,8938
30
+ bioguider/agents/evaluation_tutorial_task_prompts.py,sha256=DmHnvEBvBCXQkEo030WGKMU4Bd4nc3WEvkHdV-2-OeU,13566
31
+ bioguider/agents/evaluation_userguide_prompts.py,sha256=ugl1AFaaeDhrjlVj9NdB_2D949NLGLMtff9Cp3jusxs,12717
32
+ bioguider/agents/evaluation_userguide_task.py,sha256=F_P8JnhN-c-OjRAhUiAA03BCNDiP3m_IWLvLr2Aj77E,7081
33
+ bioguider/agents/evaluation_utils.py,sha256=0DDTfcZg7gVi1O3JZUqgodXRB2A49EyQS4noPp1x4yk,4071
34
+ bioguider/agents/identification_execute_step.py,sha256=w3IjL8f2WiHCyiLjVSoySnIAXpi1-hK1DLKCnXbAN2Y,5587
35
+ bioguider/agents/identification_observe_step.py,sha256=Me5mhEM4e7FGnVFcluNtqfhIxzng6guGIu39xi1TrS8,4341
36
+ bioguider/agents/identification_plan_step.py,sha256=owsTK1NZIuiZL7QPVknJyp9TBRK-mhnuf2RwK4YzaxU,5442
37
+ bioguider/agents/identification_task.py,sha256=6lhH5K1RQWPDkQE01RKFfhNYnluCk-I_A-71gfhagUA,10149
38
+ bioguider/agents/identification_task_utils.py,sha256=Lf0Rj0L0KSiyJmPAgeSz0vLUFQr6TSFuzgufimEN4H0,630
39
+ bioguider/agents/peo_common_step.py,sha256=iw2c1h7X11WJzSE2tSRg0UAoXH0QOlQDxW9CCzSVMOY,2677
40
+ bioguider/agents/prompt_utils.py,sha256=foHE0afvU3UQ7fdkOqhN_f02ItUCO9Kr0gRL9XV6R6o,19509
41
+ bioguider/agents/python_ast_repl_tool.py,sha256=o7-4P1h8jS8ikhGSA4CI_OWQ2a0Eg5tEdmuAp_qrO-0,2519
42
+ bioguider/agents/rag_collection_task.py,sha256=r_jPAMjQcC7dIydKxX77UuMqjJ3MiVKswNZ-yNw7yx8,5199
43
+ bioguider/conversation.py,sha256=DIvk_d7pz_guuORByK1eaaF09FAK-8shcNTrbSUHz9Y,1779
44
+ bioguider/database/code_structure_db.py,sha256=q9tGZLWrjPi7a3u1b2iUnMO30lNWKbeMOkpDRffev2M,16973
45
+ bioguider/database/summarized_file_db.py,sha256=U60c62e2Bx7PwsTAcCQgljNxD5u5awjpj5qpHEgJbac,4801
46
+ bioguider/generation/__init__.py,sha256=esV02QgCsY67-HBwSHDbA5AcbKzNRIT3wDwwh6N4OFM,945
47
+ bioguider/generation/benchmark_metrics.py,sha256=IRNdTp3ECkxUKfGVmT9CQfxOI9Q0JuVG1U4ZxMJsmdk,21654
48
+ bioguider/generation/change_planner.py,sha256=0N10jvkfn2J9b598FKOKPQecwmQv68yeuUvMZn81nOI,9715
49
+ bioguider/generation/document_renderer.py,sha256=Md8NMo0CXNIqatWOdKE-_4k02Y3T_BCLmEPLTEiYUCA,7984
50
+ bioguider/generation/llm_cleaner.py,sha256=qFgS5xi7bBO8HAJ9WFNzH3p9AhOsAkYjchKQHuAUWWM,2917
51
+ bioguider/generation/llm_content_generator.py,sha256=QOo71Bope8hpTevbj9Cb1x61NF7FyPZ0t8obWe_4du8,50398
52
+ bioguider/generation/llm_injector.py,sha256=Q7ihhDgoi0X_vCrmkLpV-fV7ywgttlWRnGJ-RDTEgtU,37623
53
+ bioguider/generation/models.py,sha256=MlJOLjPHk8xs-UGW-TGN_M9cevTuxTG4tjm1d1L15go,2699
54
+ bioguider/generation/output_manager.py,sha256=u45yS2fMOXVpxUbjxRTd2aM9e9iRTyhcAW_4iRwWwRY,2648
55
+ bioguider/generation/repo_reader.py,sha256=ivTURU61fR8er4ev7gSpOxER3FJv2d9GAx_X5JoVTvQ,1177
56
+ bioguider/generation/report_loader.py,sha256=bxajeTDxod36iFsbSZhXSQjotxqP7LuAg5MC9OqX_p0,5911
57
+ bioguider/generation/style_analyzer.py,sha256=Vn9FAK1qJBNLolLC1tz362k4UBaPl107BlvkQc8pV2I,983
58
+ bioguider/generation/suggestion_extractor.py,sha256=UKQPUUEvbfJI-EuvH6O5DPRyRn8GaQMNvUWBkuuUhDk,28694
59
+ bioguider/generation/test_metrics.py,sha256=ACXmSZc2L_UkkmC5h2s4tG44MXW1d-hClFwPCD5_BFI,7505
60
+ bioguider/managers/benchmark_manager.py,sha256=zSJziLxwCr4hccloWGNwDKCrjnVo5p0aaznxH4iuqao,31355
61
+ bioguider/managers/evaluation_manager.py,sha256=ZKQfak4taD04UFcQL0EMAkV4CAA7BG0GpGN3H52XSPw,8906
62
+ bioguider/managers/generation_manager.py,sha256=oawFH6If0Ex5Wv_0WNXn_5XEsKB1uDjDnoOb41uvCBg,38833
63
+ bioguider/managers/generation_test_manager.py,sha256=3mOBzQVpsLo_LpSspJcofn3CNtvgagS1DMr9Zuwkzq4,5307
64
+ bioguider/managers/generation_test_manager_v2.py,sha256=USoGyewTWtZKPnT2O0t4Djbq4G-6v3H1AGIs6iDxNW0,22835
65
+ bioguider/rag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ bioguider/rag/config.py,sha256=5g4IqTzgyfZfax9Af9CTkXShgItPOt4_9TEMSekCPik,4602
67
+ bioguider/rag/data_pipeline.py,sha256=hyBmjOpP1ka_y_4X0lUwlNKEBjmPNOmETEfQf-s86ZY,27316
68
+ bioguider/rag/embedder.py,sha256=jofR8hOj3Aj2IyBQ9y6FeAc84tgq5agbIfCGyFxYpJ8,650
69
+ bioguider/rag/rag.py,sha256=JFPwrJlKDSyd3U3Gce_NSxI5343eNUbqPG9Fs5Pfoq0,4696
70
+ bioguider/settings.py,sha256=BD_iz9aYarxmWUl0XaKl4-D4oTXMhFzljsXLNn2phis,3143
71
+ bioguider/utils/code_structure_builder.py,sha256=26F6yUzILzCJQ-l0HOE7NAMcLY3keM1ytyl5MrbrsBY,2358
72
+ bioguider/utils/constants.py,sha256=i-B38izpE3z4ES50hS8tzjmR43AmhUBHJEpxN6X3bGo,9379
73
+ bioguider/utils/default.gitignore,sha256=XjPdyO2KV8z8iyuqluaNR_70tBQftMpyKL8HboVNyeI,1605
74
+ bioguider/utils/file_utils.py,sha256=90mXkH2PjEdZSfwhnK251DjnSg3XgU9ISauwUYLf1rw,6530
75
+ bioguider/utils/gitignore_checker.py,sha256=pOYUwsS9D5014LxcZb0cj3s2CAYaD2uF_pYJpaNKcho,6532
76
+ bioguider/utils/notebook_utils.py,sha256=SfU1iLuwgbDzNN-TUh_qbnfUSgn-PI6NrK6QfmdpMqQ,4009
77
+ bioguider/utils/pyphen_utils.py,sha256=cdZc3qphkvMDeL5NiZ8Xou13M_uVNP7ifJ-FwxO-0BE,2680
78
+ bioguider/utils/python_file_handler.py,sha256=BERiE2RHxpu3gAzv26jr8ZQetkrtnMZOv9SjpQ7WIdg,2650
79
+ bioguider/utils/r_file_handler.py,sha256=y57Y04wjgtFWve0lPg1EOrNNOccPfnNF0z2WnlFMX74,19616
80
+ bioguider/utils/utils.py,sha256=88KdSgGcCVXjiokIfxoX4LwP51NcE5Wr_T5RuTQlWzA,5845
81
+ bioguider-0.2.52.dist-info/LICENSE,sha256=qzkvZcKwwA5DuSuhXMOm2LcO6BdEr4V7jwFZVL2-jL4,1065
82
+ bioguider-0.2.52.dist-info/METADATA,sha256=DG5kjkx1USRpcc9HC9uIRQ70nZVMsXIbUPOg54nrGTc,2165
83
+ bioguider-0.2.52.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
84
+ bioguider-0.2.52.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: poetry-core 2.1.3
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any