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

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

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

tryagain - модуль для повторения выполнения кода

Модуль подходит для повторного выполнения кода с каким-то условием. Например, что функция зависнет не более чем на 5 секунд

import tryagain

def unstable():
    ...

# retry calling 'unstable' until it returns without raising an exception
tryagain.call(unstable)

# limit to maximum 5 attempts
tryagain.call(unstable, max_attempts=5)

# only retry after specific exceptions
tryagain.call(unstable, exceptions=[ValueError, TypeError])

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

requests-cache-latest - персистентный(постоянный) кэш для библиотеки requests

import requests
import requests_cache

requests_cache.install_cache('demo_cache')

Код:

for i in range(10):
    requests.get('http://httpbin.org/delay/1')

Отработает в разы быстрее

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

pyriodic - планировщик задач на Python для запуска периодических задач

from pyriodic import DurationJob
from pyriodic import DatetimeJob
from pyriodic import Scheduler

now = datetime.now
s = Scheduler()

start = now()

def func1(arg1=None, arg2=None, arg3=None, arg4=None):
    print('Func1', arg1, arg2, arg3, arg4, now() - start, now())

def func2():
    print('Func2', now() - start, now())

def func3():
    print('Func3', now() - start, now())

s.add_job(DurationJob(func1,
                    when='30m',
                    args=('This', 'is'),
                    kwargs={'arg3': 'the', 'arg4': 'first function'},
                    name='MyJob'))
s.add_job(DurationJob(func2, when='2h'))
s.add_job(DatetimeJob(func3, when='12:00 pm'))

print(s.next_run_times())

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