Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ПОРТИРУЕМ НА 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
×
Upcoming SlideShare
Недостатки Python
Next
Download to read offline and view in fullscreen.

0

Share

Download to read offline

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

Download to read offline

Почему стоит все чаще задумывать о поддержке 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)

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

Портируем на 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

Почему стоит все чаще задумывать о поддержке 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)

Views

Total views

947

On Slideshare

0

From embeds

0

Number of embeds

2

Actions

Downloads

15

Shares

0

Comments

0

Likes

0

×