nikkie-ftnextの日記

イベントレポートや読書メモを発信

Python標準ライブラリ

Python の logging.config.dictConfig で disable_existing_loggers を省略したばっかりにライブラリのロガーが無効化され、False で指定する重要さを知りました

はじめに 七尾百合子さん、お誕生日 190日目 おめでとうございます! nikkieです。 Pythonのロギングで Today I Learned です。 目次 はじめに 目次 HTTPX のログを見たい dictConfig で書き直し disable_existing_loggers の指定を落としてハマる なぜ http…

Python で書かれたライブラリ各位に告ぐ。組み込み関数 print の呼び出しは、決してロギングではありません

はじめに 七尾百合子さん、お誕生日 187日目 おめでとうございます! nikkieです。 スター数が多いあるライブラリを使う中で徐々に実装を見ていったところ、ロギングの実装に大きな伸びしろがあったという話です。 目次 はじめに 目次 『自走プログラマー』…

Python 3.12 の venv で作る仮想環境、プロンプトの見た目がちょっとだけ違いますよね

はじめに 七尾百合子さん、お誕生日 173日目 おめでとうございます! nikkieです。 見た目が違う事象について調べました。 ※仮想環境の機能にバグがあるわけではありません 目次 はじめに 目次 Python 3.12 の venv で作った仮想環境は、プロンプトに2重のカ…

Python の logging で foo ロガー または bar ロガーを許可する Filter を作る

はじめに 七尾百合子さん、お誕生日 168日目 おめでとうございます! nikkieです。 GPT-5 に導かれた Today I Learned です。 目次 はじめに 目次 2つのフィルタを addFilter してはいけません 結論:独自のORフィルタを実装する 使いどころ例 終わりに 2つ…

google-genaiよ、ライブラリはルートロガーを触ってはいけません (v1.3.0で解消済み)

はじめに 七尾百合子さん、お誕生日 146日目 おめでとうございます! nikkieです。 今年google-genaiを触る中で出会っていた事象についてです。 目次 はじめに 目次 issue #278 「Please use a Gemini Logger instance instead of root.」 ロガーインスタン…

Agent Development Kit (1.10.0) のWeb UIやAPIサーバは DEBUG レベルでロギングして送られているプロンプトを確認できますが、その実装には伸びしろがあります(Workaroundを添えて)

はじめに 七尾百合子さん、お誕生日 145日目 おめでとうございます! nikkieです。 あのGoogleが作っているAgent Development Kit (ADK)でもまた、現実世界のロギングに苦しめられています... 目次 はじめに 目次 ドキュメント「Logging in the Agent Develo…

Pythonのログメッセージにf-stringはいけません。そこのClaude、私はあなたに言っているんですよ

はじめに 七尾百合子さん、お誕生日 96日目 おめでとうございます! nikkieです。 LLM、特にClaudeでPythonを書いていて気になる点を書きます。 目次 はじめに 目次 ログメッセージに限っては、f-stringはいけません Ruff Pylint 『Python実践レシピ』 根拠 …

#pyconshizu にて、ライブラリのロギングでNullHandler以外はいけませんと主張してきました

はじめに bestの最上級、bestest!! nikkieです。 1ヶ月前のPyCon mini Shizuoka 2024 continueでの登壇報告エントリです。 目次 はじめに 目次 ライブラリ開発者に贈る「ロギングでNullHandler以外はいけません」 発表後記 いただいた反応 関連エントリ 終わ…

Pythonのライブラリに用意されたロガーをlogging.configで設定する(httpxを例に、辞書やYAMLで設定)

はじめに 守護霊琴葉お姉ちゃん... nikkieです。 logging.configでロギングの環境設定ができることを知りました。 過去記事のライブラリロガーの設定を、辞書やYAMLファイルに書き換えて素振りします。 目次 はじめに 目次 logging.configでライブラリのロガ…

Python標準ライブラリの html.parser で、HTMLからタグを除く

この記事は Python Advent Calendar 2024 シリーズ3 8日目の記事です。 標準ライブラリだけでもHTMLタグ除けるもん! はじめに Python界の七尾百合子(図書室の暴走特急)目指してます1。nikkieです。 HTMLからタグを除いてテキストを取り出す実装、標準ライ…

Pythonは常に機能が拡充している!この10月に出た3.13で失ったものなど、何一つない! ― ◯か☓か

2024年10月にPython 3.13.0がリリースされました。 3.13.0 final: Monday, 2024-10-07 Pythonはマイナーバージョンアップで機能追加されており、3.13でも新機能が追加されています1。 https://docs.python.org/ja/3.13/whatsnew/3.13.html ですが、実は失わ…

itertools.chain() と itertools.chain.from_iterable() の呼び出し方の違い

Today(※最近) I learnedな小ネタです 目次 目次 Pythonのitertools.chainで混乱しがち itertools.chainはクラス itertoolsのドキュメントより、引数のシグネチャ 終わりに Pythonのitertools.chainで混乱しがち 先日書いた、ネストしたfor文を全部抜けるに…

PyCon mini Shizuoka 2024で予定していた「ライブラリ開発者に贈る『ロギングでNullHandler以外はいけません』」をYouTubeに公開しました #pyconshizu

はじめに D/Zealだ... nikkieです。 PyCon mini ShizuokaでPythonのloggingについてのトークを発表予定でした。 台風10号の影響により開催延期となったので、自分で収録してYouTubeに公開しました。 目次 はじめに 目次 魅力的すぎて大変申し訳ございません…

Pythonでライブラリのロガーを使ったロギングをLogging Flowに沿って、かつフィルタやハンドラの設定にも注意を払って説明する

はじめに ななこぷりこれす かわいい。nikkieです。 「Pythonのloggingは難しすぎる!」と感じてから1年以上。 ついに主な構成要素の動きを完全に理解できたんじゃないかと思います! 目次 はじめに 目次 自作ライブラリの中でのロギングの実装をもっと理解…

Pythonのloggingモジュールのドキュメント、実は小さく改善しています!👏 ようこそgetLogger()

はじめに 私のトークが魅力的すぎたばっかりに、台風10号さんも聴きに来てしまい、申し訳ありません。nikkieです Pythonのloggingまわりで直近めちゃめちゃ感動したんです! 目次 はじめに 目次 PR 「Improvements to the logging documentation」 (#101618)…

Pythonのlogging.basicConfigがルートロガーを設定できるのは「一度だけ」

はじめに 篠宮可憐さん、お誕生日おめでとうございます! nikkieです Pythonのロギングで、ルートロガーを設定する logging.basicConfig について知った小ネタです。 目次 はじめに 目次 logging.basicConfigを2回呼んでみる ルートロガーにハンドラが設定さ…

Pythonのライブラリに用意されたロガーを設定してログを出力する(httpxを例に)

はじめに エミリーちゃん... お衣装だよ... nikkieです Pythonのloggingの小ネタです。 ライブラリに用意されたロガーをアプリケーションコードで操作していきます。 アプリケーションコードという言い回しは、ライブラリを使うコードを指して使っています。…

自作のPythonライブラリでloggingを使うとき、ロガーにsetLevelしない? ログレベルNOTSETのロガーの動きを理解する

はじめに トトロって、サツキがかわいいからメイ探しのお手伝いしたらしい。俺らと同類じゃん! nikkieです。 先日書いたPython自作ライブラリにおけるロギングの積み残しの解消に着手します。 この記事では、ロガーのNOTSETレベルについて見ていきます。 目…

Pythonの対話モードで確認できるロガーのレベルは、ロガーが持つレベルそのものではなく、実効(effective)レベル

はじめに ミリオンライク展、集まった俺たちの列も展示物だったんだ... nikkieです。 今回は以下のコードを理解していきます。 >>> import logging >>> logging.getLogger("foo") <Logger foo (WARNING)> Pythonのバージョンは 3.12.3 です。 目次 はじめに 目次 対話モードに出力</logger>…

Pythonで標準ライブラリloggingを使って自作ライブラリの中でロギングしたい未来の私へ

はじめに 久美子部長と滝先生の誕生日に挟まれた今日8/22は、タモリの誕生日。おめでとうございます。 nikkieです。 Pythonの標準ライブラリloggingのgetLogger()関数を使って得たロガーの扱い方の自分用まとめです。 前提として、他のユーザによって使われ…

Pythonの型チェックでもprintデバッグのようなことができたのか! reveal_type() を知りました

はじめに プログラミングしてる花咲夜、むふふ。nikkieです。 Pythonで型を書いてきて少なくとも2年、初めて reveal_type()を知りました 目次 はじめに 目次 reveal_type()、一見に如かず mypy以外の型チェッカもサポート Python 3.11からtyping.reveal_type…

Pythonの組み込み関数zipとiterで、イテラブルを要素n個ずつのチャンクに分割できる

はじめに 分け合って... ワケあって... SideM 10thツアー、これはめでたい!! nikkieです1。 ちょっとトリッキーな見た目のPythonのイディオムzip(*[iter(s)]*n)を完全に理解しました。 目次 はじめに 目次 組み込み関数zip()のドキュメント zip()でチャン…

argparseで解析した引数に型をもたせる(VS Codeで解析結果の属性の型がAnyになる問題の解消方法)

はじめに ナムコ! nikkieです。 標準ライブラリの中でとりわけヘビーユースしているargparse1。 Pythonスクリプトをコマンドラインツールにできます2。 argparseを使ったスクリプトをVS Codeで開発するうえで、型の表示を改善する小ネタです。 目次 はじめ…

同時実行数を制限できるセマフォ、イベントループによる並行処理でも使えるのか!(Pythonのasyncio.Semaphoreの素振り)

はじめに 俺もー!!ノ nikkieです。 Pythonのasyncio(イベントループによる並行処理)まわりで長い間宿題だった事項に、ついに答えを得ました! 目次 はじめに 目次 前提:asyncioを使った私の実装の伸びしろ 概念は知っていたセマフォ セマフォを使って、…

Pythonのvenvの--upgrade-depsオプションは、どこから来てどこへ行くのか

はじめに ぶっ飛ばせ!! nikkieです 先日言語処理学会でPython仮想環境の話題があり、以下のツイートに多くの反響をいただきました。 情報量を増やした記事を書きます。 ただし、すぐ役に立つ部分で言うとツイートを超える情報はなく、なぜこのオプションが…

Pythonでsortedのkey引数にlambdaを渡すときは、代わりにoperatorモジュールのitemgetterやattrgetterを使ってみませんか?

はじめに 「頑張れ!」ってきっと 愛してるって言葉♪ nikkieです。 今回はPython標準ライブラリの中から推しライブラリの1つを取り上げます。 その名もoperator! この中からitemgetterとattrgetterをご紹介! 目次 はじめに 目次 operatorのitemgetter・att…

Python標準ライブラリのurllibでだけ403 Forbiddenとなる

現時点の理解 Pythonの標準ライブラリurllib.request.urlopenを使ってHTTP通信すると、403 Forbiddenが返る urllib.error.HTTPError: HTTP Error 403: Forbidden 同じURLにrequestsを使うと、403は発生しない(正常に扱える) Cloudflareがurllibのデフォル…

#pyconapac2023 トーク「練習してテストを書けるようになるんだ」extra | unittestのおすすめリンク集

はじめに 解夏傀儡、お疲れさまでした!ゲーム自体はTwitterアカウントほど不気味じゃなくてよかった... nikkieです。 今週末はPyCon APAC 2023、現在トーク準備の真っ只中です。 今回は15分(英語で)テストが書けるようになるための知見を発表するのですが…

10/12(木)のみんなのPython勉強会 #stapy 「アレの前々週祭」に向けて、福田さんのEuroPythonトークを予習するのです

はじめに やきうは全然分かってないんですが、なんかまた阪神優勝するらしいよ! 12日夜はstapyでお祭り騒ぎ! nikkieです 次回stapyに備えて予習します。 福田さんのEuroPython 2023のトークを聞きました。 ※「予習」と書いていますが、福田さんのstapy発表…

はじめてThreadPoolExecutor(Pythonのconcurrent.futuresの素振り一歩目)

はじめに 未来で待ってる。 nikkieです1。 ここ最近イベントループを使った並行処理(asyncio)を素振りしました。 これはI/Oバウンドな処理に有効です。 I/Oバウンドな処理にはマルチスレッドも有効と聞くので、少しだけ素振りしました。 目次 はじめに 目…