feat(poetry): configure optional dependencies installation in poetry
- [ ] I have added tests that cover my changes.
- [ ] If adding a new instrumentation or changing an existing one, I've added screenshots from some observability platform showing the change.
- [x] PR name follows conventional commits format:
feat(instrumentation): ...orfix(instrumentation): .... - [x] (If applicable) I have updated the documentation accordingly.
[!IMPORTANT] This PR configures optional dependencies for various instrumentations in
traceloop-sdkusing Poetry, updating installation instructions and initialization checks.
- Behavior:
- Updated
README.mdto include optional installation of specific instrumentations usingpip install "traceloop-sdk[all]"or individual extras.- Modified
project.jsonto change theinstallcommand to usepoetry install --extras all.- Dependencies:
- Added optional dependencies for various instrumentations in
pyproject.toml.- Defined extras in
pyproject.tomlfor each optional instrumentation and a combinedallextra.- Instrumentation Initialization:
- Updated
tracing.pyto check for optional instrumentation packages before initializing, logging a message if missing.This description was created by
for a81aa007c85ea6bce828994097f76ec111d52cfc. You can customize this summary. It will automatically update as commits are pushed.
Summary by CodeRabbit
-
New Features
- Users can now selectively install only the instrumentations they need, with updated installation instructions and clearer guidance in the documentation.
- Informational messages are provided if required instrumentation packages are missing, helping users resolve missing dependencies easily.
-
Documentation
- Installation instructions updated to recommend using extras for optional dependencies and to clarify how to install individual instrumentations.
-
Bug Fixes
- Improved handling and messaging for missing optional dependencies when initializing instrumentation.
Linking to #2803 for context.
@amitalokbera Just wondering, could you please share why this PR was closed?
@ronensc I was working on the changes today and might’ve accidentally closed it. Appreciate the ping!
@coderabbit review
✅ Actions performed
Review triggered.
Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
Walkthrough
The updates introduce optional dependency management for OpenTelemetry instrumentations in the SDK. Installation instructions and project configuration are revised to support extras-based installs. Instrumentor initialization functions now delegate to a generic helper that checks for both the SDK and the relevant instrumentation package, logging guidance if dependencies are missing.
Changes
| File(s) | Change Summary |
|---|---|
| README.md | Updated installation instructions to recommend [all] extra by default and added examples for installing individual instrumentations. |
| packages/traceloop-sdk/project.json | Changed "install" target executor to run a shell command installing with poetry install --extras all. |
| packages/traceloop-sdk/pyproject.toml | Made OpenTelemetry instrumentation dependencies optional; added [tool.poetry.extras] section defining individual and collective extras. |
| .../traceloop/sdk/tracing/tracing.py | Refactored all instrumentor init functions to use a new generic helper that checks for SDK and instrumentation packages, handles instrumentation, and logs info or errors uniformly. |
Sequence Diagram(s)
sequenceDiagram
participant User
participant SDK
participant Instrumentor
participant OTelPkg
User->>SDK: Import and initialize instrumentor
SDK->>Instrumentor: Call init_instrumentor()
Instrumentor->>SDK: Check if SDK is installed
alt SDK not installed
Instrumentor-->>User: Do nothing
else SDK installed
Instrumentor->>OTelPkg: Check if OTel instrumentation is installed
alt OTelPkg installed
Instrumentor-->>User: Instrumentation enabled
else OTelPkg missing
Instrumentor-->>User: Log info (install with extra)
end
end
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~15 minutes
Poem
In the garden of code where dependencies grow,
Now extras bloom for those in the know.
Instrumentors check, then kindly say:
"Install with extras, you'll be on your way!"
Optional paths, a rabbit’s delight—
Choose what you need, and keep your code light.
🐇✨
[!NOTE]
⚡️ Unit Test Generation is now available in beta!
Learn more here, or try it out under "Finishing Touches" below.
✨ Finishing Touches
- [ ] 📝 Generate Docstrings
🧪 Generate unit tests
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
🪧 Tips
Chat
There are 3 ways to chat with CodeRabbit:
- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
-
I pushed a fix in commit <commit_id>, please review it. -
Explain this complex logic. -
Open a follow-up GitHub issue for this discussion.
-
- Files and specific lines of code (under the "Files changed" tab): Tag
@coderabbitaiin a new review comment at the desired location with your query. Examples:-
@coderabbitai explain this code block. -
@coderabbitai modularize this function.
-
- PR comments: Tag
@coderabbitaiin a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:-
@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase. -
@coderabbitai read src/utils.ts and explain its main purpose. -
@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format. -
@coderabbitai help me debug CodeRabbit configuration file.
-
Support
Need help? Create a ticket on our support page for assistance with any issues or questions.
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.
CodeRabbit Commands (Invoked using PR comments)
-
@coderabbitai pauseto pause the reviews on a PR. -
@coderabbitai resumeto resume the paused reviews. -
@coderabbitai reviewto trigger an incremental review. This is useful when automatic reviews are disabled for the repository. -
@coderabbitai full reviewto do a full review from scratch and review all the files again. -
@coderabbitai summaryto regenerate the summary of the PR. -
@coderabbitai generate docstringsto generate docstrings for this PR. -
@coderabbitai generate sequence diagramto generate a sequence diagram of the changes in this PR. -
@coderabbitai generate unit teststo generate unit tests for this PR. -
@coderabbitai resolveresolve all the CodeRabbit review comments. -
@coderabbitai configurationto show the current CodeRabbit configuration for the repository. -
@coderabbitai helpto get help.
Other keywords and placeholders
- Add
@coderabbitai ignoreanywhere in the PR description to prevent this PR from being reviewed. - Add
@coderabbitai summaryto generate the high-level summary at a specific location in the PR description. - Add
@coderabbitaianywhere in the PR title to generate the title automatically.
CodeRabbit Configuration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile to the root of your repository. - Please see the configuration documentation for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation:
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
Documentation and Community
- Visit our Documentation for detailed information on how to use CodeRabbit.
- Join our Discord Community to get help, request features, and share feedback.
- Follow us on X/Twitter for updates and announcements.
@amitalokbera, would there be a minimal version for installing only traceloop-sdk folder contents? I believe, some instrumentations should also depend on it, like opentelemetry-instrumentation-openai-agents, some shouldn't, like opentelemetry-instrumentation-openai