Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-parallax for openSUSE:Factory
checked in at 2022-11-07 13:51:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-parallax (Old)
and /work/SRC/openSUSE:Factory/.python-parallax.new.1597 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-parallax"
Mon Nov 7 13:51:26 2022 rev:20 rq:1033892 version:1.0.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-parallax/python-parallax.changes
2022-09-30 17:58:31.773342896 +0200
+++
/work/SRC/openSUSE:Factory/.python-parallax.new.1597/python-parallax.changes
2022-11-07 13:51:29.779735736 +0100
@@ -1,0 +2,17 @@
+Mon Nov 7 02:18:35 UTC 2022 - XinLiang <[email protected]>
+
+- Fix: manager: file descriptor leakage
+- Release 1.0.8
+
+-------------------------------------------------------------------
+Thu Nov 3 02:16:52 UTC 2022 - XinLiang <[email protected]>
+
+- Release 1.0.7
+- Remove patches since already included:
+ Remove patch 0001-Add-ssh_key-option-used-by-i-option-of-ssh-scp.patch
+ Remove patch 0002-Change-format-of-scp-command-for-ipv6-compatible.patch
+ Remove patch 0003-Fix-task-Don-t-use-ssh-if-command-running-on-local-b.patch
+ Remove patch 0004-Fix-Error-inherit-from-Exception-instead-of-BaseExce.patch
+ Remove patch 0005-Dev-add-parallax.run-to-return-non-zero-rc-without-r.patch
+
+-------------------------------------------------------------------
Old:
----
0001-Add-ssh_key-option-used-by-i-option-of-ssh-scp.patch
0002-Change-format-of-scp-command-for-ipv6-compatible.patch
0003-Fix-task-Don-t-use-ssh-if-command-running-on-local-b.patch
0004-Fix-Error-inherit-from-Exception-instead-of-BaseExce.patch
0005-Dev-add-parallax.run-to-return-non-zero-rc-without-r.patch
parallax-1.0.6.tar.gz
New:
----
parallax-1.0.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-parallax.spec ++++++
--- /var/tmp/diff_new_pack.CR9Clt/_old 2022-11-07 13:51:30.291738615 +0100
+++ /var/tmp/diff_new_pack.CR9Clt/_new 2022-11-07 13:51:30.295738637 +0100
@@ -18,18 +18,13 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-parallax
-Version: 1.0.6
+Version: 1.0.8
Release: 0
Summary: Python module for multi-node SSH command execution and file
copy
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/krig/parallax/
Source:
https://files.pythonhosted.org/packages/source/p/parallax/parallax-%{version}.tar.gz
-Patch1: 0001-Add-ssh_key-option-used-by-i-option-of-ssh-scp.patch
-Patch2: 0002-Change-format-of-scp-command-for-ipv6-compatible.patch
-Patch3: 0003-Fix-task-Don-t-use-ssh-if-command-running-on-local-b.patch
-Patch4: 0004-Fix-Error-inherit-from-Exception-instead-of-BaseExce.patch
-Patch5: 0005-Dev-add-parallax.run-to-return-non-zero-rc-without-r.patch
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
@@ -54,11 +49,6 @@
%prep
%setup -q -n parallax-%{version}
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
%build
%python_build
++++++ parallax-1.0.6.tar.gz -> parallax-1.0.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/.gitignore
new/parallax-1.0.8/.gitignore
--- old/parallax-1.0.6/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/parallax-1.0.8/.gitignore 2022-11-07 03:08:20.000000000 +0100
@@ -0,0 +1 @@
+*.pyc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/.travis.yml
new/parallax-1.0.8/.travis.yml
--- old/parallax-1.0.6/.travis.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/parallax-1.0.8/.travis.yml 2022-11-07 03:08:20.000000000 +0100
@@ -0,0 +1,8 @@
+---
+language: python
+python:
+ - "2.6"
+ - "2.7"
+ - "3.4"
+ - "3.5"
+script: nosetests --with-coverage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/PKG-INFO new/parallax-1.0.8/PKG-INFO
--- old/parallax-1.0.6/PKG-INFO 2020-04-01 10:50:03.678191400 +0200
+++ new/parallax-1.0.8/PKG-INFO 2022-11-07 03:08:20.000000000 +0100
@@ -1,31 +1,10 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.0
Name: parallax
-Version: 1.0.6
-Summary: Execute commands and copy files over SSH to multiple machines at once
+Version: 1.0.8
+Summary: UNKNOWN
Home-page: https://github.com/krig/parallax/
Author: Kristoffer Gronlund
-Author-email: [email protected]
+Author-email: UNKNOWN
License: BSD
-Description: Parallax SSH provides an interface to executing commands on
multiple
- nodes at once using SSH. It also provides commands for sending and
receiving files to
- multiple nodes using SCP.
-Platform: linux
-Classifier: Development Status :: 3 - Alpha
-Classifier: Intended Audience :: System Administrators
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Operating System :: POSIX
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.1
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: System :: Clustering
-Classifier: Topic :: System :: Networking
-Classifier: Topic :: System :: Systems Administration
+Description: UNKNOWN
+Platform: UNKNOWN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/README.md new/parallax-1.0.8/README.md
--- old/parallax-1.0.6/README.md 2020-04-01 10:32:35.000000000 +0200
+++ new/parallax-1.0.8/README.md 2022-11-07 03:08:20.000000000 +0100
@@ -32,10 +32,17 @@
Executes the given command on a set of hosts, collecting the output.
- Returns a dict mapping the hostname of
- each host either to a tuple containing a return code,
- stdout and stderr, or an `parallax.Error` instance
- describing the error.
+ Returns a dict mapping the hostname of each host either to a tuple containing
+ a return code, stdout and stderr when return code is 0, or an
`parallax.Error`
+ instance describing the error when return code is not 0.
+
+* `parallax.run(hosts, cmdline, opts)`
+
+ Executes the given command on a set of hosts, collecting the output.
+
+ Returns a dict mapping the hostname of each host either to a tuple containing
+ a return code, stdout and stderr, or an `parallax.Error` instance describing
+ the error when ssh error occurred.
* `parallax.copy(hosts, src, dst, opts)`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/parallax/__init__.py
new/parallax-1.0.8/parallax/__init__.py
--- old/parallax-1.0.6/parallax/__init__.py 2020-04-01 10:32:35.000000000
+0200
+++ new/parallax-1.0.8/parallax/__init__.py 2022-11-07 03:08:20.000000000
+0100
@@ -27,6 +27,7 @@
import os
import sys
+import socket
DEFAULT_PARALLELISM = 32
DEFAULT_TIMEOUT = 0 # "infinity" by default
@@ -54,14 +55,14 @@
return s
-class Error(BaseException):
+class Error(Exception):
"""
Returned instead of a result for a host
in case of an error during the processing for
that host.
"""
def __init__(self, msg, task):
- super(BaseException, self).__init__()
+ super(Exception, self).__init__()
self.msg = msg
self.task = task
@@ -87,6 +88,7 @@
askpass = False # Ask for a password
outdir = None # Write stdout to a file per host in this
directory
errdir = None # Write stderr to a file per host in this
directory
+ ssh_key = None # Specific ssh key used by ssh/scp -i option
ssh_options = [] # Extra options to pass to SSH
ssh_extra = [] # Extra arguments to pass to SSH
verbose = False # Warning and diagnostic messages
@@ -138,19 +140,21 @@
return ret
-def _build_call_cmd(host, port, user, cmdline, options, extra):
+def _build_call_cmd(host, port, user, cmdline, opts):
cmd = ['ssh', host,
'-o', 'NumberOfPasswordPrompts=1',
'-o', 'SendEnv=PARALLAX_NODENUM PARALLAX_HOST']
- if options:
- for opt in options:
+ if opts.ssh_options:
+ for opt in opts.ssh_options:
cmd += ['-o', opt]
if user:
cmd += ['-l', user]
if port:
cmd += ['-p', port]
- if extra:
- cmd.extend(extra)
+ if opts.ssh_key:
+ cmd += ['-i', opts.ssh_key]
+ if opts.ssh_extra:
+ cmd.extend(opts.ssh_extra)
if cmdline:
cmd.append(cmdline)
return cmd
@@ -158,7 +162,7 @@
def call(hosts, cmdline, opts=Options()):
"""
- Executes the given command on a set of hosts, collecting the output
+ Executes the given command on a set of hosts, collecting the output.
Return Error when exit status != 0.
Returns {host: (rc, stdout, stdin) | Error}
"""
if opts.outdir and not os.path.exists(opts.outdir):
@@ -173,9 +177,11 @@
warn_message=opts.warn_message,
callbacks=_CallOutputBuilder())
for host, port, user in _expand_host_port_user(hosts):
- cmd = _build_call_cmd(host, port, user, cmdline,
- options=opts.ssh_options,
- extra=opts.ssh_extra)
+ is_local = is_local_host(host)
+ if is_local:
+ cmd = [cmdline]
+ else:
+ cmd = _build_call_cmd(host, port, user, cmdline, opts)
t = Task(host, port, user, cmd,
stdin=opts.input_stream,
verbose=opts.verbose,
@@ -183,7 +189,8 @@
print_out=opts.print_out,
inline=opts.inline,
inline_stdout=opts.inline_stdout,
- default_user=opts.default_user)
+ default_user=opts.default_user,
+ is_local=is_local)
manager.add_task(t)
try:
return manager.run()
@@ -219,13 +226,15 @@
cmd += ['-P', port]
if opts.recursive:
cmd.append('-r')
+ if opts.ssh_key:
+ cmd += ['-i', opts.ssh_key]
if opts.ssh_extra:
cmd.extend(opts.ssh_extra)
cmd.append(src)
if user:
- cmd.append('%s@%s:%s' % (user, host, dst))
+ cmd.append('%s@[%s]:%s' % (user, host, dst))
else:
- cmd.append('%s:%s' % (host, dst))
+ cmd.append('[%s]:%s' % (host, dst))
return cmd
@@ -312,12 +321,14 @@
cmd += ['-P', port]
if opts.recursive:
cmd.append('-r')
+ if opts.ssh_key:
+ cmd += ['-i', opts.ssh_key]
if opts.ssh_extra:
cmd.extend(opts.ssh_extra)
if user:
- cmd.append('%s@%s:%s' % (user, host, src))
+ cmd.append('%s@[%s]:%s' % (user, host, src))
else:
- cmd.append('%s:%s' % (host, src))
+ cmd.append('[%s]:%s' % (host, src))
cmd.append(dst)
return cmd
@@ -361,3 +372,73 @@
return manager.run()
except FatalError as err:
raise IOError(str(err))
+
+
+def is_local_host(host):
+ """
+ Check if the host is local
+ """
+ try:
+ socket.inet_aton(host)
+ hostname = socket.gethostbyaddr(host)[0]
+ except:
+ hostname = host
+ return hostname == socket.gethostname()
+
+def run(hosts, cmdline, opts=Options()):
+ """
+ Executes the given command on a set of hosts, collecting the output.
Return Error when ssh error occurred.
+ Returns {host: (rc, stdout, stdin) | Error}
+ """
+ if opts.outdir and not os.path.exists(opts.outdir):
+ os.makedirs(opts.outdir)
+ if opts.errdir and not os.path.exists(opts.errdir):
+ os.makedirs(opts.errdir)
+ manager = Manager(limit=opts.limit,
+ timeout=opts.timeout,
+ askpass=opts.askpass,
+ outdir=opts.outdir,
+ errdir=opts.errdir,
+ warn_message=opts.warn_message,
+ callbacks=_RunOutputBuilder())
+ for host, port, user in _expand_host_port_user(hosts):
+ is_local = is_local_host(host)
+ if is_local:
+ cmd = [cmdline]
+ else:
+ cmd = _build_call_cmd(host, port, user, cmdline, opts)
+ t = Task(host, port, user, cmd,
+ stdin=opts.input_stream,
+ verbose=opts.verbose,
+ quiet=opts.quiet,
+ print_out=opts.print_out,
+ inline=opts.inline,
+ inline_stdout=opts.inline_stdout,
+ default_user=opts.default_user,
+ is_local=is_local)
+ manager.add_task(t)
+ try:
+ return manager.run()
+ except FatalError as err:
+ raise IOError(str(err))
+
+
+class _RunOutputBuilder(object):
+ def __init__(self):
+ self.finished_tasks = []
+
+ def finished(self, task, n):
+ """Called when Task is complete"""
+ self.finished_tasks.append(task)
+
+ def result(self, manager):
+ """Called when all Tasks are complete to generate result"""
+ ret = {}
+ for task in self.finished_tasks:
+ if task.exitstatus == 255:
+ ret[task.host] = Error(', '.join(task.failures), task)
+ else:
+ ret[task.host] = (task.exitstatus,
+ task.outputbuffer or manager.outdir,
+ task.errorbuffer or manager.errdir)
+ return ret
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/parallax/manager.py
new/parallax-1.0.8/parallax/manager.py
--- old/parallax-1.0.6/parallax/manager.py 2020-04-01 10:32:35.000000000
+0200
+++ new/parallax-1.0.8/parallax/manager.py 2022-11-07 03:08:20.000000000
+0100
@@ -4,7 +4,6 @@
from errno import EINTR
import os
import select
-import signal
import sys
import threading
import copy
@@ -92,20 +91,20 @@
def run(self):
"""Processes tasks previously added with add_task."""
self.save_tasks = copy.copy(self.tasks)
+ if self.outdir or self.errdir:
+ writer = Writer(self.outdir, self.errdir)
+ writer.start()
+ else:
+ writer = None
+
try:
- if self.outdir or self.errdir:
- writer = Writer(self.outdir, self.errdir)
+ if writer:
writer.start()
- else:
- writer = None
-
if self.askpass:
pass_server = PasswordServer()
pass_server.start(self.iomap, self.limit,
warn=self.warn_message)
self.askpass_socket = pass_server.address
- self.set_sigchld_handler()
-
try:
self.update_tasks(writer)
wait = None
@@ -116,46 +115,17 @@
self.iomap.poll(wait)
self.update_tasks(writer)
wait = self.check_timeout()
+ return self.callbacks.result(self)
except KeyboardInterrupt:
# This exception handler tries to clean things up and prints
# out a nice status message for each interrupted host.
self.interrupted()
+ raise
+ finally:
+ if writer:
+ writer.signal_quit()
+ writer.join()
- except KeyboardInterrupt:
- # This exception handler doesn't print out any fancy status
- # information--it just stops.
- pass
-
- if writer:
- writer.signal_quit()
- writer.join()
-
- return self.callbacks.result(self)
-
- def clear_sigchld_handler(self):
- signal.signal(signal.SIGCHLD, signal.SIG_DFL)
-
- def set_sigchld_handler(self):
- # TODO: find out whether set_wakeup_fd still works if the default
- # signal handler is used (I'm pretty sure it doesn't work if the
- # signal is ignored).
- signal.signal(signal.SIGCHLD, self.handle_sigchld)
- # This should keep reads and writes from getting EINTR.
- if hasattr(signal, 'siginterrupt'):
- signal.siginterrupt(signal.SIGCHLD, False)
-
- def handle_sigchld(self, number, frame):
- """Apparently we need a sigchld handler to make set_wakeup_fd work."""
- # Write to the signal pipe (only for Python <2.5, where the
- # set_wakeup_fd method doesn't exist).
- if self.iomap.wakeup_writefd:
- os.write(self.iomap.wakeup_writefd, '\0')
- for task in self.running:
- if task.proc:
- task.proc.poll()
- # Apparently some UNIX systems automatically reset the SIGCHLD
- # handler to SIG_DFL. Reset it just in case.
- self.set_sigchld_handler()
def add_task(self, task):
"""Adds a Task to be processed with run()."""
@@ -236,17 +206,6 @@
self.readmap = {}
self.writemap = {}
- # Setup the wakeup file descriptor to avoid hanging on lost signals.
- wakeup_readfd, wakeup_writefd = os.pipe()
- fcntl.fcntl(wakeup_writefd, fcntl.F_SETFL, os.O_NONBLOCK)
- self.register_read(wakeup_readfd, self.wakeup_handler)
- # TODO: remove test when we stop supporting Python <2.5
- if hasattr(signal, 'set_wakeup_fd'):
- signal.set_wakeup_fd(wakeup_writefd)
- self.wakeup_writefd = None
- else:
- self.wakeup_writefd = wakeup_writefd
-
def register_read(self, fd, handler):
"""Registers an IO handler for a file descriptor for reading."""
self.readmap[fd] = handler
@@ -284,21 +243,6 @@
handler = self.writemap[fd]
handler(fd, self)
- def wakeup_handler(self, fd, iomap):
- """Handles read events on the signal wakeup pipe.
-
- This ensures that SIGCHLD signals aren't lost.
- """
- try:
- os.read(fd, READ_SIZE)
- except (OSError, IOError):
- _, e, _ = sys.exc_info()
- errno, message = e.args
- if errno != EINTR:
- sys.stderr.write('Fatal error reading from wakeup pipe: %s\n'
- % message)
- raise FatalError
-
class PollIOMap(IOMap):
"""A manager for file descriptors and their associated handlers.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/parallax/task.py
new/parallax-1.0.8/parallax/task.py
--- old/parallax-1.0.6/parallax/task.py 2020-04-01 10:32:35.000000000 +0200
+++ new/parallax-1.0.8/parallax/task.py 2022-11-07 03:08:20.000000000 +0100
@@ -39,7 +39,8 @@
print_out=False,
inline=False,
inline_stdout=False,
- default_user=None):
+ default_user=None,
+ is_local=False):
# Backwards compatibility:
if not isinstance(verbose, bool):
@@ -66,6 +67,7 @@
self.pretty_host = host
self.port = port
self.cmd = cmd
+ self.is_local = is_local
if user and user != default_user:
self.pretty_host = '@'.join((user, self.pretty_host))
@@ -126,7 +128,7 @@
close_fds=False, preexec_fn=os.setsid, env=environ)
else:
self.proc = Popen(self.cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
- close_fds=False, start_new_session=True, env=environ)
+ close_fds=False, start_new_session=True, env=environ,
shell=self.is_local)
self.timestamp = time.time()
if self.inputbuffer:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/parallax/version.py
new/parallax-1.0.8/parallax/version.py
--- old/parallax-1.0.6/parallax/version.py 2020-04-01 10:33:22.000000000
+0200
+++ new/parallax-1.0.8/parallax/version.py 2022-11-07 03:08:20.000000000
+0100
@@ -1 +1 @@
-VERSION = '1.0.6'
+VERSION = '1.0.8'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/parallax.egg-info/PKG-INFO
new/parallax-1.0.8/parallax.egg-info/PKG-INFO
--- old/parallax-1.0.6/parallax.egg-info/PKG-INFO 2020-04-01
10:50:03.000000000 +0200
+++ new/parallax-1.0.8/parallax.egg-info/PKG-INFO 1970-01-01
01:00:00.000000000 +0100
@@ -1,31 +0,0 @@
-Metadata-Version: 1.1
-Name: parallax
-Version: 1.0.6
-Summary: Execute commands and copy files over SSH to multiple machines at once
-Home-page: https://github.com/krig/parallax/
-Author: Kristoffer Gronlund
-Author-email: [email protected]
-License: BSD
-Description: Parallax SSH provides an interface to executing commands on
multiple
- nodes at once using SSH. It also provides commands for sending and
receiving files to
- multiple nodes using SCP.
-Platform: linux
-Classifier: Development Status :: 3 - Alpha
-Classifier: Intended Audience :: System Administrators
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Operating System :: POSIX
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.1
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: System :: Clustering
-Classifier: Topic :: System :: Networking
-Classifier: Topic :: System :: Systems Administration
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/parallax.egg-info/SOURCES.txt
new/parallax-1.0.8/parallax.egg-info/SOURCES.txt
--- old/parallax-1.0.6/parallax.egg-info/SOURCES.txt 2020-04-01
10:50:03.000000000 +0200
+++ new/parallax-1.0.8/parallax.egg-info/SOURCES.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
-AUTHORS
-COPYING
-MANIFEST.in
-README.md
-setup.py
-bin/parallax-askpass
-parallax/__init__.py
-parallax/askpass_client.py
-parallax/askpass_server.py
-parallax/callbacks.py
-parallax/color.py
-parallax/manager.py
-parallax/psshutil.py
-parallax/task.py
-parallax/version.py
-parallax.egg-info/PKG-INFO
-parallax.egg-info/SOURCES.txt
-parallax.egg-info/dependency_links.txt
-parallax.egg-info/top_level.txt
-test/test_api.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/parallax-1.0.6/parallax.egg-info/dependency_links.txt
new/parallax-1.0.8/parallax.egg-info/dependency_links.txt
--- old/parallax-1.0.6/parallax.egg-info/dependency_links.txt 2020-04-01
10:50:03.000000000 +0200
+++ new/parallax-1.0.8/parallax.egg-info/dependency_links.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/parallax.egg-info/top_level.txt
new/parallax-1.0.8/parallax.egg-info/top_level.txt
--- old/parallax-1.0.6/parallax.egg-info/top_level.txt 2020-04-01
10:50:03.000000000 +0200
+++ new/parallax-1.0.8/parallax.egg-info/top_level.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-parallax
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/parallax-1.0.6/setup.cfg new/parallax-1.0.8/setup.cfg
--- old/parallax-1.0.6/setup.cfg 2020-04-01 10:50:03.678191400 +0200
+++ new/parallax-1.0.8/setup.cfg 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-[egg_info]
-tag_build =
-tag_date = 0
-