python-package-management
SKILL.md
Python Package Management
Monorepo Structure
python/
├── pyproject.toml # Root package (agent-framework)
├── packages/
│ ├── core/ # agent-framework-core (main package)
│ ├── azure-ai/ # agent-framework-azure-ai
│ ├── anthropic/ # agent-framework-anthropic
│ └── ... # Other connector packages
agent-framework-corecontains core abstractions and OpenAI/Azure OpenAI built-in- Provider packages extend core with specific integrations
- Root
agent-frameworkdepends onagent-framework-core[all]
Dependency Management
Uses uv for dependency management and poethepoet for task automation.
# Full setup (venv + install + prek hooks)
uv run poe setup
# Install/update all dependencies
uv run poe install
# Create venv with specific Python version
uv run poe venv --python 3.12
Lazy Loading Pattern
Provider folders in core use __getattr__ to lazy load from connector packages:
# In agent_framework/azure/__init__.py
_IMPORTS: dict[str, tuple[str, str]] = {
"AzureAIAgentClient": ("agent_framework_azure_ai", "agent-framework-azure-ai"),
}
def __getattr__(name: str) -> Any:
if name in _IMPORTS:
import_path, package_name = _IMPORTS[name]
try:
return getattr(importlib.import_module(import_path), name)
except ModuleNotFoundError as exc:
raise ModuleNotFoundError(
f"The package {package_name} is required to use `{name}`. "
f"Install it with: pip install {package_name}"
) from exc
Adding a New Connector Package
Important: Do not create a new package unless approved by the core team.
Initial Release (Preview)
- Create directory under
packages/(e.g.,packages/my-connector/) - Add the package to
tool.uv.sourcesin rootpyproject.toml - Include samples inside the package (e.g.,
packages/my-connector/samples/) - Do NOT add to
[all]extra inpackages/core/pyproject.toml - Do NOT create lazy loading in core yet
Promotion to Stable
- Move samples to root
samples/folder - Add to
[all]extra inpackages/core/pyproject.toml - Create provider folder in
agent_framework/with lazy loading__init__.py
Versioning
- All non-core packages declare a lower bound on
agent-framework-core - When core version bumps with breaking changes, update the lower bound in all packages
- Non-core packages version independently; only raise core bound when using new core APIs
Installation Options
pip install agent-framework-core # Core only
pip install agent-framework-core[all] # Core + all connectors
pip install agent-framework # Same as core[all]
pip install agent-framework-azure-ai # Specific connector (pulls in core)
Maintaining Documentation
When changing a package, check if its AGENTS.md needs updates:
- Adding/removing/renaming public classes or functions
- Changing the package's purpose or architecture
- Modifying import paths or usage patterns
Weekly Installs
2
Repository
microsoft/agent…rameworkGitHub Stars
7.8K
First Seen
2 days ago
Security Audits
Installed on
opencode2
antigravity2
github-copilot2
codex2
kimi-cli2
gemini-cli2