リストを受け取ってループで処理する関数を実装するとき、引数のタイプヒントに list ではなく最小の要求としてIterable を書くことを好む人がいる。コードの実装が引数に対して必要としている最小要件(必要十分条件)を表すためだ。 def func(arg:Iterable[int]) -> None: for a in arg: do_work(a) しかし、その関数でログかトレースにその引数の中身を追加したくなった場合にどうしたらいいだろうか? OpenTelemetryのAttributeValue型はSequenceには対応しているがIterableには対応していない。 また、Iterableを一度巡回してしまうと再び巡回できる保証はないので、 arg の中身を複数回使うことができない。 引数のタイプヒントをlistかSequenceに修正しようと思っても、他のコードも「最小
本文中コードgithub.com flat layoutとsrc layoutについてPythonプロジェクトのディレクトリ構成について調べてたところ、flat layoutとsrc layoutという2種類のディレクトリ構成が存在することを知りました。 src レイアウト対フラットレイアウト -Python Packaging UserGuide flat layout flat layoutはパッケージフォルダをプロジェクトのルート直下に配置するスタイルです。 flat layoutの有名なpythonプロジェクトだと、pytorch, django, tensorflow があります。 . ├── README.md ├── pyproject.toml └── my_package/ ├── __init__.py └── module.py src layout 一方、

最近はお客さんとの勉強会でDockerのドキュメントをつまみ食いして読むというのをやっていますが、改めて最新版を読んでみて、いろいろ思考が整理されました。2020年の20.10のマルチステージビルドの導入で大きく変わったのですが、それ以前の資料もweb上には多数あり「マルチステージビルドがよくわからない」という人も見かけるので過去の情報のアンラーニングに使っていただけるように改めて整理していきます。仕事でPythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編で触れた内容もありますが改めてそちらに含む内容も含めて書き直しています。本エントリーの執筆には@tk0miya氏から多大なフィードバックをいただきました。ありがとうございます。 基本的なメンタルモデル現代的な使い方を見ていくために「Dockerを使ってビルドする」というのはどのようなものか考えを整

EDIT: このブログと似た内容の話をPyCon APAC2023にてお話ししました。 こちらの登壇資料も合わせてご覧いただけると幸いです こんにちはWantedlyの樋口です。Pythonのパッケージングと配布は歴史が長く、多くのツール(ex. conda, pip, pipenv, poetry, rye...)が開発されてきました。これらの多様性はPythonが多くの人に使われ、継続的に改善されたゆえの賜物ですが、同時にこれらの理解を難しくしている要因にもなっていると感じます。 そこで本記事では、Pythonのパッケージングと配布の全体像を紹介します。パッケージングと配布が何か、なぜ重要なのか、そしてそれぞれのツールが何を解決しようとしているのかについて説明します。以下のような疑問を解決できることを想定しています。 パッケージングと配布の仕組みがなぜあるのか 多数あるツールが何を解

欧州連合(EU)の政策執行機関である欧州委員会は、サイバー攻撃による社会的な被害が大きくなってきていることを背景に、現在広く普及しているさまざまなデジタル製品やサービスのセキュリティをより高める目的で、サイバーレジリエンス法案(CRA:Cyber Resilience Act)を検討しています。 この法案が目指すところは、より脆弱性の少ないデジタル製品が市場に投入されるようにすること、市場に投入後も製造者が製品のライフサイクル全体を通じてセキュリティに真剣に取り組むことを保証すること、そしてユーザーもセキュリティを考慮した製品を選択できるようにすること、などです。 欧州委員会では同時に製造者責任法の改定案も検討中です。これは従来の製造者責任法ではカバーされていなかったデジタル関連の製品やサービスに対しても製造者責任を問えるようにするものです。 しかしこれらの法案ではオープンソースの開発者が

PackagingPython Projects¶ This tutorial walks you through how to package asimplePython project.It will show you how to add thenecessary files and structure tocreate the package, how tobuild the package, and how to uploadit to thePython Package Index (PyPI). Tip If you have trouble running the commands in this tutorial, please copy the command andits output, then open an issue on the pack
Meta(旧Facebook)は、ブログ「Engineering at Meta」で公開した記事「Programming languages endorsed for server-side use at Meta」で、Rustを新たに社内の正式サポート言語に追加したことを明らかにしました。 Meta社内ではソフトウェア開発において正式にサポートする言語を慎重に選択しており、社内においてサポートされた言語に対しては十分な投資が行われ、プログラミング、デバッグ、デプロイなどにおいて良好な開発体験が期待できるとともに、新しプロジェクトが開始される場合には、サポートされている言語を選択することが推奨されています。 サーバサイド向けの言語としてこれまでPython、C++、Hackがサポートされており、今回そこにRustが追加されました。 性能重視のバックエンドサービスやCLIの開発にRustを推

Python がテキストファイルを開く時のデフォルトエンコーディングがUTF-8でないことは、多くのWindowsユーザー、特にプログラミング初心者にとって障害になっています。 UnicodeDecodeError で検索すると、多くのWindowsユーザーが問題に遭遇しているのがわかります。 https://qiita.com/Yuu94/items/9ffdfcb2c26d6b33792e https://www.mikan-partners.com/archives/3212 https://teratail.com/questions/268749 https://github.com/neovim/pynvim/issues/443 https://www.coder.work/article/1284080 https://teratail.com/questions/2713
Building and Distributing Packages with Setuptools¶ Setuptools is a collection of enhancements to thePython distutils that allow developers to more easilybuild and distributePython packages, especially ones that have dependencies on other packages. Packages built and distributed using setuptools look to the user like ordinaryPython packages based on the distutils. Feature Highlights:Create Py

今週PEP 8の小さい変更についてMLで騒動が起こってしまいました。 該当のコミットはこれです。 PEP 8: Change requirement to adhere to Standard English (#1470) ·python/peps@0c6427d ·GitHub 変更点はごくごくシンプルなものです。 - When writing English, follow Strunk and White. + Ensure that your comments are clear and easily understandable to other + speakers of the language you are writing in. 今まで知らなかったのですが、変更前の "Strunk and White" とは The Elements of Style というすご
Pythonアプリを高速化できるCythonについてざっくりと浅めにまとめた。 Cythonとは CythonはPythonのスーパーセットなプログラミング言語、またはそのコンパイラ。 Cythonで書かれたコードは最適化されたC(またはC++)のコードにコンパイルできる。 最新版(2020年5月時点で0.29.6)のマニュアルはこれ。 Cythonによる高速化Pythonは動的型付けのインタプリタ型言語で、変数アクセスや関数呼び出しのたびに処理系が型を解決する必要があって遅い。 演算子の処理やプロパティアクセスがメソッド呼び出しになったりするのもオーバーヘッドになっている。 特にforループが非常に遅く、数値計算をforで回すようなコードはJavaの10倍、Cの数百倍くらい遅い。 Cythonで事前にコンパイルすることで、最適化されたりインタプリタ型という特性による遅さが改善されるので
PEP 484 – Type Hints Author:Guido vanRossum <guido atpython.org>, Jukka Lehtosalo <jukka.lehtosalo at iki.fi>, Łukasz Langa <lukasz atpython.org> BDFL-Delegate: Mark Shannon Discussions-To:Python-Dev list Status: Final Type: Standards TrackTopic: TypingCreated: 29-Sep-2014Python-Version: 3.5 Post-History: 16-Jan-2015, 20-Mar-2015, 17-Apr-2015, 20-May-2015, 22-May-2015 Resolution:Python-De

蛇行区間にはレールの内側に脱線防止ガードが設置される(本文とは関係ありません)。 こんにちは、エムスリー・エンジニアリングG・基盤開発チーム小本です。 pytest はPython のユニットテストのデファクトスタンダードです。エムスリーでも顧客向けレポートや機械学習でPython&pytest をヘビー🐍1に使っています。 ですが、実は pytest は、意外と入門のハードルが高い。と言うのも、pytest の公式ドキュメント が、fixtureのような新概念も登場する上、詳細で分量が多いからです(しかも英語)。初心者にいきなり読ませると挫折する可能性大です 2。 そこで、とりあえず使い始めるのに必要そうな情報を日本語でまとめました。 pytest ってどんなライブラリ?unittest や nose から簡単に移行できる 書き方がシンプル fixture モックもできる プラグイ
単体テストガイドライン¶ Pylonsプロジェクトは、このドキュメントの元となった Tres Seaver によって書かれた AvoidingTemptation:Notes on usingunittest effectively に倣ったユニットテスト教義をかなり厳格に守っています。Note このドキュメントは、ほとんど排他的に 単体 テストを扱います。 結合テストまたは機能テストに対しては私たちは特別の教義を持っていません。 しかし、下記の tips の多くはその文脈でも再利用できます。 悪い単体テストを避けるための tips¶ ある人々は “don’t repeat yourself” をむやみに信じてきました (drink the KoolAid): 私たちは、ほとんどの場合にはコードの繰り返しをしないことが 美徳であることに同意します。しかし、単体テストコードはその例
The Zen ofPython, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit.Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough tobreak the rules. Although practicality beats purity.Errors should never pass silently. Unless explicitly silenced. In

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く