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

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

     10.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Колонка автора

Python уроки: Введение в тестирование на Python

Этот урок имеет вводный характер и знакомит с общей информацией о тестировании и простой конструкцией, которая позволяет значительно улучшить Python-код.

Тестирование программного обеспечения (Software Testing) - проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая при конечном наборе тестов, выбранном определенным образом. [IEEE Guide to Software Engineering Body of Knowledge, SWEBOK, 2004]

     09.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

Сравниваем цены в книжных интернет магазинах c помощью python, pandas и matplotlib

Сегодня мы попробуем найти самый дешевый и самый дорогой интернет магазин книг.
Сравнивать будем бумажные книги, которые есть в наличии. В разных магазинах очень разное количество книг. Где-то менее 1000, а где-то более 200 000 книг. 

     09.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Интересные проекты, инструменты, библиотеки

gmusicapi - неофициальный API для Google Play Music

from gmusicapi import Mobileclient

api = Mobileclient()
api.login('user@gmail.com', 'my-password', Mobileclient.FROM_MAC_ADDRESS)
# => True

library = api.get_all_songs()
sweet_track_ids = [track['id'] for track in library
                   if track['artist'] == 'The Cat Empire']

playlist_id = api.create_playlist('Rad muzak')
api.add_songs_to_playlist(playlist_id, sweet_track_ids)

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Интересные проекты, инструменты, библиотеки

arduinoserial - интерфейс для работы с serial портами на Arduino

import arduinoserial

arduino = arduinoserial.SerialPort('/dev/ttyUSB0', 19200)
print arduino.read_until('\n')
arduino.write('a5050')

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

Определяем фигуры с помощью OpenCV

Это вторая часть о поиске объектов. Сегодня мы будем использовать контуры чтобы идентифицировать фигуры в изображение.

shape_detection_results

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

asyncio — Asynchronous I/O, event loop, and concurrency tools — PyMOTW 3

Модуль предоставляет средства для создания параллельных приложений с использованием сопрограмм. 

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Интересные проекты, инструменты, библиотеки

pyqtool - утилита поиска Python кода с помощью jQuery-подобных селекторов

❯ pyq3 'class:extends(IntegerField)' django/forms
django/forms/fields.py:278 class FloatField(IntegerField):
django/forms/fields.py:315 class DecimalField(IntegerField):

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

Полноценный REST API для перфекционистов за 5 минут

Речь пойдёт об инструменте, который позволит вам построить полноценный и простой в использовании REST API за минимальное количество времени. Называется он – Python Eve.

К сожалению в Интернете очень много инструкций на эту тему, но все они вводят в заблуждение. Начинающие разработчики, начитавшись подобных статей, думают, что REST API это GET/POST/PUT/DELETE. Заказчики думают, что это дело пары часов. А когда они встречаются вместе, происходят магия в виде Express.js/Mongoose/Passport и ещё кучи хлама, который течёт и временами блокирует event-loop. Всё это запускается с помощью какого-нибудь supervisor, потому что иногда падает и надо как-то перезапускать. 

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Колонка автора

Интересные концепции: REPL (Read-eval-print loop)

REPL (Read-eval-print loop) — простая интерактивная среда программирования.

В такой среде пользователь может вводить выражения, которые среда тут же будет вычислять, а результат вычисления отображать пользователю. Название read-eval-print loop происходит от имён примитивов языка Lisp, которые реализуют подобную функциональность

Зачем нужен REPL? Очевидно что REPL нужен для обучения, проверки каких-то идей/кода, чтобы вспомнить как работает какой-то метод, для замены калькулятора, иными словаи когда цикл "Написал код -> запустил -> посмотрел результат" должен быть минимальным по времени.

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Интересные проекты, инструменты, библиотеки

pyfastcopy - модуль для ускорения операции shutil.copyfile

Модуль ускоряет работу shutil.copyfile с помощью системного вызова sendfile

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Интересные проекты, инструменты, библиотеки

ipytest - Unit тесты в IPython notebooks.

Модуль позволяет упростить написание unit-тестов в IPython 

     07.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Интересные проекты, инструменты, библиотеки

ballpark - человеко-понятное представление чисел

>>> from ballpark import human, scientific, engineering, business
>>> business([11234.22, 233000.55, 1175125.2])
['11K', '233K', '1,180K']
>>>
>>> # or use the shortcut functions
>>> from ballpark import H, S, E, B
>>> B([11234.22, 233000.55, 1175125.2])
['11K', '233K', '1,180K']
>>>
>>> # all notations accept single numbers too, but then we can't
>>> # guarantee that all numbers will have the same prefix (kilo, mega etc.)
>>> [B(value) for value in [11234.22, 233000.55, 1175125.2]]
['11.2K', '233K', '1.18M']

     07.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Статьи

Мониторинг выполнения задач в IPython Notebook

Хотел бы поделиться простым, но полезным инструментом. Когда много работаешь с данными, часто возникают примитивные, но долгие операции, например: «скачать 10 000 урлов», «прочитать файл на 2Гб, и что-то сделать с каждой строчкой», «распарсить 10 000 html-файлов и достать заголовки». Долго смотреть в зависший терминал тревожно, поэтому долгое время я использовал следующий гениальный код: