Hello community,
here is the log from the commit of package python-wurlitzer for
openSUSE:Factory checked in at 2019-11-12 16:11:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-wurlitzer (Old)
and /work/SRC/openSUSE:Factory/.python-wurlitzer.new.2990 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-wurlitzer"
Tue Nov 12 16:11:03 2019 rev:3 rq:745984 version:2.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-wurlitzer/python-wurlitzer.changes
2019-07-22 17:19:19.745913624 +0200
+++
/work/SRC/openSUSE:Factory/.python-wurlitzer.new.2990/python-wurlitzer.changes
2019-11-12 16:11:10.015736078 +0100
@@ -1,0 +2,6 @@
+Wed Nov 6 12:18:11 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 2.0:
+ * use selectors instead of select.poll #34
+
+-------------------------------------------------------------------
Old:
----
wurlitzer-1.0.3.tar.gz
New:
----
wurlitzer-2.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-wurlitzer.spec ++++++
--- /var/tmp/diff_new_pack.gYYA7Q/_old 2019-11-12 16:11:11.375737540 +0100
+++ /var/tmp/diff_new_pack.gYYA7Q/_new 2019-11-12 16:11:11.375737540 +0100
@@ -18,21 +18,22 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-wurlitzer
-Version: 1.0.3
+Version: 2.0.0
Release: 0
Summary: Python package to capture C-level output in context managers
License: MIT
-Group: Development/Languages/Python
URL: https://github.com/minrk/wurlitzer
Source:
https://files.pythonhosted.org/packages/source/w/wurlitzer/wurlitzer-%{version}.tar.gz
+BuildRequires: %{python_module mock}
+BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
+BuildRequires: python-selectors2
BuildArch: noarch
-# SECTION test requirements
-BuildRequires: %{python_module mock}
-BuildRequires: %{python_module pytest}
-# /SECTION
+%ifpython2
+Requires: python-selectors2
+%endif
%python_subpackages
%description
++++++ wurlitzer-1.0.3.tar.gz -> wurlitzer-2.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/.bumpversion.cfg
new/wurlitzer-2.0.0/.bumpversion.cfg
--- old/wurlitzer-1.0.3/.bumpversion.cfg 1970-01-01 01:00:00.000000000
+0100
+++ new/wurlitzer-2.0.0/.bumpversion.cfg 2019-10-17 15:57:18.000000000
+0200
@@ -0,0 +1,19 @@
+[bumpversion]
+current_version = 1.0.4.dev
+parse =
(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\.(?P<release>[a-z0-9]+))?
+tag_name = {new_version}
+allow_dirty = True
+commit = True
+tag = False
+serialize =
+ {major}.{minor}.{patch}.{release}
+ {major}.{minor}.{patch}
+
+[bumpversion:file:wurlitzer.py]
+
+[bumpversion:part:release]
+optional_value = stable
+values =
+ dev
+ stable
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/.gitignore
new/wurlitzer-2.0.0/.gitignore
--- old/wurlitzer-1.0.3/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/wurlitzer-2.0.0/.gitignore 2018-05-20 19:43:32.000000000 +0200
@@ -0,0 +1,64 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+MANIFEST
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+.pytest_cache
+nosetests.xml
+coverage.xml
+*,cover
+.hypothesis/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+#Ipython Notebook
+.ipynb_checkpoints
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/.travis.yml
new/wurlitzer-2.0.0/.travis.yml
--- old/wurlitzer-1.0.3/.travis.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/wurlitzer-2.0.0/.travis.yml 2019-06-13 10:48:40.000000000 +0200
@@ -0,0 +1,43 @@
+language: python
+python:
+ - 2.7
+ - 3.4
+ - 3.5
+ - 3.6
+ - nightly
+branches:
+ only:
+ - master
+before_install:
+ - |
+ # setup mac virtualenv
+ if [[ $(uname) == "Darwin" ]]; then
+ brew install python
+ python3 -m pip install virtualenv
+ virtualenv -p $(which python$PY) ./test-env
+ source ./test-env/bin/activate
+ fi
+install:
+ - pip install --upgrade setuptools pip
+ - pip install --upgrade . -r dev-requirements.txt
+ - pip freeze
+script:
+ - py.test --cov wurlitzer test.py
+after_success:
+ - codecov
+env:
+ global:
+ - HOMEBREW_NO_AUTO_UPDATE=1
+matrix:
+ include:
+ - os: osx
+ language: generic
+ env:
+ - PY=2
+ - os: osx
+ language: generic
+ env:
+ - PY=3
+ - os: linux
+ dist: xenial
+ python: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/CHANGELOG.md
new/wurlitzer-2.0.0/CHANGELOG.md
--- old/wurlitzer-1.0.3/CHANGELOG.md 1970-01-01 01:00:00.000000000 +0100
+++ new/wurlitzer-2.0.0/CHANGELOG.md 2019-10-25 13:57:31.000000000 +0200
@@ -0,0 +1,67 @@
+### Changelog
+
+All notable changes to this project will be documented in this file. Dates are
displayed in UTC.
+
+Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
+
+### [2.0.0](https://github.com/minrk/wurlitzer/compare/1.0.3...2.0.0)
+
+> 25 October 2019
+
+- use selectors instead of select.poll
[`#34`](https://github.com/minrk/wurlitzer/pull/34). Requires `selectors2`
package on Python < 3.4.
+
+#### [1.0.3](https://github.com/minrk/wurlitzer/compare/1.0.2...1.0.3)
+
+> 13 June 2019
+
+- Add thread lock [`#30`](https://github.com/minrk/wurlitzer/pull/30)
+- using poll instead of select in forwarder
[`#24`](https://github.com/minrk/wurlitzer/pull/24)
+- setup.py improvements [`#19`](https://github.com/minrk/wurlitzer/pull/19)
+- Link blogpost about redirecting stdout/stderr
[`#18`](https://github.com/minrk/wurlitzer/pull/18)
+- Prevent wurlitzer from entering multiple times
[`#27`](https://github.com/minrk/wurlitzer/pull/28)
+- fix threading issues
[`1c59bb4`](https://github.com/minrk/wurlitzer/commit/1c59bb435da05fe2e48915aa5c9f485575a7ad1b)
+
+#### [1.0.2](https://github.com/minrk/wurlitzer/compare/1.0.1...1.0.2)
+
+> 20 May 2018
+
+- move fflush to a thread [`#16`](https://github.com/minrk/wurlitzer/pull/16)
+
+#### [1.0.1](https://github.com/minrk/wurlitzer/compare/1.0.0...1.0.1)
+
+> 22 January 2018
+
+- avoid unnecessary close of original FDs
[`#11`](https://github.com/minrk/wurlitzer/pull/11)
+
+### [1.0.0](https://github.com/minrk/wurlitzer/compare/0.2.0...1.0.0)
+
+> 22 June 2017
+
+- use control pipe to signal closure
[`#8`](https://github.com/minrk/wurlitzer/pull/8)
+
+- Do nothing if loaded in terminal IPython
[`#2`](https://github.com/minrk/wurlitzer/pull/2)
+- retry dup2 on EBUSY
[`6e2e906`](https://github.com/minrk/wurlitzer/commit/6e2e906a8f2ffbd5b27d92a147cd59b0d5008041)
+
+#### [0.2.0](https://github.com/minrk/wurlitzer/compare/0.1.2...0.2.0)
+
+> 14 March 2016
+
+- Make it an IPython extension
[`5aa2237`](https://github.com/minrk/wurlitzer/commit/5aa22375de5516915bb1cb9168e04430933e86a6)
+
+#### [0.1.2](https://github.com/minrk/wurlitzer/compare/0.1.1...0.1.2)
+
+> 13 March 2016
+
+- flush before entering wurlitzer
[`a8b3a85`](https://github.com/minrk/wurlitzer/commit/a8b3a856a576fe50e8771fddad7fcf3b21ae3285)
+
+#### [0.1.1](https://github.com/minrk/wurlitzer/compare/0.1.0...0.1.1)
+
+> 9 March 2016
+
+- fix names in README, long_description
[`7f95a69`](https://github.com/minrk/wurlitzer/commit/7f95a690985e9ff2e7360c2c433fa9b9187f8758)
+
+#### 0.1.0
+
+> 9 March 2016
+
+Initial release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/PKG-INFO new/wurlitzer-2.0.0/PKG-INFO
--- old/wurlitzer-1.0.3/PKG-INFO 2019-06-13 10:49:38.000000000 +0200
+++ new/wurlitzer-2.0.0/PKG-INFO 2019-10-25 13:58:18.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: wurlitzer
-Version: 1.0.3
+Version: 2.0.0
Summary: Capture C-level output in context managers
Home-page: https://github.com/minrk/wurlitzer
Author: Min RK
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/release.sh
new/wurlitzer-2.0.0/release.sh
--- old/wurlitzer-1.0.3/release.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/wurlitzer-2.0.0/release.sh 2016-03-09 15:31:50.000000000 +0100
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -e
+
+bumpversion release --tag
+py.test test.py
+python setup.py sdist bdist_wheel
+twine upload dist/*
+bumpversion patch
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/setup.py new/wurlitzer-2.0.0/setup.py
--- old/wurlitzer-1.0.3/setup.py 2018-12-10 12:49:42.000000000 +0100
+++ new/wurlitzer-2.0.0/setup.py 2019-10-25 13:41:32.000000000 +0200
@@ -33,6 +33,7 @@
author="Min RK",
author_email="[email protected]",
description="Capture C-level output in context managers",
+ install_requires=["selectors2; python_version<'3.4'"],
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/minrk/wurlitzer",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/wurlitzer.egg-info/PKG-INFO
new/wurlitzer-2.0.0/wurlitzer.egg-info/PKG-INFO
--- old/wurlitzer-1.0.3/wurlitzer.egg-info/PKG-INFO 2019-06-13
10:49:38.000000000 +0200
+++ new/wurlitzer-2.0.0/wurlitzer.egg-info/PKG-INFO 2019-10-25
13:58:17.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: wurlitzer
-Version: 1.0.3
+Version: 2.0.0
Summary: Capture C-level output in context managers
Home-page: https://github.com/minrk/wurlitzer
Author: Min RK
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/wurlitzer.egg-info/SOURCES.txt
new/wurlitzer-2.0.0/wurlitzer.egg-info/SOURCES.txt
--- old/wurlitzer-1.0.3/wurlitzer.egg-info/SOURCES.txt 2019-06-13
10:49:38.000000000 +0200
+++ new/wurlitzer-2.0.0/wurlitzer.egg-info/SOURCES.txt 2019-10-25
13:58:18.000000000 +0200
@@ -1,8 +1,13 @@
+.bumpversion.cfg
+.gitignore
+.travis.yml
+CHANGELOG.md
Demo.ipynb
LICENSE
MANIFEST.in
README.md
dev-requirements.txt
+release.sh
setup.cfg
setup.py
test.py
@@ -10,4 +15,5 @@
wurlitzer.egg-info/PKG-INFO
wurlitzer.egg-info/SOURCES.txt
wurlitzer.egg-info/dependency_links.txt
+wurlitzer.egg-info/requires.txt
wurlitzer.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/wurlitzer.egg-info/requires.txt
new/wurlitzer-2.0.0/wurlitzer.egg-info/requires.txt
--- old/wurlitzer-1.0.3/wurlitzer.egg-info/requires.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/wurlitzer-2.0.0/wurlitzer.egg-info/requires.txt 2019-10-25
13:58:17.000000000 +0200
@@ -0,0 +1,3 @@
+
+[:python_version < "3.4"]
+selectors2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/wurlitzer-1.0.3/wurlitzer.py
new/wurlitzer-2.0.0/wurlitzer.py
--- old/wurlitzer-1.0.3/wurlitzer.py 2019-06-13 10:49:36.000000000 +0200
+++ new/wurlitzer-2.0.0/wurlitzer.py 2019-10-25 13:50:51.000000000 +0200
@@ -4,7 +4,7 @@
"""
from __future__ import print_function
-__version__ = '1.0.3'
+__version__ = '2.0.0'
__all__ = [
'pipes',
@@ -20,11 +20,18 @@
from fcntl import fcntl, F_GETFL, F_SETFL
import io
import os
+
try:
from queue import Queue
except ImportError:
from Queue import Queue
-import select
+
+try:
+ import selectors
+except ImportError:
+ # py < 3.4
+ import selectors2 as selectors
+
import sys
import threading
import time
@@ -176,13 +183,13 @@
"""Forward bytes on a pipe to stream messages"""
draining = False
flush_interval = 0
- poller = select.poll()
+ poller = selectors.DefaultSelector()
+
for pipe_ in pipes:
- poller.register(pipe_, select.POLLIN | select.POLLPRI)
+ poller.register(pipe_, selectors.EVENT_READ)
while pipes:
- events = poller.poll(int(flush_interval * 1000))
- #r = all([(r_[1] == (select.POLLIN | select.POLLPRI)) for r_
in events])
+ events = poller.select(flush_interval)
if events:
# found something to read, don't block select until
# we run out of things to read
@@ -200,7 +207,8 @@
flush_interval = self.flush_interval
continue
- for fd, flags in events:
+ for selector_key, flags in events:
+ fd = selector_key.fd
if fd == self._control_r:
draining = True
pipes.remove(self._control_r)