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

Собрали в одном месте самые важные ссылки
и сделали Тренажер IT-инцидентов для DevOps/SRE

     10.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Интересные проекты, инструменты, библиотеки

twitter-ads - клиент для рекламного Twitter API

Библиотека позволяет управлять рекламыми компаниями из Python кода

from twitter_ads.client import Client
from twitter_ads.campaign import Campaign

CONSUMER_KEY = 'your consumer key'
CONSUMER_SECRET = 'your consumer secret'
ACCESS_TOKEN = 'access token'
ACCESS_TOKEN_SECRET = 'access token secret'
ACCOUNT_ID = 'account id'

# initialize the client
client = Client(
    CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

# load the advertiser account instance
account = client.accounts(id=ACCOUNT_ID)

# load and update a specific campaign
campaign = account.campaigns().next()
campaign.name = 'updated campaign name'
campaign.paused = True
campaign.save()

# iterate through campaigns
for campaign in account.campaigns():
    print(campaign.id)

     09.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Интересные проекты, инструменты, библиотеки

pycachesim - симулятор иерархии кэша

Модуль позволяет имитировать различные уровни кэша. Такой функционал может быть полезен, как для обучения, так и для самостоятельной организации управления памятью (по скорости доступа) в вашей программе

     09.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Интересные проекты, инструменты, библиотеки

ping-me - система напоминалок в виде CLI

Модуль позволяет настроить напоминания о действиях. Например, "Позвонить Маме" и установить на конкретное время, по достижению этого времени на ваш телефон упадет смс.

     08.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Интересные проекты, инструменты, библиотеки

edutest - библиотека для проверки кода студентов

Самописная система для проверки работы кода. Библиотека подает на вход функции определенное значение, а результат сравниваем с эталонным. 

     08.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Интересные проекты, инструменты, библиотеки

vycro - обертка над VBA для Microsoft Excel.

from vycro import MacroWrapper

mw = MacroWrapper()
wb_kwargs = {"ReadOnly":"True"}
m_args = ["arg1", "True", "111"]
with mw.open_workbook("/full/path/with.extension", **wb_kwargs):
    mw.run_macro("macro_name", *m_args)  # See declaration for function args

     07.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Интересные проекты, инструменты, библиотеки

nzbhydra - мета-поиск по NZB индексаторов

NZB - это XML формат для пересылки постов из Usenet'а

     07.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Интересные проекты, инструменты, библиотеки

braindump - исходники органайзера заметок - https://braindump.pw/

Проект https://braindump.pw/ - это органайзер заметок

     06.12.2015       Выпуск 102 (30.11.2015 - 06.12.2015)       Интересные проекты, инструменты, библиотеки

cinje - шаблон движка DSL

Движок позволяет очень просто писать свои DSL

     05.12.2015       Выпуск 102 (30.11.2015 - 06.12.2015)       Интересные проекты, инструменты, библиотеки

Confit - система конфигурации на YAML

Confit - предоставляет общий API для конфигов. Конфиги можно комбинировать из нескольких файлов. 

     04.12.2015       Выпуск 102 (30.11.2015 - 06.12.2015)       Интересные проекты, инструменты, библиотеки

wavio - чтение, запись 24-битный WAV файлов с помощью numpy arrays

import numpy as np
import wavio

rate = 22050  # samples per second
T = 3         # sample duration (seconds)
f = 440.0     # sound frequency (Hz)
t = np.linspace(0, T, T*rate, endpoint=False)
x = np.sin(2*np.pi * f * t)
wavio.write("sine24.wav", x, rate, sampwidth=3)

     04.12.2015       Выпуск 102 (30.11.2015 - 06.12.2015)       Интересные проекты, инструменты, библиотеки

django-mongolog - логгер в mongo

LOGGING = {
    'handler': {
        'mongolog': {
            'level': 'WARN',
            'class': 'mongolog.MongoLogHandler',
            'connection': 'mongodb://localhost:27017/'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'mongolog'],
            'level': 'DEBUG',
            'propagate': True
        },
    },
}

     03.12.2015       Выпуск 102 (30.11.2015 - 06.12.2015)       Интересные проекты, инструменты, библиотеки

prwlock - многопоточный reader-writer lock

from prwlock.prwlock import RWLock

rwlock = RWLock()
from __future__ import print_function

import os
import time

from multiprocessing import Pool
from prwlock.prwlock import RWLock
def f(rwlock):
    for i in range(2):
        print(os.getpid(), 'Acquiring read lock')
        rwlock.acquire_read()
        print(os.getpid(), 'Sleeping for a while')
        time.sleep(1)
        print(os.getpid(), 'Releasing lock')
        rwlock.release()
        time.sleep(.1)

r = RWLock()
children = 20
pool = Pool(processes=children)
for child in range(children):
    pool.apply_async(f, [r])