IT-новости про Python, которые стоит знать

Собрали в одном месте самые важные ссылки
читайте нас в Telegram


Новый материал в ленте
  tornado - 6.4.2

Масштабируемый, не блокирующий web-сервер. Скачать можно по ссылке: https://pypi.python.org/pypi/tornado/


Python Дайджест. Выпуск 110

(25.01.2016 - 31.01.2016)

поделиться выпуском 
pythondigest.ru: Выпуск 110

Новости

  Патч может ускорить CPython на 5-10%

По ссылке вы найдете письмо из рассылки, который описывает способ ускорения Python на 5-10%.

  PEP 0513 -- стандартизация сборки python-пакетов для linux дистрибутивов

Этот PEP предполагает добавление тега и стандарта для сборки пакетов для Linux. Смысл в том, что разные дистрибутивы, да и даже разные машины с одним дистрибутивом могут быть несовестимы полностью.

  warehouse.python.org - обновленный PyPi

Спустя много лет после запуска PyPi Python Software Foundation решили обновить сайт PyPi (на нем хранятся Python модули). Цели изменения - упростить жизнь разработчикам и пользователям, улучшить дизайн (упростить читаемость сайта). Новый сайт пока еще в состоянии разработки, но уже известно, что дизайном разработчики не ограничатся - будет написана инструкция для пользователей.

Статьи

  Как импортировать модуль в Python

Любой модуль Python - это вещь в себе, и ни один другой модуль не сможет использовать объявленную в нем сущность, пока не выполнит операцию импорта. 

  TensorFlow и логистическая регрессия

После непродолжительной, но весьма кровавой войны мне все-таки удалось откомпилировать и собрать TensorFlow для GPU с CUDA capability=3.0. Теперь можно погрузиться в него основательно, потому что машинное обучение с GPU — это быстро, легко и приятно, а без GPU — порой лишь огромная потеря времени. Попробуем запрограммировать самую простейшую логистическую регрессию. 

  Про построение и использование функции "среднее с учетом веса"

Статья вводная, описывает ситуации, когда необходимо считать среднюю с учетом веса. Рассказно как использовать ее в Pandas

  Реализуем свой спам-фильтр

Статья описывает создание спам фильтра в 100 строк на Python

  atexit - PyMOTW 3 - запускаем функцию после завершения программы

Модуль atexit предоставляет интерфейс регистрации функции для запуска кода после завершения программы.

  Python компилятор Nuitka, прогресс за 2015

Статья описывает прогресс в развитии Nuitka за 2015 год. Описаны и планы на будущее, среди самого интересного - план реализовать вывод типов.

  How-to: Объектно-ориентированная система бэктестинга на Python

Известный британский трейдер и разработчик Майк Халлс-Мур написал в своем блоге статью о том, как создать объектно-ориентированную систему бэктестинга финансовых стратегий торговли на бирже. Мы представляем вашему вниманию главные мысли этого материала.

  Пирожки в дистрибутивной семантике

Уже несколько месяцев с любопытством гляжу в сторону дистрибутивной семантики — познакомился с теорией, узнал про word2vec, нашёл соответствующую библиотеку для Питона (gensim) и даже раздобыл модель лексических векторов, сформированную по национальному корпусу русского языка. Однако для творческого погружения в материал не хватало душезабирающих данных, которые было бы интересно через дистрибутивную семантику покрутить. Одновременно с этим увлечённо почитывал стишки-пирожки(эдакий синтез задиристых частушек и глубокомысленных хокку) — некоторые даже заучивал наизусть и по случаю угощал знакомых. И вот, наконец, увлечённость и любопытство нашли друг друга, породив воодушевляющую идею в ассоциативных глубинах сознания — отчего бы не совместить приятное с полезным и не собрать из подручных средств какой-нибудь «поэтичный» поисковик по базе пирожков.

  От Python к OCaml: ретроспектива

Автор рассказывает о своем путе перехода с языка Python на OCaml

  Real-time панорамы и сшивание изображение с помощью OpenCV

<a href="http://www.pyimagesearch.com/wp-content/uploads/2016/01/realtime_panorama_stitching_animation.gif"><img class="aligncenter size-full wp-image-3594" src="http://www.pyimagesearch.com/wp-content/uploads/2016/01/realtime_panorama_stitching_animation.gif" alt="realtime_panorama_stitching_animation" width="500" height="313"></a>

  Python и красивые ножки — как бы я знакомил сына с математикой и программированием

Раньше мы уже искали необычные модели Playboy с помощью библиотеки Python Scikit-learn. Теперь мы продемонстрируем некоторые возможности библиотек SymPy, SciPy, Matplotlib и Pandas на живом примере из разряда занимательных школьных задач по математике. Цель — облегчить порог вхождения при изучении Python библиотек для анализа данных. 

  От Python к Lua: почему мы сменили?

Проект www.distelli.com рассказывает об смене языка Python на Lua.

  Учебные материалы для Python тестирования - книга и подкаст

Нед Батчелдер рассказывает об интересных учебных материалов для тестирования на Python за эту неделю

Видео

  Natural Language Processing с PySpark

Готовый выйти за рамки Word Count? Джон Хог совершит вместе с вами прогулку и расскажет на практическом примере обработки данных работу с PySpark и ML.  Научитесь использовать библиотеки Python из Spark, такие как NLTK

Учебные материалы

  Введение в Django

В курсе изучается фреймворк Django, его основные возможности и некоторые прикладные задачи его использования в современной веб разработке.

Интересные проекты, инструменты, библиотеки

  mattermost_bot - простой бот для MatterMost

Написание ботов не такая простая задача, как кажется. Необходимо учесть сценарии использования, пройти через дебри настроек и отладки, наладить мониторинг.

Мы консультируем по написанию ботов - обращайтесь https://t.me/axsapronov. Подскажем как разработать бота наиболее быстро

  django-multiurl - назначаем один URL на разные Django view

urlpatterns = [
    multiurl(
        url('/app/(\w+)/$', app.views.people),
        url('/app/(\w+)/$', app.views.place),
        catch = (Http404, ContinueResolving)
    )
]

  linkchecker-tryer - утилита перепроверки битых ссылок на сайте с помощью linkchecker

linkchecker - позволяет проверить сайт на битые ссылки

  django-telegram-bot - Django приложение для написания Telegram bot'ов

Позволяет реализовывать только команды, а приложение само будет перехватывать запросы.

  selfspy - утилита для сборки логов со всего компьютера

Утилита может выступать в роли демона, который собирает активность на всем компьютере. Есть возможность отправлять логи по email

  socialauth - фреймворк для авторизации в соц.сетях. (поддерживает Twitter, Facebook)

Использует JSON веб токены вместо сессий.

Сейчас есть поддержка Twitter, Facebook

  pytest_browserstack - Py.test плагин для BrowserStack

BrowserStack - система тестирования web-приложений 

  kaggle-dsb2-keras - туториал использования Keras-библиотеки для Kaggle 2nd Annual Data Science Bowl

Репозиторий содержит тестовый набор данных, модели, набор необходимых библиотек

  json-sempai - доступ к json-файлам как к python модулям

{
    "hello": "world",
    "this": {
        "can": {
            "be": "nested"
        }
    }
}
>>> from jsonsempai import magic
>>> import tester
>>> tester
<module 'tester' from 'tester.json'>
>>> tester.hello
u'world'
>>> tester.this.can.be
u'nested'
>>>

  simpletcp - небольшой не-блокирующий TCP сервер на Python3

В этом репозитории вы найдете пример TCP сервера на Python. Код изобилует комментариями

  flyover - "какой самолет летит прямо сейчас надомной?"

Модуль позволяет получить информацию о самолетах с привязкой к координатам

  Signaller - реализация механизма "сигналы-слоты" с поддержкой asyncio

from signaller import Signal

logging.basicConfig(level=logging.DEBUG)

def slot(arg):
    print('slot:', arg)

# Creating signals (you can set signal name, but it is not required,
# signals can be anonymous):
sig_test = Signal('sig_test')

# Connecting signals to slots (uses weak references by default,
# but you can force strong references by specifying weak=False):
sig_test.connect(slot)
sig_test.connect(lambda arg: print('slot_lambda:', arg), weak=False)

# You can also use decorators for connecting signals to slots:
@sig_test.connect
def slot2(arg):
    print('slot2:', arg)

# And weak=False can be specified when using decorators too:
@sig_test.connect(weak=False)
def slot3(arg):
    print('slot3:', arg)

# Slots are automatically disconnected from signals
# when using weak references:
del slot2

# Or you can disconnect slots manually:
sig_test.disconnect(slot3)

# Emitting signals (you can send positional and keyword
# arguments to connected slots):
sig_test.emit('Hello world!')

  whatportis - утилита, определяем на каком порту висит сервер

$ whatportis redis
+-------+------+----------+---------------------------------------+
| Name  | Port | Protocol | Description                           |
+-------+------+----------+---------------------------------------+
| redis | 6379 |   tcp    | An advanced key-value cache and store |
+-------+------+----------+---------------------------------------+

  pydocstyle - скрипт проверки PEP 257 в коде (проверяет стиль форматирования docstring)

$ pep257 test.py
test.py:18 in private nested class `meta`:
        D101: Docstring missing
test.py:22 in public method `method`:
        D102: Docstring missing
...

  pytest_click - Py.test плагин для модуля Click (модуль для создания CLI)

import click


def test_cli(cli_runner):

    @click.command()
    @click.argument('name')
    def hello(name):
        click.echo('Hello %s!' % name)

    result = cli_runner.invoke(hello, ['Peter'])
    assert result.exit_code == 0
    assert result.output == 'Hello Peter!\n'

  dtags - утилита для сохранения путей до git репозиториев в виде тегов

~$ tag ~/frontend @frontend
~$ tag ~/backend @backend
~$ tag ~/frontend ~/backend @work
~$ tag ~/db @vm
~$ tag ~/web @vm

# Or equivalently
~$ tag ~/frontend @frontend @work ~/backend @backend @work ~/db ~/web @vm

# All tag names must begin with the @ symbol
# Execute 'git fetch origin' in all directories tagged @project
~$ run @project git fetch origin

# Execute 'git status -sb' in all directories tagged @frontend and @backend
~$ run @frontend @backend git status -sb

# Execute 'vagrant status' in all directories tagged @vms
~$ run @vms vagrant status

# Directory paths can be specified along with tags
~$ run @backend ~/scripts ~/redis ls -la

# The command can be executed in parallel as long as it doesn't wait for input
~$ run -p @backend 'sleep 5 && echo done'
~$ run -p @project git pull
~$ run -p @vms vagrant up

Релизы

  virtualenv - 14.0.3

Инструмент создания виртуального рабочего окружения. Изменения описаны по ссылке https://allmychanges.com/p/python/virtualenv/#14.0.3. Скачать можно по ссылке: http://pypi.python.org/pypi/virtualenv/

  Pyramid 1.6

Вышла новая версия веб фреймворка Pyramid. Из особенностей можно отметить поддержку Cache busting.

  django-htmlmin - 0.9.0

Минификатор HTML для уменьшения веса страницы, повышения быстроты загрузки сайта и уменьшение трафика. Минификатор полноценно поддерживает HTML 5, поддерживается работа из консоли для минификации статических сайтов. Изменения описаны по ссылке https://allmychanges.com/p/python/django-htmlmin/#0.9.0. Скачать можно по ссылке: https://pypi.python.org/pypi/django-htmlmin/