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

Собрали в одном месте самые важные ссылки
консультируем про IT, Python


Новый материал в ленте
  Speeding Up Data Retrieval From PostgreSQL With Psycopg

Formatting and concatenating query result columns on the PostgreSQL side and then parsing them in Python might sometimes be faster than fetching the columns as separate values.


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

(18.01.2016 - 24.01.2016)

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

Статьи

  Linux в кармане — на службе у фотографа

Это рассказ, о том, как мне удалось сделать для себя инструмент, который с минимальным моим участием и минимальным дополнительным весом в рюкзаке, помогает сделать красивые слайдшоу. И конечно же рассказ о python, ffmpeg и linux на android.

  Примеры использования Walrus - легковесный Redis Toolkit

walrus это легковесная Python библиотека для Redis. В этой статье вы найдете экскурсию по библиотеки. Также показаны примеры использования.

  Давайте напишем простой интерпретатор. Часть 8

В этот раз автор расскажет о реализации унарных операций

  Разработка и разветывание Cookiecutter-Django на Fedora

Cookiecutter - это шаблоны проектов. В статье рассмотрен шаблон Django проекта

  FlyElephant как инструмент для вычислений на C++, R, Python или Octave

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

  Использование Bokeh в NIST

Статья описывает использование Python и Bokeh для построения графиков в National Institute of Standards and Technology (NIST) 

  Полно-текстовый поиск на Django используя базу данных (PostgreSQL, MySQL)

Статья показывает как реализовать полно-текстовый поиск на PostgreSQL и MySQL

  contextlib — Context Manager Utilities — PyMOTW 3

В contextlib модуль содержит утилиты для работы с контекстом и оператор with

  Зачем и как мы бэкапим github

Вообще лирическое вступление было навеяно вполне конкретной историей про сломанный гитхаб. Сделанная на заре одного из проектов синхронизация домашнего репо в гитхаб решила проблему переезда. Потом про костыль забыли. Древнее зло уснуло и терпеливо ждало своего часа. В один прекрасный день скайнет новый сотрудник решил привести в порядок тот самый домашний репозиторий. И самым популярным вопросом среди программистов в тот день было «коллега, а вы не видели мою ветку 0022? ну такая, с багфиксами». Руководство опс-тим было спокойно как никогда: гит — это распределенная система, версия кода хранится на персональном компьютере каждого разработчика. Давайте уже как-нибудь разберитесь между собой и не отвлекайте нас от сборки наших ядер и тюнингов сетевых стеков.

  Несколько камер на Raspberry Pi с OpenCV

Автор статьи продемострирует, как подключить несколько камер к вашей Raspberry Pi...и получить доступ ко всем из них, используя один скрипт на Python. 

Колонка автора

  Пишем простые проекты. Проект #1. Часть #1

Замечено, что новичкам трудно перейти от теории к практике - заставить себя писать, а не только читать. Чтобы помочь мы постоянно публикуем различный материал и указываем как применить эти знания на практике.

В этот раз решили написать 2 небольших проекта:

  • Первый - страница со статистикой отжимания. Будет показано, как с помощью flask + google chart's сделать проект для сохранения и визуализации количества отжиманий.
  • Второй - vk2rss - сервис для преобразования стен групп ВКонтакте в RSS. Будет рассмотрен парсинг, работа с VK API, создание простого GUI.

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

  tcconfig - утилита для контроля трафика

Утилита позволяет установить программную задержку, процент потерь

  Torrelque - асинхронные надежные очереди на основе Tornado и Redis

#!/usr/bin/env python3


import random
import logging

import tornadoredis
from tornado import gen, ioloop
from torrelque import Torrelque


logger = logging.getLogger(__name__)


@gen.coroutine
def produce():
    redis = tornadoredis.Client()
    queue = Torrelque(redis, ioloop.IOLoop.current())
    while True:
        for _ in range(5):
            task = {'value': random.randint(0, 99)}
            logger.debug('Produced task %s', task)
            yield queue.enqueue(task)
        yield gen.sleep(10)


@gen.coroutine
def process(task_data):
    logger.debug('Consmed task %s', task_data)
    yield gen.sleep(1)

@gen.coroutine
def consume():
    redis = tornadoredis.Client()
    queue = Torrelque(redis, ioloop.IOLoop.current())
    while True:
        task_id, task_data = yield queue.dequeue()
        if not task_id:
            continue
        try:
            yield process(task_data)
            yield queue.release(task_id)
        except Exception:
            logger.exception('Job processing has failed')
            queue.requeue(task_id, delay = 30)

@gen.coroutine
def main():
    for _ in range(4):
        ioloop.IOLoop.current().spawn_callback(consume)

    yield produce()


if __name__ == '__main__':
    logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s %(message)s')
    ioloop.IOLoop.instance().run_sync(lambda: main())

  zini - парсер INI-файлов с поддержкой схем и типов

Библиотека поддерживает несколько базовый типов данных. Ниша библиотеки - хранение сложных структур данных

  django-vimeo - приложение для вставки vimeo видео

{% load django_vimeo_tags %}

The video tag:
{% vimeo instance.video width=600 as video %}
   <video width="600" loop="loop" autoplay="autoplay" poster="{{ video.optimal_picture.link }}">
       <source src="{{ video.optimal_file.link_secure }}" type='{{ video.optimal_file.type }}'>
       {% trans 'tag "video" not supported by your browser' %}
       <a href="{{ video.optimal_download.link }}">{% trans 'download video' %}</a>.
   </video>
{% endvimeo %}

Or embed shortcut:
{% vimeo instance.video width=600 %}

  easy-class - модуль для создание классов с проверкой типов

from easy_class import EasyClass, StringVariable, IntegerVariable


class MyClass(EasyClass):
    attr1 = IntegerVariable()
    attr2 = StringVariable()

  streamexpect - кроссплатформенная библиотека для потоков и сокетов

import serial
import streamexpect

# timeout=0 is essential, as streams are required to be non-blocking
ser = serial.Serial('COM1', baudrate=115200, timeout=0)

with streamexpect.wrap(ser) as stream:
  stream.write('\r\nuname -a\r\n')
  match = stream.expect_bytes('Linux', timeout=1.0)
  print(u'Found Linux at index {}'.format(match.start))

  pyStopWatch - модуль реализации нескольких таймеров с одним секундомером

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

  pickleshare - небольшая 'shelve'-like БД с поддержкой параллельных запросов

from pickleshare import *
db = PickleShareDB('~/testpickleshare')
db.clear()
print "Should be empty:",db.items()
db['hello'] = 15
db['aku ankka'] = [1,2,313]
db['paths/are/ok/key'] = [1,(5,46)]
print db.keys()

  simiki - простой wiki framework

Демо по ссылке http://demo.simiki.org/

  tweet-preprocessor - модуль для очистки, парсинга, токенизации твиттов

Модуль подходит для препроцессинга твиттер данных для машинного обучения

  timeoutcontext - timeout context manager

Модуль реализован на основе модуля signal

from timeoutcontext import timeout, TimeoutException
from time import sleep

try:
    with timeout(1):
        sleep(2)
except TimeoutException:
    print('timeout')

  classifier - утилита, классифицируем файлы и раскладываем по папкам

До:

Downloads
│   ├── project.docx
│   ├── 21 Guns.mp3
│   ├── Sultans of Swing.mp3
│   ├── report.pdf
│   ├── charts.pdf
│   ├── VacationPic.png
│   ├── CKEditor.zip
│   ├── Cats.jpg
│   ├── archive.7z

После:

Downloads
│   ├── Music
│   │   └── 21 Guns.mp3
│   │   ├── Sultans of Swing.mp3
|   |
│   ├── Documents
│   │   └── project.docx
│   │   └── report.pdf
│   │   ├── charts.pdf
│   ├── Archives
│   │   └── CKEditor.zip
│   │   └── archive.7z
│   ├── Pictures
│   │   └── VacationPic.png
│   │   └── Cats.jpg

Релизы

  virtualenv - 14.0.1

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

  coverage - 4.1b2

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

  Файловый менеджер Sunflower 0.3

Sunflower — двухпанельный файловый менеджер, написанный на python с использованием тулкита GTK. Программа изначально спроектирована вокруг плагинной архитектуры и поддерживает пользовательские плагины. Разработка Sunflower нацелена на сочетание мощности и простоты использования, а также интеграцию в Gnome и другие рабочие окружения.

  robobrowser - 0.5.3

Простая библиотека для просмотра веб-страниц без веб-браузера.. Изменения описаны по ссылке https://allmychanges.com/p/python/robobrowser/#0.5.3. Скачать можно по ссылке: http://badge.fury.io/py/robobrowser

  pip - 8.0.2

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

  django-taggit - 0.18.0

Приложение для поддержки тегов в Django. Приложение будет крайне полезно на сайте с новостями, которые необходимо помечать тегами, так же можно легко реализовать сортировку по тегам.. Изменения описаны по ссылке https://allmychanges.com/p/python/django-taggit/#0.18.0. Скачать можно по ссылке: https://pypi.python.org/pypi/django-taggit/

  celery - 3.1

Распределенная очередь задач. Изменения описаны по ссылке https://allmychanges.com/p/python/celery/#3.1. Скачать можно по ссылке: http://pypi.python.org/pypi/celery/

  numpy - 1.12.0

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