Лучшие проекты, в которых стоит поучаствовать, чтобы примкнуть к Open Source движению и развить свои навыки. Часть четвертая. Python

Если вы интересуетесь жизнью Open Source сообщества и хотите к нему присоединиться, то эта серия подборок придётся вам как нельзя кстати, ведь в ней собраны лучшие проекты с открытым исходным кодом. В четвертой части серии вы найдёте самые интересные Open Source проекты на Python. 

Python

TensorFlow —  библиотека для численных расчётов с использованием графов потока данных. Вершины графа — это математические операции, а рёбра — многомерные массивы данных (тензоры). Гибкость такой архитектуры позволяет использовать один и тот же код на разных системах.


Elizabeth — это простой способ генерировать тестовые данные (dummy data) для различных целей. Elizabeth использует основанное на JSON хранилище данных и зависит только от стандартной библиотеки. Есть возможность генерировать данные 18 разных типов: связанные с едой, людьми, аппаратным обеспечением, перевозками, адресами и т.д.

Пример использования:

>>> from elizabeth import Personal
>>> p = Personal('en')
>>>
>>> p.full_name(gender='female')
'Antonetta Garrison'
>>> p.blood_type()
'O-'
>>> p.occupation()
'Programmer'

При запросе данных можно указать язык или страну, и данные будут соответствовать запросу. Пока что поддерживается 20 языков, русский в том числе.

Пример интеграции с Flask:


Pipenv — это экспериментальный проект, целью которого является облегчение работы с пакетами. Он объединяет Pipfile, pip и virtualenv.


The Numenta Platform for Intelligent Computing (NUPIC) — это платформа для реализации обучающих алгоритмов HTM. В частности, используется для распознавания аномалий и предсказания.

Поддержка: Python 2


Flask — это микрофреймворк, основанный на Werkzeug и Jinja2.


Django — это высокоуровневый фреймворк для веб-разработки.


expynent — это маленькая библиотека, предоставляющая RegEx-шаблоны. Пригодится, если лень писать регулярки самому.

Примеры:

import re
import expynent.patterns as expas

if re.match(expas.ZIP_CODE['RU'], '43134'):
    print('match')
else:
    print('not match')

# Output: 'not match'
from expynent.compiled import username

u = input('Enter username: ')

if username.match(u):
    print('valid')
else:
    print('invalid')

Universe — это платформа для измерения “ума” ИИ и его обучения на большой коллекции игр, сайтов и приложений.

Поддержка: Python 2/3


Theano  —  библиотека, позволяющая задавать, оптимизировать и вычислять математические выражения с многомерными массивами. Для расчётов можно использовать GPU.

Поддержка: Python 2/3


http-prompt —  интерактивный HTTP-клиент в командной строке.

Поддержка: Python 2/3


falcon —  высокопроизводительный фреймворк для создания облачных API.

Поддержка: Python 2/3


eve —  фреймворк для создания настраиваемых RESTful веб-сервисов.

Поддержка: Python 2/3


plotly.py —  интерактивная библиотека для создания графиков.

Поддержка: Python 2/3


cerberus  —  лёгкая библиотека для валидации данных.

Поддержка: Python 2/3

>>> v = Validator({'name': {'type': 'string'}})
>>> v.validate({'name': 'john doe'})
True

Rainbow Stream  —  клиент Твиттера для терминала. Обширный функционал.i

Поддержка: Python 2/3


the fuck — прекрасное приложение, которое исправляет вашу последнюю команду в консоли.

Поддержка: Python 2/3


pgcli  —  интерфейс командной строки для Postgres с автодополнением и подсветкой синтаксиса.

Поддержка: Python 2/3


mycli — интерфейс командной строки для MySQL с автодополнением и подсветкой синтаксиса.


Pendulum  —  работа с временем никогда не была такой простой.

Поддержка: Python 2/3

Пример:

>>> import pendulum

>>> now_in_paris = pendulum.now('Europe/Paris')
>>> now_in_paris
'2016-07-04T00:49:58.502116+02:00'

# Seamless timezone switching
>>> now_in_paris.in_timezone('UTC')
'2016-07-03T22:49:58.502116+00:00'

>>> tomorrow = pendulum.now().add(days=1)
>>> last_week = pendulum.now().subtract(weeks=1)

>>> if pendulum.now().is_weekend():
...     print('Party!')
'Party!'

>>> past = pendulum.now().subtract(minutes=2)
>>> past.diff_for_humans()
>>> '2 minutes ago'

>>> delta = past - last_week
>>> delta.hours
23
>>> delta.in_words(locale='en')
'6 days 23 hours 58 minutes'

# Proper handling of datetime normalization
>>> pendulum.create(2013, 3, 31, 2, 30, 0, 0, 'Europe/Paris')
'2013-03-31T03:30:00+02:00' # 2:30 does not exist (Skipped time)

# Proper handling of dst transitions
>>> just_before = pendulum.create(2013, 3, 31, 1, 59, 59, 999999, 'Europe/Paris')
'2013-03-31T01:59:59.999999+01:00'
>>> just_before.add(microseconds=1)
'2013-03-31T03:00:00+02:00'

python-prompt-toolkit —  библиотека для создания мощных интерактивных инструментов для командной строки и терминала.

Поддержка: Python 2/3


superset —  интерактивная платформа для исследования данных.

Поддержка: Python 2/3


Pandas — это пакет, предоставляющий быстрые и гибкие структуры данных для работы с различными видами данных.


astropy  —  пакет для работы с астрономией и астрофизикой.

Поддержка: Python 2/3


httpie  — HTTP-клиент в командной строке, цель которого — сделать работу с веб-сервисами максимально дружественной.

Поддержка: Python 2/3


compose — инструмент для создания и запуска мультиконтейнерных Docker-приложений.

Поддержка: Python 2/3


keras  —  библиотека нейронных сетей, способна работать с TensorFlow и Theano.


bokeh  — библиотека для интерактивной визуализации данных в современных браузерах.

Поддержка: Python 2/3


Records — это простая, но мощная библиотека для создания сырых SQL-запросов к большинству РСУБД.

Поддержка: Python 2/3

Пример:

import records

db = records.Database('postgres://...')
rows = db.query('select * from active_users') 

>>> rows[0]
<Record {"username": "model-t", "active": true, "name": "Henry Ford", "user_email": "model-t@gmail.com", "timezone": "2016-02-06 22:28:23.894202"}>

coala предоставляет унифицированный интерфейс командной строки для статического анализа и исправления кода, написанного на любом языке программирования.

Поддержка: Python 2/3


Sanic — это Python 3.5+ веб-сервер, похожий на Flask. Поддерживает асинхронную обработку запросов.

Поддержка: Python 3.5+

Пример:

from sanic import Sanic
from sanic.response import json


app = Sanic()


@app.route("/")
async def test(request):
    return json({"hello": "world"})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

Locust — это простой инструмент для нагрузочного тестирования сайтов и не только.

Поддержка: Python 2/3


py.test — фреймворк, упрощающий написание небольших тестов.

Поддержка: Python 2/3

Пример:

def inc(x):
    return x + 1

def test_answer():
    assert inc(3) == 5


uvloop — это быстрая замена asyncio. Написана на Cython, использует libuv.

Поддержка: Python 2/3


Voltron — расширяемый набор инструментов для отладки с пользовательским интерфейсом. Поддерживает LLDB, GDB, VDB и WinDbg.

Поддержка: Python 2/3

Вот так выглядит интерфейс автора проекта:

Каждая команда отладчика может быть выделена отдельно:

Больше скриншотов можно найти здесь.


Maya — библиотека для работы со временем.

Поддержка: Python 3

>>> now = maya.now()
<MayaDT epoch=1481850660.9>

>>> tomorrow = maya.when('tomorrow')
<MayaDT epoch=1481919067.23>

>>> tomorrow.slang_date()
'tomorrow'

>>> tomorrow.slang_time()
'23 hours from now'

>>> tomorrow.iso8601()
'2016-12-16T15:11:30.263350Z'

>>> tomorrow.rfc2822()
'Fri, 16 Dec 2016 20:11:30 -0000'

>>> tomorrow.datetime()
datetime.datetime(2016, 12, 16, 15, 11, 30, 263350, tzinfo=<UTC>)

# Automatically parse datetime strings and generate naive datetimes.
>>> scraped = '2016-12-16 18:23:45.423992+00:00'
>>> maya.parse(scraped).datetime(to_timezone='US/Eastern', naive=True)
datetime.datetime(2016, 12, 16, 13, 23, 45, 423992)

>>> rand_day = maya.when('2011-02-07', timezone='US/Eastern')
<MayaDT epoch=1297036800.0>

# Note how this is the 6th, not the 7th.
>>> rand_day.day
6

# Always.
>>> rand_day.timezone
UTC

Cabot — это платформа для мониторинга инфраструктуры.

Поддержка: Python 2/3


Glances — это кроссплатформенный инструмент для мониторинга системы.


hug — инструмент для упрощения написания API.


Certbot — это инструмент для настройки шифрования веб-сервера.


Khal — программа для работы с календарём.


asciinema — утилита, записывающая терминальные сессии.


Requests. Python HTTP Requests for Humans™

Инструмент для упрощения работы с HTTP-запросами. Является одним из самых скачиваемых Python-пакетов.

Пример:

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'disk_usage': 368627, u'private_gists': 484, ...}


Mail-in-a-Box предназначен для настройки почтовых серверов.


schema — это библиотека для валидации структур данных.

Пример:

>>> from schema import Schema, And, Use, Optional

>>> schema = Schema([{'name': And(str, len),
...                   'age':  And(Use(int), lambda n: 18 <= n <= 99),
...                   Optional('sex'): And(str, Use(str.lower),
...                                        lambda s: s in ('male', 'female'))}])

>>> data = [{'name': 'Sue', 'age': '28', 'sex': 'FEMALE'},
...         {'name': 'Sam', 'age': '42'},
...         {'name': 'Sacha', 'age': '20', 'sex': 'Male'}]

>>> validated = schema.validate(data)

>>> assert validated == [{'name': 'Sue', 'age': 28, 'sex': 'female'},
...                      {'name': 'Sam', 'age': 42},
...                      {'name': 'Sacha', 'age' : 20, 'sex': 'male'}]

sqlmap — это инструмент для автоматизации тестирования на проникновение.


SciPy — это приложение для выполнения математических, научных и инженерных расчётов. Очень богатый функционал.


SymPy — это библиотека для символьной математики.


matplotlib — это библиотека для работы с двумерными графиками, которую можно использовать в скриптах, оболочках, на серверах веб-приложений и т.д.


Kivy — это кроссплатформенный фреймворк для создания интерфейсов, поддерживающих multi-touch.


tqdm — прогресс-бар для Python и командной строки.


pycodestyle — это инструмент для проверки вашего Python-кода на соответствие конвенциям PEP8.

Пример:

$ pycodestyle --first optparse.py
optparse.py:69:11: E401 multiple imports on one line
optparse.py:77:1: E302 expected 2 blank lines, found 1
optparse.py:88:5: E301 expected 1 blank line, found 0
optparse.py:222:34: W602 deprecated form of raising exception
optparse.py:347:31: E211 whitespace before '('
optparse.py:357:17: E201 whitespace after '{'
optparse.py:472:29: E221 multiple spaces before operator
optparse.py:544:21: W601 .has_key() is deprecated, use 'in'

BossSensor — сменит активное окно, если начальник поблизости.

Пример:

Начальник встал. Он приближается.

Когда он достаточно близко, производится снимок лица и распознавание.

Если начальник распознан, активное окно изменяется.


rodeo — IDE для анализа данных.

По материалам awesomo