openSUSE Commits
Threads by month
- ----- 2024 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
October 2023
- 1 participants
- 2656 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package octave-forge-sockets for openSUSE:Factory checked in at 2023-10-31 20:25:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/octave-forge-sockets (Old)
and /work/SRC/openSUSE:Factory/.octave-forge-sockets.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "octave-forge-sockets"
Tue Oct 31 20:25:39 2023 rev:5 rq:1121347 version:1.4.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/octave-forge-sockets/octave-forge-sockets.changes 2022-09-15 22:59:26.473257883 +0200
+++ /work/SRC/openSUSE:Factory/.octave-forge-sockets.new.17445/octave-forge-sockets.changes 2023-10-31 20:25:53.894377451 +0100
@@ -1,0 +2,11 @@
+Mon Oct 30 16:00:54 UTC 2023 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update URL to point to 'https://gnu-octave.github.io/packages/'
+
+-------------------------------------------------------------------
+Thu Oct 19 06:33:17 UTC 2023 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update to version 1.4.1:
+ * Minor documentation updates.
+
+-------------------------------------------------------------------
Old:
----
sockets-1.4.0.tar.gz
New:
----
sockets-1.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ octave-forge-sockets.spec ++++++
--- /var/tmp/diff_new_pack.dWq8WK/_old 2023-10-31 20:25:54.450397874 +0100
+++ /var/tmp/diff_new_pack.dWq8WK/_new 2023-10-31 20:25:54.450397874 +0100
@@ -1,7 +1,7 @@
#
# spec file for package octave-forge-sockets
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,12 +18,12 @@
%define octpkg sockets
Name: octave-forge-%{octpkg}
-Version: 1.4.0
+Version: 1.4.1
Release: 0
Summary: Socket Octave functions for networking
License: GPL-3.0-or-later
Group: Productivity/Scientific/Math
-URL: https://octave.sourceforge.io/%{octpkg}/
+URL: https://gnu-octave.github.io/packages/%{octpkg}/
Source0: https://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz
BuildRequires: gcc-c++
BuildRequires: hdf5-devel
++++++ sockets-1.4.0.tar.gz -> sockets-1.4.1.tar.gz ++++++
++++ 2077 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package octave-forge-splines for openSUSE:Factory checked in at 2023-10-31 20:25:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/octave-forge-splines (Old)
and /work/SRC/openSUSE:Factory/.octave-forge-splines.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "octave-forge-splines"
Tue Oct 31 20:25:38 2023 rev:7 rq:1121346 version:1.3.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/octave-forge-splines/octave-forge-splines.changes 2021-03-17 20:20:06.463330051 +0100
+++ /work/SRC/openSUSE:Factory/.octave-forge-splines.new.17445/octave-forge-splines.changes 2023-10-31 20:25:52.962343217 +0100
@@ -1,0 +2,12 @@
+Mon Oct 30 16:01:00 UTC 2023 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update URL to point to 'https://gnu-octave.github.io/packages/'
+
+-------------------------------------------------------------------
+Thu Oct 19 06:39:40 UTC 2023 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update to version 1.3.5:
+ * bug fix in csape
+ * syntax made compatible with Octave 8
+
+-------------------------------------------------------------------
Old:
----
splines-1.3.4.tar.gz
New:
----
splines-1.3.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ octave-forge-splines.spec ++++++
--- /var/tmp/diff_new_pack.kuAtdJ/_old 2023-10-31 20:25:53.702370399 +0100
+++ /var/tmp/diff_new_pack.kuAtdJ/_new 2023-10-31 20:25:53.706370546 +0100
@@ -1,7 +1,7 @@
#
# spec file for package octave-forge-splines
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,12 +18,12 @@
%define octpkg splines
Name: octave-forge-%{octpkg}
-Version: 1.3.4
+Version: 1.3.5
Release: 0
Summary: Additional spline functions for Octave
License: GPL-2.0-or-later AND GPL-3.0-or-later AND SUSE-Public-Domain
Group: Productivity/Scientific/Math
-URL: https://octave.sourceforge.io
+URL: https://gnu-octave.github.io/packages/%{octpkg}/
Source0: https://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz
BuildArch: noarch
BuildRequires: octave-devel
++++++ splines-1.3.4.tar.gz -> splines-1.3.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/splines-1.3.4/DESCRIPTION new/splines/DESCRIPTION
--- old/splines-1.3.4/DESCRIPTION 2021-02-24 02:14:16.000000000 +0100
+++ new/splines/DESCRIPTION 2023-05-05 17:23:35.000000000 +0200
@@ -1,8 +1,8 @@
Name: splines
-Version: 1.3.4
-Date: 2021-02-23
+Version: 1.3.5
+Date: 2023-05-05
Author: various authors
-Maintainer: Nir Krakauer <splines(a)nirkrakauer.net>
+Maintainer: Nir Krakauer <nkrakauer(a)ccny.cuny.edu>
Title: Splines.
Description: Additional spline functions.
Categories: Splines
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/splines-1.3.4/Makefile new/splines/Makefile
--- old/splines-1.3.4/Makefile 2021-02-24 02:14:16.000000000 +0100
+++ new/splines/Makefile 1970-01-01 01:00:00.000000000 +0100
@@ -1,235 +0,0 @@
-## Copyright 2015-2016 Carnë Draug
-## Copyright 2015-2016 Oliver Heimlich
-## Copyright 2017 Julien Bect <jbect(a)users.sf.net>
-## Copyright 2017 Olaf Till <i7tiol(a)t-online.de>
-##
-## Copying and distribution of this file, with or without modification,
-## are permitted in any medium without royalty provided the copyright
-## notice and this notice are preserved. This file is offered as-is,
-## without any warranty.
-
-## Some basic tools (can be overriden using environment variables)
-SED ?= sed
-TAR ?= tar
-GREP ?= grep
-CUT ?= cut
-TR ?= tr
-
-## Note the use of ':=' (immediate set) and not just '=' (lazy set).
-## http://stackoverflow.com/a/448939/1609556
-package := $(shell $(GREP) "^Name: " DESCRIPTION | $(CUT) -f2 -d" " | \
-$(TR) '[:upper:]' '[:lower:]')
-version := $(shell $(GREP) "^Version: " DESCRIPTION | $(CUT) -f2 -d" ")
-
-## These are the paths that will be created for the releases.
-target_dir := target
-release_dir := $(target_dir)/$(package)-$(version)
-release_tarball := $(target_dir)/$(package)-$(version).tar.gz
-html_dir := $(target_dir)/$(package)-html
-html_tarball := $(target_dir)/$(package)-html.tar.gz
-## Using $(realpath ...) avoids problems with symlinks due to bug
-## #50994 in Octaves scripts/pkg/private/install.m. But at least the
-## release directory above is needed in the relative form, for 'git
-## archive --format=tar --prefix=$(release_dir).
-real_target_dir := $(realpath .)/$(target_dir)
-installation_dir := $(real_target_dir)/.installation
-package_list := $(installation_dir)/.octave_packages
-install_stamp := $(installation_dir)/.install_stamp
-
-## These can be set by environment variables which allow to easily
-## test with different Octave versions.
-ifndef OCTAVE
-OCTAVE := octave
-endif
-OCTAVE := $(OCTAVE) --no-gui --silent --norc
-MKOCTFILE ?= mkoctfile
-
-## Command used to set permissions before creating tarballs
-FIX_PERMISSIONS ?= chmod -R a+rX,u+w,go-w,ug-s
-
-## Detect which VCS is used
-vcs := $(if $(wildcard .hg),hg,$(if $(wildcard .git),git,unknown))
-ifeq ($(vcs),hg)
-release_dir_dep := .hg/dirstate
-endif
-ifeq ($(vcs),git)
-release_dir_dep := .git/index
-endif
-
-
-## .PHONY indicates targets that are not filenames
-## (https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html)
-.PHONY: help
-
-## make will display the command before runnning them. Use @command
-## to not display it (makes specially sense for echo).
-help:
- @echo "Targets:"
- @echo " dist - Create $(release_tarball) for release."
- @echo " html - Create $(html_tarball) for release."
- @echo " release - Create both of the above and show md5sums."
- @echo " install - Install the package in $(installation_dir), where it is not visible in a normal Octave session."
- @echo " check - Execute package tests."
- @echo " doctest - Test the help texts with the doctest package."
- @echo " run - Run Octave with the package installed in $(installation_dir) in the path."
- @echo " clean - Remove everything made with this Makefile."
-
-
-##
-## Recipes for release tarballs (package + html)
-##
-
-.PHONY: release dist html clean-tarballs clean-unpacked-release
-
-## To make a release, build the distribution and html tarballs.
-release: dist html
- md5sum $(release_tarball) $(html_tarball)
- @echo "Upload @ https://sourceforge.net/p/octave/package-releases/new/"
- @echo " and note the changeset the release corresponds to"
-
-## dist and html targets are only PHONY/alias targets to the release
-## and html tarballs.
-dist: $(release_tarball)
-html: $(html_tarball)
-
-## An implicit rule with a recipe to build the tarballs correctly.
-%.tar.gz: %
- $(TAR) -c -f - --posix -C "$(target_dir)/" "$(notdir $<)" | gzip -9n > "$@"
-
-clean-tarballs:
- @echo "## Cleaning release tarballs (package + html)..."
- -$(RM) $(release_tarball) $(html_tarball)
- @echo
-
-## Create the unpacked package.
-##
-## Notes:
-## * having ".hg/dirstate" (or ".git/index") as a prerequesite means it is
-## only rebuilt if we are at a different commit.
-## * the variable RM usually defaults to "rm -f"
-## * having this recipe separate from the one that makes the tarball
-## makes it easy to have packages in alternative formats (such as zip)
-## * note that if a commands needs to be run in a specific directory,
-## the command to "cd" needs to be on the same line. Each line restores
-## the original working directory.
-$(release_dir): $(release_dir_dep)
- -$(RM) -r "$@"
-ifeq (${vcs},hg)
- hg archive --exclude ".hg*" --type files "$@"
-endif
-ifeq (${vcs},git)
- git archive --format=tar --prefix="$@/" HEAD | $(TAR) -x
- $(RM) "$(a)/.gitignore"
-endif
-## Don't fall back to run the supposed necessary contents of
-## 'bootstrap' here. Users are better off if they provide
-## 'bootstrap'. Administrators, checking build reproducibility, can
-## put in the missing 'bootstrap' file if they feel they know its
-## necessary contents.
-ifneq (,$(wildcard src/bootstrap))
- cd "$@/src" && ./bootstrap && $(RM) -r "autom4te.cache"
-endif
-## Uncomment this if your src/Makefile.in has these targets for
-## pre-building something for the release (e.g. documentation).
-# cd "$@/src" && ./configure && $(MAKE) prebuild && \
-# $(MAKE) distclean && $(RM) Makefile
-##
- ${FIX_PERMISSIONS} "$@"
-
-run_in_place = $(OCTAVE) --eval ' pkg ("local_list", "$(package_list)"); ' \
- --eval ' pkg ("load", "$(package)"); '
-
-html_options = --eval 'options = get_html_options ("octave-forge");'
-## Uncomment this for package documentation.
-# html_options = --eval 'options = get_html_options ("octave-forge");' \
-# --eval 'options.package_doc = "$(package).texi";'
-$(html_dir): $(install_stamp)
- $(RM) -r "$@";
- $(run_in_place) \
- --eval ' pkg load generate_html; ' \
- $(html_options) \
- --eval ' generate_package_html ("$(package)", "$@", options); ';
- $(FIX_PERMISSIONS) "$@";
-
-clean-unpacked-release:
- @echo "## Cleaning unpacked release tarballs (package + html)..."
- -$(RM) -r $(release_dir) $(html_dir)
- @echo
-
-##
-## Recipes for installing the package.
-##
-
-.PHONY: install clean-install
-
-octave_install_commands = \
-' llist_path = pkg ("local_list"); \
- mkdir ("$(installation_dir)"); \
- load (llist_path); \
- local_packages(cellfun (@ (x) strcmp ("$(package)", x.name), local_packages)) = []; \
- save ("$(package_list)", "local_packages"); \
- pkg ("local_list", "$(package_list)"); \
- pkg ("prefix", "$(installation_dir)", "$(installation_dir)"); \
- pkg ("install", "-local", "-verbose", "$(release_tarball)"); '
-
-## Install unconditionally. Maybe useful for testing installation with
-## different versions of Octave.
-install: $(release_tarball)
- @echo "Installing package under $(installation_dir) ..."
- $(OCTAVE) --eval $(octave_install_commands)
- touch $(install_stamp)
-
-## Install only if installation (under target/...) is not current.
-$(install_stamp): $(release_tarball)
- @echo "Installing package under $(installation_dir) ..."
- $(OCTAVE) --eval $(octave_install_commands)
- touch $(install_stamp)
-
-clean-install:
- @echo "## Cleaning installation under $(installation_dir) ..."
- -$(RM) -r $(installation_dir)
- @echo
-
-
-##
-## Recipes for testing purposes
-##
-
-.PHONY: run doctest check
-
-## Start an Octave session with the package directories on the path for
-## interactice test of development sources.
-run: $(install_stamp)
- $(run_in_place) --persist
-
-## Test example blocks in the documentation. Needs doctest package
-## https://octave.sourceforge.io/doctest/index.html
-doctest: $(install_stamp)
- $(run_in_place) --eval 'pkg load doctest;' \
- --eval "targets = '$(shell (ls inst; ls src | $(GREP) .oct) | $(CUT) -f2 -d@ | $(CUT) -f1 -d.)';" \
- --eval "targets = strsplit (targets, ' '); doctest (targets);"
-
-
-## Test package.
-octave_test_commands = \
-' args = {"inst", "src"}; \
- args(cellfun (@ (x) isempty (a = stat (x)) || ! S_ISDIR (a.mode), args)) = []; \
- if (isempty (args)) error ("no \"inst\" or \"src\" directory"); exit (1); \
- else cellfun(@runtests, args); endif '
-check: $(install_stamp)
- $(run_in_place) --eval $(octave_test_commands)
-
-
-##
-## CLEAN
-##
-
-.PHONY: clean
-
-clean: clean-tarballs clean-unpacked-release clean-install
- @echo "## Removing target directory (if empty)..."
- -rmdir $(target_dir)
- @echo
- @echo "## Cleaning done"
- @echo
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/splines-1.3.4/NEWS new/splines/NEWS
--- old/splines-1.3.4/NEWS 2021-02-24 02:14:16.000000000 +0100
+++ new/splines/NEWS 2023-05-05 17:23:35.000000000 +0200
@@ -1,3 +1,10 @@
+
+Summary of important user-visible changes for splines 1.3.5:
+-------------------------------------------------------------------
+
+ ** bug fix in csape
+ ** syntax made compatible with Octave 8
+
Summary of important user-visible changes for splines 1.3.4:
-------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/splines-1.3.4/inst/csape.m new/splines/inst/csape.m
--- old/splines-1.3.4/inst/csape.m 2021-02-24 02:14:16.000000000 +0100
+++ new/splines/inst/csape.m 2023-05-05 17:23:35.000000000 +0200
@@ -101,7 +101,7 @@
g = [3*(d(1, :) - valc(1, :)); g; 3*(valc(2, :) - d(end, :))];
c = A \ g;
else
- dg = 2 * (h(1:n - 2) .+ h(2:n - 1));
+ dg = 2 * (h(1:n - 2) + h(2:n - 1));
dg(1) = dg(1) - 0.5 * h(1);
dg(n - 2) = dg(n-2) - 0.5 * h(n - 1);
@@ -139,49 +139,37 @@
g(1,:) = g(1,:) - h(1) * c(1,:);
g(n - 2,:) = g(n-2,:) - h(n - 1) * c(n,:);
- if( n == 3)
- dg = 2 * h(1);
- c(2:n - 1,:) = g / dg;
- else
- dg = 2 * (h(1:n - 2) .+ h(2:n - 1));
- e = h(2:n - 2);
- c(2:n - 1,:) = spdiags([[e(:);0],dg,[0;e(:)]],[-1,0,1],n-2,n-2) \ g;
- end
+ dg = 2 * (h(1:n - 2) + h(2:n - 1));
+ e = h(2:n - 2);
+ c(2:n - 1,:) = spdiags([[e(:);0],dg,[0;e(:)]],[-1,0,1],n-2,n-2) \ g;
b(1:n - 1,:) = diff (a) ./ h(1:n - 1,idx)...
- h(1:n - 1,idx) / 3 .* (c(2:n,:) + 2 * c(1:n - 1,:));
d = diff (c) ./ (3 * h(1:n - 1, idx));
elseif (strcmp(cond,"periodic"))
-
- h = [h; h(1)];
-
- ## XXX FIXME XXX --- the following gives a smoother periodic transition:
- ## a(n,:) = a(1,:) = ( a(n,:) + a(1,:) ) / 2;
- a(n,:) = a(1,:);
-
- tmp = diff (shift ([a; a(2,:)], -1));
- g = 3 * tmp(1:n - 1,:) ./ h(2:n,idx)...
- - 3 * diff (a) ./ h(1:n - 1,idx);
-
- if (n > 3)
- dg = 2 * (h(1:n - 1) .+ h(2:n));
- e = h(2:n - 1);
-
- ## Use Sherman-Morrison formula to extend the solution
- ## to the cyclic system. See Numerical Recipes in C, pp 73-75
- gamma = - dg(1);
- dg(1) -= gamma;
- dg(end) -= h(1) * h(1) / gamma;
- z = spdiags([[e(:);0],dg,[0;e(:)]],[-1,0,1],n-1,n-1) \ ...
- [[gamma; zeros(n-3,1); h(1)],g];
- fact = (z(1,2:end) + h(1) * z(end,2:end) / gamma) / ...
- (1.0 + z(1,1) + h(1) * z(end,1) / gamma);
-
- c(2:n,:) = z(:,2:end) - z(:,1) * fact;
- endif
-
- c(1,:) = c(n,:);
+
+ D = diff(a) ./ h;
+ A = sparse (n-1);
+ v = zeros (n-1, m);
+ for i = 2:(n-2)
+ A(i, i-1) = h(i-1);
+ A(i, i) = 2 * (h(i-1) + h(i));
+ A(i, i+1) = h(i);
+ v(i, :) = 3 * (D(i, :) - D(i-1, :));
+ endfor
+ A(1, 1) = 2 * (h(1) + h(n-1));
+ A(1, 2) = h(1);
+ A(1, n-1) += h(n-1);
+ v(1, :) = 3 * (D(1, :) - D(n-1, :));
+ A(n-1, 1) = h(n-1);
+ A(n-1, n-2) += h(n-2);
+ A(n-1, n-1) = 2 * (h(n-2) + h(n-1));
+ v(n-1, :) = 3 * (D(n-1, :) - D(n-2, :));
+ c = A \ v; #this is a cyclic tridiagonal system -- the Sherwood-Morrison formula
+ #could be used to solve it if \ is too slow in this case
+
+ c(n,:) = c(1,:);
b = diff (a) ./ h(1:n - 1,idx)...
- h(1:n - 1,idx) / 3 .* (c(2:n,:) + 2 * c(1:n - 1,:));
b(n,:) = b(1,:);
@@ -202,7 +190,7 @@
g(2:n - 3,:) = 3 * diff (a(3:n - 1,:)) ./ h(3:n - 2,idx)...
- 3 * diff (a(2:n - 2,:)) ./ h(2:n - 3,idx);
- dg = 2 * (h(1:n - 2) .+ h(2:n - 1));
+ dg = 2 * (h(1:n - 2) + h(2:n - 1));
dg(1) = dg(1) - h(1);
dg(n - 2) = dg(n-2) - h(n - 1);
@@ -219,18 +207,21 @@
c(2:n - 1,:) = spdiags([[ldg(:);0],dg,[0;udg(:)]],[-1,0,1],n-2,n-2) \ g;
else # n == 3
-
- dg= [h(1) + 2 * h(2)];
- c(2:n - 1,:) = g/dg(1);
-
+ #with only 3 points, the not-a-knot cubic spline is not unique;
+ #we choose the one where the cubic coefficients are zero,
+ #which is the interpolating quadratic polynomial
+ c = repmat ((a(1,:) - a(3,:)) / ((x(3) - x(1)) * (x(2) - x(3))) ...
+ + (a(2,:) - a(1,:)) / ((x(2) - x(1)) * (x(2) - x(3))), [3 1]);
+ endif
+ if n == 3
+ d = zeros (n, m);
+ else
+ c(1,:) = c(2,:) + h(1) / h(2) * (c(2,:) - c(3,:));
+ c(n,:) = c(n - 1,:) + h(n - 1) / h(n - 2) * (c(n - 1,:) - c(n - 2,:));
+ d = diff (c) ./ (3 * h(1:n - 1, idx));
endif
-
- c(1,:) = c(2,:) + h(1) / h(2) * (c(2,:) - c(3,:));
- c(n,:) = c(n - 1,:) + h(n - 1) / h(n - 2) * (c(n - 1,:) - c(n - 2,:));
b = diff (a) ./ h(1:n - 1, idx)...
- h(1:n - 1, idx) / 3 .* (c(2:n,:) + 2 * c(1:n - 1,:));
- d = diff (c) ./ (3 * h(1:n - 1, idx));
-
else
msg = sprintf("unknown end condition: %s",cond);
error (msg);
@@ -242,7 +233,7 @@
endfunction
-%!shared x,x2,y,cond,pp,pp1,pp2,h,valc
+%!shared x,x2,y,cond,pp,pp1,pp2,h,valc,xi,yi
%! x = linspace(0,2*pi,5); y = sin(x); x2 = linspace(0,2*pi,16);
%!assert (ppval(csape(x,y),x), y, 10*eps);
@@ -253,6 +244,7 @@
%! [ppval(csape(x,y),x);ppval(csape(x,y),x)], 10*eps)
%!assert (ppval(csape(x,[y;y]),x2), ...
%! [ppval(csape(x,y),x2);ppval(csape(x,y),x2)], 10*eps)
+%!assert (ppval(csape([1 2 4],[2, 3, 6]), 3), 13/3, 10*eps);
%!test cond='complete';
%!assert (ppval(csape(x,y,cond),x), y, 10*eps);
@@ -263,6 +255,7 @@
%! [ppval(csape(x,y,cond),x);ppval(csape(x,y,cond),x)], 10*eps)
%!assert (ppval(csape(x,[y;y],cond),x2), ...
%! [ppval(csape(x,y,cond),x2);ppval(csape(x,y,cond),x2)], 10*eps)
+%!assert (ppval(csape([1 2 4],[2, 3, 6], cond, [2 1]), 3), 215/48, 10*eps);
%!test cond='variational';
%!assert (ppval(csape(x,y,cond),x), y, 10*eps);
@@ -273,6 +266,8 @@
%! [ppval(csape(x,y,cond),x);ppval(csape(x,y,cond),x)], 10*eps)
%!assert (ppval(csape(x,[y;y],cond),x2), ...
%! [ppval(csape(x,y,cond),x2);ppval(csape(x,y,cond),x2)], 10*eps)
+%!assert (ppval(csape([1 2 3],[2, 3, 5],cond), 1.5), 2.40625, 10*eps);
+%!assert (ppval(csape([1 2 4],[2, 3, 6], cond), 3), 4.375, 10*eps);
%!test cond='second';
%!assert (ppval(csape(x,y,cond),x), y, 10*eps);
@@ -283,6 +278,7 @@
%! [ppval(csape(x,y,cond),x);ppval(csape(x,y,cond),x)], 10*eps)
%!assert (ppval(csape(x,[y;y],cond),x2), ...
%! [ppval(csape(x,y,cond),x2);ppval(csape(x,y,cond),x2)], 10*eps)
+%!assert (ppval(csape([1 2 4],[2, 3, 6], cond, [1 2]), 3), 49/12, 10*eps);
%!test cond='periodic';
%!assert (ppval(csape(x,y,cond),x), y, 10*eps);
@@ -305,6 +301,9 @@
%! [ppval(csape(x,y,cond),x2);ppval(csape(x,y,cond),x2)], 10*eps)
%!assert (ppval(csape(x(1:4),y(1:4),cond),x(1:4)), y(1:4), 10*eps);
%!assert (ppval(csape(x(1:4)',y(1:4)',cond),x(1:4)), y(1:4), 10*eps);
+%!test assert (ppval(csape([1 2 4],[2, 3, 6], 'not-a-knot'), 3), 13/3, 10*eps);
+%!test assert (ppval(csape([1 2 4 5],[2, 3, 6, 5], 'not-a-knot'), 3), 29/6, 10*eps);
+%!test assert (ppval(csape([1 2 4 5 6],[2, 3, 6, 5, 6], 'not-a-knot'), 3), 141/28, 10*eps);
%!test cond='complete';
%! h = pi/6; n = 3; x = linspace(0,(n-1)*h,n)'; y = sin(x); valc = cos([x(1) x(end)]); pp = csape(x, y, cond, valc);
@@ -328,3 +327,26 @@
%! y = [sin(x) cos(x)]; valc = [cos([x(1); x(end)]) -sin([x(1); x(end)])]; pp2 = csape(x, y, cond, valc);
%!assert (pp2.coefs([1 3], :), pp.coefs)
%!assert (pp2.coefs([2 4], :), pp1.coefs)
+
+# more tests of correctness for periodic boundary conditions
+%!test cond='periodic';
+%! x = [1 2 4 5 6]'; y = [2 3 6 5 6]'; xi = 3; yi = 129/26; pp = csape (x, y, cond);
+%!assert (ppval(pp, x), y, 10*eps);
+%!assert (ppval(pp, xi), yi, 10*eps);
+%!assert (ppval(ppder(pp), x(1)), ppval(ppder(pp), x(end)), 10*eps);
+%!assert (ppval(ppder(pp, 2), x(1)), ppval(ppder(pp, 2), x(end)), 10*eps);
+%! x = [1 2 4 6]'; y = [2 3 4 2]'; xi = 3; yi = 4 + 1/64; pp = csape (x, y, cond);
+%!assert (ppval(pp, x), y, 10*eps);
+%!assert (ppval(pp, xi), yi, 10*eps);
+%!assert (ppval(ppder(pp), x(1)), ppval(ppder(pp), x(end)), 10*eps);
+%!assert (ppval(ppder(pp, 2), x(1)), ppval(ppder(pp, 2), x(end)), 10*eps);
+%! x = [1 2 4 5]'; y = [2 3 6 5]'; xi = 3; yi = 5.1; pp = csape (x, y, cond);
+%!assert (ppval(pp, x), y, 10*eps);
+%!assert (ppval(pp, xi), yi, 10*eps);
+%!assert (ppval(ppder(pp), x(1)), ppval(ppder(pp), x(end)), 10*eps);
+%!assert (ppval(ppder(pp, 2), x(1)), ppval(ppder(pp, 2), x(end)), 10*eps);
+%! x = [1 2 4]'; y = [2 3 2]'; xi = 3; yi = 2.5; pp = csape (x, y, cond);
+%!assert (ppval(pp, x), y, 10*eps);
+%!assert (ppval(pp, xi), yi, 10*eps);
+%!assert (ppval(ppder(pp), x(1)), ppval(ppder(pp), x(end)), 10*eps);
+%!assert (ppval(ppder(pp, 2), x(1)), ppval(ppder(pp, 2), x(end)), 10*eps);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/splines-1.3.4/inst/csaps.m new/splines/inst/csaps.m
--- old/splines-1.3.4/inst/csaps.m 2021-02-24 02:14:16.000000000 +0100
+++ new/splines/inst/csaps.m 2023-05-05 17:23:35.000000000 +0200
@@ -1,4 +1,4 @@
-## Copyright (C) 2012-2015 Nir Krakauer
+## Copyright (C) 2012-2021 Nir Krakauer
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
@@ -14,8 +14,8 @@
## along with this program; If not, see <http://www.gnu.org/licenses/>.
## -*- texinfo -*-
-## @deftypefn{Function File}{[@var{yi} @var{p} @var{sigma2} @var{unc_yi} @var{df}] =} csaps(@var{x}, @var{y}, @var{p}, @var{xi}, @var{w}=[])
-## @deftypefnx{Function File}{[@var{pp} @var{p} @var{sigma2}] =} csaps(@var{x}, @var{y}, @var{p}, [], @var{w}=[])
+## @deftypefn{Function File}{[@var{yi} @var{p} @var{sigma2} @var{unc_yi} @var{df}] =} csaps(@var{x}, @var{y}, @var{p}=[], @var{xi}=[], @var{w}=[])
+## @deftypefnx{Function File}{[@var{pp} @var{p} @var{sigma2}] =} csaps(@var{x}, @var{y}, @var{p}=[], [], @var{w}=[])
##
## Cubic spline approximation (smoothing)@*
## approximate [@var{x},@var{y}], weighted by @var{w} (inverse variance of the @var{y} values; if not given, equal weighting is assumed), at @var{xi}
@@ -26,12 +26,13 @@
##
## @var{x} and @var{w} should be n by 1 in size; @var{y} should be n by m; @var{xi} should be k by 1; the values in @var{x} should be distinct and in ascending order; the values in @var{w} should be nonzero
##
+## @var{p} should be a scalar or empty:@*
## @table @asis
## @item @var{p}=0
## maximum smoothing: straight line
## @item @var{p}=1
## no smoothing: interpolation
-## @item @var{p}<0 or not given
+## @item @var{p}<0 or empty
## an intermediate amount of smoothing is chosen @*
## and the corresponding @var{p} between 0 and 1 is returned @*
## (such that the smoothing term and the interpolation term are of the same magnitude) @*
@@ -55,18 +56,10 @@
## Author: Nir Krakauer <nkrakauer(a)ccny.cuny.edu>
-function [ret,p,sigma2,unc_yi,df]=csaps(x,y,p,xi,w)
+function [ret,p,sigma2,unc_yi,df]=csaps(x,y,p=[],xi=[],w=[])
-warning ("off", "Octave:broadcast", "local");
-
- if(nargin < 5)
- w = [];
- if(nargin < 4)
- xi = [];
- if(nargin < 3)
- p = [];
- endif
- endif
+ if !(isscalar(p) || isempty(p))
+ error('p should be a scalar or empty')
endif
if(columns(x) > 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/splines-1.3.4/inst/csaps_sel.m new/splines/inst/csaps_sel.m
--- old/splines-1.3.4/inst/csaps_sel.m 2021-02-24 02:14:16.000000000 +0100
+++ new/splines/inst/csaps_sel.m 2023-05-05 17:23:35.000000000 +0200
@@ -46,6 +46,8 @@
##
## Grace Wahba (1983), Bayesian ``confidence intervals'' for the cross-validated smoothing spline, J Royal Statistical Society, 45B:133-150
##
+## Herman J. Woltring (1986), A Fortran package for generalized, cross-validatory spline smoothing and differentiation, Advances in Engineering Software, 8(2):104–113
+##
## @end deftypefn
## @seealso{csaps, spline, csapi, ppval, dedup, bin_values, gcvspl}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package octave-forge-statistics for openSUSE:Factory checked in at 2023-10-31 20:25:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/octave-forge-statistics (Old)
and /work/SRC/openSUSE:Factory/.octave-forge-statistics.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "octave-forge-statistics"
Tue Oct 31 20:25:36 2023 rev:12 rq:1121345 version:1.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/octave-forge-statistics/octave-forge-statistics.changes 2023-04-15 22:34:34.474032088 +0200
+++ /work/SRC/openSUSE:Factory/.octave-forge-statistics.new.17445/octave-forge-statistics.changes 2023-10-31 20:25:51.918304870 +0100
@@ -1,0 +2,15 @@
+Thu Oct 19 09:45:53 UTC 2023 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update to version 1.6.0:
+ * Dependency changed to Octave>=7.1.0.
+ * Various distribution functions have been renamed, deprecated,
+ or modified extensively so that backwards compatibility is
+ broken.
+ * `mad`, `mean`, `median`, `std`, `var` functions shadow core
+ Octave's respective functions.
+ * Incompatibility with the `nan` package
+ * For full list of new, changes, deprecated, and dropped
+ functions, see the NEWS file at:
+ https://github.com/gnu-octave/statistics/blob/release-1.6.0/NEWS
+
+-------------------------------------------------------------------
Old:
----
statistics-1.5.4.tar.gz
New:
----
statistics-1.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ octave-forge-statistics.spec ++++++
--- /var/tmp/diff_new_pack.9asoJC/_old 2023-10-31 20:25:52.778336459 +0100
+++ /var/tmp/diff_new_pack.9asoJC/_new 2023-10-31 20:25:52.782336606 +0100
@@ -1,5 +1,5 @@
#
-# spec file
+# spec file for package octave-forge-statistics
#
# Copyright (c) 2023 SUSE LLC
#
@@ -18,7 +18,7 @@
%define octpkg statistics
Name: octave-forge-%{octpkg}
-Version: 1.5.4
+Version: 1.6.0
Release: 0
Summary: Additional statistics functions for Octave
License: GPL-3.0-or-later AND SUSE-Public-Domain
@@ -26,7 +26,7 @@
URL: https://gnu-octave.github.io/packages/%{octpkg}/
Source0: https://github.com/gnu-octave/%{octpkg}/archive/refs/tags/release-%{version…
BuildRequires: octave-devel
-Requires: octave-cli >= 6.1.0
+Requires: octave-cli >= 7.0.0
%description
Additional statistics functions.
++++++ statistics-1.5.4.tar.gz -> statistics-1.6.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/octave-forge-statistics/statistics-1.5.4.tar.gz /work/SRC/openSUSE:Factory/.octave-forge-statistics.new.17445/statistics-1.6.0.tar.gz differ: char 22, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package octave-forge-strings for openSUSE:Factory checked in at 2023-10-31 20:25:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/octave-forge-strings (Old)
and /work/SRC/openSUSE:Factory/.octave-forge-strings.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "octave-forge-strings"
Tue Oct 31 20:25:35 2023 rev:4 rq:1121343 version:1.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/octave-forge-strings/octave-forge-strings.changes 2022-07-12 11:12:57.551739259 +0200
+++ /work/SRC/openSUSE:Factory/.octave-forge-strings.new.17445/octave-forge-strings.changes 2023-10-31 20:25:49.470214951 +0100
@@ -1,0 +2,7 @@
+Thu Oct 19 06:44:46 UTC 2023 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update to version 1.3.1:
+ * Update for pcre detection when no pkg-config available
+ * Bugfix pcregexp memory leaks
+
+-------------------------------------------------------------------
Old:
----
strings-1.3.0.tar.gz
New:
----
strings-1.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ octave-forge-strings.spec ++++++
--- /var/tmp/diff_new_pack.2Jnjos/_old 2023-10-31 20:25:50.722260939 +0100
+++ /var/tmp/diff_new_pack.2Jnjos/_new 2023-10-31 20:25:50.734261380 +0100
@@ -1,7 +1,7 @@
#
# spec file for package octave-forge-strings
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,12 +18,12 @@
%define octpkg strings
Name: octave-forge-%{octpkg}
-Version: 1.3.0
+Version: 1.3.1
Release: 0
Summary: Additional manipulation functions for Octave
-License: GPL-3.0-or-later AND BSD-2-Clause
+License: BSD-2-Clause AND GPL-3.0-or-later
Group: Productivity/Scientific/Math
-Url: http://octave.sourceforge.net
+URL: https://gnu-octave.github.io/packages/%{octpkg}/
Source0: http://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz
BuildRequires: gcc-c++
BuildRequires: hdf5-devel
++++++ strings-1.3.0.tar.gz -> strings-1.3.1.tar.gz ++++++
++++ 4846 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/strings-1.3.0/DESCRIPTION new/strings-1.3.1/DESCRIPTION
--- old/strings-1.3.0/DESCRIPTION 2022-06-28 14:21:04.000000000 +0200
+++ new/strings-1.3.1/DESCRIPTION 2023-06-09 14:53:08.000000000 +0200
@@ -1,6 +1,6 @@
Name: strings
-Version: 1.3.0
-Date: 2022-06-28
+Version: 1.3.1
+Date: 2023-06-09
Author: various authors
Maintainer: John Donoghue <john.donoghue(a)ieee.org>
Title: String Handling.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/strings-1.3.0/NEWS new/strings-1.3.1/NEWS
--- old/strings-1.3.0/NEWS 2022-06-28 14:21:04.000000000 +0200
+++ new/strings-1.3.1/NEWS 2023-06-09 14:53:08.000000000 +0200
@@ -1,3 +1,10 @@
+Summary of important user-visible changes for strings 1.3.1:
+-------------------------------------------------------------------
+
+ ** Update for pcre detection when no pkg-config available
+
+ ** Bugfix pcregexp memory leaks
+
Summary of important user-visible changes for strings 1.3.0:
-------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/strings-1.3.0/src/config.h.in new/strings-1.3.1/src/config.h.in
--- old/strings-1.3.0/src/config.h.in 2022-06-28 14:21:04.000000000 +0200
+++ new/strings-1.3.1/src/config.h.in 2023-06-09 14:53:08.000000000 +0200
@@ -2,6 +2,45 @@
#include "undef-ah-octave.h"
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* unwind_action */
+#undef HAVE_OCTAVE_UNWIND_ACTION
+
+/* Define to 1 if you have the <pcre2.h> header file. */
+#undef HAVE_PCRE2_H
+
+/* Define to 1 if you have the <pcre.h> header file. */
+#undef HAVE_PCRE_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* macro for alternative Octave symbols */
+#undef OCTAVE__UNWIND_PROTECT
+
/* macro for alternative Octave symbols */
#undef OCTAVE__WRONG_TYPE_ARG
@@ -23,4 +62,9 @@
/* Define to the version of this package. */
#undef PACKAGE_VERSION
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
+#undef STDC_HEADERS
+
#include "oct-alt-includes.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/strings-1.3.0/src/configure.ac new/strings-1.3.1/src/configure.ac
--- old/strings-1.3.0/src/configure.ac 2022-06-28 14:21:04.000000000 +0200
+++ new/strings-1.3.1/src/configure.ac 2023-06-09 14:53:08.000000000 +0200
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
#
### Copyright (C) 2015-2018 Olaf Till <i7tiol(a)t-online.de>
-### Copyright (C) 2019-2022 John Donoghue <john.donoghue(a)ieee.org>
+### Copyright (C) 2019-2023 John Donoghue <john.donoghue(a)ieee.org>
###
### This program is free software; you can redistribute it and/or
### modify it under the terms of the GNU General Public License as
@@ -19,7 +19,7 @@
### <http://www.gnu.org/licenses/>.
AC_PREREQ([2.67])
-AC_INIT([strings], [1.3.0])
+AC_INIT([strings], [1.3.1])
AC_CONFIG_SRCDIR([pcregexp.cc])
AC_CONFIG_HEADERS([config.h])
@@ -62,7 +62,7 @@
[
PKG_CHECK_MODULES([PCRE],[libpcre],
[],
- [AC_MSG_ERROR([libpcre and libpre2 not found])])
+ [PCRE_CFLAGS=""])
]
)
if test x$USE_PCRE2 == xyes; then
@@ -70,7 +70,21 @@
PCRE_LIBS=$PCRE2_LIBS
fi
+if test -z "$PKG_CONFIG"; then
+ # fallback detection if no pkg-config
+ if test -z "$PCRE_CFLAGS"; then
+ AC_CHECK_HEADERS([pcre2.h],
+ [AC_CHECK_LIB([pcre2-8], [pcre2_config_8], [PCRE_CFLAGS="-DUSE_PCRE2"; PCRE_LIBS=-lpcre2-8], [])], [], [[#define PCRE2_CODE_UNIT_WIDTH 8]])
+ if test -z "$PCRE_CFLAGS"; then
+ AC_CHECK_HEADERS([pcre.h],
+ [AC_CHECK_LIB([pcre], [pcre_config], [PCRE_CFLAGS=""; PCRE_LIBS=-lpcre], [])], [])
+ fi
+ fi
+fi
+if test -z "$PCRE_CFLAGS$PCRE_LIBS"; then
+ AC_MSG_ERROR([libpcre and libpre2 not found])
+fi
# Start of checks for Octave features, preparations for checks.
OCTLIBDIR=${OCTLIBDIR:-`$OCTAVE_CONFIG -p OCTLIBDIR`}
@@ -99,10 +113,37 @@
[OCTAVE__WRONG_TYPE_ARG],
[],
[]
+],
+[dnl
+ [unwind_protect],
+ [octave::unwind_protect],
+ [[octave::unwind_protect frame;]],
+ [OCTAVE__UNWIND_PROTECT],
+ [],
+ []
]
],
[oct-alt-includes.h])
+AC_MSG_CHECKING([for octave::unwind_action])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <octave/oct.h>
+ #include <octave/unwind-prot.h>
+ #ifdef HAVE_CONFIG_H
+ # include "config.h"
+ #endif
+ void test_f() {}
+ ]],[
+ octave::unwind_action u(test_f);
+ ])],
+ [octave_unwind_action=yes],
+ [octave_unwind_action=no]
+)
+AC_MSG_RESULT([$octave_unwind_action])
+if test $octave_unwind_action = yes; then
+ AC_DEFINE([HAVE_OCTAVE_UNWIND_ACTION],[1],[unwind_action])
+fi
+
LIBS=$TLIBS
LDFLAGS=$TLDFLAGS
CXXFLAGS=$TCXXFLAGS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/strings-1.3.0/src/pcregexp.cc new/strings-1.3.1/src/pcregexp.cc
--- old/strings-1.3.0/src/pcregexp.cc 2022-06-28 14:21:04.000000000 +0200
+++ new/strings-1.3.1/src/pcregexp.cc 2023-06-09 14:53:08.000000000 +0200
@@ -23,6 +23,7 @@
#include <octave/oct.h>
#ifdef USE_PCRE2
+#include <octave/unwind-prot.h>
#define PCRE2_DATA_WIDTH 8
#define PCRE2_CODE_UNIT_WIDTH 8
#include <pcre2.h>
@@ -75,12 +76,25 @@
pcre2_match_data *match_data;
PCRE2_SIZE *ovector;
match_data = pcre2_match_data_create_from_pattern(re, NULL);
+
+#ifdef HAVE_OCTAVE_UNWIND_ACTION
+ octave::unwind_action cleanup
+ ([=] () {
+ // Free memory
+ pcre2_match_data_free(match_data);
+ pcre2_code_free(re);
+ });
+#else
+ OCTAVE__UNWIND_PROTECT cleanup;
+ cleanup.add_fcn (pcre2_match_data_free, match_data);
+ cleanup.add_fcn (pcre2_code_free, re);
+#endif
+
int matches = pcre2_match(re, (PCRE2_SPTR)input.c_str(), input.length(), 0, 0, match_data, NULL);
if (matches == PCRE2_ERROR_NOMATCH) {
for (int i=nargout-1; i>=0; i--) retval(i) = "";
retval(0) = Matrix();
- pcre2_code_free(re);
return retval;
} else if (matches < -1) {
error("pcregexp: internal error calling pcre_exec");
@@ -104,10 +118,6 @@
retval(i) = std::string(input.c_str() + ovector[2*i],
ovector[2*i+1] - ovector[2*i]);
- // Free memory
- pcre2_match_data_free(match_data);
- pcre2_code_free(re);
-
#else
pcre *re;
const char *err;
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package octave-forge-symbolic for openSUSE:Factory checked in at 2023-10-31 20:25:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/octave-forge-symbolic (Old)
and /work/SRC/openSUSE:Factory/.octave-forge-symbolic.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "octave-forge-symbolic"
Tue Oct 31 20:25:34 2023 rev:13 rq:1121342 version:3.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/octave-forge-symbolic/octave-forge-symbolic.changes 2022-09-15 22:59:27.237260040 +0200
+++ /work/SRC/openSUSE:Factory/.octave-forge-symbolic.new.17445/octave-forge-symbolic.changes 2023-10-31 20:25:48.286171461 +0100
@@ -1,0 +2,15 @@
+Mon Oct 30 16:01:19 UTC 2023 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update URL to point to 'https://gnu-octave.github.io/packages/'
+
+-------------------------------------------------------------------
+Thu Oct 19 09:00:05 UTC 2023 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update to version 3.1.1:
+ * New symbolic commands: cart2pol, piecewise
+ * `kron` works for three or more inputs (issue #1245).
+ * Indexing bounds checking to support Octave 8.
+ * Fix assumptions on SymPy 1.12.
+ * Other misc fixes and changes for SymPy 1.12.
+
+-------------------------------------------------------------------
Old:
----
symbolic-3.0.1.tar.gz
New:
----
symbolic-3.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ octave-forge-symbolic.spec ++++++
--- /var/tmp/diff_new_pack.PLA5Wc/_old 2023-10-31 20:25:49.134202610 +0100
+++ /var/tmp/diff_new_pack.PLA5Wc/_new 2023-10-31 20:25:49.134202610 +0100
@@ -1,7 +1,7 @@
#
# spec file for package octave-forge-symbolic
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,12 +18,12 @@
%define octpkg symbolic
Name: octave-forge-%{octpkg}
-Version: 3.0.1
+Version: 3.1.1
Release: 0
Summary: Octave Symbolic Package using SymPy
License: GPL-3.0-or-later
Group: Productivity/Scientific/Math
-URL: https://octave.sourceforge.io/%{octpkg}/
+URL: https://gnu-octave.github.io/packages/%{octpkg}/
Source0: https://downloads.sourceforge.net/octave/%{octpkg}-%{version}.tar.gz
BuildArch: noarch
BuildRequires: octave-devel
++++++ symbolic-3.0.1.tar.gz -> symbolic-3.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/DESCRIPTION new/symbolic-3.1.1/DESCRIPTION
--- old/symbolic-3.0.1/DESCRIPTION 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/DESCRIPTION 2023-03-19 19:05:57.000000000 +0100
@@ -1,6 +1,6 @@
Name: symbolic
-Version: 3.0.1
-Date: 2022-08-09
+Version: 3.1.1
+Date: 2023-03-19
Author: Colin B. Macdonald <cbm(a)m.fsf.org>
Maintainer: Colin B. Macdonald <cbm(a)m.fsf.org>
Title: Octave Symbolic Package using SymPy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/INDEX new/symbolic-3.1.1/INDEX
--- old/symbolic-3.0.1/INDEX 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/INDEX 2023-03-19 19:05:57.000000000 +0100
@@ -73,6 +73,7 @@
@sym/bessely
@sym/besselyn
@sym/beta
+ @sym/cart2pol
@sym/cbrt
@sym/ceil
@sym/charpoly
@@ -181,6 +182,7 @@
@sym/numden
@sym/orth
@sym/partfrac
+ @sym/piecewise
@sym/pinv
@sym/pochhammer
@sym/polylog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/NEWS new/symbolic-3.1.1/NEWS
--- old/symbolic-3.0.1/NEWS 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/NEWS 2023-03-19 19:05:57.000000000 +0100
@@ -1,3 +1,21 @@
+octsympy 3.1.1 (2023-03-19)
+===========================
+
+ * New symbolic commands:
+
+ cart2pol
+ piecewise
+
+ * `kron` works for three or more inputs (issue #1245).
+
+ * Indexing bounds checking to support Octave 8.
+
+ * Fix assumptions on SymPy 1.12.
+
+ * Other misc fixes and changes for SymPy 1.12.
+
+
+
octsympy 3.0.1 (2022-08-09)
===========================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)double/bernoulli.m new/symbolic-3.1.1/inst/(a)double/bernoulli.m
--- old/symbolic-3.0.1/inst/(a)double/bernoulli.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)double/bernoulli.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,4 +1,4 @@
-%% Copyright (C) 2018-2019, 2022 Colin B. Macdonald
+%% Copyright (C) 2018-2019, 2022-2023 Colin B. Macdonald
%%
%% This file is part of OctSymPy.
%%
@@ -32,6 +32,19 @@
%% @end group
%% @end example
%%
+%% Note there are two conventions in the literature about the sign of B_1,
+%% but for certain the absolute value is one half:
+%% @example
+%% @group
+%% @c Would render with an extra zero on earlier Octave
+%% @c doctest: +SKIP_IF(compare_versions (OCTAVE_VERSION(), '6.0.0', '<'))
+%% abs (bernoulli (1))
+%% @result{} 0.5000
+%% @end group
+%% @end example
+%% As of 2023, this numerical evaluation function is in a state of flux
+%% about which one it takes, @pxref{@@sym/bernoulli}.
+%%
%% Polynomial example:
%% @example
%% @group
@@ -85,7 +98,14 @@
%!assert (bernoulli (0), 1)
%!assert (bernoulli (3), 0)
-%!assert (bernoulli (1), -0.5, -eps)
+
+%!test
+%! % two different definitions in literature
+%! assert (abs (bernoulli (1)), 0.5, -eps)
+
+%!xtest
+%! % we want to use B_1 = 1/2, possible with a version-specific filter
+%! assert (bernoulli (1), 0.5, -eps)
%!test
%! n = sym(88);
@@ -95,7 +115,7 @@
%! assert (A, B, -eps);
%!test
-%! m = [0 1; 2 4];
+%! m = [0 2; 3 4];
%! n = sym(m);
%! A = bernoulli (m);
%! B = double (bernoulli (n));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/atan2.m new/symbolic-3.1.1/inst/(a)sym/atan2.m
--- old/symbolic-3.0.1/inst/(a)sym/atan2.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/atan2.m 2023-03-19 19:05:57.000000000 +0100
@@ -37,8 +37,6 @@
%% @seealso{@@sym/atan, @@sym/hypot}
%% @end defmethod
-%% Author: Colin B. Macdonald
-%% Keywords: symbolic
function a = atan2(y, x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/bernoulli.m new/symbolic-3.1.1/inst/(a)sym/bernoulli.m
--- old/symbolic-3.0.1/inst/(a)sym/bernoulli.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/bernoulli.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,4 +1,4 @@
-%% Copyright (C) 2014-2016, 2018-2019, 2022 Colin B. Macdonald
+%% Copyright (C) 2014-2016, 2018-2019, 2022-2023 Colin B. Macdonald
%%
%% This file is part of OctSymPy.
%%
@@ -22,12 +22,33 @@
%% @deftypemethodx @@sym {@var{p} =} bernoulli (@var{n}, @var{x})
%% Return symbolic Bernoulli numbers or Bernoulli polynomials.
%%
-%% Examples:
+%% With a sufficiently recent SymPy version, the first seven
+%% Bernoulli numbers are:
%% @example
%% @group
-%% bernoulli(sym(6))
+%% @c doctest: +XFAIL_IF(pycall_sympy__ ('return Version(spver) < Version("1.12.dev")'))
+%% bernoulli (sym(0:6))
+%% @result{} (sym) [1 1/2 1/6 0 -1/30 0 1/42] (1×7 matrix)
+%% @end group
+%% @end example
+%%
+%% Note there are two different definitions in use which differ
+%% in the sign of the value of B_1. As of 2023 and a sufficiently
+%% recent SymPy library, we use the definition with positive one half:
+%% @example
+%% @group
+%% @c doctest: +XFAIL_IF(pycall_sympy__ ('return Version(spver) < Version("1.12.dev")'))
+%% bernoulli (sym(1))
+%% @result{} (sym) 1/2
+%% @end group
+%% @end example
+%%
+%% Other examples:
+%% @example
+%% @group
+%% bernoulli (sym(6))
%% @result{} (sym) 1/42
-%% bernoulli(sym(7))
+%% bernoulli (sym(7))
%% @result{} (sym) 0
%% @end group
%% @end example
@@ -36,7 +57,7 @@
%% @example
%% @group
%% syms x
-%% bernoulli(2, x)
+%% bernoulli (2, x)
%% @result{} (sym)
%% 2 1
%% x - x + ─
@@ -69,9 +90,19 @@
%! assert (isequal (bernoulli(3,x), x^3 - 3*x^2/2 + x/2))
%!test
-%! m = sym([0 1; 8 888889]);
+%! % two different definitions in literature
+%! assert (isequal (abs (bernoulli (sym(1))), sym(1)/2))
+
+%!test
+%! % we use B_1 = 1/2
+%! if (pycall_sympy__ ('return Version(spver) >= Version("1.12.dev")'))
+%! assert (isequal (bernoulli (sym(1)), sym(1)/2))
+%! end
+
+%!test
+%! m = sym([0 2; 8 888889]);
%! A = bernoulli (m);
-%! B = [1 -sym(1)/2; -sym(1)/30 0];
+%! B = [1 sym(1)/6; -sym(1)/30 0];
%! assert (isequal (A, B))
%!test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/cart2pol.m new/symbolic-3.1.1/inst/(a)sym/cart2pol.m
--- old/symbolic-3.0.1/inst/(a)sym/cart2pol.m 1970-01-01 01:00:00.000000000 +0100
+++ new/symbolic-3.1.1/inst/(a)sym/cart2pol.m 2023-03-19 19:05:57.000000000 +0100
@@ -0,0 +1,168 @@
+%% Copyright (C) 2022 Alex Vong
+%% Copyright (C) 2022 Colin B. Macdonald
+%%
+%% This file is part of OctSymPy.
+%%
+%% OctSymPy is free software; you can redistribute it and/or modify
+%% it under the terms of the GNU General Public License as published
+%% by the Free Software Foundation; either version 3 of the License,
+%% or (at your option) any later version.
+%%
+%% This software is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty
+%% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
+%% the GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public
+%% License along with this software; see the file COPYING.
+%% If not, see <https://www.gnu.org/licenses/>.
+
+%% -*- texinfo -*-
+%% @documentencoding UTF-8
+%% @deftypemethod @@sym {[@var{theta}, @var{r}] =} cart2pol (@var{x}, @var{y})
+%% @deftypemethodx @@sym {[@var{theta}, @var{r}, @var{z}] =} cart2pol (@var{x}, @var{y}, @var{z})
+%% @deftypemethodx @@sym {[@var{theta}, @var{r}] =} cart2pol (@var{C})
+%% @deftypemethodx @@sym {[@var{theta}, @var{r}, @var{z}] =} cart2pol (@var{C})
+%% Transform symbolic Cartesian coordinates into polar or cylindrical.
+%%
+%% If called with inputs @var{x}, @var{y} (and @var{z}), they must be of the
+%% same shape or a scalar. The shape of the outputs @var{theta}, @var{r} (and
+%% @var{z}) matches those of the inputs (except when the input is a scalar).
+%%
+%% If called with a single input @var{C}, it must be a column vector with 2 or
+%% 3 entries, or a matrix with 2 or 3 columns. The column vector or each row
+%% of the matrix represents a point in Cartesian coordinates (@var{x}, @var{y})
+%% or (@var{x}, @var{y}, @var{z}). If input @var{C} is a column vector,
+%% outputs @var{theta}, @var{r} (and @var{z}) is a scalar. Otherwise, the
+%% shape of the outputs @var{theta}, @var{r} (and @var{z}) is a column vector
+%% with each row corresponding to that of the input matrix @var{C}.
+%%
+%% Given a point (@var{x}, @var{y}) in Cartesian coordinates, its corresponding
+%% polar coordinates can be obtained by:
+%% @example
+%% @group
+%% syms x y real
+%% [theta, r] = cart2pol (x, y)
+%% @result{} theta = (sym) atan2(y, x)
+%% r = (sym)
+%% _________
+%% ╱ 2 2
+%% ╲╱ x + y
+%% @end group
+%% @end example
+%%
+%% Similarly, given a point (@var{x}, @var{y}, @var{z}) in Cartesian
+%% coordinates, its corresponding cylindrical coordinates can be obtained by:
+%% @example
+%% @group
+%% syms x y z real
+%% [theta, r, z] = cart2pol (x, y, z)
+%% @result{} theta = (sym) atan2(y, x)
+%% r = (sym)
+%% _________
+%% ╱ 2 2
+%% ╲╱ x + y
+%% z = (sym) z
+%% @end group
+%% @end example
+%%
+%% @seealso{cart2pol}
+%% @end deftypemethod
+
+
+function [theta, r, z_out] = cart2pol (x_in, y_in, z_in)
+ %% obtain the kth column of matrix A
+ column_ref = @(A, k) subsref (A, substruct ('()', {':', k}));
+
+ if nargin == 1
+ C = sym (x_in);
+ sz = size (C);
+ nrows = sz(1);
+ ncols = sz(2);
+ if isequal (sz, [2 1])
+ args = num2cell (C);
+ [theta, r] = cart2pol (args{:});
+ elseif isequal (sz, [3 1])
+ args = num2cell (C);
+ [theta, r, z_out] = cart2pol (args{:});
+ elseif ncols == 2
+ args = arrayfun (@(k) column_ref (C, k), 1:ncols, 'UniformOutput', false);
+ [theta, r] = cart2pol (args{:});
+ elseif ncols == 3
+ args = arrayfun (@(k) column_ref (C, k), 1:ncols, 'UniformOutput', false);
+ [theta, r, z_out] = cart2pol (args{:});
+ else
+ warning ('cart2pol: C must be a column vector with 2 or 3 entries, or a matrix with 2 or 3 columns');
+ print_usage ();
+ end
+ return
+ end
+
+ x = sym (x_in);
+ y = sym (y_in);
+ if isscalar (size (x))
+ sz = size (y);
+ elseif isscalar (size (y)) || isequal (size (x), size (y))
+ sz = size (x);
+ else
+ error ('cart2pol: all inputs must have compatible sizes');
+ end
+ r = hypot (sym (x), sym (y));
+ theta = atan2 (sym (y), sym (x));
+
+ if nargin == 3
+ z = sym (z_in);
+ if isscalar (z)
+ z_out = z * ones (sz);
+ elseif isequal(size (z), sz)
+ z_out = z;
+ else
+ error ('cart2pol: all inputs must have compatible sizes');
+ end
+ end
+end
+
+
+%!test
+%! % multiple non-scalar inputs
+%! x = sym ('x', [2 2]);
+%! assume (x, 'real');
+%! y = sym ('y', [2 2]);
+%! assume (y, 'real');
+%! [theta, r] = cart2pol (x, y);
+%! assert (isequal (r, sqrt (x.^2 + y.^2)));
+%! assert (isequal (tan (theta), y ./ x));
+%! % mixing scalar inputs with non-scalar inputs
+%! syms z real
+%! [theta_2, r_2, z_2] = cart2pol (x, y, z);
+%! assert (isequal (r_2, sqrt (x.^2 + y.^2)));
+%! assert (isequal (tan (theta_2), y ./ x));
+%! assert (isequal (z_2, z * ones (2, 2)));
+
+%!test
+%! % column vector with 2 entries
+%! syms x y real
+%! [theta, r] = cart2pol ([x; y]);
+%! assert (isequal (r, sqrt (x.^2 + y.^2)));
+%! assert (isequal (tan (theta), y ./ x));
+%! % column vector with 3 entries
+%! syms z real
+%! [theta_2, r_2, z_2] = cart2pol ([x; y; z]);
+%! assert (isequal (r_2, sqrt (x.^2 + y.^2)));
+%! assert (isequal (tan (theta_2), y ./ x));
+%! assert (isequal (z_2, z));
+
+%!test
+%! % matrix with 2 columns
+%! syms x y u v real
+%! C = [x y; u v];
+%! [theta, r] = cart2pol (C);
+%! assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)]));
+%! assert (isequal (tan (theta), [y/x; v/u]));
+%! % matrix with 3 columns
+%! syms z w real
+%! C_2 = [x y z; u v w];
+%! [theta_2, r_2, z_2] = cart2pol (C_2);
+%! assert (isequal (r, [sqrt(x.^2+y.^2); sqrt(u.^2+v.^2)]));
+%! assert (isequal (tan (theta), [y/x; v/u]));
+%! assert (isequal (z_2, [z; w]));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/cat.m new/symbolic-3.1.1/inst/(a)sym/cat.m
--- old/symbolic-3.0.1/inst/(a)sym/cat.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/cat.m 2023-03-19 19:05:57.000000000 +0100
@@ -40,8 +40,6 @@
%% @seealso{@@sym/vertcat, @@sym/horzcat}
%% @end defmethod
-%% Author: Colin B. Macdonald
-%% Keywords: symbolic
function z = cat(dim, varargin)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/conj.m new/symbolic-3.1.1/inst/(a)sym/conj.m
--- old/symbolic-3.0.1/inst/(a)sym/conj.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/conj.m 2023-03-19 19:05:57.000000000 +0100
@@ -62,8 +62,6 @@
%% @seealso{@@sym/ctranspose, @@sym/real, @@sym/imag}
%% @end defmethod
-%% Author: Colin B. Macdonald
-%% Keywords: symbolic
function z = conj(x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/divergence.m new/symbolic-3.1.1/inst/(a)sym/divergence.m
--- old/symbolic-3.0.1/inst/(a)sym/divergence.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/divergence.m 2023-03-19 19:05:57.000000000 +0100
@@ -69,8 +69,6 @@
%% @@sym/hessian}
%% @end defmethod
-%% Author: Colin B. Macdonald
-%% Keywords: symbolic
function g = divergence(f, x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/euler.m new/symbolic-3.1.1/inst/(a)sym/euler.m
--- old/symbolic-3.0.1/inst/(a)sym/euler.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/euler.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,4 +1,4 @@
-%% Copyright (C) 2017-2019, 2022 Colin B. Macdonald
+%% Copyright (C) 2017-2019, 2022-2023 Colin B. Macdonald
%%
%% This file is part of OctSymPy.
%%
@@ -112,5 +112,14 @@
%! vpa('4270.98066989140286451493108809574')*1i;
%! z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i;
%! B = euler (13, z);
-%! relerr = double(abs((B - A)/A));
-%! assert (abs(relerr) < 2e-31);
+%! relerr = abs(double(abs((B - A)/A)));
+%! assert (relerr < 20*eps);
+
+%!xtest
+%! % as above, high-prec result broken in 1.12: https://github.com/sympy/sympy/issues/24156
+%! A = vpa('1623.14184180556920918624604530515') + ...
+%! vpa('4270.98066989140286451493108809574')*1i;
+%! z = vpa (exp(1), 32) + vpa(pi, 32)/13*1i;
+%! B = euler (13, z);
+%! relerr = abs(double(abs((B - A)/A)));
+%! assert (relerr < 2e-31);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/ilaplace.m new/symbolic-3.1.1/inst/(a)sym/ilaplace.m
--- old/symbolic-3.0.1/inst/(a)sym/ilaplace.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/ilaplace.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,5 +1,5 @@
%% Copyright (C) 2014-2016 Andrés Prieto
-%% Copyright (C) 2015-2016, 2018-2019, 2022 Colin Macdonald
+%% Copyright (C) 2015-2016, 2018-2019, 2022-2023 Colin Macdonald
%%
%% This file is part of OctSymPy.
%%
@@ -87,8 +87,6 @@
%% @seealso{@@sym/laplace}
%% @end defmethod
-%% Author: Colin B. Macdonald, Andrés Prieto
-%% Keywords: symbolic, integral transforms
function f = ilaplace(varargin)
@@ -183,10 +181,18 @@
%!test
%! % Delta dirac test 2
-%! syms s c
-%! t = sym('t', 'positive');
-%! assert (isequal (ilaplace (5*exp(-3*s) + 2*exp(c*s) - 2*exp(-2*s)/s,t), ...
-%! 5*dirac(t-3) + 2*dirac(c+t) - 2*heaviside(t-2)))
+%! syms s t
+%! calc = ilaplace (5*exp (-3*s) - 2*exp (-2*s)/s, s, t);
+%! want = 5*dirac (t-3) - 2*heaviside (t-2);
+%! assert (isequal (calc, want))
+
+%!test
+%! % Delta dirac test 3, coefficient
+%! syms s t
+%! syms c positive
+%! calc = ilaplace (2*exp (-c*s), s, t);
+%! want = 2*dirac (t - c);
+%! assert (isAlways (calc == want))
%!error <more than one> ilaplace (sym('s', 'positive')*sym('s'))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/jordan.m new/symbolic-3.1.1/inst/(a)sym/jordan.m
--- old/symbolic-3.0.1/inst/(a)sym/jordan.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/jordan.m 2023-03-19 19:05:57.000000000 +0100
@@ -115,8 +115,6 @@
%% @seealso{@@sym/charpoly, @@sym/eig}
%% @end deftypemethod
-%% Author: Alex Vong
-%% Keywords: symbolic
function [V, J] = jordan (A)
cmd = {'(A, calctrans) = _ins'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/kron.m new/symbolic-3.1.1/inst/(a)sym/kron.m
--- old/symbolic-3.0.1/inst/(a)sym/kron.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/kron.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,5 +1,5 @@
%% Copyright (C) 2016 Utkarsh Gautam
-%% Copyright (C) 2016, 2019 Colin B. Macdonald
+%% Copyright (C) 2016, 2019, 2022 Colin B. Macdonald
%%
%% This file is part of OctSymPy.
%%
@@ -19,8 +19,9 @@
%% -*- texinfo -*-
%% @documentencoding UTF-8
-%% @defmethod @@sym kron (@var{a}, @var{b})
-%% Kronecker tensor product of two matrices.
+%% @defmethod @@sym kron (@var{a}, @var{b})
+%% @defmethodx @@sym kron (@var{a}, @var{b}, @dots{}, @var{c})
+%% Kronecker tensor product of two or more symbolic matrices.
%%
%% Examples:
%% @example
@@ -52,25 +53,43 @@
%%
%% @end group
%% @end example
+%%
+%% @example
+%% @group
+%% kron([1, 2], [x, y; y, x], [1; 7])
+%% @result{} ans = (sym 4×4 matrix)
+%%
+%% ⎡ x y 2⋅x 2⋅y ⎤
+%% ⎢ ⎥
+%% ⎢7⋅x 7⋅y 14⋅x 14⋅y⎥
+%% ⎢ ⎥
+%% ⎢ y x 2⋅y 2⋅x ⎥
+%% ⎢ ⎥
+%% ⎣7⋅y 7⋅x 14⋅y 14⋅x⎦
+%%
+%% @end group
+%% @end example
%% @end defmethod
-%% Author: Utkarsh Gautam
-%% Keywords: kron product
+function c = kron (varargin)
-function c = kron (a, b)
+ if (nargin < 2)
+ print_usage ();
+ end
- if (isscalar (a) || isscalar (b))
- c = a*b;
- else
- cmd = { 'a, b = _ins'
- 'from sympy.physics.quantum import TensorProduct'
- 'return TensorProduct(Matrix(a), Matrix(b))'
- };
- c = pycall_sympy__ (cmd, sym(a), sym(b));
+ for i = 1:nargin
+ varargin{i} = sym (varargin{i});
end
+
+ cmd = { '_ins = (a if isinstance(a, (MatrixBase, NDimArray)) else Matrix([a]) for a in _ins)'
+ 'from sympy.physics.quantum import TensorProduct'
+ 'return TensorProduct(*_ins)' };
+ c = pycall_sympy__ (cmd, varargin{:});
end
+%!error kron (sym (2))
+
%!test
%! syms x y
%! A = [sin(x), sin(y); x, y];
@@ -110,3 +129,17 @@
%! Y = [1, 0; 0, 1];
%! expected = [x, x^2, 0, 0; y, y^2, 0, 0; 0, 0, x, x^2; 0, 0, y, y^2];
%! assert (isequal (kron(Y, X), expected))
+
+%!test
+%! syms x y z
+%! assert (isequal (kron (x, y, z), x*y*z))
+%! assert (isequal (kron (x, y, z, 4), 4*x*y*z))
+%! assert (isequal (kron ([2 3], y, z), [2 3]*y*z))
+%! assert (isequal (kron ([2 3], [4; 5], y), [8 12; 10 15]*y))
+
+%!test
+%! syms x y
+%! A = kron ([x y], [1, -1; -1, 1], [2 3; 4 5]);
+%! D = kron ([7 9], [1, -1; -1, 1], [2 3; 4 5]);
+%! A = double (subs (A, [x y], [7 9]));
+%! assert (isequal (A, D))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/laplace.m new/symbolic-3.1.1/inst/(a)sym/laplace.m
--- old/symbolic-3.0.1/inst/(a)sym/laplace.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/laplace.m 2023-03-19 19:05:57.000000000 +0100
@@ -96,8 +96,6 @@
%% @seealso{@@sym/ilaplace}
%% @end defmethod
-%% Author: Colin B. Macdonald, Andrés Prieto
-%% Keywords: symbolic, integral transforms
function F = laplace(varargin)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/ldivide.m new/symbolic-3.1.1/inst/(a)sym/ldivide.m
--- old/symbolic-3.0.1/inst/(a)sym/ldivide.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/ldivide.m 2023-03-19 19:05:57.000000000 +0100
@@ -50,8 +50,6 @@
%% @seealso{@@sym/rdivide, @@sym/mldivide}
%% @end defop
-%% Author: Colin B. Macdonald
-%% Keywords: symbolic
function z = ldivide(x, y)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/piecewise.m new/symbolic-3.1.1/inst/(a)sym/piecewise.m
--- old/symbolic-3.0.1/inst/(a)sym/piecewise.m 1970-01-01 01:00:00.000000000 +0100
+++ new/symbolic-3.1.1/inst/(a)sym/piecewise.m 2023-03-19 19:05:57.000000000 +0100
@@ -0,0 +1,101 @@
+%% Copyright (C) 2022 Alex Vong
+%%
+%% This file is part of OctSymPy.
+%%
+%% OctSymPy is free software; you can redistribute it and/or modify
+%% it under the terms of the GNU General Public License as published
+%% by the Free Software Foundation; either version 3 of the License,
+%% or (at your option) any later version.
+%%
+%% This software is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty
+%% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
+%% the GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public
+%% License along with this software; see the file COPYING.
+%% If not, see <https://www.gnu.org/licenses/>.
+
+%% -*- texinfo -*-
+%% @documentencoding UTF-8
+%% @defmethod @@sym piecewise (@var{cond1}, @var{val1}, @var{cond2}, @var{val2}, @dots{})
+%% @defmethodx @@sym piecewise (@var{cond1}, @var{val1}, @var{cond2}, @var{val2}, @dots{}, @var{else_val})
+%% Construct piecewise function.
+%%
+%% The returned piecewise function evaluates to @var{val1} if @var{cond1}
+%% holds, @var{val2} if @var{cond2} holds, @dots{} etc. In the case where none
+%% of the conditions hold, it evaluates to @var{else_val} if provided. If
+%% @var{else_val} is not provided, it evaluates to @code{nan}.
+%%
+%% Examples:
+%% @example
+%% @group
+%% syms x real
+%% f = piecewise (abs (x) < 1, exp (- 1 / (1 - x^2)), abs (x) >= 1, 0)
+%% @result{} f = (sym)
+%% ⎧ -1
+%% ⎪ ──────
+%% ⎪ 2
+%% ⎨ 1 - x
+%% ⎪ℯ for │x│ < 1
+%% ⎪
+%% ⎩ 0 otherwise
+%% @end group
+%% @end example
+%%
+%% For this piecewise function, we can omit the redundant condition at the end:
+%% @example
+%% @group
+%% syms x real
+%% f = piecewise (abs (x) < 1, exp (- 1 / (1 - x^2)), 0)
+%% @result{} f = (sym)
+%% ⎧ -1
+%% ⎪ ──────
+%% ⎪ 2
+%% ⎨ 1 - x
+%% ⎪ℯ for │x│ < 1
+%% ⎪
+%% ⎩ 0 otherwise
+%% @end group
+%% @end example
+%%
+%% @seealso{if}
+%% @end defmethod
+
+
+function f = piecewise (varargin)
+ if nargin < 1
+ print_usage ();
+ end
+
+ cmd = {'def pack_args_without_else(args):'
+ ' return [(val, cond) for cond, val in unflatten(args, 2)]'
+ 'def pack_args(args):'
+ ' if len(args) % 2 == 0:'
+ ' return pack_args_without_else(args)'
+ ' else:'
+ ' return pack_args_without_else(args[:-1]) + [(args[-1], True)]'
+ 'return Piecewise(*pack_args(_ins))'
+ };
+
+ args = cellfun (@sym, varargin, 'UniformOutput', false);
+ f = pycall_sympy__ (cmd, args{:});
+end
+
+
+%!test
+%! % basic
+%! syms x real
+%! f = piecewise (abs (x) < 1, 1);
+%! assert (isnan (subs (f, -1)));
+%! assert (isequal (subs (f, 0), 1));
+%! assert (isnan (subs (f, 1)));
+
+%!test
+%! % heaviside
+%! syms x real
+%! f = rewrite (heaviside (x, 1 / sym (2)), 'Piecewise');
+%! g = piecewise (x < 0, 0, x == 0, 1 / sym (2), x > 0, 1);
+%! assert (logical (simplify (f == g)));
+
+%% FIXME: expand test suite, add SMT compat tests, ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/private/ineq_helper.m new/symbolic-3.1.1/inst/(a)sym/private/ineq_helper.m
--- old/symbolic-3.0.1/inst/(a)sym/private/ineq_helper.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/private/ineq_helper.m 2023-03-19 19:05:57.000000000 +0100
@@ -16,9 +16,6 @@
%% License along with this software; see the file COPYING.
%% If not, see <http://www.gnu.org/licenses/>.
-%% Author: Colin B. Macdonald
-%% Keywords: symbolic
-
function t = ineq_helper(op, fop, lhs, rhs, nanspecial)
if (nargin == 4)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/private/mat_access.m new/symbolic-3.1.1/inst/(a)sym/private/mat_access.m
--- old/symbolic-3.0.1/inst/(a)sym/private/mat_access.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/private/mat_access.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,5 +1,7 @@
-%% Copyright (C) 2014 Colin B. Macdonald
+%% Copyright (C) 2014, 2023 Colin B. Macdonald
%% Copyright (C) 2016 Abhinav Tripathi
+%% Copyright (C) 2017 Mike Miller
+%% Copyright (C) 2017 NVS Abhilash
%%
%% This file is part of OctSymPy.
%%
@@ -25,8 +27,6 @@
%%
%% @end defun
-%% Author: Colin B. Macdonald
-%% Keywords: symbolic
function z = mat_access(A, subs)
@@ -62,7 +62,12 @@
if (ischar(i))
error(['invalid indexing, i="' i '"'])
end
- [r, c] = ind2sub (size(A), i);
+ % Octave 8 does not raise error from ind2sub so we do it ourselves
+ sz = size (A);
+ if (i > prod (sz))
+ error ('%d is out of bound %d (dimensions are %dx%d)\n', i, prod (sz), sz)
+ end
+ [r, c] = ind2sub (sz, i);
z = mat_rclist_access(A, r(:), c(:));
% output shape, see also logic in comments in mat_mask_access.m
if (~isscalar(A) && isrow(A) && isvector(i))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/private/mat_replace.m new/symbolic-3.1.1/inst/(a)sym/private/mat_replace.m
--- old/symbolic-3.0.1/inst/(a)sym/private/mat_replace.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/private/mat_replace.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,6 +1,7 @@
-%% Copyright (C) 2014-2016, 2019, 2022 Colin B. Macdonald
+%% Copyright (C) 2014-2016, 2019, 2022-2023 Colin B. Macdonald
%% Copyright (C) 2016 Lagu
%% Copyright (C) 2016 Abhinav Tripathi
+%% Copyright (C) 2017 NVS Abhilash
%% Copyright (C) 2020 Fernando Alvarruiz
%%
%% This file is part of OctSymPy.
@@ -100,7 +101,13 @@
r = subs{1}; c = ones(size(r));
else
% linear indices into 2D array
- [r, c] = ind2sub (size(A), subs{1});
+ % Octave 8 does not raise error from ind2sub so we do it ourselves
+ sz = size (A);
+ i = subs{1};
+ if (i > prod (sz))
+ error ('%d is out of bound %d (dimensions are %dx%d)\n', i, prod (sz), sz)
+ end
+ [r, c] = ind2sub (size (A), i);
% keep all the indices in a row vector
r = reshape (r, 1, []);
c = reshape (c, 1, []);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/subsasgn.m new/symbolic-3.1.1/inst/(a)sym/subsasgn.m
--- old/symbolic-3.0.1/inst/(a)sym/subsasgn.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/subsasgn.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,6 +1,7 @@
-%% Copyright (C) 2014-2017, 2019, 2022 Colin B. Macdonald
+%% Copyright (C) 2014-2017, 2019, 2022-2023 Colin B. Macdonald
%% Copyright (C) 2016 Lagu
%% Copyright (C) 2016 Abhinav Tripathi
+%% Copyright (C) 2017 NVS Abhilash
%%
%% This file is part of OctSymPy.
%%
@@ -661,6 +662,11 @@
%% Tests from mat_replace
+%!error <out of bound>
+%! syms x
+%! A = [1 x; x 2];
+%! A(5) = x;
+
%!test
%! % 2D indexing with length in one dimension more than 2
%! a = sym ([1 2; 3 4; 5 6]);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/subsref.m new/symbolic-3.1.1/inst/(a)sym/subsref.m
--- old/symbolic-3.0.1/inst/(a)sym/subsref.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/subsref.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,6 +1,7 @@
-%% Copyright (C) 2014, 2016-2017, 2022 Colin B. Macdonald
+%% Copyright (C) 2014, 2016-2017, 2022-2023 Colin B. Macdonald
%% Copyright (C) 2016 Lagu
%% Copyright (C) 2016 Abhinav Tripathi
+%% Copyright (C) 2017 NVS Abhilash
%%
%% This file is part of OctSymPy.
%%
@@ -273,6 +274,10 @@
%! A = sym([1 2; 3 4]);
%! A(1, sym(4)/3)
+%!error <out of bound>
+%! A = sym([1 2; 3 4]);
+%! A(5)
+
%!shared a, b
%! a = [1 2 3 5; 4 5 6 9; 7 5 3 2];
%! b = sym (a);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/symvar.m new/symbolic-3.1.1/inst/(a)sym/symvar.m
--- old/symbolic-3.0.1/inst/(a)sym/symvar.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/symvar.m 2023-03-19 19:05:57.000000000 +0100
@@ -72,8 +72,6 @@
%% @seealso{findsymbols, @@sym/findsym}
%% @end defmethod
-%% Author: Colin B. Macdonald, Willem J. Atsma (previous versions)
-%% Keywords: symbolic
function vars = symvar(F, Nout)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/uplus.m new/symbolic-3.1.1/inst/(a)sym/uplus.m
--- old/symbolic-3.0.1/inst/(a)sym/uplus.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/uplus.m 2023-03-19 19:05:57.000000000 +0100
@@ -33,8 +33,6 @@
%% @seealso{@@sym/uminus}
%% @end defop
-%% Author: Colin B. Macdonald
-%% Keywords: symbolic
function x = uplus(x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/(a)sym/ztrans.m new/symbolic-3.1.1/inst/(a)sym/ztrans.m
--- old/symbolic-3.0.1/inst/(a)sym/ztrans.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/(a)sym/ztrans.m 2023-03-19 19:05:57.000000000 +0100
@@ -271,8 +271,6 @@
%%
%% @end defmethod
-%% Author: Alex Vong
-%% Keywords: symbolic
function X = ztrans (varargin)
if (nargin > 3 || nargin == 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/assumptions.m new/symbolic-3.1.1/inst/assumptions.m
--- old/symbolic-3.0.1/inst/assumptions.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/assumptions.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,4 +1,4 @@
-%% Copyright (C) 2014-2016, 2019 Colin B. Macdonald
+%% Copyright (C) 2014-2016, 2019, 2023 Colin B. Macdonald
%%
%% This file is part of OctSymPy.
%%
@@ -108,15 +108,14 @@
cmd = {
'x = _ins[0]'
'outputdict = _ins[1]'
- 'd = x._assumptions.generator'
- 'if d == {}:'
- ' astr = ""'
+ 'if Version(spver) > Version("1.11.1"):'
+ ' d = x._assumptions_orig'
'else:'
- ' astr = ", ".join(sorted([("" if v else "~") + str(k) for (k,v) in list(d.items())]))'
+ ' d = x._assumptions.generator'
+ 'astr = ", ".join(sorted([("" if v else "~") + str(k) for (k,v) in d.items()]))'
'if outputdict:'
' return (astr, d)'
- 'else:'
- ' return astr,' };
+ 'return astr,' };
c = 0; A = {};
if strcmp(outp, 'dict')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/finiteset.m new/symbolic-3.1.1/inst/finiteset.m
--- old/symbolic-3.0.1/inst/finiteset.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/finiteset.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,4 +1,4 @@
-%% Copyright (C) 2016-2017, 2019 Colin B. Macdonald
+%% Copyright (C) 2016-2017, 2019, 2023 Colin B. Macdonald
%%
%% This file is part of OctSymPy.
%%
@@ -46,7 +46,7 @@
%% @example
%% @group
%% S(2)
-%% @print{} ??? ind2sub: index out of range
+%% @print{} ??? 2 is out of bound ...
%% @end group
%% @end example
%% Instead you can first convert it to a cell (@pxref{@@sym/children}):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/heaviside.m new/symbolic-3.1.1/inst/heaviside.m
--- old/symbolic-3.0.1/inst/heaviside.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/heaviside.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,5 +1,5 @@
%% Copyright (C) 2006 Sylvain Pelissier <sylvain.pelissier(a)gmail.com>
-%% Copyright (C) 2015-2016 Colin B. Macdonald <cbm(a)m.fsf.org>
+%% Copyright (C) 2015-2016, 2019, 2022 Colin B. Macdonald <cbm(a)m.fsf.org>
%%
%% This program is free software; you can redistribute it and/or modify it under
%% the terms of the GNU General Public License as published by the Free Software
@@ -35,6 +35,7 @@
%% function returns 0.5 by default:
%% @example
%% @group
+%% @c Would render with an extra zero on earlier Octave
%% @c doctest: +SKIP_IF(compare_versions (OCTAVE_VERSION(), '6.0.0', '<'))
%% heaviside(0)
%% @result{} 0.5000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/private/python_header.py new/symbolic-3.1.1/inst/private/python_header.py
--- old/symbolic-3.0.1/inst/private/python_header.py 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/private/python_header.py 2023-03-19 19:05:57.000000000 +0100
@@ -3,6 +3,7 @@
# Copyright (C) 2020 Tianyu Chen (billchenchina)
# Copyright (C) 2021 Johannes Maria Frank
# Copyright (C) 2022 Chris Gorman
+# Copyright (C) 2022 Alex Vong
# SPDX-License-Identifier: GPL-3.0-or-later
# In some cases this code is fed into stdin: two blank lines between
@@ -86,6 +87,8 @@
try:
def dbout(l):
+ # should be kept in sync with the same function
+ # defined in inst/private/python_ipc_native.m
sys.stderr.write("pydebug: " + str(l) + "\n")
def d2hex(x):
# used to pass doubles back-and-forth
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/private/python_ipc_native.m new/symbolic-3.1.1/inst/private/python_ipc_native.m
--- old/symbolic-3.0.1/inst/private/python_ipc_native.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/private/python_ipc_native.m 2023-03-19 19:05:57.000000000 +0100
@@ -107,6 +107,10 @@
'_mypp._print_LambertW = lambda cls, f: _my_rev_print(cls, f, func_name="lambertw")'
'_mypp._print_sinc = lambda cls, f: cls._print_Function(f.func(f.args[0]/sp.pi, evaluate=False))'
'del _mypp'
+ 'def dbout(l):'
+ ' # should be kept in sync with the same function'
+ ' # defined in inst/private/python_header.py'
+ ' sys.stderr.write("pydebug: " + str(l) + "\n")'
}, newl))
have_headers = true;
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/symbolic-3.0.1/inst/sympref.m new/symbolic-3.1.1/inst/sympref.m
--- old/symbolic-3.0.1/inst/sympref.m 2022-08-09 22:55:47.000000000 +0200
+++ new/symbolic-3.1.1/inst/sympref.m 2023-03-19 19:05:57.000000000 +0100
@@ -1,4 +1,4 @@
-%% Copyright (C) 2014-2020, 2022 Colin B. Macdonald
+%% Copyright (C) 2014-2020, 2022-2023 Colin B. Macdonald
%% Copyright (C) 2017 NVS Abhilash
%% Copyright (C) 2017 Mike Miller
%% Copyright (C) 2022 Alex Vong
@@ -174,7 +174,7 @@
%% @example
%% @group
%% sympref version
-%% @result{} 3.0.1
+%% @result{} 3.1.1
%% @end group
%% @end example
%%
@@ -217,7 +217,7 @@
case 'version'
assert (nargin == 1)
- varargout{1} = '3.0.1';
+ varargout{1} = '3.1.1';
case 'display'
if (nargin == 1)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-django-redis for openSUSE:Factory checked in at 2023-10-31 20:25:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-redis (Old)
and /work/SRC/openSUSE:Factory/.python-django-redis.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-redis"
Tue Oct 31 20:25:33 2023 rev:13 rq:1121341 version:5.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-django-redis/python-django-redis.changes 2023-07-03 17:42:17.280542871 +0200
+++ /work/SRC/openSUSE:Factory/.python-django-redis.new.17445/python-django-redis.changes 2023-10-31 20:25:47.406139137 +0100
@@ -1,0 +2,11 @@
+Tue Oct 31 02:05:32 UTC 2023 - Steve Kowalik <steven.kowalik(a)suse.com>
+
+- Update to 5.4.0:
+ * Connection factory goes to cache options
+ * Added note in docs for correctly configuring hiredis parser when
+ using redis-py version 5.
+- Add missing BuildRequires on redis
+- Stop using globs in %files
+- Switch to pyproject macros
+
+-------------------------------------------------------------------
Old:
----
django-redis-5.3.0.tar.gz
New:
----
django-redis-5.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-django-redis.spec ++++++
--- /var/tmp/diff_new_pack.kilmaE/_old 2023-10-31 20:25:47.954159266 +0100
+++ /var/tmp/diff_new_pack.kilmaE/_new 2023-10-31 20:25:47.954159266 +0100
@@ -18,27 +18,30 @@
%{?sle15_python_module_pythons}
Name: python-django-redis
-Version: 5.3.0
+Version: 5.4.0
Release: 0
Summary: A redis cache backend for Django
License: BSD-3-Clause
URL: https://github.com/jazzband/django-redis
Source: https://files.pythonhosted.org/packages/source/d/django-redis/django-redis-…
-BuildRequires: %{python_module Django >= 2.2}
+BuildRequires: %{python_module Django >= 3.2}
BuildRequires: %{python_module lz4 >= 0.15}
BuildRequires: %{python_module msgpack >= 0.4.6}
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest-django}
BuildRequires: %{python_module pytest-mock >= 3.0}
BuildRequires: %{python_module pytest}
-BuildRequires: %{python_module redis >= 2.10.0}
+BuildRequires: %{python_module redis >= 3}
BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: psmisc
BuildRequires: python-rpm-macros
-Requires: python-Django >= 2.2
+BuildRequires: redis
+Requires: python-Django >= 3.2
Requires: python-lz4 >= 0.15
Requires: python-msgpack >= 0.4.6
-Requires: python-redis >= 2.10.0
+Requires: python-redis >= 3
BuildArch: noarch
%python_subpackages
@@ -50,10 +53,10 @@
sed -i '/addopts/d' setup.cfg
%build
-%python_build
+%pyproject_wheel
%install
-%python_install
+%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
@@ -72,5 +75,6 @@
%files %{python_files}
%doc README.rst
%license LICENSE
-%{python_sitelib}/django[-_]redis*/
+%{python_sitelib}/django_redis
+%{python_sitelib}/django_redis-%{version}.dist-info
++++++ django-redis-5.3.0.tar.gz -> django-redis-5.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-redis-5.3.0/PKG-INFO new/django-redis-5.4.0/PKG-INFO
--- old/django-redis-5.3.0/PKG-INFO 2023-06-16 14:13:06.367214400 +0200
+++ new/django-redis-5.4.0/PKG-INFO 2023-10-01 22:18:13.252378500 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: django-redis
-Version: 5.3.0
+Version: 5.4.0
Summary: Full featured redis cache backend for Django.
Home-page: https://github.com/jazzband/django-redis
Author: Andrei Antoukh
@@ -29,9 +29,12 @@
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Description-Content-Type: text/x-rst
-Provides-Extra: hiredis
License-File: LICENSE
License-File: AUTHORS.rst
+Requires-Dist: Django>=3.2
+Requires-Dist: redis!=4.0.0,!=4.0.1,>=3
+Provides-Extra: hiredis
+Requires-Dist: redis[hiredis]!=4.0.0,!=4.0.1,>=3; extra == "hiredis"
==============================
Redis cache backend for Django
@@ -771,6 +774,35 @@
},
}
+It is also possible to set some caches as sentinels and some as not:
+
+.. code-block:: python
+
+ SENTINELS = [
+ ('sentinel-1', 26379),
+ ('sentinel-2', 26379),
+ ('sentinel-3', 26379),
+ ]
+ CACHES = {
+ "sentinel": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": "redis://service_name/db",
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.SentinelClient",
+ "SENTINELS": SENTINELS,
+ "CONNECTION_POOL_CLASS": "redis.sentinel.SentinelConnectionPool",
+ "CONNECTION_FACTORY": "django_redis.pool.SentinelConnectionFactory",
+ },
+ },
+ "default": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": "redis://127.0.0.1:6379/1",
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.DefaultClient",
+ },
+ },
+ }
+
.. _Redis Sentinels: https://redis.io/topics/sentinel
Pluggable parsers
@@ -789,6 +821,8 @@
"PARSER_CLASS": "redis.connection.HiredisParser",
}
+Note: if using version 5 of redis-py, use ``"redis.connection._HiredisParser"`` for the ``PARSER_CLASS`` due to an internal rename of classes within that package.
+
Pluggable clients
~~~~~~~~~~~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-redis-5.3.0/README.rst new/django-redis-5.4.0/README.rst
--- old/django-redis-5.3.0/README.rst 2023-06-16 14:12:53.000000000 +0200
+++ new/django-redis-5.4.0/README.rst 2023-10-01 22:18:02.000000000 +0200
@@ -736,6 +736,35 @@
},
}
+It is also possible to set some caches as sentinels and some as not:
+
+.. code-block:: python
+
+ SENTINELS = [
+ ('sentinel-1', 26379),
+ ('sentinel-2', 26379),
+ ('sentinel-3', 26379),
+ ]
+ CACHES = {
+ "sentinel": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": "redis://service_name/db",
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.SentinelClient",
+ "SENTINELS": SENTINELS,
+ "CONNECTION_POOL_CLASS": "redis.sentinel.SentinelConnectionPool",
+ "CONNECTION_FACTORY": "django_redis.pool.SentinelConnectionFactory",
+ },
+ },
+ "default": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": "redis://127.0.0.1:6379/1",
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.DefaultClient",
+ },
+ },
+ }
+
.. _Redis Sentinels: https://redis.io/topics/sentinel
Pluggable parsers
@@ -754,6 +783,8 @@
"PARSER_CLASS": "redis.connection.HiredisParser",
}
+Note: if using version 5 of redis-py, use ``"redis.connection._HiredisParser"`` for the ``PARSER_CLASS`` due to an internal rename of classes within that package.
+
Pluggable clients
~~~~~~~~~~~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-redis-5.3.0/django_redis/__init__.py new/django-redis-5.4.0/django_redis/__init__.py
--- old/django-redis-5.3.0/django_redis/__init__.py 2023-06-16 14:12:53.000000000 +0200
+++ new/django-redis-5.4.0/django_redis/__init__.py 2023-10-01 22:18:02.000000000 +0200
@@ -1,4 +1,4 @@
-VERSION = (5, 3, 0)
+VERSION = (5, 4, 0)
__version__ = ".".join(map(str, VERSION))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-redis-5.3.0/django_redis/pool.py new/django-redis-5.4.0/django_redis/pool.py
--- old/django-redis-5.3.0/django_redis/pool.py 2023-06-16 14:12:53.000000000 +0200
+++ new/django-redis-5.4.0/django_redis/pool.py 2023-10-01 22:18:02.000000000 +0200
@@ -184,6 +184,9 @@
"DJANGO_REDIS_CONNECTION_FACTORY",
"django_redis.pool.ConnectionFactory",
)
+ opt_conn_factory = options.get("CONNECTION_FACTORY")
+ if opt_conn_factory:
+ path = opt_conn_factory
cls = import_string(path)
return cls(options or {})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-redis-5.3.0/django_redis.egg-info/PKG-INFO new/django-redis-5.4.0/django_redis.egg-info/PKG-INFO
--- old/django-redis-5.3.0/django_redis.egg-info/PKG-INFO 2023-06-16 14:13:06.000000000 +0200
+++ new/django-redis-5.4.0/django_redis.egg-info/PKG-INFO 2023-10-01 22:18:13.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: django-redis
-Version: 5.3.0
+Version: 5.4.0
Summary: Full featured redis cache backend for Django.
Home-page: https://github.com/jazzband/django-redis
Author: Andrei Antoukh
@@ -29,9 +29,12 @@
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Description-Content-Type: text/x-rst
-Provides-Extra: hiredis
License-File: LICENSE
License-File: AUTHORS.rst
+Requires-Dist: Django>=3.2
+Requires-Dist: redis!=4.0.0,!=4.0.1,>=3
+Provides-Extra: hiredis
+Requires-Dist: redis[hiredis]!=4.0.0,!=4.0.1,>=3; extra == "hiredis"
==============================
Redis cache backend for Django
@@ -771,6 +774,35 @@
},
}
+It is also possible to set some caches as sentinels and some as not:
+
+.. code-block:: python
+
+ SENTINELS = [
+ ('sentinel-1', 26379),
+ ('sentinel-2', 26379),
+ ('sentinel-3', 26379),
+ ]
+ CACHES = {
+ "sentinel": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": "redis://service_name/db",
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.SentinelClient",
+ "SENTINELS": SENTINELS,
+ "CONNECTION_POOL_CLASS": "redis.sentinel.SentinelConnectionPool",
+ "CONNECTION_FACTORY": "django_redis.pool.SentinelConnectionFactory",
+ },
+ },
+ "default": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": "redis://127.0.0.1:6379/1",
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.DefaultClient",
+ },
+ },
+ }
+
.. _Redis Sentinels: https://redis.io/topics/sentinel
Pluggable parsers
@@ -789,6 +821,8 @@
"PARSER_CLASS": "redis.connection.HiredisParser",
}
+Note: if using version 5 of redis-py, use ``"redis.connection._HiredisParser"`` for the ``PARSER_CLASS`` due to an internal rename of classes within that package.
+
Pluggable clients
~~~~~~~~~~~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-redis-5.3.0/django_redis.egg-info/SOURCES.txt new/django-redis-5.4.0/django_redis.egg-info/SOURCES.txt
--- old/django-redis-5.3.0/django_redis.egg-info/SOURCES.txt 2023-06-16 14:13:06.000000000 +0200
+++ new/django-redis-5.4.0/django_redis.egg-info/SOURCES.txt 2023-10-01 22:18:13.000000000 +0200
@@ -38,6 +38,7 @@
tests/test_backend.py
tests/test_cache_options.py
tests/test_client.py
+tests/test_connection_factory.py
tests/test_connection_string.py
tests/test_hashring.py
tests/test_serializers.py
@@ -48,6 +49,7 @@
tests/settings/sqlite_lz4.py
tests/settings/sqlite_msgpack.py
tests/settings/sqlite_sentinel.py
+tests/settings/sqlite_sentinel_opts.py
tests/settings/sqlite_sharding.py
tests/settings/sqlite_usock.py
tests/settings/sqlite_zlib.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-redis-5.3.0/setup.cfg new/django-redis-5.4.0/setup.cfg
--- old/django-redis-5.3.0/setup.cfg 2023-06-16 14:13:06.371214400 +0200
+++ new/django-redis-5.4.0/setup.cfg 2023-10-01 22:18:13.256378700 +0200
@@ -104,6 +104,7 @@
{envpython} -m pytest --cov-append --cov-report= --ds=settings.sqlite_lz4 {posargs}
{envpython} -m pytest --cov-append --cov-report= --ds=settings.sqlite_msgpack {posargs}
{envpython} -m pytest --cov-append --cov-report= --ds=settings.sqlite_sentinel {posargs}
+ {envpython} -m pytest --cov-append --cov-report= --ds=settings.sqlite_sentinel_opts {posargs}
{envpython} -m pytest --cov-append --cov-report= --ds=settings.sqlite_sharding {posargs}
{envpython} -m pytest --cov-append --cov-report= --ds=settings.sqlite_usock {posargs}
{envpython} -m pytest --cov-append --cov-report= --ds=settings.sqlite_zlib {posargs}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-redis-5.3.0/tests/settings/sqlite_sentinel_opts.py new/django-redis-5.4.0/tests/settings/sqlite_sentinel_opts.py
--- old/django-redis-5.3.0/tests/settings/sqlite_sentinel_opts.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-redis-5.4.0/tests/settings/sqlite_sentinel_opts.py 2023-10-01 22:18:02.000000000 +0200
@@ -0,0 +1,49 @@
+SECRET_KEY = "django_tests_secret_key"
+
+SENTINELS = [("127.0.0.1", 26379)]
+
+conn_factory = "django_redis.pool.SentinelConnectionFactory"
+
+CACHES = {
+ "default": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": ["redis://default_service?db=5"],
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.DefaultClient",
+ "SENTINELS": SENTINELS,
+ "CONNECTION_FACTORY": conn_factory,
+ },
+ },
+ "doesnotexist": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": "redis://missing_service?db=1",
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.DefaultClient",
+ "SENTINELS": SENTINELS,
+ "CONNECTION_FACTORY": conn_factory,
+ },
+ },
+ "sample": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": "redis://default_service?db=1",
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.SentinelClient",
+ "SENTINELS": SENTINELS,
+ "CONNECTION_FACTORY": conn_factory,
+ },
+ },
+ "with_prefix": {
+ "BACKEND": "django_redis.cache.RedisCache",
+ "LOCATION": "redis://default_service?db=1",
+ "KEY_PREFIX": "test-prefix",
+ "OPTIONS": {
+ "CLIENT_CLASS": "django_redis.client.DefaultClient",
+ "SENTINELS": SENTINELS,
+ "CONNECTION_FACTORY": conn_factory,
+ },
+ },
+}
+
+INSTALLED_APPS = ["django.contrib.sessions"]
+
+USE_TZ = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/django-redis-5.3.0/tests/test_connection_factory.py new/django-redis-5.4.0/tests/test_connection_factory.py
--- old/django-redis-5.3.0/tests/test_connection_factory.py 1970-01-01 01:00:00.000000000 +0100
+++ new/django-redis-5.4.0/tests/test_connection_factory.py 2023-10-01 22:18:02.000000000 +0200
@@ -0,0 +1,60 @@
+import pytest
+from django.core.exceptions import ImproperlyConfigured
+
+from django_redis import pool
+
+
+def test_connection_factory_redefine_from_opts():
+ cf = pool.get_connection_factory(
+ path="django_redis.pool.ConnectionFactory",
+ options={
+ "CONNECTION_FACTORY": "django_redis.pool.SentinelConnectionFactory",
+ "SENTINELS": [("127.0.0.1", "26739")],
+ },
+ )
+ assert cf.__class__.__name__ == "SentinelConnectionFactory"
+
+
+(a)pytest.mark.parametrize(
+ "conn_factory,expected",
+ [
+ ("django_redis.pool.SentinelConnectionFactory", pool.SentinelConnectionFactory),
+ ("django_redis.pool.ConnectionFactory", pool.ConnectionFactory),
+ ],
+)
+def test_connection_factory_opts(conn_factory: str, expected):
+ cf = pool.get_connection_factory(
+ path=None,
+ options={
+ "CONNECTION_FACTORY": conn_factory,
+ "SENTINELS": [("127.0.0.1", "26739")],
+ },
+ )
+ assert isinstance(cf, expected)
+
+
+(a)pytest.mark.parametrize(
+ "conn_factory,expected",
+ [
+ ("django_redis.pool.SentinelConnectionFactory", pool.SentinelConnectionFactory),
+ ("django_redis.pool.ConnectionFactory", pool.ConnectionFactory),
+ ],
+)
+def test_connection_factory_path(conn_factory: str, expected):
+ cf = pool.get_connection_factory(
+ path=conn_factory,
+ options={
+ "SENTINELS": [("127.0.0.1", "26739")],
+ },
+ )
+ assert isinstance(cf, expected)
+
+
+def test_connection_factory_no_sentinels():
+ with pytest.raises(ImproperlyConfigured):
+ pool.get_connection_factory(
+ path=None,
+ options={
+ "CONNECTION_FACTORY": "django_redis.pool.SentinelConnectionFactory",
+ },
+ )
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ttyd for openSUSE:Factory checked in at 2023-10-31 20:25:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ttyd (Old)
and /work/SRC/openSUSE:Factory/.ttyd.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ttyd"
Tue Oct 31 20:25:31 2023 rev:2 rq:1121404 version:1.7.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/ttyd/ttyd.changes 2023-02-25 19:55:36.727451619 +0100
+++ /work/SRC/openSUSE:Factory/.ttyd.new.17445/ttyd.changes 2023-10-31 20:25:46.206095059 +0100
@@ -1,0 +2,34 @@
+Tue Oct 31 09:33:48 UTC 2023 - Soc Virnyl Estela <uncomfy+openbuildservice(a)uncomfyhalomacro.pl>
+
+- libwebsockets19 should not be required in specfile
+
+-------------------------------------------------------------------
+Mon Oct 30 21:56:44 UTC 2023 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 1.7.4:
+ Breaking Changes
+ * The default listen interface/ip is changed to 127.0.0.1 now.
+ * The web terminal is readonly by default now, to make it
+ writable, use -W option.
+ Other Changes
+ * server: print working directory on start.
+ * server: replace --readonly with --writable.
+ * server: fix -U option not work.
+ * server: do not expose port to public by default.
+ * Add -y flag for easier installation.
+ * improve support for trzsz.
+ * info.max_http_header_data = 65535;
+ * fix flow control.
+ * Fix typo, OPTOINS -> OPTIONS.
+
+-------------------------------------------------------------------
+Sat Sep 9 23:15:33 UTC 2023 - Soc Virnyl Estela <socvirnyl.estela(a)gmail.com>
+
+- Redeclare requires without using pkgconfig
+
+-------------------------------------------------------------------
+Sat Sep 2 14:12:42 UTC 2023 - Soc Virnyl Estela <socvirnyl.estela(a)gmail.com>
+
+- Ttyd also requires these packages.
+
+-------------------------------------------------------------------
Old:
----
ttyd-1.7.3.tar.gz
New:
----
ttyd-1.7.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ttyd.spec ++++++
--- /var/tmp/diff_new_pack.KroGdE/_old 2023-10-31 20:25:46.918121213 +0100
+++ /var/tmp/diff_new_pack.KroGdE/_new 2023-10-31 20:25:46.918121213 +0100
@@ -18,7 +18,7 @@
Name: ttyd
-Version: 1.7.3
+Version: 1.7.4
Release: 0
Summary: Share your terminal over the web
License: MIT
@@ -60,7 +60,8 @@
%cmake_install
%files
-%doc LICENSE README.md
+%license LICENSE
+%doc README.md
%{_bindir}/ttyd
%{_mandir}/man1/ttyd.1%{ext_man}
++++++ ttyd-1.7.3.tar.gz -> ttyd-1.7.4.tar.gz ++++++
++++ 34383 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package coq for openSUSE:Factory checked in at 2023-10-31 20:25:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/coq (Old)
and /work/SRC/openSUSE:Factory/.coq.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "coq"
Tue Oct 31 20:25:29 2023 rev:24 rq:1121332 version:8.18.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/coq/coq.changes 2023-09-20 13:26:44.797394139 +0200
+++ /work/SRC/openSUSE:Factory/.coq.new.17445/coq.changes 2023-10-31 20:25:44.806043635 +0100
@@ -1,0 +2,5 @@
+Mon Oct 30 22:26:00 UTC 2023 - Aaron Puchert <aaronpuchert(a)alice-dsl.net>
+
+- Increase stack size limit to fix build on riscv64.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ coq.spec ++++++
--- /var/tmp/diff_new_pack.fKgYGb/_old 2023-10-31 20:25:45.530070229 +0100
+++ /var/tmp/diff_new_pack.fKgYGb/_new 2023-10-31 20:25:45.530070229 +0100
@@ -91,6 +91,9 @@
%setup -q -a 50 -a 51
%build
+# The default stack size limit is insufficient on riscv64, so we double it.
+ulimit -s 16384
+
export CFLAGS='%{optflags}'
./configure \
-prefix %{_prefix} \
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package vapoursynth for openSUSE:Factory checked in at 2023-10-31 20:25:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vapoursynth (Old)
and /work/SRC/openSUSE:Factory/.vapoursynth.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vapoursynth"
Tue Oct 31 20:25:27 2023 rev:23 rq:1121327 version:65
Changes:
--------
--- /work/SRC/openSUSE:Factory/vapoursynth/vapoursynth.changes 2023-10-13 23:16:46.515609028 +0200
+++ /work/SRC/openSUSE:Factory/.vapoursynth.new.17445/vapoursynth.changes 2023-10-31 20:25:43.662001615 +0100
@@ -1,0 +2,17 @@
+Mon Oct 30 21:31:59 UTC 2023 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 65:
+ * fixed inspection api sometimes causing memory corruption when
+ used from python
+ * frame properties in python are now return as str type instead
+ of bytes when hinted as utf8 printable
+ * fixed how unprintable data is returned from plugin functions
+ in python, previously it would leak a ctypes pointer
+ * with no length instead of returning a bytes object
+ * fixed a bug in the avx2 maskedmerge float premultiplied code
+ path that would switch the two input clips
+ * reverted the from_chars code a bit more to make no locale affect
+ float parsing
+ * fixed the sar adjustment for real this time
+
+-------------------------------------------------------------------
Old:
----
vapoursynth-R64.tar.gz
New:
----
vapoursynth-R65.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vapoursynth.spec ++++++
--- /var/tmp/diff_new_pack.kRXVs4/_old 2023-10-31 20:25:44.438030119 +0100
+++ /var/tmp/diff_new_pack.kRXVs4/_new 2023-10-31 20:25:44.438030119 +0100
@@ -17,7 +17,7 @@
Name: vapoursynth
-Version: 64
+Version: 65
Release: 0
Summary: A video processing framework
License: LGPL-2.1-only
++++++ vapoursynth-R64.tar.gz -> vapoursynth-R65.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/.github/workflows/linux.yml new/vapoursynth-R65/.github/workflows/linux.yml
--- old/vapoursynth-R64/.github/workflows/linux.yml 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/.github/workflows/linux.yml 2023-10-29 14:57:45.000000000 +0100
@@ -7,8 +7,8 @@
runs-on: ubuntu-latest
env:
- CC: gcc-12
- CXX: g++-12
+ CC: gcc-13
+ CXX: g++-13
steps:
- uses: actions/checkout@v3
@@ -18,7 +18,7 @@
- name: Install zimg
run: |
- git clone https://github.com/sekrit-twc/zimg --depth 1 --shallow-submodules --recurse-submodules
+ git clone https://bitbucket.org/the-sekrit-twc/zimg.git --depth 1 --recurse-submodules --shallow-submodules
pushd zimg
./autogen.sh
./configure --prefix=/usr
@@ -29,10 +29,9 @@
- uses: actions/setup-python@v4
with:
- # Version range or exact version of a Python version to use, using SemVer's version range syntax.
python-version: '3.11'
- - name: Install/upgrade required Python packages
+ - name: Install Python packages
run: |
python -m pip install -U pip
pip install -U cython setuptools wheel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/.github/workflows/macos.yml new/vapoursynth-R65/.github/workflows/macos.yml
--- old/vapoursynth-R64/.github/workflows/macos.yml 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/.github/workflows/macos.yml 2023-10-29 14:57:45.000000000 +0100
@@ -4,43 +4,44 @@
jobs:
build-clang:
- runs-on: macos-latest
+ runs-on: macos-13
steps:
- uses: actions/checkout@v3
- - name: Set CC and CXX to use Clang/LLVM 15
+ - name: Install Homebrew packages
run: |
- echo "CC=$(brew --prefix llvm@15)/bin/clang" >> $GITHUB_ENV
- echo "CXX=$(brew --prefix llvm@15)/bin/clang++" >> $GITHUB_ENV
+ brew update
+ brew install automake llvm
+
+ - name: Set environment variables for Clang/LLVM
+ run: |
+ echo "CC=/usr/local/opt/llvm/bin/clang" >> $GITHUB_ENV
+ echo "CXX=/usr/local/opt/llvm/bin/clang++" >> $GITHUB_ENV
+ echo "LDFLAGS=-fuse-ld=lld -L/usr/local/opt/llvm/lib/c++ -Wl,-rpath,/usr/local/opt/llvm/lib/c++" >> $GITHUB_ENV
+ echo "PATH=/usr/local/opt/llvm/bin:$PATH" >> $GITHUB_ENV
echo "CPATH=/usr/local/include:$CPATH" >> $GITHUB_ENV
echo "LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH" >> $GITHUB_ENV
- name: Print compiler version
run: ${{ env.CC }} --version
- - name: Install required packages
- run: |
- brew update
- brew install automake
-
- name: Install zimg
run: |
- git clone https://github.com/sekrit-twc/zimg --depth 1 --shallow-submodules --recurse-submodules
+ git clone https://bitbucket.org/the-sekrit-twc/zimg.git --depth 1 --recurse-submodules --shallow-submodules
pushd zimg
./autogen.sh
./configure
- make -j3
- sudo make install -j3
+ make -j4
+ sudo make install -j4
popd
rm -rf zimg
- uses: actions/setup-python@v4
with:
- # Version range or exact version of a Python version to use, using SemVer's version range syntax.
python-version: '3.11'
- - name: Install/upgrade required Python packages
+ - name: Install Python packages
run: |
python -m pip install -U pip
pip install -U cython setuptools wheel
@@ -51,11 +52,11 @@
./configure
- name: make
- run: make -j3
+ run: make -j4
- name: make install
run: |
- sudo make install -j3
+ sudo make install -j4
pip install .
- name: Run test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/.github/workflows/windows.yml new/vapoursynth-R65/.github/workflows/windows.yml
--- old/vapoursynth-R64/.github/workflows/windows.yml 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/.github/workflows/windows.yml 2023-10-29 14:57:45.000000000 +0100
@@ -13,10 +13,10 @@
- name: Clone Dependencies
run: |
- git clone https://github.com/vapoursynth/vsrepo --depth 1
- git clone https://github.com/sekrit-twc/zimg --depth 1 --shallow-submodules --recurse-submodules
git clone https://github.com/AviSynth/AviSynthPlus.git --depth 1
- git clone https://github.com/sekrit-twc/libp2p --depth 1
+ git clone https://github.com/sekrit-twc/libp2p.git --depth 1
+ git clone https://github.com/vapoursynth/vsrepo.git --depth 1
+ git clone https://bitbucket.org/the-sekrit-twc/zimg.git --depth 1 --recurse-submodules --shallow-submodules
- name: Setup Python 3.8
uses: actions/setup-python@v4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/ChangeLog new/vapoursynth-R65/ChangeLog
--- old/vapoursynth-R64/ChangeLog 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/ChangeLog 2023-10-29 14:57:45.000000000 +0100
@@ -1,3 +1,11 @@
+r65:
+fixed inspection api sometimes causing memory corruption when used from python
+frame properties in python are now return as str type instead of bytes when hinted as utf8 printable
+fixed how unprintable data is returned from plugin functions in python, previously it would leak a ctypes pointer with no length instead of returning a bytes object
+fixed a bug in the avx2 maskedmerge float premultiplied code path that would switch the two input clips
+reverted the from_chars code a bit more to make no locale affects float parsing
+fixed the sar adjustment for real this time
+
r64:
fixed compilation on osx where the default standard library doesn't have a full implementation of std::from_chars
fixed SAR adjustment in resizer when source cropping is used
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/MANIFEST.in new/vapoursynth-R65/MANIFEST.in
--- old/vapoursynth-R64/MANIFEST.in 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/MANIFEST.in 2023-10-29 14:57:45.000000000 +0100
@@ -1,4 +1,5 @@
include COPYING.LESSER
+include VAPOURSYNTH_VERSION
recursive-include test *
recursive-include src/cython *.pyx *.pxd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/VAPOURSYNTH_VERSION new/vapoursynth-R65/VAPOURSYNTH_VERSION
--- old/vapoursynth-R64/VAPOURSYNTH_VERSION 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/VAPOURSYNTH_VERSION 2023-10-29 14:57:45.000000000 +0100
@@ -1 +1 @@
-#define VS_CURRENT_RELEASE 64
\ No newline at end of file
+#define VS_CURRENT_RELEASE 65
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/doc/functions/video/setframeprop.rst new/vapoursynth-R65/doc/functions/video/setframeprop.rst
--- old/vapoursynth-R64/doc/functions/video/setframeprop.rst 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/doc/functions/video/setframeprop.rst 2023-10-29 14:57:45.000000000 +0100
@@ -12,9 +12,6 @@
The type of the property added depends on which of the *intval*,
*floatval*, or *data* parameters is used.
- The *data* parameter can only be used to add NULL-terminated strings,
- not arbitrary binary data.
-
For example, to set the field order to top field first::
clip = c.std.SetFrameProp(clip, prop="_FieldBased", intval=2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/doc/pythonreference.rst new/vapoursynth-R65/doc/pythonreference.rst
--- old/vapoursynth-R64/doc/pythonreference.rst 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/doc/pythonreference.rst 2023-10-29 14:57:45.000000000 +0100
@@ -39,7 +39,7 @@
+---------------------------------+---------------------------------------------------------------+--------------------------------------------------------+
| Operation | Description | Equivalent |
+=================================+===============================================================+========================================================+
-| clip = clip[5] | Make a single frame clip containing frame number 5 | |
+| clip = clip[5] | Make a single frame clip containing frame number 5 | clip = core.std.Trim(clip, first=5, last=5) |
+---------------------------------+---------------------------------------------------------------+--------------------------------------------------------+
| clip = clip[5:11] | Make a clip containing frames 5 to 10 [#f1]_ | clip = core.std.Trim(clip, first=5, last=10) |
| | | |
@@ -74,6 +74,22 @@
Which is quivalent to::
clip = core.std.FlipVertical(core.std.Trim(clip, first=100, last=2000))
+
+Function Arguments, Return Types and Property Type Deduction in Python
+**********************************************************************
+
+VapourSynth internally uses a very simple map of key-value pairs to pass values to and from functions.
+As a result of this every key is actually a one dimensional array of values of a single type. The Python bindings
+try to hide this as best as possible to make things less annoying. For example a function returning only a single key
+will have the only the array itself returned and an array with a single value will in turn only have the single value returned.
+
+Similarly function arguments are first converted to the appropriate type specified by the function's argument string or fails if this isn't possible.
+There is however one quirk where the data type's type hint (utf-8/non-printable raw data) is set based on whether a *str* or a *bytes*/*bytearray*
+object is passed. Likewise a *str* object will be returned for all utf-8 hinted data and a bytes object for all other types.
+
+Frame properties and "anything goes" function arguments have much stricter type requirements since the underlying type has to be possible to deduce from them.
+When using this type of functions, such as SetFrameProps, or property assignment it may be necessary to convert to int, float, str or bytes explicitly
+to make things works.
Python Keywords as Filter Arguments
***********************************
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/install_deps.bat new/vapoursynth-R65/install_deps.bat
--- old/vapoursynth-R64/install_deps.bat 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/install_deps.bat 2023-10-29 14:57:45.000000000 +0100
@@ -19,18 +19,18 @@
)
IF NOT EXIST zimg (
- git clone https://github.com/sekrit-twc/zimg --shallow-submodules --recurse-submodules
+ git clone https://bitbucket.org/the-sekrit-twc/zimg.git --shallow-submodules --recurse-submodules
) ELSE (
echo zimg: & pushd zimg & git pull & popd
)
py -3.11 -m ensurepip
py -3.11 -m pip install --upgrade pip --no-warn-script-location
-py -3.11 -m pip install -r python-requirements.txt
+py -3.11 -m pip install --upgrade -r python-requirements.txt
py -3.8 -m ensurepip
py -3.8 -m pip install --upgrade pip --no-warn-script-location
-py -3.8 -m pip install -r python-requirements.txt
+py -3.8 -m pip install --upgrade -r python-requirements.txt
SET ZFOLDER=%ProgramFiles%\7-Zip
IF EXIST "%ZFOLDER%\7z.exe" GOTO copym
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/installer/make_portable.bat new/vapoursynth-R65/installer/make_portable.bat
--- old/vapoursynth-R64/installer/make_portable.bat 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/installer/make_portable.bat 2023-10-29 14:57:45.000000000 +0100
@@ -9,7 +9,6 @@
mkdir buildp64\vapoursynth64\plugins
mkdir buildp64\sdk\include
mkdir buildp64\sdk\examples
-mkdir buildp64\sdk\lib32
mkdir buildp64\sdk\lib64
mkdir buildp64\doc
mkdir buildp64\vsgenstubs4
@@ -34,8 +33,6 @@
copy ..\include\VSHelper4.h buildp64\sdk\include
copy ..\include\VSScript4.h buildp64\sdk\include
copy ..\include\VSConstants4.h buildp64\sdk\include
-copy ..\msvc_project\Release\vapoursynth.lib buildp64\sdk\lib32
-copy ..\msvc_project\Release\vsscript.lib buildp64\sdk\lib32
copy ..\msvc_project\x64\Release\vapoursynth.lib buildp64\sdk\lib64
copy ..\msvc_project\x64\Release\vsscript.lib buildp64\sdk\lib64
copy ..\sdk\filter_skeleton.c buildp64\sdk\examples
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/installer/vsinstaller.iss new/vapoursynth-R65/installer/vsinstaller.iss
--- old/vapoursynth-R64/installer/vsinstaller.iss 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/installer/vsinstaller.iss 2023-10-29 14:57:45.000000000 +0100
@@ -109,9 +109,7 @@
Source: ..\include\VapourSynth.h; DestDir: {app}\sdk\include\vapoursynth; Flags: ignoreversion uninsrestartdelete restartreplace; Components: sdk
Source: ..\include\VSHelper.h; DestDir: {app}\sdk\include\vapoursynth; Flags: ignoreversion uninsrestartdelete restartreplace; Components: sdk
Source: ..\include\VSScript.h; DestDir: {app}\sdk\include\vapoursynth; Flags: ignoreversion uninsrestartdelete restartreplace; Components: sdk
-Source: ..\msvc_project\Release\vsscript.lib; DestDir: {app}\sdk\lib32; Flags: ignoreversion uninsrestartdelete restartreplace; Components: sdk
Source: ..\msvc_project\x64\Release\vsscript.lib; DestDir: {app}\sdk\lib64; Flags: ignoreversion uninsrestartdelete restartreplace; Components: sdk
-Source: ..\msvc_project\Release\vapoursynth.lib; DestDir: {app}\sdk\lib32; Flags: ignoreversion uninsrestartdelete restartreplace; Components: sdk
Source: ..\msvc_project\x64\Release\vapoursynth.lib; DestDir: {app}\sdk\lib64; Flags: ignoreversion uninsrestartdelete restartreplace; Components: sdk
Source: ..\sdk\filter_skeleton.c; DestDir: {app}\sdk\examples; Flags: ignoreversion uninsrestartdelete restartreplace; Components: sdk
Source: ..\sdk\invert_example.c; DestDir: {app}\sdk\examples; Flags: ignoreversion uninsrestartdelete restartreplace; Components: sdk
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/setup.py new/vapoursynth-R65/setup.py
--- old/vapoursynth-R64/setup.py 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/setup.py 2023-10-29 14:57:45.000000000 +0100
@@ -11,7 +11,7 @@
is_win = (architecture()[1] == "WindowsPE")
is_64 = (architecture()[0] == "64bit")
-data_files = ['VAPOURSYNTH_VERSION']
+extra_data = {}
library_dirs = [curdir, "build"]
@@ -83,8 +83,8 @@
# Make sure the setup process copies the VapourSynth.dll into the site-package folder
print("Found VapourSynth.dll at:", dll_path)
-
- data_files.extend([(r"Lib\site-packages", [dll_path])])
+
+ extra_data["data_files"] = [(r"Lib\site-packages", [dll_path])]
setup(
@@ -115,5 +115,6 @@
'setuptools>=18.0',
"Cython",
],
- data_files=data_files
+ exclude_package_data={"": ("VAPOURSYNTH_VERSION",)},
+ **extra_data
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/src/core/expr/expr.cpp new/vapoursynth-R65/src/core/expr/expr.cpp
--- old/vapoursynth-R64/src/core/expr/expr.cpp 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/src/core/expr/expr.cpp 2023-10-29 14:57:45.000000000 +0100
@@ -22,6 +22,8 @@
#include <cassert>
#include <charconv>
#include <cmath>
+#include <iostream>
+#include <locale>
#include <map>
#include <memory>
#include <set>
@@ -202,14 +204,15 @@
throw std::runtime_error("illegal token: " + std::string{ token });
return{ token[0] == 'd' ? ExprOpType::DUP : ExprOpType::SWAP, idx };
} else {
- char *str_end = const_cast<char *>(token.data()) + token.size();
- float f = strtof(token.data(), &str_end);
- if (str_end == token.data())
- throw std::runtime_error("failed to convert '" + std::string{ token } + "' to float");
- if (str_end != token.data() + token.size())
- throw std::runtime_error("failed to convert '" + std::string{ token } + "' to float, not the whole token could be converted");
- if (f == HUGE_VALF)
- throw std::runtime_error("failed to convert '" + std::string{ token } + "' to float, number out of range");
+ float f;
+ std::string s;
+ std::string stoken(token);
+ std::istringstream numStream(stoken);
+ numStream.imbue(std::locale::classic());
+ if (!(numStream >> f))
+ throw std::runtime_error("failed to convert '" + stoken + "' to float");
+ if (numStream >> s)
+ throw std::runtime_error("failed to convert '" + stoken + "' to float, not the whole token could be converted");
return{ ExprOpType::CONSTANT, f };
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/src/core/kernel/x86/merge_avx2.c new/vapoursynth-R65/src/core/kernel/x86/merge_avx2.c
--- old/vapoursynth-R64/src/core/kernel/x86/merge_avx2.c 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/src/core/kernel/x86/merge_avx2.c 2023-10-29 14:57:45.000000000 +0100
@@ -316,7 +316,7 @@
__m256 v1 = _mm256_load_ps(srcp1 + i);
__m256 v2 = _mm256_load_ps(srcp2 + i);
__m256 w1 = _mm256_sub_ps(_mm256_set1_ps(1.0f), _mm256_load_ps(maskp + i));
- __m256 result = _mm256_fmadd_ps(v2, w1, v1);
+ __m256 result = _mm256_fmadd_ps(v1, w1, v2);
_mm256_store_ps(dstp + i, result);
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/src/core/vsresize.cpp new/vapoursynth-R65/src/core/vsresize.cpp
--- old/vapoursynth-R64/src/core/vsresize.cpp 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/src/core/vsresize.cpp 2023-10-29 14:57:45.000000000 +0100
@@ -336,7 +336,7 @@
muldivRational(&sar_num, &sar_den, src_format.width, dst_format.width);
if (!std::isnan(src_format.active_region.height) && src_format.active_region.height != src_format.height)
- muldivRational(&sar_num, &sar_den, std::llround(src_format.active_region.height * 16), static_cast<int64_t>(dst_format.height) * 16);
+ muldivRational(&sar_num, &sar_den, static_cast<int64_t>(dst_format.height) * 16, std::llround(src_format.active_region.height * 16));
else
muldivRational(&sar_num, &sar_den, dst_format.height, src_format.height);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/src/core/vsthreadpool.cpp new/vapoursynth-R65/src/core/vsthreadpool.cpp
--- old/vapoursynth-R64/src/core/vsthreadpool.cpp 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/src/core/vsthreadpool.cpp 2023-10-29 14:57:45.000000000 +0100
@@ -109,7 +109,8 @@
}
}
- PVSFrameContext mainContextRef = std::move(*iter);
+ // this is needed in order to prevent more tasks latching on to a context in the final stages of completion, holds a reference to frameContext
+ PVSFrameContext mainContextRef = std::move(*iter);
tasks.erase(iter);
allContexts.erase(frameContext->key);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/src/cython/vapoursynth.pxd new/vapoursynth-R65/src/cython/vapoursynth.pxd
--- old/vapoursynth-R64/src/cython/vapoursynth.pxd 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/src/cython/vapoursynth.pxd 2023-10-29 14:57:45.000000000 +0100
@@ -318,7 +318,7 @@
VSFunction *addFunctionRef(VSFunction *f) nogil
void callFunction(VSFunction *func, const VSMap *inm, VSMap *outm) nogil
- # Map and proptery access
+ # Map and property access
VSMap *createMap() nogil
void freeMap(VSMap *map) nogil
void clearMap(VSMap *map) nogil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/src/cython/vapoursynth.pyx new/vapoursynth-R65/src/cython/vapoursynth.pyx
--- old/vapoursynth-R64/src/cython/vapoursynth.pyx 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/src/cython/vapoursynth.pyx 2023-10-29 14:57:45.000000000 +0100
@@ -815,7 +815,7 @@
elif proptype == ptFloat:
newval = funcs.mapGetFloat(map, retkey, y, NULL)
elif proptype == ptData:
- newval = funcs.mapGetData(map, retkey, y, NULL)
+ newval = funcs.mapGetData(map, retkey, y, NULL)[:funcs.mapGetDataSize(map, retkey, y, NULL)]
if funcs.mapGetDataTypeHint(map, retkey, y, NULL) == dtUtf8:
newval = newval.decode('utf-8')
elif proptype == ptVideoNode or proptype == ptAudioNode:
@@ -1071,7 +1071,10 @@
elif t == ptData:
for i in range(numelem):
data = self.funcs.mapGetData(m, b, i, NULL)
- ol.append(data[:self.funcs.mapGetDataSize(m, b, i, NULL)])
+ aval = data[:self.funcs.mapGetDataSize(m, b, i, NULL)]
+ if self.funcs.mapGetDataTypeHint(m, b, i, NULL) == dtUtf8:
+ aval = aval.decode('utf-8')
+ ol.append(aval)
elif t == ptVideoNode or t == ptAudioNode:
for i in range(numelem):
ol.append(createNode(self.funcs.mapGetNode(m, b, i, NULL), self.funcs, _get_core()))
@@ -1511,7 +1514,7 @@
cdef class _frame:
@staticmethod
- cdef void* getdata(VSFrame* frame, int index, unsigned* flags, const VSAPI* lib) nogil:
+ cdef void* getdata(VSFrame* frame, int index, unsigned* flags, const VSAPI* lib) noexcept nogil:
cdef:
unsigned mask
@@ -1967,7 +1970,7 @@
raise Error("This node is not inspectable")
return tuple(
- createNode(self.funcs.getNodeDependencies(self.node)[idx].source, self.funcs, self.core)
+ createNode(self.funcs.addNodeRef(self.funcs.getNodeDependencies(self.node)[idx].source), self.funcs, self.core)
for idx in range(self.funcs.getNumNodeDependencies(self.node))
)
@@ -3236,7 +3239,7 @@
se.errstr = <void *>errstr
return 1
-cdef public api void vpy4_freeScript(VSScript *se) nogil:
+cdef public api void vpy4_freeScript(VSScript *se) noexcept nogil:
with gil:
vpy_clearEnvironment(se)
if se.pyenvdict:
@@ -3370,7 +3373,7 @@
return 1
return 0
-cdef public api void vpy_clearEnvironment(VSScript *se) nogil:
+cdef public api void vpy_clearEnvironment(VSScript *se) noexcept nogil:
with gil:
pyenvdict = <dict>se.pyenvdict
for key in pyenvdict:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/src/vspipe/vspipe.cpp new/vapoursynth-R65/src/vspipe/vspipe.cpp
--- old/vapoursynth-R64/src/vspipe/vspipe.cpp 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/src/vspipe/vspipe.cpp 2023-10-29 14:57:45.000000000 +0100
@@ -735,7 +735,7 @@
}
arg++;
- } else if (argString == NSTRING("-y") || argString == NSTRING("--y4m")) { // secret option for comaptibility with V3
+ } else if (argString == NSTRING("-y") || argString == NSTRING("--y4m")) { // secret option for compatibility with V3
fprintf(stderr, "Deprecated option --y4m specified, use -c y4m instead\n");
opts.outputHeaders = VSPipeHeaders::Y4M;
} else if (argString == NSTRING("-p") || argString == NSTRING("--progress")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vapoursynth-R64/test/prop_dict_test.py new/vapoursynth-R65/test/prop_dict_test.py
--- old/vapoursynth-R64/test/prop_dict_test.py 2023-09-27 06:16:13.000000000 +0200
+++ new/vapoursynth-R65/test/prop_dict_test.py 2023-10-29 14:57:45.000000000 +0100
@@ -80,7 +80,7 @@
self.assertEqual(self.props_rw.setdefault("_NonExistent1"), 0)
self.assertEqual(self.props_rw["_NonExistent1"], 0)
- self.assertEqual(self.props_rw.setdefault("_NonExistent2", "Testificate"), b"Testificate")
+ self.assertEqual(self.props_rw.setdefault("_NonExistent2", b"Testificate"), b"Testificate")
self.assertEqual(self.props_rw["_NonExistent2"], b"Testificate")
def test_attr_access(self):
@@ -101,6 +101,12 @@
self.assertEqual(self.props_rw._DurationDen, 1)
del self.props_rw._DurationDen
self.assertFalse(hasattr(self.props_rw, '_DurationDen'))
+
+ def test_data_props(self):
+ self.props_rw.DataPropStr = 'hello'
+ self.props_rw.DataPropBytes = b'hello'
+ self.assertEqual(type(self.props_rw.DataPropStr), str)
+ self.assertEqual(type(self.props_rw.DataPropBytes), bytes)
if __name__ == '__main__':
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-haddock-library for openSUSE:Factory checked in at 2023-10-31 20:25:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-haddock-library (Old)
and /work/SRC/openSUSE:Factory/.ghc-haddock-library.new.17445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-haddock-library"
Tue Oct 31 20:25:26 2023 rev:21 rq:1121329 version:1.11.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-haddock-library/ghc-haddock-library.changes 2023-04-14 13:12:56.779518633 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-haddock-library.new.17445/ghc-haddock-library.changes 2023-10-31 20:25:42.481958272 +0100
@@ -1,0 +2,6 @@
+Mon Oct 23 21:39:13 UTC 2023 - Peter Simons <psimons(a)suse.com>
+
+- Update haddock-library to version 1.11.0 revision 3.
+ Upstream has revised the Cabal build instructions on Hackage.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-haddock-library.spec ++++++
--- /var/tmp/diff_new_pack.2wN0Si/_old 2023-10-31 20:25:43.105981192 +0100
+++ /var/tmp/diff_new_pack.2wN0Si/_new 2023-10-31 20:25:43.105981192 +0100
@@ -26,7 +26,7 @@
License: BSD-2-Clause
URL: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/2.cabal…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/3.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-base-devel
BuildRequires: ghc-base-prof
++++++ haddock-library.cabal ++++++
--- /var/tmp/diff_new_pack.2wN0Si/_old 2023-10-31 20:25:43.141982514 +0100
+++ /var/tmp/diff_new_pack.2wN0Si/_new 2023-10-31 20:25:43.145982661 +0100
@@ -1,7 +1,7 @@
cabal-version: 3.0
name: haddock-library
version: 1.11.0
-x-revision: 2
+x-revision: 3
synopsis: Library exposing some functionality of Haddock.
description: Haddock is a documentation-generation tool for Haskell
@@ -20,7 +20,8 @@
category: Documentation
tested-with:
- GHC == 9.6.1
+ GHC == 9.8.1
+ GHC == 9.6.3
GHC == 9.4.4
GHC == 9.2.7
GHC == 9.0.2
@@ -44,9 +45,9 @@
default-language: Haskell2010
build-depends:
- , base >= 4.5 && < 4.19
+ , base >= 4.5 && < 4.20
, containers ^>= 0.4.2.1 || ^>= 0.5.0.0 || ^>= 0.6.0.1
- , text ^>= 1.2.3.0 || ^>= 2.0
+ , text ^>= 1.2.3.0 || ^>= 2.0 || ^>= 2.1
, parsec ^>= 3.1.13.0
ghc-options: -funbox-strict-fields -Wall
@@ -93,17 +94,17 @@
build-depends:
, base-compat ^>= 0.12.0 || ^>= 0.13.0
, QuickCheck ^>= 2.11 || ^>= 2.13.2 || ^>= 2.14
- , deepseq ^>= 1.3.0.0 || ^>= 1.4.0.0
+ , deepseq ^>= 1.3.0.0 || ^>= 1.4.0.0 || ^>= 1.5.0.0
-- NB: build-depends & build-tool-depends have independent
-- install-plans, so it's best to limit to a single major
-- version of `hspec` & `hspec-discover` to ensure
-- intercompatibility
build-depends:
- , hspec >= 2.4.4 && < 2.11
+ , hspec >= 2.4.4 && < 2.12
build-tool-depends:
- , hspec-discover:hspec-discover >= 2.4.4 && < 2.10
+ , hspec-discover:hspec-discover >= 2.4.4 && < 2.12
test-suite fixtures
type: exitcode-stdio-1.0
@@ -121,7 +122,7 @@
, base-compat ^>= 0.12.0 || ^>= 0.13.0
, directory ^>= 1.3.0.2
, filepath ^>= 1.4.1.2
- , optparse-applicative >= 0.15 && < 0.18
+ , optparse-applicative >= 0.15 && < 0.19
, tree-diff ^>= 0.2 || ^>= 0.3
source-repository head
1
0