public note

Entries from 2023-01-01 to 1 year

Python のユニットテストで decorator に patch をあてる

ユニットテストでデコレータを差し替える方法を学びました。 このような、print や sleep するデコレータを例にとります。 import time def my_decorator(message="hi", sleep=0): def _my_decorator(func): def wrapper(*args, **kwargs): print("before") …

Airbyte で最新の connector registry seed を参照する

目的 Airbyte OSS 版をデフォルトの設定で運用すると connector registry seed が固定されるので、本体をバージョンアップしない限り利用可能な connector バージョンは変わりません。この seed について、Airbyte 環境から最新のものを参照する方法を書きま…

PyPI への Python パッケージリリース

いつも、どうやっているのだっけ...となるので備忘録代わりに。パッケージ管理ツールは Poetry を使っています。 (初回のみ) TestPyPI リポジトリの追加 poetry config repositories.testpypi https://test.pypi.org/legacy/ パッケージのビルド poetry buil…

PyCon APAC 2023 Day1 で ModuleNotFoundError に関する発表をしました

参加記はまた別で書きます。 会場では 30 名くらい?の方々が聴きにきてくれました。ありがとうございます。 発表したこと タイトル 2023/10/27 16:20 ~ 16:35 (Asia/Tokyo) ModuleNotFoundErrorの傾向と対策:仕組みから学ぶImport 2023-apac.pycon.jp スラ…

sqlparse で SELECT 文をパースする

SELECT 文にあるエイリアスを特定したくて、sqlparse を使ってパースしてみました。 github.com sqlparse の主要クラス sqlparse でクエリをパースするときに、下記のクラス構造を把握しておくと挙動を掴みやすくなると思います。クラスごとの一文は、実装を…

Apache Beam の Side input パターンで LEFT JOIN する

Apache Beam で複数のデータソースから取得したデータを、SQL でいう LEFT JOIN する方法を試しました。 一方がストリーミングデータで、もう一方がデータウェアハウスから取得したデータといった場面を想定しています。 どうやるのか調べたところ、1つのパ…

Poetry dev-dependencies が v1.2 で deprecated になっていたのでこれからは group を使う

いつの間にか、poetry add --dev や poetry install --no-dev などで指定する開発用パッケージを示す dev-dependencies が Deprecated になっていることに気づきました。 python-poetry.org 1.2 より前は [tool.poetry.dev-dependencies] という TOML テーブ…

BigQuery の全テーブルのレコード件数やサイズを保存して、前日からの変化を確認する

GCP

BigQuery のテーブル別レコード数を履歴として保存して、その変化を見ることで期待した操作が行われているか(逆に、意図しない操作をしていないか)をチェックする方法を考えました。 全体的にどういう変化が起きたのかをざっくり確認したい、というのが目的…

Apache Beam Python SDK でパイプラインのテストコードを書く

Apache Beam SDK には testing パッケージが用意されており、これを使うことで Beam パイプラインに対するテストコードを書けます。 この記事では、Python SDK でのテストを試してわかったことをまとめています。誤りがありましたらご指摘いただけると嬉しい…