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

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


Новый материал в ленте
  Speeding Up Data Retrieval From PostgreSQL With Psycopg

Formatting and concatenating query result columns on the PostgreSQL side and then parsing them in Python might sometimes be faster than fetching the columns as separate values.


Python Дайджест. Выпуск 114

Медицинские утилиты, Javascript в Python

(22.02.2016 - 28.02.2016)

поделиться выпуском 
pythondigest.ru: Выпуск 114

Статьи

  Собственный модуль settings

Этот модуль родился в результате переосмысления (или недопонимания) мной вот этого пространного документа: Splitting up the settings file, размещённого на официальном сайте Django.

  Фоновое выполнение ячеек в IPython Notebook

Я много работаю с данными, поэтому практически все процессы у меня завязаны на Jupyter (IPython Notebook). Эта среда прекрасна и я её большой фанат. По сути, Jupyter — это обычная питоновая консоль и весь код там выполняется последовательно. Но иногда возникает желание запустить вычисления в ячейке и, не дожидаясь пока они закончатся, продолжить работу. Например, нужно скачать 1000 урлов и достать у них заголовки страниц. Хорошо бы запустить процесс скачивания и сразу начать отлаживать код для выделения заголовков.

  Мост на Go для JavaScript и Python

Соединяем JavaScript и Python

  fractions — Rational Numbers — PyMOTW 3

Модуль реализует численные операции для рациональных чисел

  Как я переизобрел словари в Python

В нашем Django-приложении необходимо было разработать отчет (расчет) бонусов.
Отчет должен иметь вложенную структуру с подведением итогов по пользователям, подразделениям и по всей компании. 

  Изучаем Python для Data Science

Автор делиться набором материалов для изучения Data Science через питон

  Web файловый менеджер Sprut.IO в OpenSource

В Бегете мы долго и успешно занимаемся виртуальным хостингом, используем много OpenSource-решений, и теперь настало время поделиться с сообществом нашей разработкой: файловым менеджером Sprut.IO, который мы разрабатывали для наших пользователей и который используется у нас в панели управления. Приглашаем всех желающих присоединиться к его разработке. О том, как он разрабатывался и почему нас не устроили существующие аналоги, какие костыли технологии мы использовали и кому он может пригодиться, расскажем в этой статье. 

Сайт проекта:https://sprut.io
Демо доступно по ссылке: https://demo.sprut.io:9443
Исходный код: https://github.com/LTD-Beget/sprutio

  Хуки — это просто (часть 3)

Как-то так получилось, что я написал на Хабре уже несколько статей о библиотеках для хуков. Первая была об общих принципах и реализации на базе Detours, вторая — о более дешевой (но не менее функциональной) библиотеке madCodeHook. Сегодня я расскажу об ещё одном варианте — библиотеке Deviare от компании Nektra. «Ещё одна точно такая же библиотека для хуков?» — спросите вы. «Такая же, да не такая» — отвечу я. У Deviare есть несколько особенностей, отличающих её и от Detours и от madCodeHook и делающей её в некоторых случаях намного более полезной.

  Импортируем Docker в Python и что-нибудь запускаем

Статья описывает как из Python кода обратиться в docker

Видео

  Кодирование/Декодирование космоса: Python приложения в астрофизике

Сегодня Python используется почти повсеместно в астрофизике: от моделирования изображения звезд и галактик до статического анализа данных. В докладе я дам общий обзор библиотек. А затем рассмотрю конкретный пример применения. Будет интересно - про темную материю, беспилотные аппараты для калибровки радиотелескопов.

Учебные материалы

  Как установить Django + Postgres + Nginx + Gunicorn на Ubuntu 14.04.

Подробная инструкция по установке и настройке Django + Postgres + Nginx + Gunicorn на «боевом» сервере с Ubuntu 14.04. в основе данной статьи лежит существенно изменённое и дополненное руководство «How To Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu 14.04» с сайта https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-14-04

Колонка автора

  Запустили tests.pynsk.ru

Однажды возникло два желания:

  • поиграться с возможностями Telegram
  • попробовать написать не скучные тесты по Python

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

Tests.pynsk.ru - это платформа для тестирования на основе telegram бота.

Интересные проекты, инструменты, библиотеки

  categorical_encoding - набор различных кодеров для sklearn

import category_encoders as ce

encoder = ce.BackwardDifferenceEncoder(cols=[...])
encoder = ce.BinaryEncoder(cols=[...])
encoder = ce.HashingEncoder(cols=[...])
encoder = ce.HelmertEncoder(cols=[...])
encoder = ce.OneHotEncoder(cols=[...])
encoder = ce.OrdinalEncoder(cols=[...])
encoder = ce.SumEncoder(cols=[...])
encoder = ce.PolynomialEncoder(cols=[...])

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

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

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

  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!

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

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

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

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

  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)

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

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

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

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

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

Релизы

  ptpython - 0.30

Хороший REPL для Python. Изменения описаны по ссылке https://allmychanges.com/p/python/ptpython/#0.30. Скачать можно по ссылке: https://pypi.python.org/pypi/ptpython