Skip to content

Instantly share code, notes, and snippets.

@rutsky
rutsky / master.cfg
Last active December 30, 2015 00:40
Buildbot test configuration
# -*- python -*-
# ex: set syntax=python:
from buildbot.plugins import *
# This is a sample buildmaster config file. It must be installed as
# 'master.cfg' in your buildmaster's base directory.
# This is the dictionary that the buildmaster pays attention to. We also use
# a shorter alias to save typing.
@rutsky
rutsky / class_name_collision.py
Created December 9, 2015 11:26
PyQt class name collision
"""
If class is named as Qt class, sometimes PyQt machinery
leads to uncaught Python exception inside sipQWidget::qt_metacast,
which leads to failed Python assertion if Python is build in debug
mode.
$ ./python class_name_collision.py
python: ../Objects/abstract.c:2050: PyObject_Call: Assertion `(result != ((void *)0) && !PyErr_Occurred()) || (result == ((void *)0) && PyErr_Occurred())' failed.
Aborted (core dumped)
$ gdb --args ./python class_name_collision.py
@rutsky
rutsky / asyncio_debug_attr_access.py
Created November 12, 2015 09:46
Inconsistent attribute access in asyncio.coroutine in debug mode
"""
$ python3 --version
Python 3.4.3
$ python3 asyncio_debug_attr_access.py
f result
$ PYTHONASYNCIODEBUG=X python3 asyncio_debug_attr_access.py
Traceback (most recent call last):
File "asyncio_debug_attr_access.py", line 21, in <module>
print(loop.run_until_complete(coro_func()))
File "/usr/lib/python3.4/asyncio/coroutines.py", line 154, in wrapper
@rutsky
rutsky / return_await.py
Created November 9, 2015 17:58
Future/generator expansion inside asyncio.coroutine
import asyncio
import contextlib
@asyncio.coroutine
def return_coroutine_object():
@asyncio.coroutine
def g():
yield from asyncio.sleep(0.01)
return "return_coroutine_object"
@rutsky
rutsky / main.py
Last active August 29, 2015 14:23
PyQt bug: UI files loading/parsing is not reentrant (PyQt 5.4.2 nightly d5b00e76067f)
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QWidget, QApplication
# Problem: the ui loader/parser is not reentrant. If another UI load is requested
# during loading of UI file, final layout may be corrupted.
#
# In this example "main.ui" file requests promoted widget from "widget.py", and
# on module level of "widget.py" UI file "widget.ui" is being loaded.
@rutsky
rutsky / MaterialTest.qml
Created June 18, 2015 18:46
PyQt 5.4.2 QSGMaterialShader::attributeNames() memory leak example
import QtQuick 2.0
Item {
}
@rutsky
rutsky / MaterialTest.qml
Last active August 29, 2015 14:23
PyQt 5.4.2 bug example: QSGMaterial::createShader() result object is destroyed before use + application hangs at exit
import QtQuick 2.0
Item {
}
@rutsky
rutsky / qmlcomponent_obj_ownership.py
Created June 4, 2015 14:24
QQmlComponent.create() item ownership PyQt bug example
import sys
import textwrap
import sip
from PyQt5.QtQml import QQmlEngine, QQmlComponent
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
@rutsky
rutsky / 45fix-usb-wakup
Created June 8, 2014 19:25
pm-utils script to disable wakup by events from USB devices on Sony Vaio 1311s9rb
#!/bin/bash
# /usr/lib/pm-utils/sleep.d/45fix-usb-wakup
# Disable wakup from USB devices on Sony Vaio 1311s9rb
function print_state {
cat /proc/acpi/wakeup | grep $1 | cut -f3 | cut -d' ' -f1 | tr -d '*'
}
function disable_wakup {
@rutsky
rutsky / docker_gcc-4.9.md
Created May 8, 2014 21:19
GCC 4.9 installation in Docker container
$ sudo docker pull ubuntu
$ sudo docker  run -t -i ubuntu:14.04 /bin/bash
root@856b6aa801af:/# apt-get update
Ign http://archive.ubuntu.com trusty InRelease
Ign http://archive.ubuntu.com trusty-updates InRelease
Ign http://archive.ubuntu.com trusty-security InRelease
Get:1 http://archive.ubuntu.com trusty Release.gpg [933 B]
Get:2 http://archive.ubuntu.com trusty-updates Release.gpg [933 B]
Get:3 http://archive.ubuntu.com trusty-security Release.gpg [933 B]