Skip to content

Instantly share code, notes, and snippets.

Vladimir Rutsky rutsky

Block or report user

Report or block rutsky

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@rutsky
rutsky / master.cfg
Last active Dec 30, 2015
Buildbot test configuration
View master.cfg
# -*- 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 Dec 9, 2015
PyQt class name collision
View class_name_collision.py
"""
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 Nov 12, 2015
Inconsistent attribute access in asyncio.coroutine in debug mode
View asyncio_debug_attr_access.py
"""
$ 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 Nov 9, 2015
Future/generator expansion inside asyncio.coroutine
View return_await.py
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 Aug 29, 2015
PyQt bug: UI files loading/parsing is not reentrant (PyQt 5.4.2 nightly d5b00e76067f)
View main.py
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 Jun 18, 2015
PyQt 5.4.2 QSGMaterialShader::attributeNames() memory leak example
View MaterialTest.qml
import QtQuick 2.0
Item {
}
@rutsky
rutsky / MaterialTest.qml
Last active Aug 29, 2015
PyQt 5.4.2 bug example: QSGMaterial::createShader() result object is destroyed before use + application hangs at exit
View MaterialTest.qml
import QtQuick 2.0
Item {
}
@rutsky
rutsky / qmlcomponent_obj_ownership.py
Created Jun 4, 2015
QQmlComponent.create() item ownership PyQt bug example
View qmlcomponent_obj_ownership.py
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 Jun 8, 2014
pm-utils script to disable wakup by events from USB devices on Sony Vaio 1311s9rb
View 45fix-usb-wakup
#!/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
GCC 4.9 installation in Docker container
View docker_gcc-4.9.md
$ 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]
You can’t perform that action at this time.