# # spec file for package python-execnet # # Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-execnet Version: 1.5.0 Release: 1.3 Summary: Rapid multi-Python deployment License: MIT Group: Development/Libraries/Python Url: http://codespeak.net/execnet/ Source0: https://files.pythonhosted.org/packages/source/e/execnet/execnet-%{version}.tar.gz BuildRequires: %{python_module devel} BuildRequires: %{python_module setuptools_scm} BuildRequires: %{python_module setuptools} # test requirements BuildRequires: %{python_module apipkg} BuildRequires: %{python_module pytest} BuildRequires: fdupes BuildRequires: python-rpm-macros BuildRequires: python3-Sphinx Requires: python-apipkg BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildArch: noarch %python_subpackages %description execnet provides a share-nothing model with channel-send/receive communication for distributing execution across many Python interpreters across version, platform and network barriers. It has a minimal and fast API targetting the following uses: * distribute tasks to (many) local or remote CPUs * write and deploy hybrid multi-process applications * write scripts to administer multiple environments %prep %setup -q -n execnet-%{version} sed -i "1d" execnet/script/shell.py execnet/script/socketserver.py %package doc Summary: Documentation and examples for %{name} Group: Documentation/Other %description doc This package contains documentation and examples for %{name}. %build %python_build # fix non-executable-script error sed -i "1d" execnet/script/shell.py execnet/script/socketserver.py %install %python_install %{_python_use_flavor python3} %__python3 setup.py build_sphinx rm build/sphinx/html/.buildinfo build/sphinx/html/objects.inv %python_expand %fdupes -s %{buildroot}%{$python_sitelib} %check %python_expand PYTHONPATH=build/lib py.test-%{$python_version} -r s -k"-test_gateway" testing %files %{python_files} %defattr(-,root,root,-) %doc CHANGELOG.rst LICENSE README.rst %{python_sitelib}/execnet %{python_sitelib}/execnet-%{version}-py%{python_version}.egg-info %files %{python_files doc} %defattr(-,root,root,-) %doc build/sphinx/html %changelog * Sat Nov 11 2017 arun@gmx.de - specfile * CHANGELOG -> CHANGELOG.rst * README.txt -> README.rst - update to version 1.5.0: * support shell escaping in python pathnames of popen. Eugene Ciurana discovered that execnet breaks if you use pathnames with spaces in a "python=" part of a spec. We now use shlex.split to split the string. There is a potential for regressions if you used quote or escape sequences as part of your python command. * Only insert importdir into sys.path if it is not already in the path. This prevents a bug when using enum34 with python 3.6 and pytest-xdist. The issue is that enum34 installs an 'enum' module in site-packages which is normally shadowed by the stdlib version of enum, however in gateway_bootstrap.py site-packages is added at the front the the search path. This means on the workers enum34 is hit for import enum which in turn causes import re to fail (as it makes use of the new enum features in 3.6). * Fri Apr 21 2017 aloisio@gmx.com - Converted to single-spec - Enabled tests * Wed Feb 24 2016 osynge@suse.com - Added depenedency on python-apipkg * Mon Feb 22 2016 osynge@suse.com - Update to version 1.4.1: * fix issue33 -- index.txt to correctly mention MIT instead of GPL. * fix issue35 -- adapt some doctests, fix some channel tests for py3. * use subprocess32 when available for python < 3. * try to be a bit more careful when interpreter is shutting down to avoid random exceptions, thanks Alfredo Deza. * ignore errors on orphan file removal when rsyncing * fix issue34 -- limit use of import based bootstrap * de-vendor apipkg and use the pypi dependency instead (this also fixes the bpython interaction issues) * Fix issue38: provide ability to connect to Vagrant VMs easily using :code:`vagrant_ssh=defaut` or :code:`vagrant_ssh=machinename` this feature is experimental and will be refined in future releases. Thanks Christian Theune for the discussion and the initial pull request. * add support for serializing the "complex" type. Thanks Sebastian Koslowski. * fix a regression of the Serializer created by the implied opcode ordering which resulted in a incompatible opcode mapping * Fri Dec 12 2014 tbechtold@suse.com - Update to version 1.2: * fix issue22 -- during interpreter shutdown don't throw an exception when we can't send a termination sequence anymore as we are about to die anyway. * fix issue24 -- allow concurrent creation of gateways by guarding automatic id creation by a look. Thanks tlecomte. * majorly refactor internal thread and IO handling. execnet can now operate on different thread models, defaults to "thread" but allows for eventlet and gevent if it is installed. * gateway.remote_exec() will now execute in multiple threads on the other side by default. The previous neccessity of running "gateway.remote_init_threads()" to allow for such concurrency is gone. The latter method is now a no-op and will be removed in future versions of execnet. * fix issue20: prevent AttributError at interpreter shutdown by not trying to send close/last_message messages if the world around is half destroyed. * fix issue21: allow to create local gateways with sudo aka makegateway("popen//python=sudo python"). Thanks Alfredo Deza for the PR. * streamline gateway termination and simplify proxy implementation. add more internal tracing. * if execution hangs in computation, we now try to send a SIGINT to ourselves on Unix platforms instead of just calling thread.interrupt_main() * change license from GPL to MIT * introduce execnet.dump/load variants of dumps/loads serializing/unserializing mechanism. * improve channel.receive() communication latency on python2 by changing the default timeout of the underlying Queue.get to a regular None instead of the previous default -1 which caused an internal positive timeout value (a hack probably introduced to allow CTRL-C to pass through for