Лучшие проекты, в которых стоит поучаствовать, чтобы примкнуть к 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. В частности, используется для распознавания аномалий и предсказания.
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 — это платформа для измерения «ума» ИИ и его обучения на большой коллекции игр, сайтов и приложений.
Theano — библиотека, позволяющая задавать, оптимизировать и вычислять математические выражения с многомерными массивами. Для расчётов можно использовать GPU.
http-prompt — интерактивный HTTP-клиент в командной строке.
falcon — высокопроизводительный фреймворк для создания облачных API.
eve — фреймворк для создания настраиваемых RESTful веб-сервисов.
plotly.py — интерактивная библиотека для создания графиков.
cerberus — лёгкая библиотека для валидации данных.
>>> v = Validator(>) >>> v.validate() True
Rainbow Stream — клиент Твиттера для терминала. Обширный функционал.i
the fuck — прекрасное приложение, которое исправляет вашу последнюю команду в консоли.
pgcli — интерфейс командной строки для Postgres с автодополнением и подсветкой синтаксиса.
mycli — интерфейс командной строки для MySQL с автодополнением и подсветкой синтаксиса.
Pendulum — работа с временем никогда не была такой простой.
>>> 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 — библиотека для создания мощных интерактивных инструментов для командной строки и терминала.
superset — интерактивная платформа для исследования данных.
Pandas — это пакет, предоставляющий быстрые и гибкие структуры данных для работы с различными видами данных.
astropy — пакет для работы с астрономией и астрофизикой.
httpie — HTTP-клиент в командной строке, цель которого — сделать работу с веб-сервисами максимально дружественной.
compose — инструмент для создания и запуска мультиконтейнерных Docker-приложений.
keras — библиотека нейронных сетей, способна работать с TensorFlow и Theano.
bokeh — библиотека для интерактивной визуализации данных в современных браузерах.
Records — это простая, но мощная библиотека для создания сырых SQL-запросов к большинству РСУБД.
import records db = records.Database('postgres://. ') rows = db.query('select * from active_users') >>> rows[0] >
coala предоставляет унифицированный интерфейс командной строки для статического анализа и исправления кода, написанного на любом языке программирования.
Sanic — это Python 3.5+ веб-сервер, похожий на Flask. Поддерживает асинхронную обработку запросов.
from sanic import Sanic from sanic.response import json app = Sanic() @app.route("/") async def test(request): return json() if __name__ == "__main__": app.run(host="0.0.0.0", port=8000)
Locust — это простой инструмент для нагрузочного тестирования сайтов и не только.
py.test — фреймворк, упрощающий написание небольших тестов.
def inc(x): return x + 1 def test_answer(): assert inc(3) == 5
uvloop — это быстрая замена asyncio. Написана на Cython, использует libuv.
Voltron — расширяемый набор инструментов для отладки с пользовательским интерфейсом. Поддерживает LLDB, GDB, VDB и WinDbg.
Вот так выглядит интерфейс автора проекта:
Каждая команда отладчика может быть выделена отдельно:
Больше скриншотов можно найти здесь.
Maya — библиотека для работы со временем.
>>> now = maya.now() >>> tomorrow = maya.when('tomorrow') >>> 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=) # 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') # Note how this is the 6th, not the 7th. >>> rand_day.day 6 # Always. >>> rand_day.timezone UTC
Cabot — это платформа для мониторинга инфраструктуры.
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'>> r.json()
Mail-in-a-Box предназначен для настройки почтовых серверов.
schema — это библиотека для валидации структур данных.
>>> from schema import Schema, And, Use, Optional >>> schema = Schema([]) >>> data = [, . , . ] >>> validated = schema.validate(data) >>> assert validated == [, . , . ]
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 '
BossSensor — сменит активное окно, если начальник поблизости.
Начальник встал. Он приближается.
Когда он достаточно близко, производится снимок лица и распознавание.
Если начальник распознан, активное окно изменяется.