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

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

     26.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Интересные проекты, инструменты, библиотеки

bytecode - модуль для модификации байткода

from bytecode import Instr, Bytecode

bytecode = Bytecode()
bytecode.extend([Instr("LOAD_NAME", 'print'),
                 Instr("LOAD_CONST", 'Hello World!'),
                 Instr("CALL_FUNCTION", 1),
                 Instr("POP_TOP"),
                 Instr("LOAD_CONST", None),
                 Instr("RETURN_VALUE")])
code = bytecode.to_code()
exec(code)
Hello World!

     25.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Интересные проекты, инструменты, библиотеки

syncer - преобразуем асинхронные функции в синхронные

from syncer import sync
async def async_fun():
    ...
    return 1
b = sync(async_fun)  # now b is synchronous
assert 1 == b()

     25.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Интересные проекты, инструменты, библиотеки

workdir - изолированный временный файл

import workdir
import shutil
workdir.options.path = '~/.myfilecache'
with workdir.as_cwd():
    download_remote_archive('somefile')
    unpack_archive('somefile', 'somedir')
shutil.copy(workdir.path_to_file('somedir', 'unpackedfilefromarchive'),
            os.path.join('otherdir', 'unpackedfilefromarchive'))

     24.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Интересные проекты, инструменты, библиотеки

ProxyBroker - асинхронный граббер/чекер прокси [HTTP(S) & SOCKS]

Ищет по ~50 источникам, чекает на анонимность, проверяет поддерживаемые протоколы и страну нахождения прокси. В среднем находит ~7k HTTP(S) и ~500 SOCKS живых прокси.

import asyncio
from proxybroker import Broker

loop = asyncio.get_event_loop()

proxies = asyncio.Queue(loop=loop)
broker = Broker(proxies, loop=loop)

loop.run_until_complete(broker.find())

while True:
    proxy = proxies.get_nowait()
    if proxy is None: break
    print('Found proxy: %s' % proxy)

     23.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Интересные проекты, инструменты, библиотеки

django-server-metrics - отслеживаем потребление ресурсов Django приложения

Модуль позволяет отслеживать реальный трафик и потребление ресурсов

     22.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Интересные проекты, инструменты, библиотеки

django-issueinspector - отслеживаем состояние запросов (issues) в проектах на GitHub.

Сегодня выкладываю небольшое приложение для Django — django-issueinspector, позволяющее отслеживать состояние запросов (issues) в ваших проектах на GitHub. 

Оно может оказаться полезным тем, у кого много проектов, в которых периодически регистрируются запросы. Запросы эти проходят различные стадии и уместить все их в голове иногда бывает сложно. Данное приложение инспектирует ваши репозитории, находит в них открытые запросы, и, ориентируясь по комментариям, подсказывает вам, что можно предпринять, при этом для удобства выводит последний комментарий. Так, например, можно выявлять «зависшие» запросы — те, на которые забыли ответить вы, либо их автор.

     22.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Интересные проекты, инструменты, библиотеки

pygments-mathematica - подсветка кода Mathematica/Wolfram Language на основе Pygments

(* An example highlighting the features of
   this Pygments plugin for Mathematica *)
lissajous::usage = "An example Lissajous curve.\n" <>
                   "Definition: f(t) = (sin(3t + π/2), sin(t))"
lissajous = {Sin[2^^11 # + 0.005`10 * 1*^2 * Pi], Sin[#]} &;

With[{max = 2 Pi, min = 0},
    ParametricPlot[lissajous[t], {t, min, max}] /. x_Line :> {Dashed, x}
]