ПОРТИРУЕМ НА PYTHON 3
Nikita Grishko
Wargaming.net
ЗАЧЕМ НАМ PYTHON 3?
ЗАЧЕМ НАМ PYTHON 3?
летом 2010 последний релиз ветки 2.х с новыми фичами
в 2.х только исправления ошибок
улучшения в станд...
ЗАЧЕМ НАМ PYTHON 3?
Asynchronous IO Support (PEP-3156)
yield from (PEP-0380)
Function Annotations (PEP-3107)
...
ЧТО ДЕЛАТЬ С
СУЩЕСТВУЮЩИМ КОДОМ?
Нельзя все сразу переписать с 2.x на 3.x, т.к. большинство
кода пишется на 2.х
С ЧЕГО НАЧАТЬ?
С ЧЕГО НАЧАТЬ?
1. Нужны тесты!
С ЧЕГО НАЧАТЬ?
1. Нужны тесты!
2. Много хороших тестов!
С ЧЕГО НАЧАТЬ?
1. Нужны тесты!
2. Много хороших тестов!
3. Поддерживать версии: py26, py27, py32+, pypy?
2TO3
официально рекомендованный способ (PEP-3000)
входит в стандартную поставку
автоматические генерирует 3.х код, что дов...
2TO3 МИНУСЫ
работает не всегда корректно
2TO3 МИНУСЫ
@@ -314,7 +314,7 @@
tags.append((k, v))
data['tags'] = tags
+

for k in data.keys():
for k in list(data.keys()...
2TO3 МИНУСЫ
@@ -147,7 +147,7 @@
if worker not in default_servers:
raise CommandError(
'Unsupported udp server type; expect...
2TO3 МИНУСЫ
@@ -75,7 +75,7 @@

+

# Ensure values are unique, do not contain already present values, and
# values specifie...
2TO3 МИНУСЫ
работает не всегда корректно
две ветки
2+3
Mожно писать код который будет одновременно работать
как на 2.x так и на 3.х.
Примеры: django, virtualenv, requests, ....
2+3 ПОМОЩНИКИ
2+3 ПОМОЩНИКИ
tox (http://tox.readthedocs.org/)
2+3 ПОМОЩНИКИ
tox (http://tox.readthedocs.org/)
__future__ импорты
(http://docs.python.org/2/library/__future__.html)
2+3 ПОМОЩНИКИ
tox (http://tox.readthedocs.org/)
__future__ импорты
(http://docs.python.org/2/library/__future__.html)
six ...
ЧТО ДАЛЬШЕ?
pull requests
issues
ЕЩЕ ИНТЕРЕСНОЕ
http://www.slideshare.net/it-people/ekbpy2012-python-3
http://www.slideshare.net/it-people/python-3-1696483...
ВОПРОСЫ?

NIKITA GRISHKO / HTTPS://GITHUB.COM/GR1N
Upcoming SlideShare
Loading in...5
×

Портируем на Python 3

472

Published on

Почему стоит все чаще задумывать о поддержке Python 3 и с какими проблемами можно столкнуться при портировании. Рассмотрим на примерах из Sentry (https://github.com/getsentry/sentry) как добавить поддержку Python 3 с использованием 2to3 (http://docs.python.org/3.3/library/2to3.html), tox (http://tox.readthedocs.org/en/latest/) и six (http://pythonhosted.org/six/).

Автор: Никита Гришко (Wargaming.net)

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
472
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Портируем на Python 3

  1. 1. ПОРТИРУЕМ НА PYTHON 3 Nikita Grishko Wargaming.net
  2. 2. ЗАЧЕМ НАМ PYTHON 3?
  3. 3. ЗАЧЕМ НАМ PYTHON 3? летом 2010 последний релиз ветки 2.х с новыми фичами в 2.х только исправления ошибок улучшения в стандартную библиотеку не вносятся
  4. 4. ЗАЧЕМ НАМ PYTHON 3? Asynchronous IO Support (PEP-3156) yield from (PEP-0380) Function Annotations (PEP-3107) ...
  5. 5. ЧТО ДЕЛАТЬ С СУЩЕСТВУЮЩИМ КОДОМ? Нельзя все сразу переписать с 2.x на 3.x, т.к. большинство кода пишется на 2.х
  6. 6. С ЧЕГО НАЧАТЬ?
  7. 7. С ЧЕГО НАЧАТЬ? 1. Нужны тесты!
  8. 8. С ЧЕГО НАЧАТЬ? 1. Нужны тесты! 2. Много хороших тестов!
  9. 9. С ЧЕГО НАЧАТЬ? 1. Нужны тесты! 2. Много хороших тестов! 3. Поддерживать версии: py26, py27, py32+, pypy?
  10. 10. 2TO3 официально рекомендованный способ (PEP-3000) входит в стандартную поставку автоматические генерирует 3.х код, что довольно удобно
  11. 11. 2TO3 МИНУСЫ работает не всегда корректно
  12. 12. 2TO3 МИНУСЫ @@ -314,7 +314,7 @@ tags.append((k, v)) data['tags'] = tags + for k in data.keys(): for k in list(data.keys()): if k in RESERVED_FIELDS: continue
  13. 13. 2TO3 МИНУСЫ @@ -147,7 +147,7 @@ if worker not in default_servers: raise CommandError( 'Unsupported udp server type; expected one of %s, but got "%s".' % (', '.join(default_servers.keys()), worker)) + % (', '.join(list(default_servers.keys())), worker)) return default_servers[worker]
  14. 14. 2TO3 МИНУСЫ @@ -75,7 +75,7 @@ + # Ensure values are unique, do not contain already present values, and # values specified in select_related values = set(filter(None, (getattr(o, column) for o in objects))) values = set([_f for _f in (getattr(o, column) for o in objects) if _f]) if values: qs = model.objects if database:
  15. 15. 2TO3 МИНУСЫ работает не всегда корректно две ветки
  16. 16. 2+3 Mожно писать код который будет одновременно работать как на 2.x так и на 3.х. Примеры: django, virtualenv, requests, ... .
  17. 17. 2+3 ПОМОЩНИКИ
  18. 18. 2+3 ПОМОЩНИКИ tox (http://tox.readthedocs.org/)
  19. 19. 2+3 ПОМОЩНИКИ tox (http://tox.readthedocs.org/) __future__ импорты (http://docs.python.org/2/library/__future__.html)
  20. 20. 2+3 ПОМОЩНИКИ tox (http://tox.readthedocs.org/) __future__ импорты (http://docs.python.org/2/library/__future__.html) six (http://pythonhosted.org/six/)
  21. 21. ЧТО ДАЛЬШЕ? pull requests issues
  22. 22. ЕЩЕ ИНТЕРЕСНОЕ http://www.slideshare.net/it-people/ekbpy2012-python-3 http://www.slideshare.net/it-people/python-3-16964834
  23. 23. ВОПРОСЫ? NIKITA GRISHKO / HTTPS://GITHUB.COM/GR1N
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×