Skip to content

fix: replace deprecated OpenTelemetry SpanAttributes/ResourceAttributes imports#32604

Open
stakeswky wants to merge 3 commits intolanggenius:mainfrom
stakeswky:fix/deprecated-otel-semconv-imports
Open

fix: replace deprecated OpenTelemetry SpanAttributes/ResourceAttributes imports#32604
stakeswky wants to merge 3 commits intolanggenius:mainfrom
stakeswky:fix/deprecated-otel-semconv-imports

Conversation

@stakeswky
Copy link
Copy Markdown
Contributor

Summary

Replace deprecated ResourceAttributes and SpanAttributes class-based imports with the new individual attribute constants from the OpenTelemetry semantic conventions library.

Changes

api/extensions/ext_otel.py

  • ResourceAttributes.SERVICE_NAMESERVICE_NAME from semconv.attributes.service_attributes
  • ResourceAttributes.DEPLOYMENT_ENVIRONMENTDEPLOYMENT_ENVIRONMENT_NAME from semconv._incubating.attributes.deployment_attributes
  • ResourceAttributes.HOST_* → individual imports from semconv._incubating.attributes.host_attributes
  • ResourceAttributes.OS_* → individual imports from semconv._incubating.attributes.os_attributes
  • ResourceAttributes.PROCESS_PIDPROCESS_PID from semconv._incubating.attributes.process_attributes

api/extensions/otel/instrumentation.py

  • SpanAttributes.HTTP_TARGETURL_PATH (stable)
  • SpanAttributes.HTTP_METHODHTTP_REQUEST_METHOD (stable)

Stable attributes use opentelemetry.semconv.attributes.*, incubating ones use opentelemetry.semconv._incubating.attributes.*.

Closes #32600

…es imports

Replace deprecated  and  class-based
imports with the new individual attribute constants from the OpenTelemetry
semantic conventions library.

- ResourceAttributes.* → individual imports from semconv.attributes/
  semconv._incubating.attributes/
- SpanAttributes.HTTP_TARGET → URL_PATH (stable)
- SpanAttributes.HTTP_METHOD → HTTP_REQUEST_METHOD (stable)
- DEPLOYMENT_ENVIRONMENT → DEPLOYMENT_ENVIRONMENT_NAME (renamed)

Closes langgenius#32600
@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Feb 25, 2026
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @stakeswky, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request modernizes the OpenTelemetry integration by migrating from deprecated class-based attribute imports to the recommended individual attribute constants. This change ensures compatibility with the latest OpenTelemetry semantic conventions, improving maintainability and adherence to current best practices for observability data.

Highlights

  • OpenTelemetry Resource Attributes: Replaced deprecated ResourceAttributes class-based imports with individual attribute constants from semconv.attributes.service_attributes, semconv._incubating.attributes.deployment_attributes, semconv._incubating.attributes.host_attributes, semconv._incubating.attributes.os_attributes, and semconv._incubating.attributes.process_attributes.
  • OpenTelemetry Span Attributes: Replaced deprecated SpanAttributes class-based imports with individual attribute constants URL_PATH and HTTP_REQUEST_METHOD from opentelemetry.semconv.attributes.url_attributes and opentelemetry.semconv.attributes.http_attributes respectively.
  • Attribute Usage Update: Updated the usage of these attributes in the Resource object creation and within the HTTP response handling logic to reflect the new individual constant imports.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • api/extensions/ext_otel.py
    • Replaced the import of ResourceAttributes with specific imports for SERVICE_NAME, SERVICE_VERSION, DEPLOYMENT_ENVIRONMENT_NAME, HOST_ARCH, HOST_ID, HOST_NAME, OS_DESCRIPTION, OS_TYPE, OS_VERSION, and PROCESS_PID.
    • Updated the Resource object's attributes to use the newly imported individual constants instead of accessing them via ResourceAttributes.
  • api/extensions/otel/instrumentation.py
    • Replaced the import of SpanAttributes with specific imports for HTTP_REQUEST_METHOD and URL_PATH.
    • Modified the response_hook function to use URL_PATH instead of SpanAttributes.HTTP_TARGET and HTTP_REQUEST_METHOD instead of SpanAttributes.HTTP_METHOD when setting span attributes.
Activity
  • No human activity has been recorded on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request effectively replaces deprecated OpenTelemetry ResourceAttributes and SpanAttributes with their modern, individual constant counterparts from the semantic conventions library. The changes are well-contained and correctly applied across the modified files. I have one minor suggestion regarding import style to enhance code consistency.

Comment thread api/extensions/ext_otel.py Outdated
Comment on lines +29 to +31
from opentelemetry.semconv._incubating.attributes.deployment_attributes import (
DEPLOYMENT_ENVIRONMENT_NAME,
)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other single-name imports in this file (e.g., PROCESS_PID on line 34), it's conventional to write this import on a single line without parentheses. This improves readability and maintains a consistent style.

    from opentelemetry.semconv._incubating.attributes.deployment_attributes import DEPLOYMENT_ENVIRONMENT_NAME
References
  1. According to PEP 8, code should be written in a consistent style. While using parentheses for a single import is not a syntax error, it's inconsistent with how other single imports are handled in this file and with common Python conventions, which favor a single line for short, single-name imports. (link)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch — flattened to a single-line import in the latest commit to match the style of the surrounding imports.

User added 2 commits February 26, 2026 14:42
The semconv package lacks type stubs, causing reportMissingTypeStubs
errors in pyright strict mode. Adding it to allowedUntypedLibraries
is consistent with how other opentelemetry subpackages are handled.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Refactor/Chore] WARN SpanAttributes is deprecated [deprecated]

1 participant