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
The March To 3
Search
daniellindsley
April 08, 2013
Technology
160
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The March To 3
The How's and Why's of porting to Python 3.
daniellindsley
April 08, 2013
More Decks by daniellindsley
See All by daniellindsley
The Unenviable Tutorial
daniellindsley
3
180
How (Not) To Build An OSS Community
daniellindsley
1
270
Avoiding The Search Hall Of Shame
daniellindsley
3
450
API Design Tips
daniellindsley
14
4k
Building A Python-based Search Engine
daniellindsley
20
2.6k
RESTful APIs with Tastypie
daniellindsley
19
2.9k
Django Boston - 2011
daniellindsley
4
290
Getting The Most Out Of Haystack
daniellindsley
5
260
Other Decks in Technology
See All in Technology
大型犬好きによるPugの紹介
yamanoku
1
160
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
160
Refining Active Record
shugo
0
150
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
110
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.6k
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
200
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
280
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
170
継続的なAIコスト最適化
bgpat
1
340
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
440
しろおびから始める!ログ活用の第一歩
shumei_ito
0
950
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
We Are The Robots
honzajavorek
0
400
Large-scale JavaScript Application Architecture
addyosmani
516
110k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Done Done
chrislema
187
17k
Accessibility Awareness
sabderemane
1
250
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
Being A Developer After 40
akosma
92
590k
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