python-distributed/python-distributed.spec
Dirk Mueller 87efa83d4a Accepting request 1036962 from home:bnavigator:branches:devel:languages:python:numeric
- Update to version 2022.11.1 
  ## Enhancements
  * Restrict bokeh=3 support (GH#7329) Gabe Joseph (ignored in rpm
    fixed by bokek 3.0.2, see gh#dask/dask#9659)
  * Respect death timeout when waiting for scheduler file (GH#7296)
    Florian Jetter
  * Always raise exception if P2PShuffle s send fails (GH#7317)
    Hendrik Makait
  ## Maintenance
  * Remove exception handling from transitions (GH#7316) crusaderky
  * Turn private functions into private SchedulerState methods
    (GH#7260) Hendrik Makait
  * Bump toolz minimum version to 0.10.0 (GH#7309) Sam Grayson
- Release 2022.11.0
  ## Note
  * This release changes the default scheduling mode to use
    queuing. This will significantly reduce cluster memory use in
    most cases, and generally improve stability and performance.
    Learn more here and please provide any feedback on this
    discussion.
  * In rare cases, this could make some workloads slower. See the
    documentation for more information, and how to switch back to
    the old mode.
  ## New Features
  * Add ForwardOutput worker plugin to forward stdout and stderr to
    client. (GH#7297) Hendrik Makait
  * Duration counters on prefix level (GH#7288) Florian Jetter
  * Include button for launching JupyterLab layout in repr
    (GH#7218) Ian Rose
  ## Enhancements
  * Support MIG parsing during CUDA context creation in UCX
    initialization (GH#6720) Peter Andreas Entschev
  * Handle /metrics endpoint without prometheus-client installed
    (GH#7234) Hendrik Makait
  * Add support for unpacking namedtuples in remote data (GH#7282)
    Andrew
  * Enable queuing by default (GH#7279) Florian Jetter
  * Fix exists->``exist`` typo in scheduler error messages
    (GH#7281) Matthew Plough
  * If there’s an exception in the Client async context manager
    body then close fast (GH#6920) Thomas Grainger
  ## Bug Fixes
  * Ensure category is optional when logging "warn" events
    (GH#7169) James Bourbeau
  * Edge and impossible transitions to memory (GH#7205) crusaderky
  ## Maintenance
  * Allow bokeh=3 (GH#5648) James Bourbeau
  * Fix typos in P2P shuffle code (GH#7304) Hendrik Makait
  * Reenable test_bad_disk (GH#7300) Florian Jetter
  * Reduce max-runs in test reports (GH#7299) Florian Jetter
  * Revert idle classification when worker-saturation is set
    (GH#7278) Florian Jetter
  * Fix flaky deadline_expiration (GH#7287) Florian Jetter
  * Rewrite of P2P control flow (GH#7268) Florian Jetter
  * Bump minimum bokeh version to 2.4.2 (GH#7271) James Bourbeau
  * Remove deprecated code calls to IOLoop.make_current() (GH#7240)
    Thomas Grainger
  * Improved test for balancing expensive tasks (GH#7272) Hendrik
    Makait
  * Refactor semaphore._Watch into general-purpose Deadline utility
    (GH#7238) Hendrik Makait
  * Require Click 7.0+ (GH#7226) jakirkham
  * Drop tests (GH#7269) Hendrik Makait
  * Replace test_(do_not_)steal_communication_heavy_tasks tests
    with more robust versions (GH#7243) Hendrik Makait
  * xfail test_bad_disk (GH#7265) crusaderky
  * Move transition_log from Scheduler to SchedulerState (GH#7254)
    crusaderky
  * Remove Scheduler.log (GH#7258) crusaderky
  * Use latest pickle (GH#5826) jakirkham
  * Polish parsing of worker-saturation from config (GH#7255)
    crusaderky
  * Avoid expensive occupancy calculation when unused (GH#7257)
    Gabe Joseph
  * Un-skip test_nested_compute (GH#7247) Gabe Joseph
  * Review test_do_not_steal_communication_heavy_tasks (GH#7250)
    crusaderky
  * Fix test_stress_creation_and_deletion (GH#7215) crusaderky
  * Raise exceptions in Server.handle_stream instead of
    swallowing/logging (GH#7162) Hendrik Makait
  * Fix _update_scheduler_info hanging failed tests (GH#7225) Gabe
    Joseph
  * Bump xarray-contrib/ci-trigger from 1.1 to 1.2 (GH#7232)
- Release 2022.10.2
  * Reverted a bug where Bokeh was accidentally made non-optional
    (GH#7230) Oliver Holworthy
  * Schedule a queued task when a task secedes (GH#7224) Gabe
    Joseph
  * This was a hotfix release
- Release 2022.10.1
  ## New Features
  * Add Client.restart_workers method (GH#7154) James Bourbeau
  * Implement PackageInstall plugin for pip and conda (GH#7126)
    Hendrik Makait
  ## Enhancements
  * Add prometheus collector for work-stealing (GH#7206) Hendrik
    Makait
  * Track reason of workers closing and restarting (GH#7166)
    Hendrik Makait
  * Show no-worker on task progress bar (GH#7171) Florian Jetter
  * Set OPENBLAS_NUM_THREADS by default (GH#7177) James Bourbeau
  * Optionally provide local directory to data constructor
    (GH#7153) Lawrence Mitchell
  * Introduce distributed.comm.ucx.environment config slot
    (GH#7164) Lawrence Mitchell
  * Log information about memory limit (GH#7160) Florian Jetter
  * Improve log messages on scheduler for restart (GH#7150) Florian
    Jetter
  * More comprehensive WorkerState task counters (GH#7167)
    crusaderky
  ## Bug Fixes
  * Update minimum bokeh version message (GH#7172) James Bourbeau
  * Revamped implementations of remote print() and warn(), fixing
    #7095 (GH#7129) Max Bane
  ## Maintenance
  * Temporarily restrict bokeh<3 (GH#7219) James Bourbeau
  * Make Scheduler.reschedule private (GH#7216) crusaderky
  * Fix decide_worker_rootish_queuing_disabled assert (GH#7065)
    Gabe Joseph
  * Fix flaky test_include_communication_in_occupancy (GH#7212)
    Gabe Joseph
  * Do not raise on leaked websockets (GH#7199) Florian Jetter
  * Update nightly recipes with CLI tests, dependency changes
    (GH#7201) Charles Blackmon-Luca
  * Make p2p shuffle submodules private (GH#7186) Florian Jetter
  * Backport tornado PeriodicCallback (GH#7165) Florian Jetter
  * Fix mypy failure on CI (GH#7198) Florian Jetter
  * User a layer for p2p shuffle (GH#7180) Florian Jetter
  * Type annotations for shuffle (GH#7185) Florian Jetter
  * Do not close worker on comm error in heartbeat (GH#7163)
    Hendrik Makait
  * Errors when setting TCP timeouts log as error (GH#7161) Florian
    Jetter
  * Remove incorrect advice from pre-commit config (GH#7159)
    crusaderky
  * Use functionalities network for codecov uploader (GH#7148)
    Florian Jetter
  * Use counter metric type where appropriate, incoming_count was
    reporting bytes (GH#7125) Nat Tabris
- Add allow-bokeh3.patch -- raise upper bokeh version, reverts part
  of gh#dask/distributed#7329, see also gh#dask/dask#9659
- Replace support-tornado-6-2.patch with
  distributed-pr7286-tornado-6-2.patch -- gh#dask/distributed#7286

OBS-URL: https://build.opensuse.org/request/show/1036962
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-distributed?expand=0&rev=124
2022-11-20 18:27:09 +00:00

210 lines
7.7 KiB
RPMSpec

#
# spec file
#
# Copyright (c) 2022 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#
%define psuffix %{nil}
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test-py38"
%define psuffix -test-py38
%define skip_python39 1
%define skip_python310 1
%bcond_without test
%endif
%if "%{flavor}" == "test-py39"
%define psuffix -test-py39
%define skip_python38 1
%define skip_python310 1
%bcond_without test
%endif
%if "%{flavor}" == "test-py310"
%define psuffix -test-py310
%define skip_python38 1
%define skip_python39 1
%bcond_without test
%endif
%if "%{flavor}" == ""
%bcond_with test
%endif
# use this to run tests with xdist in parallel, unfortunately fails server side
%bcond_with paralleltests
Name: python-distributed%{psuffix}
# ===> Note: python-dask MUST be updated in sync with python-distributed! <===
Version: 2022.11.1
Release: 0
Summary: Library for distributed computing with Python
License: BSD-3-Clause
URL: https://distributed.dask.org
Source: https://github.com/dask/distributed/archive/refs/tags/%{version}.tar.gz#/distributed-%{version}-gh.tar.gz
Source99: python-distributed-rpmlintrc
# PATCH-FIX-UPSTREAM allow-bokeh3.patch -- raise upper bokeh version, reverts part of gh#dask/distributed#7329, see also gh#dask/dask#9659
Patch1: allow-bokeh3.patch
# PATCH-FIX-UPSTREAM distributed-pr7286-tornado-6-2.patch gh#dask/distributed#7286
Patch2: distributed-pr7286-tornado-6-2.patch
# PATCH-FIX-OPENSUSE distributed-ignore-off.patch -- ignore that we can't probe addresses on obs, code@bnavigator.de
Patch3: distributed-ignore-offline.patch
# PATCH-FIX-OPENSUSE distributed-ignore-thread-leaks.patch -- ignore leaking threads on obs, code@bnavigator.de
Patch4: distributed-ignore-thread-leaks.patch
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-PyYAML
Requires: python-certifi
Requires: python-click >= 7.0
Requires: python-cloudpickle >= 1.5.0
Requires: python-dask = %{version}
Requires: python-locket >= 1.0.0
Requires: python-msgpack >= 0.6.0
Requires: python-packaging >= 20.0
Requires: python-psutil >= 5.0
Requires: python-sortedcontainers
Requires: python-tblib
Requires: python-toolz >= 0.10.0
Requires: python-tornado >= 6.2
Requires: python-urllib3
Requires: python-zict >= 0.1.3
Requires(post): update-alternatives
Requires(postun):update-alternatives
BuildArch: noarch
%if %{with test}
BuildRequires: %{python_module bokeh >= 2.4.2}
BuildRequires: %{python_module dask-complete = %{version}}
BuildRequires: %{python_module distributed = %{version}}
BuildRequires: %{python_module ipykernel}
BuildRequires: %{python_module ipython}
BuildRequires: %{python_module jupyter_client}
BuildRequires: %{python_module pytest-rerunfailures}
BuildRequires: %{python_module pytest-timeout}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module requests}
BuildRequires: %{python_module sparse}
%if %{with paralleltests}
BuildRequires: %{python_module pytest-xdist}
%endif
%endif
%python_subpackages
%description
Dask.distributed is a library for distributed computing in Python. It
extends both the concurrent.futures and dask APIs to moderate sized
clusters.
%prep
%autosetup -p1 -n distributed-%{version}
sed -e '/--durations=20/d' \
-e '/--color=yes/d' \
-e 's/timeout_method = thread/timeout_method = signal/' \
-i setup.cfg
%build
%if ! %{with test}
%python_build
%endif
%install
%if ! %{with test}
%python_install
%python_clone -a %{buildroot}%{_bindir}/dask-ssh
%python_clone -a %{buildroot}%{_bindir}/dask-scheduler
%python_clone -a %{buildroot}%{_bindir}/dask-worker
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%if %{with test}
%check
# test local src dir, not installed path: looks for test certificates and not installed test modules
export PYTHONPATH=":x"
# disable profiling completely -- https://github.com/dask/distributed/pull/6490
sed '/enable profiling/ {s/enabled: True/enabled: False/}' -i distributed/distributed.yaml
# make sure the change was successful, this is only for the tests, we didn't patch any installed source
grep 'enabled: False .*enable profiling' distributed/distributed.yaml
# we obviously don't test a git repo
donttest="test_git_revision"
# logger error
donttest+=" or test_version_warning_in_cluster"
# invalid task state
donttest+=" or test_fail_to_pickle_execute_2"
# Some tests randomly fail server-side -- too slow for obs (?)
# see also https://github.com/dask/distributed/issues/5818
donttest+=" or (test_asyncprocess and (test_exit_callback or test_simple))"
donttest+=" or (test_client and test_repr)"
donttest+=" or (test_client and test_profile_server)"
donttest+=" or (test_metrics and test_wall_clock)"
donttest+=" or (test_priorities and test_compute)"
donttest+=" or (test_resources and test_prefer_constrained)"
donttest+=" or (test_steal and test_steal_twice)"
donttest+=" or (test_variable and test_variable_in_task)"
donttest+=" or (test_worker and test_worker_reconnects_mid_compute)"
# server-side fail due to the non-network warning in a subprocess where the patched filter does not apply
donttest+=" or (test_client and test_quiet_close_process)"
if [[ $(getconf LONG_BIT) -eq 32 ]]; then
# OverflowError -- https://github.com/dask/distributed/issues/5252
donttest+=" or test_ensure_spilled_immediately"
donttest+=" or test_value_raises_during_spilling"
donttest+=" or test_fail_to_pickle_execute_1"
# https://github.com/dask/distributed/issues/7175
donttest+=" or (test_sizeof_error and larger)"
fi
%if %{with paralleltests}
# not fully supported parallel test suite: https://github.com/dask/distributed/issues/5186
# works locally, but fails with too many tests server-side
notparallel="rebalance or memory or upload"
notparallel+=" or test_open_close_many_workers"
notparallel+=" or test_recreate_error_array"
notparallel+=" or (test_preload and test_web_preload)"
# Recursion error, https://github.com/dask/distributed/issues/6406
notparallel+=" or test_stack_overflow"
#
notparallel+=" or test_dashboard_host"
notparallel+=" or test_close_properly"
notparallel+=" or test_popen_timeout"
notparallel+=" or test_plugin_internal_exception"
notparallel+=" or test_runspec_regression_sync"
notparallel+=" or test_client_async_before_loop_starts"
%pytest distributed/tests -m "not avoid_ci" -n auto -k "not ($notparallel or $donttest ${$python_donttest})"
%pytest distributed/tests -m "not avoid_ci" -k "($notparallel) and not ($donttest ${$python_donttest})"
%else
%pytest distributed/tests -m "not avoid_ci" -k "not ($donttest ${$python_donttest})" --reruns 3 --reruns-delay 3
%endif
%endif
%if ! %{with test}
%post
%python_install_alternative dask-ssh dask-scheduler dask-worker
%postun
%python_uninstall_alternative dask-ssh
%files %{python_files}
%doc README.rst
%license LICENSE.txt
%python_alternative %{_bindir}/dask-ssh
%python_alternative %{_bindir}/dask-scheduler
%python_alternative %{_bindir}/dask-worker
%{python_sitelib}/distributed
%{python_sitelib}/distributed-%{version}*-info
%endif
%changelog