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

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

     03.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Интересные проекты, инструменты, библиотеки

musichaos - утилита наведения порядка в музыке (раскладывает файлы по исполнителю, альбому, музыке)

Позволяет организовать такую структуру

~/music
│   ├── Artist 01
│   │   └── Album 01
│   │   │   └── Title 01
│   │   │   │── Title 02
│   ├── Artist 02
│   │   └── Album 01
│   │   │   └── Title 01
│   │   │   │── Title 02

Утилита позволяет реализовать порядок без перемещения файлов (с помощью ссылок)

     02.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Интересные проекты, инструменты, библиотеки

django_minimal_log - небольшой сервер и клиент для логгирования на основе Django

Проект представляет собой Django-модуль, который позволяет организовать агрегацию логов на основе Django.

Django выступает в роли сервера, который принимает запросы логгирования, а клиент отправляет POST запросы на этот сервер.

     02.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Интересные проекты, инструменты, библиотеки

CFFIpp - CFFI модуль для вызова из C++ кода в Python

ffi = FFIpp()
ffi.cdef("""
    class testClass {
    public:
        testClass();
        void test(int);
        int returnsInt(int);
    private:
        void shouldNotBeInModule();
    };
    """)
self.assertTrue(ffi.has_class("testClass"))

ffi.set_source("example_module", """
    class testClass {
    public:
        testClass(){}
        void test(int){/*nop*/}
        int returnsInt(int){return 1;}
    private:
        void shouldNotBeInModule() {/*nop*/}
    };""")
ffi.compile()
import example_module
c = example_module.testClass()
self.assertEqual(c.returnsInt(5), 1)

     02.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Интересные проекты, инструменты, библиотеки

django-github-webhook - обрабатываем GitHub webhook на Django

Модуль позволяет принять Github webhook для последующей удобной обработки

     01.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Интересные проекты, инструменты, библиотеки

keyboard - перехват и симуляция нажатий на клавиатуру на Windows и Linux

import keyboard

# Press PAGE UP then PAGE DOWN to type "foobar".
keyboard.add_hotkey('page up, page down', lambda: keyboard.write('foobar'))

# Blocks until you press esc.
wait('esc')

     01.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Интересные проекты, инструменты, библиотеки

djangocms_portfolio - приложение "Портфолио" для djangoCMS

Модуль содержит набор моделей, view's. Можно адаптировать под обычную Django

     31.01.2016       Выпуск 110 (25.01.2016 - 31.01.2016)       Интересные проекты, инструменты, библиотеки

dtags - утилита для сохранения путей до git репозиториев в виде тегов

~$ tag ~/frontend @frontend
~$ tag ~/backend @backend
~$ tag ~/frontend ~/backend @work
~$ tag ~/db @vm
~$ tag ~/web @vm

# Or equivalently
~$ tag ~/frontend @frontend @work ~/backend @backend @work ~/db ~/web @vm

# All tag names must begin with the @ symbol
# Execute 'git fetch origin' in all directories tagged @project
~$ run @project git fetch origin

# Execute 'git status -sb' in all directories tagged @frontend and @backend
~$ run @frontend @backend git status -sb

# Execute 'vagrant status' in all directories tagged @vms
~$ run @vms vagrant status

# Directory paths can be specified along with tags
~$ run @backend ~/scripts ~/redis ls -la

# The command can be executed in parallel as long as it doesn't wait for input
~$ run -p @backend 'sleep 5 && echo done'
~$ run -p @project git pull
~$ run -p @vms vagrant up

     31.01.2016       Выпуск 110 (25.01.2016 - 31.01.2016)       Интересные проекты, инструменты, библиотеки

Signaller - реализация механизма "сигналы-слоты" с поддержкой asyncio

from signaller import Signal

logging.basicConfig(level=logging.DEBUG)

def slot(arg):
    print('slot:', arg)

# Creating signals (you can set signal name, but it is not required,
# signals can be anonymous):
sig_test = Signal('sig_test')

# Connecting signals to slots (uses weak references by default,
# but you can force strong references by specifying weak=False):
sig_test.connect(slot)
sig_test.connect(lambda arg: print('slot_lambda:', arg), weak=False)

# You can also use decorators for connecting signals to slots:
@sig_test.connect
def slot2(arg):
    print('slot2:', arg)

# And weak=False can be specified when using decorators too:
@sig_test.connect(weak=False)
def slot3(arg):
    print('slot3:', arg)

# Slots are automatically disconnected from signals
# when using weak references:
del slot2

# Or you can disconnect slots manually:
sig_test.disconnect(slot3)

# Emitting signals (you can send positional and keyword
# arguments to connected slots):
sig_test.emit('Hello world!')

     31.01.2016       Выпуск 110 (25.01.2016 - 31.01.2016)       Интересные проекты, инструменты, библиотеки

mattermost_bot - простой бот для MatterMost

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

Мы консультируем по написанию ботов - обращайтесь https://t.me/axsapronov. Подскажем как разработать бота наиболее быстро