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

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

     20.01.2016       Выпуск 109 (18.01.2016 - 24.01.2016)       Интересные проекты, инструменты, библиотеки

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 %}

     20.01.2016       Выпуск 109 (18.01.2016 - 24.01.2016)       Интересные проекты, инструменты, библиотеки

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()

     20.01.2016       Выпуск 109 (18.01.2016 - 24.01.2016)       Интересные проекты, инструменты, библиотеки

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

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

     19.01.2016       Выпуск 109 (18.01.2016 - 24.01.2016)       Интересные проекты, инструменты, библиотеки

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))

     18.01.2016       Выпуск 109 (18.01.2016 - 24.01.2016)       Интересные проекты, инструменты, библиотеки

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())

     18.01.2016       Выпуск 109 (18.01.2016 - 24.01.2016)       Интересные проекты, инструменты, библиотеки

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

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

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

jug - фреймворк для распределенных вычислений

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