Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

profiling.sampling reports third-party modules as stdlib when site-packages is inside the stdlib directory

オープン 初心者向け
#158,986 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
python
領域
tooling

調査の方向性

Lib/profiling/sampling/module_utils.pyを読み、特にextract_module_name()とget_python_path_info()のパス情報を確認してください。sysconfig.get_path('purelib')と提供されたスニペットを使って報告されたケースを再現し、既存のprofiling samplingテストを確認してください。最も具体的に一致するディレクトリが優先され、同点の場合は標準ライブラリが優先され、標準ライブラリのファイルを誤分類することなく、例でrequests.apiがsite-packagesに分類されれば完了です。

索引モデルが issue の本文から書いたものです。

説明

stdlib topic-profiling type-bug

Bug report

Bug description:

profiling.sampling.module_utils.extract_module_name() checks the stdlib directory before the site-packages directories. In a regular (non-venv) installation site-packages is a subdirectory of the stdlib directory (Lib\site-packages on Windows, lib/pythonX.Y/site-packages for python.org, pyenv, conda or Docker builds, and Lib/site-packages in a source build), so every file installed there matches the stdlib check first.

import os
import sysconfig
from profiling.sampling.module_utils import extract_module_name, get_python_path_info

path_info = get_python_path_info()
filename = os.path.join(sysconfig.get_path('purelib'), 'requests', 'api.py')
print(extract_module_name(filename, path_info))

Output (Windows, <prefix>\Lib is the stdlib directory and <prefix>\Lib\site-packages is the site-packages directory):

('site-packages.requests.api', 'stdlib')

Expected:

('requests.api', 'site-packages')

As a result, the heatmap index lists third-party code under "Standard Library", inside a folder named site-packages, instead of under "Site Packages", and the flamegraph labels of such frames look like get (site-packages.requests.api:10). Doc/library/profiling.sampling.rst describes the heatmap index as organized by type (stdlib, site-packages, project). Only virtual environments (and the user site directory), where site-packages is not inside the stdlib directory, are classified correctly.

Simply checking site-packages first is not enough: on Windows site.getsitepackages() also returns sys.prefix, which is a parent of the stdlib directory and would then capture the stdlib files. The most specific (longest) matching directory should win, with stdlib winning a tie.

CPython versions tested on:

CPython main branch

(Lib/profiling/sampling/module_utils.py is identical on the 3.15 branch.)

Operating systems tested on:

Windows

Linked PRs
  • gh-158993
主要言語
Python
スター
77.6k
フォーク
38.4k
平均マージ
1日 8時間
マージ済み PR(30日)
564

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

python/cpython のほかの issue

python/cpython の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。