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

Собрали в одном месте самые важные ссылки
и сделали Тренажер IT-инцидентов для DevOps/SRE

     12.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

График счастья с python, pandas и matplotlib

Зима — это по истине прекрасное время года. Но именно зимой я всегда задумываюсь о том, что встаю и ухожу на работу, а затем и возвращаюсь с работы, не видя солнечного света. Сегодня мне захотелось визуализировать данные о восходе и заходе солнца и соотнести их со столь привычным для многих распорядком дня (рабочие часы и время бодрствования). Для работы мы будем использовать Python (pandas + matplotlib). Посмотрим, что из этого получилось. 

     12.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

Стандарты симметричного шифрования стран СНГ на Python

Первые недели нового года самое подходящее время для того, чтобы уютно устроившись у окошка, вспомнить что же нам принес год ушедший. 
А принес он нам два новых стандарта шифрования. Российский стандарт ГОСТ Р 34.12-2015 (блочный шифр Кузнечик). И украинский ДСТУ 7624:2014 (блочный шифр Калина). Холодными, зимними вечерами нельзя упускать такой удачный повод покодить. Под катом краткое описание алгоритмов и их реализация на Python. А чтобы новым шифрам было веселее, разбавим их общество белорусским СТБ 34.101.31-2007.

     11.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

Рекурентная нейронная сеть в 10 строчек кода оценила отзывы зрителей нового эпизода “Звездных войн”

Hello, Habr! Недавно мы получили от “Известий” заказ на проведение исследования общественного мнения по поводу фильма «Звёздные войны: Пробуждение Силы», премьера которого состоялась 17 декабря. Для этого мы решили провести анализ тональности российского сегмента Twitter по нескольким релевантным хэштегам. Результата от нас ждали всего через 3 дня (и это в самом конце года!), поэтому нам нужен был очень быстрый способ. В интернете мы нашли несколько подобных онлайн-сервисов (среди которых sentiment140 и tweet_viz), но оказалось, что они не работают с русским языком и по каким-то причинам анализируют только маленький процент твитов. Нам помог бы сервис AlchemyAPI, но ограничение в 1000 запросов в сутки нас также не устраивало. Тогда мы решили сделать свой анализатор тональности с блэк-джеком и всем остальным, создав простенькую рекурентную нейронную сеть с памятью. Результаты нашего исследования были использованы в статье “Известий”, опубликованной 3 января.

     11.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Интересные проекты, инструменты, библиотеки

beaker-es-plot - Рисование графиков из ElasticSearch

Позволяет автоматически вытаскивать и группировать данные метрик и агрегаций из ElasticSearch, выводит данные в формате JSON Plot API для отображения графиков в Beaker Notebook.

     11.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

Использование LSM-движка из SQLite 4 в качестве отдельной NoSQL базы данных с использованием Python

На сегодняшний день две мои самые любимые темы — SQLite и key-value базы данных. И в этот раз я пишу сразу про обе: этот пост посвящён Python-обёртке для используемого в SQLite 4 key-value хранилища на основе LSM.

Разобравшись с исходным кодом SQLite 4 и крохотным заголовочным файлом LSM, я написал python-lsm-db (документация).

     11.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Интересные проекты, инструменты, библиотеки

python-sinklog - передаем логи через интернет

Модуль состоит из CLI программы и сервера, который умеет принимать/отдавать логи. 

Запуская лог в своей программе, вы передаете данные на сервер, и одновременно с этим можете начать читать их с другого источника.

     11.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Интересные проекты, инструменты, библиотеки

django-eventtools - модуль для создания и отображения событий на сайте

Пакет добавляет модели события(Event) и времени появления(Occurrence) с помощью которых можно создавать повторяющиеся/одноразовые события, а затем отображать их на сайте.

     13.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Релизы

Вышел Ansible 2.0

Этот релиз в первую очередь является масштабным рефакторингом, направленным на устранение technical debt, накопившегося за три года бурного роста до 1000 участников. Обещают обратную совместимость на уровне плейбуков, но API плагинов претерпел значительные изменения. Инструкция по портированию прилагается.

     11.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Интересные проекты, инструменты, библиотеки

mwclient - MediaWiki API client

# Initialize Site object
import mwclient
site = mwclient.Site('commons.wikimedia.org')
site.login(username, password)

# Edit page
page = site.Pages['Commons:Sandbox']
text = page.text()
print 'Text in sandbox:', text.encode('utf-8')
page.save(text + u'\nExtra data', summary = 'Test edit')

# Printing imageusage
image = site.Images['Example.jpg']
print 'Image', image.name.encode('utf-8'), 'usage:'
for page in image.imageusage():
        print 'Used:', page.name.encode('utf-8'), '; namespace', page.namespace
        print 'Image info:', image.imageinfo

# Uploading a file
site.upload(open('file.jpg'), 'destination.jpg', 'Image description')

# Listing all categories (don't do this in reality)
for category in site.allcategories():
        print category

     11.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Интересные проекты, инструменты, библиотеки

pddb - PandasDatabase - база данных поверх Pandas

pddb - база данных для небольших проектов, которая поддерживает CRUDL операции. 

С помощью bottle добавляется REST API

     12.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Релизы

coverage - 4.1b1

Утилита позволяющая измерить процент покрытия тестами. Изменения описаны по ссылке https://allmychanges.com/p/python/coverage/#4.1b1. Скачать можно по ссылке: http://pypi.python.org/pypi/coverage/

     10.01.2016       Выпуск 107 (04.01.2016 - 10.01.2016)       Статьи

Автоматический запуск Libre/OpenOffice в режиме прослушивания из Python

Libre/Open Office предоставляют возможность работы с офисом через UNO API. Для того, чтобы можно было обратиться к офису необходимо запустить его в режиме прослушивания. Например: soffice --accept="socket,host=localhost,port=2002;urp;" Данный подход вполне логичен и понятен с точки зрения разработчиков офиса, но несет ряд неудобств. В частности, нужно самостоятельно запускать Libre/Open Office в режиме прослушивания. Лично мне не понятно, почему разработчики поленились и не предоставили функции запуска офиса. Ну да ладно, было бы все сделано, не нужны были бы программисты. Посему будем решать задачу своими силами. 

     09.01.2016       Выпуск 107 (04.01.2016 - 10.01.2016)       Интересные проекты, инструменты, библиотеки

cython-construct - декларативно описываем работу с бинарными данными

Модуль для Cython, который позволяет упростить работу с бинарными данными

>>> from construct import *
>>>
>>> PascalString = Struct("PascalString",
...     UBInt8("length"),
...     Bytes("data", lambda ctx: ctx.length),
... )
>>>
>>> PascalString.parse("\x05helloXXX")
Container({'length': 5, 'data': 'hello'})
>>> PascalString.build(Container(length = 6, data = "foobar"))
'\x06foobar'