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

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


Новый материал в ленте
  coverage - 7.6.10

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


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

(14.12.2015 - 20.12.2015)

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

Статьи

  Умножение по методу русских крестьян

Иногда этот метод называют «крестьянское умножение», иногда «древнеегипетское», иногда «эфиопское», иногда «умножение через удвоение и деление пополам». Некоторым он хорошо известен, некоторым – непонятен, но при этом он достаточно полезен и может использоваться не только для умножения, но и для возведения в степень и расчётов матриц.

  Внутреннее устройство Python list

Предлагаю вашему вниманию перевод публикации Laurent Luce о реализации работы со списками в CPython. Она может быть полезна начинающим программистам на Python, либо готовящимся к собеседованию.

Эта статья описывает реализацию объекта списка в CPython, наиболее популярной реализации Python. Списки в Python — это мощный инструмент, и интересно узнать, как они устроены внутри. Взгляните на простой скрипт, который добавляет несколько целых значений в список и выводит их:

  Проверка теории шести рукопожатий

Формулировка задачи: визуализировать все связи между двумя пользователями внутри одной социальной сети. При этом связи не должны дублироваться, например если Ваня знает Петю через Олю, то Оля в дальнейших итерациях по поиску общих друзей не участвует. Чтобы попрактиковаться в API, я выбрал “Вконтакте”.

  Selenium для Python. Глава 5. Ожидания

В наши дни большинство веб-приложений используют AJAX технологии. Когда страница загружена в браузере, элементы на этой странице могут подгружаться с различными временными интервалами. Это затрудняет поиск элементов, если элемент не присутствует в DOM, возникает исключение ElementNotVisibleException. Используя ожидания, мы можем решить эту проблему. Ожидание дает некий временной интервал между произведенными действиями — поиске элемента или любой другой операции с элементом.

Selenium WebDriver предоставляет два типа ожиданий — неявное (implicit) и явное (explicit). Явное ожидание заставляет WebDriver ожидать возникновение определенного условия до произведения действий. Неявное ожидание заставляет WebDriver опрашивать DOM определенное количество времени, когда пытается найти элемент.

  PyLOO — Библиотека для генерации отчетов, счетов Libre/Open Office на Python

 

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

Проекты, в которых возникала данная задача:
 

  • складской учет
  • учет объектов недвижимости
  • документооборот

  Как я отлаживал python httplib и httplib2

Понадобилось мне однажды у себя в проекте реализовать работу с файловым хранилищем с использованием HTTP REST API. Проект разрабатывается на python, к тому же уже был реализован http-клиент с использованием библиотеки httplib2, поэтому было решено расширить функциональность http-клиента и работать с файловым хранилищем через туже библиотеку. Проблема возникла при загрузке файлов на сервер. Первый PUT запрос выполняется, далее все последующие запросы отказываются выполняться — 500Internal Server Error.

  Django. Знакомство с ElasticSearch

Понадобилось на одном из своих проектов установить FTS сервис. Я достаточно долгое время пользовался SphinxSearch, но решил поинтересоваться у общественности (тут итут) какой сейчас инструмент более популярен и отвечает следующим требованиям:

  Парсинг формул в 50 строк на Python

Вдохновение — задача с собеседования Яндекса и статья «Парсинг формул в 40 строк». Моей целью было посмотреть, как будет выглядеть «pythonic» решение этой задачи. Хотелось, чтобы решение было простым, код читаемым и разделённым. В итоге ещё получился и пример применения цепочки генераторов (generators pipeline). 

  Как сделать Python таким же быстрым, как Julia

Статья рассказывает об оптимизации Python кода на примере задач-число дробилок. Применяются Numpy, Numbu, Cython

  Python не C: часть два

Статья про инструменты оптимизации кода на Python. В материале вы найдете упоминание numpy, scipy, векторизации данных и варианты оптимизации кода, который работает с деревьями

  Мысли разработчика: почему существует Python3

Один из core-разработчиков делится своими мыслями о причине создания Python3.

  Городской чат на Python, Django и Twilio IP Messaging

Статья описывает опыт создания чата привязанного к гео-позиции. 

  Распознаем улыбки с помощью OpenCV и scikit-learn

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

  Синхронный код в асинхронном Twisted, или сказ о том, как скрестить ежа с ужом

Twisted — асинхронный (событийно-ориентированный) фреймворк, написанный на Python. Мощное средство для быстрой разработки сетевых (и не только) сервисов. Он разработан с использованием паттерна проектирования Reactor. Сервисы созданные с использованием Twisted быстры и надежны, фреймворк позволяет не писать макаронный код, насыщенный непонятными коллбэками, имеет внутри себя красивые хелперы (Deferred, Transport, Protocol etc). Другими словами, делает нашу жизнь бекенд разработчиков лучше.
Но есть и проблемы

  Python->Cython->C++, да и COM в придачу: написание фреймворка для автотестов

Я думаю все в курсе о пользе автотестов. Они помогают держать код в работоспособном состоянии даже при существенных изменениях. Так же это может избавить тестировщиков от нудной ручной работы и позволяет сосредоточиться на более интересных видах тестирования.

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

Как писать хорошие автотесты – тема отдельной статьи. И, вероятно, не одной. Я же расскажу вам как мы внедрили тестирование отдельных компонентов. Компоненты написаны на С++ и имеют интерфейсы очень похожие на СОМ. В качестве языка для тестов мы выбрали python и используем очень мощный тестовый фреймворк PyTest. В статье я расскажу про сложности связки С++/СОМ и питона, подводные камни, на которые мы наткнулись и как решали эти проблемы.

  Изучаем граф-ориентированную СУБД Neo4j на примере лексической базы Wordnet

СУБД Neo4j — это NoSQL база данных, ориентированная на хранение графов. Изюминкой продукта является декларативный язык запросов Cypher.

Cypher позаимствовал ключевые слова типа WHERE, ORDER BY из SQL; синтаксис из таких разных языков как Python, Haskell, SPARQL; и в результате появился язык, позволяющий делать запросы к графам в визуальной форме наподобие ASCII art. Например, заголовок данной статьи я бы представил в виде графа (Neo4j) — [изучаем] -> (Wordnet). И это почти готовый запрос к базе данных!

  Selenium для Python. Глава 6. Объекты Страницы

Продолжение перевода неофициальной документации Selenium для Python.
Оригинал можно найти здесь.

  Сборка XGBoost для Python под Windows

Библиотека XGBoost гремит на всех соревнованиях по машинному обучению и помогает завоёвывать призовые места. Однако, стать обладателем этого пакета для Python под Windows не так просто.

Процесс установки скудно описан на GitHub и немногим шире на форуме Kaggle. Поэтому попробую описать пошагово и более подробно. Надеюсь это поможет сохранить много времени неопытным пользователям.

Видео

  Мир Python: функционалим с помощью библиотек

Мы рассмотрим популярные библиотеки для функционального программирования на Python — fn.py, functools, itertools, funcy, hask. Узнаем о возможностях каждой из них, а также о том, как в динамическом языке имитировать мощную систему типов. Затронем характеристики функционального программирования.

  Ускорение Python программ с помощью AMD APU + numba

Из вебинара вы узнаете как ускорить программы на Python с помощью встроенного GPU AMD APU. Для этого будет использоваться Numba

  Основы REST API и OAuth2

В ходе этого выступления мы создадим веб-приложение на Django, при помощи которого продемонстрируем всем желающим, как может быть реализован согласованный с принципами REST программный интерфейс к нему, а также узнаем для чего нужны подобные интерфейсы. Помимо принципов REST, будет затронута тема ограничения доступа к веб-ресурсам при помощи OAuth2 (с примерами использования приложения django-oauthost).

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

  pyramid_jwt - JWT авторизация для Pyramid

Модуль добавляет поддержку авторизации с помощью JSON Web Tokens

  pyrobuf - реализация Google's Python Protobuf на Cython

pyrobuf - генерирует Cython код для работы с protobuf. Что ускоряет работа библиотеки на чистом Python в 20-40 раз, а С++ реализацию протобафа в 2-4 раза.

> python tests/perf_test.py

Google took 1.649168 seconds to serialize

Pyrobuf took 0.825525 seconds to serialize

Google took 1.113041 seconds to deserialize

Pyrobuf took 0.466113 seconds to deserialize

  vecrec - 2D вектор и различные прямоугольники

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

  httpretty - mock HTTP-клиента на Python

Модуль позволяет имитировать HTTP-запросы.

  smartbot - набор полезных ботов для telegram и slack

В репозитории вы найдете интересную реализацию множества ботов (через определение поведения)

А также целый набор готовых ботов:

  • Wolfram: Use wolfram knowledge system to query sentences;
  • Evi: Use evi knowledge system query sentences;
  • Google Image: Use google image to search images;
  • Bing Image: Use bing image to search images;
  • Translate: Use bing translator to translate sentences;
  • Talk: Use bing text-to-speech to convert text in spoken sentences;
  • Joke: Use PiadasNet to search jokes;
  • Nasa: Retrieve Nasa Image Of The Day;
  • Friendly: Redirect metioned interaction to behaviours;
  • Loader: Enable/Disable behaviours on the fly.

  jarmanifest - утилита для парсинга Java Manifest файлов

$ python3
>>> from jarmanifest import manifest
>>> manifest.getAttributes('/tmp/spring/META-INF/MANIFEST.MF')
[{'implementationtitle': 'org.springframework.core', 'implementationversion': '3.1.3.RELEASE'}]

  Unishark - обертка над unittest от twitter

Unishark поможет вам:

- писать конфигурацию для тестов в yaml или json стиле - запускать тесты параллельно на разных уровнях

- генерировать отчеты в форматах HTML или XUnit - ускорить написание тестов с помощью новых декораторов

  ntfy - утилита для посылки push notifications


# send a notification
ntfy send "Here's a notification!"

# send a notification with custom title (default is $USER@$HOST)
ntfy send -t 'ntfy' "Here's a notification with a custom title!"

# send a notification when the command `sleep 10` finishes
# this send the message '"sleep 10" succeeded in 0.2 minutes'
ntfy done sleep 10

  Layered – нейронные сети на Python 3

Еще один модуль для реализации нейронных сетей. В данном случае оптимизации сделаны на обработку рукописных чисел.

Релизы

  cffi - 1.4.1

Интерфейс для вызова C-кода. Изменения описаны по ссылке https://allmychanges.com/p/python/cffi/#1.4.1. Скачать можно по ссылке: http://pypi.python.org/pypi/cffi/

  requests - 2.9.0

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

  django-extensions - 1.6.1

Набор пользовательских расширений для Django-проектов. Изменения описаны по ссылке https://allmychanges.com/p/python/django-extensions/#1.6.1. Скачать можно по ссылке: https://pypi.python.org/pypi/django-extensions

  colorama - 0.3.4

Кросс-платформенный цветной терминал текста.. Изменения описаны по ссылке https://allmychanges.com/p/python/colorama/#0.3.4. Скачать можно по ссылке: https://pypi.python.org/pypi/colorama