Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
pydanticの紹介
Search
mizzsugar
February 13, 2020
Programming
700
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
pydanticの紹介
mizzsugar
February 13, 2020
More Decks by mizzsugar
See All by mizzsugar
自分のPCにPython環境を用意して_VSCodeでStreamlitアプリを動かすまでの8ステップ.pdf
mizzsugar
0
140
Colabのみで初心者向けPythonハンズオン.pdf
mizzsugar
0
100
厳しさとゆるさの間で迷う人に捧げる個人開発記
mizzsugar
0
77
SQLModel入門〜クエリと型〜
mizzsugar
3
1.7k
フルリモート向いてないと思っていた私が、なんだかんだ健やかに 1年半フルリモート出来ている話
mizzsugar
1
170
Djangoでのプロジェクトだって型ヒントを運用出来る!
mizzsugar
4
9.2k
「動くものは作れる」の一歩先へ 〜「自走プログラマー」の紹介〜
mizzsugar
0
670
pytestの第一歩 〜「テスト駆動Python」の紹介〜
mizzsugar
3
500
データ分析ツール開発でpoetryを使う選択肢
mizzsugar
1
1.2k
Other Decks in Programming
See All in Programming
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.1k
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.2k
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.4k
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
5
1.3k
JIS keyboard support in Omarchy
lef237
0
170
続・コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions-again
handlename
0
150
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
390
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
200
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
6k
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
180
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2k
Railsバージョンを4倍にした話
optim
0
830
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
430
RailsConf 2023
tenderlove
30
1.6k
Accessibility Awareness
sabderemane
1
270
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
510
So, you think you're a good person
axbom
PRO
2
2.2k
Why Our Code Smells
bkeepers
PRO
340
58k
Claude Code のすすめ
schroneko
67
230k
Scaling GitHub
holman
464
140k
Believing is Seeing
oripsolob
1
260
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
Transcript
今いち推しのバリデーター pydanticの紹介 20200213 Stapy @mizzsugar0424
お前、誰よ • Twitter : @mizzsugar0425 • 仕事:データ分析基盤の開発、運用 ◦ GCP, BigQuery
• 前の仕事はDjango。今でも追いかけてる。 • 趣味:PythonでWeb開発 ◦ Pyramid, Nuxt.js, TypeScript, PostgreSQL • 2/29にPyCon mini Shizuokaに登壇予定 ◦ unittest.mockの話です • ゆるく転職活動 ◦ 面接中に水をガブガブ飲む人間でも良いという企業様、ぜひ
# type: ignore
それは、 静的型付けとPythonの両方を 愛する者たちを苦しめる コメント
従来のバリデーターだとTypingのサポートがない import colander class Item(colander.MappingSchema): # type: ignore name =
colander.SchemaNode(colander.String()) price = colander.SchemaNode(colander.Integer())
Typingサポートのあるバリデーター、pydantic • 2017年爆誕 • Typingサポートあり • Python製WebフレームワークFastAPIでも紹介されている • mypy pluginあり
https://pydantic-docs.helpmanual.io/
基本的な書き方 import pydantic class Item(pydantic.BaseModel): name: str price: int
基本的な書き方 external_data = { 'name': 'chocolate', 'price': 500 } try:
item = Item(**external_data) except ValueError e: e.json() # エラー内容が返される
まるでオブジェクトを扱うよう class User(pydantic.BaseModel): name: str birthday: datetime.date friends: List[int] favorite_color:
Optional[str] int, str, List, Optional, datetime… などわりと使う型はサポートされている
楽々json! user = User.parse_raw('{"id": 123,"signup_ts":1234567890,"name":"John Doe"}') print(user) #> id=123 signup_ts=datetime.datetime(2009,
2, 13, 23, 31, 30, #> tzinfo=datetime.timezone.utc) name='John Doe'
快く使うために: mypy pluginのページは読んでね error: Module 'pydantic' has no attribute 'BaseModel'
[attr-defined] ↑mypy から注意されたけど ドキュメントのmypy pluginの設定を追加したら解消されたので 良く読もう https://pydantic-docs.helpmanual.io/mypy_plugin/
さらば、 # type: ignore
ありがとうございました。