MCPcopy Create free account
hub / github.com/GitsSaikat/PyGen / generate_python_package

Function generate_python_package

app.py:148–309  ·  view source on GitHub ↗

Generate a Python package structure and content using Groq or GEMINI models.

(package_name: str, package_description: str, features: Optional[List[str]], api_provider: str, api_key: str, model_name: str)

Source from the content-addressed store, hash-verified

146 return package_description
147
148def generate_python_package(package_name: str, package_description: str, features: Optional[List[str]], api_provider: str, api_key: str, model_name: str) -> Optional[Dict[str, str]]:
149 """Generate a Python package structure and content using Groq or GEMINI models."""
150 if not api_key:
151 st.error("🔑 API key is required.")
152 return None
153
154 if api_provider == "GEMINI":
155 try:
156 # genai.configure(api_key=api_key) # Uncomment if using GEMINI
157 # model = genai.GenerativeModel(model_name) # Uncomment if using GEMINI
158 client = None # No Groq client
159 st.error("GEMINI API integration is currently not implemented.")
160 return None
161 except Exception as e:
162 st.error(f"⚠️ Error initializing GEMINI model: {e}")
163 return None
164 elif api_provider == "Groq":
165 try:
166 client = Groq(api_key=api_key)
167 model = None # No GEMINI model
168 except Exception as e:
169 st.error(f"⚠️ Error initializing Groq client: {e}")
170 return None
171 else:
172 st.error("⚠️ Invalid API provider selected.")
173 return None
174
175 # Enhance package description if using Groq
176 if api_provider == "Groq":
177 st.info("Enhancing package description...")
178 package_description = enhance_package_description(client, model_name, package_description)
179 # Generate detailed feature descriptions
180 if features:
181 st.info("Generating detailed feature descriptions...")
182 feature_descriptions = generate_feature_descriptions(client, model_name, features)
183 # Use the enhanced feature descriptions
184 features_formatted = ""
185 for feature in features:
186 description = feature_descriptions.get(feature, "")
187 features_formatted += f"- {feature.strip()}:\n{description}\n"
188 else:
189 features_formatted = ""
190 else:
191 # For GEMINI, use the original descriptions
192 # Format the features as a bulleted list
193 if features:
194 features_formatted = "\n".join(f"- {feature.strip()}" for feature in features if feature.strip())
195 else:
196 features_formatted = ""
197
198 features_section = ""
199 if features_formatted:
200 features_section = f"\n\nInclude the following features with detailed descriptions:\n{features_formatted}\nFor each feature, generate the following files:\n- {package_name}/{{feature_lower}}.py\n- examples/example_{{feature_lower}}.py\n- tests/test_{{feature_lower}}.py"
201
202 # Updated prompt with explicit instructions
203 prompt = f"""
204You are to generate the structure and content of a Python package named `{package_name}` based on the following description, Also remember to be verbose like you're life depends on it, :
205{package_description}{features_section}

Callers 1

mainFunction · 0.70

Calls 3

parse_generated_contentFunction · 0.70

Tested by

no test coverage detected