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

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

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

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

pypugly - генератор HTML на основе JADE.

# Comments with '#'

# All code start with a dash (consistency).

# Define a variable like this:
-var name = 'PyPUGly'

# Define a function like this:
-def title(name):
  h1.title '{name}''

html(lang="en")
  head
    # All strings must be quoted. Only single-quotes are accepted (consistency).
    title 'This is {name}'
  body
    # Call a function like this:
    +title('PyPUGly')

    #container
      p 'Strings must be quoted.'

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

lexiconjure - twitter бот, который придумывает слова и определения

Работает бот с помощью RNN + генетического алгоритма

     21.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Интересные проекты, инструменты, библиотеки

pysdl2-sdl2ui - создаем UI с помощью pysdl2

class MyApp(sdl2ui.App):
    width = 256
    height = 224
    zoom = 3
    # NOTE: the fps you desire: less fps = less CPU usage
    fps = 30
    name = "My Application"
    # NOTE: order the handlers in what you want to display first
    default_handlers = [MainHandler, ListSelectorHandler, MenuHandler]
    default_resources = [('background', 'background.png')]


logging.basicConfig(level=logging.DEBUG)
app = Meldnafen(handlers=[sdl2ui.handler.DebuggerHandler])
app.loop()
del app

     21.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Интересные проекты, инструменты, библиотеки

p.url - пакет для парсинга ссылок

from purl import Purl

url = Purl('https://github.com/search?q=cat)

str(url.add_query('q', 'dog')) # => 'https://github.com/search?q=dog'
url = Purl('https://github.com/search)

str(url.add_query({
  'q': 'cat',
  'l': 'JavaScript',
  'type': 'Issues'
}))

url = Purl('https://github.com/search)

str(url.add_query('q', 'cat')
  .add_query('l', 'JavaScript')
  .add_query('type', 'Issues')) # => 'https://github.com/search?l=JavaScript&q=cat&type=Issues'