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

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


Новый материал в ленте
  Sphinx - 8.2.0

Python генератор документации. Скачать можно по ссылке: https://pypi.python.org/pypi/Sphinx/


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

(14.12.2015 - 20.12.2015)

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

Статьи

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Видео

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

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

  Основы REST API и OAuth2

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

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

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

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

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

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

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

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

  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'}]

  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.

  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

  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 вектор и различные прямоугольники

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

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

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

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

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

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

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

Релизы

  cffi - 1.4.1

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

  colorama - 0.3.4

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

  django-extensions - 1.6.1

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

  requests - 2.9.0

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