nikkie-ftnextの日記

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

Python標準ライブラリ

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バウンドな処理にはマルチスレッドも有効と聞くので、少しだけ素振りしました。 目次 はじめに 目…

Pythonのloggingモジュールのチュートリアルの中のフローチャートを、理解を深めるために写経する

はじめに ういっす✌️ nikkieです。 Pythonのloggingモジュールのドキュメントには「上級ロギングチュートリアル」というものがあります。 その中の「Logging Flow」というフローチャートについて、現時点の理解をまとめます。 目次 はじめに 目次 Logging Fl…

Pythonのloggingモジュールで、ロガーのフィルタと、ロガーのハンドラのフィルタとで、伝播されたログに対する挙動が違うことにハマりました

はじめに ヲタクに恋は、Python使いにloggingモジュールは、難しい。nikkieです loggingモジュールのフィルタでハマりまして、少し深まった理解をアウトプットします。 今回の記事の元のツイートがこちら: Pythonのロギングのフィルタってロガーにもハンド…

CSVファイルが空行を含んだり、行ごとにフィールドの数が違ったりしても、Pythonのcsvモジュールは、読み込めます!

はじめに 小さな恋のうた♪ ならぬ小さな気づきの記事、nikkieです。 Pythonのcsvモジュールに関する小さな気づき(ただしここ最近のエントリをつなぐもの)の共有です。 目次 はじめに 目次 結論 解説パート:過去エントリとのつながりを明かすんだよ 裏話:…

CSVファイルの行からデータクラスのインスタンスを作る(map / starmap / 辞書版自作doublestarmap)

はじめに ういっす✌️ nikkieです。 先日、CSVファイルの行を種々のデータ型に変換する実装を一覧にしました。 その中でデータクラスのインスタンスへの変換について、いろんなやり方があると気づいたので一覧にします。 目次 はじめに 目次 前提 csv.reader…

mapで変換! csvモジュールで読み込んだ行から、リスト/辞書/タプル/名前付きタプル/データクラス(のインスタンス)を作る

はじめに わりぃ、おれ、死んだ、nikkieです1。 CSV形式のファイルを読み込んで、行を各種データ型に変換する方法を一覧にしていきます! ドキュメントを見ていたら「これ、どんなデータ型にも変えられるんじゃないか」と着想を得たんですよ 目次 はじめに …

Python標準ライブラリ ソースコードリーディング | csv.DictReaderはcsv.readerを継承じゃなくて委譲している!

はじめに ヨーソロー!1 nikkieです。 ここ数日はcsvモジュールで知ったことをアウトプットしています。 今回はcsv.DictReaderのソースコードリーディングで知ったことです。 目次 はじめに 目次 csv.DictReaderとは csv.DictReaderのソースコードリーディン…

Pythonのcsv.readerでCSVの中のダブルクォートがどう扱われるか理解する第一歩

はじめに 私的最強概念 こころおねえちゃん nikkieです。 時として厄介な形式のCSVファイルを扱わなければならないことってありますよね。 csvモジュールを使って挑んでいったのですが、読み込んだCSVでは、ダブルクォートが閉じるまでは区切り文字で分割さ…

私、csv.readerのこと、何も分かってなかったんだな... 〜Dialectなるものを完全理解〜

はじめに デカリボ、パトラッシュ、お誕生日おめでとうございます! nikkieです1 Python標準ライブラリのcsvモジュールとの付き合いが長いのですが、このたびreader(やwriter)のdialect引数の意味をようやく完全理解しました! ここにアウトプットします。…

Pythonのloggingモジュールのドキュメントの「もっとも単純な例」を説明する 〜logging.warningの裏側で起こっていること〜

はじめに ういっす✌️ nikkieです。 先日、Pythonのloggingモジュールを完全に理解しました。 深まった理解をもとに、ドキュメントの「もっとも単純な例」を説明してみます。 目次 はじめに 目次 もっとも単純な例 logging.warningはlogging.basicConfigを呼…