Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The March To 3
Search
daniellindsley
April 08, 2013
Technology
1
120
The March To 3
The How's and Why's of porting to Python 3.
daniellindsley
April 08, 2013
Tweet
Share
More Decks by daniellindsley
See All by daniellindsley
The Unenviable Tutorial
daniellindsley
3
93
How (Not) To Build An OSS Community
daniellindsley
1
220
Avoiding The Search Hall Of Shame
daniellindsley
3
370
API Design Tips
daniellindsley
14
3.8k
Building A Python-based Search Engine
daniellindsley
20
2.5k
RESTful APIs with Tastypie
daniellindsley
19
2.8k
Django Boston - 2011
daniellindsley
4
260
Getting The Most Out Of Haystack
daniellindsley
5
220
Other Decks in Technology
See All in Technology
コミュニティサービスに「あなたへ」フィードを リリースするまでの試行錯誤
takapy
1
150
20240717_イケコパ代表Copilot_in_Teams会社でこう使ってます
ponponmikankan
2
430
たくさん本を読んだけど 1年後には綺麗サッパリ!を乗り越えて 学習の鬼になるぞ👹
yum3
0
160
20240725 LLMによるDXのビジョンと、今何からやるべきか @Azure OpenAI Service Dev Day
nrryuya
3
1.2k
E2Eテスト自動化プラットフォームにおけるAIの活用
shift_evolve
0
190
テストケースの自動生成に生成AIの導入を試みた話と生成AIによる今後の期待
shift_evolve
0
190
「我々はどこに向かっているのか」を問い続けるための仕組みづくり / Establishing a System for Continuous Inquiry about where we are
daitasu
0
170
エンジニアリングマネージャーはどう学んでいくのか #devsumi / How Do Engineering Managers Continue to Learn and Grow?
expajp
4
1.3k
AWS IAMのアンチパターン/AWSが考える最低権限実現へのアプローチ概略(JAWS-UG朝会#59資料改修20分版)
htan
0
330
AutomatedLabを使って内部ペンテストを勉強しよう! -やられ社内ネットワークの自動構築-
n_etupirka
1
610
Azure OpenAI Service Dev Day / LLMでできる!使える!生成AIエージェント
masahiro_nishimi
3
810
セキュリティ研修 Day1【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
160
Featured
See All Featured
Creatively Recalculating Your Daily Design Routine
revolveconf
214
11k
YesSQL, Process and Tooling at Scale
rocio
166
14k
Music & Morning Musume
bryan
43
5.9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
34
1.9k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
105
6.8k
Designing on Purpose - Digital PM Summit 2013
jponch
113
6.6k
Designing for humans not robots
tammielis
247
25k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
24
1.8k
The Brand Is Dead. Long Live the Brand.
mthomps
52
36k
Navigating Team Friction
lara
181
13k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
No one is an island. Learnings from fostering a developers community.
thoeni
17
2.8k
Transcript
The March To3
Who? • Daniel Lindsley • Pythonista since 2003 • Djangonaut
since 2006 • Author of Tastypie / Haystack / itty / others
None
Your language is...
Your language is... DEAD
Your language is... DEAD ...for small values of “dead”.
None
None
⦸
None
None
⦸
None
is dead;
is dead; Long live !
None
Why port to Python 3?
Active Development Python 2.7.x will only get security updates. No
Python 2.8 ever.
As Fast As 2.7 With 3.3 & it’ll only get
better.
Cleaned Up Syntax We’ll get to some of these in
a bit.
Better String Handling Unicode everywhere.
Stable
None
Changes from 2 to 3 •Removals • Backticks, classic classes
• <>, apply, reduce, dict.has_key • Others
Changes from 2 to 3 •Changed • print is now
print() • next() is now __next__() • Better raise syntax • Metaclasses
Changes from 2 to 3 •Changed (cont.) • Faster Decimal
implementation • Reorganized & spruced up stdlib • Careful with I/O!
Changes from 2 to 3 •New! • Built-in OrderedDict •
String formatting • dict / set comprehensions • Generator delegation via yield from
Changes from 2 to 3 •New! (cont.) • Built-in virtualenv
support! • unittest2 by default! • World domination with importlib
None
“What versions should I support?”
“What versions should I support?” Simple answer: Python 2.6+ &
Python 3.3+
None
“So how do I port?”
IT DEPENDS!
Decide between... • A One-time port • A Combined 2
& 3 codebase ...or...
None
The One-time port
The One-time port • Ensure you have good test coverage
• Use 2to3 to convert the codebase • Run tests & fix until it passes
None
The Combined 2 & 3 codebase
The Combined 2 & 3 codebase • First, you need
a venv: •virtualenv -p python3 env3 •. env3/bin/activate
The Combined 2 & 3 codebase • Ensure you have
good test coverage • Require six as a dependency • Use six to patch over the differences • Run tests in Py3 & fix until it passes... • ...then run tests in Py2 & fix until it passes!
None
Using six in practice
Demo time.
None
More information • http://pyvideo.org/video/1730/python-33- trust-me-its-better-than-27 • http://pyvideo.org/video/1787/porting- django-apps-to-python-3 • http://pyvideo.org/video/1704/why-you-
should-use-python-3-for-text-processing • http://pythonhosted.org/six/
More information • http://www.dabeaz.com/python3io/ MasteringIO.pdf
Thanks! @daniellindsley https://github.com/toastdriven