Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-svgpathtools for openSUSE:Factory checked in at 2023-02-21 15:36:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-svgpathtools (Old) and /work/SRC/openSUSE:Factory/.python-svgpathtools.new.22824 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-svgpathtools" Tue Feb 21 15:36:30 2023 rev:6 rq:1066955 version:1.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-svgpathtools/python-svgpathtools.changes 2022-07-21 11:35:37.723079961 +0200 +++ /work/SRC/openSUSE:Factory/.python-svgpathtools.new.22824/python-svgpathtools.changes 2023-02-21 15:36:47.340544566 +0100 @@ -1,0 +2,5 @@ +Tue Feb 21 09:51:58 UTC 2023 - Mia Herkt <m...@0x0.st> + +- Updote to 1.6.0 + +------------------------------------------------------------------- Old: ---- svgpathtools-1.5.1.tar.gz New: ---- svgpathtools-1.6.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-svgpathtools.spec ++++++ --- /var/tmp/diff_new_pack.pO03Nf/_old 2023-02-21 15:36:47.844547462 +0100 +++ /var/tmp/diff_new_pack.pO03Nf/_new 2023-02-21 15:36:47.848547485 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-svgpathtools # -# 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 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %global skip_python36 1 Name: python-svgpathtools -Version: 1.5.1 +Version: 1.6.0 Release: 0 Summary: Tools for manipulating and analyzing SVG Path objects and Bézier curves License: MIT ++++++ svgpathtools-1.5.1.tar.gz -> svgpathtools-1.6.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/PKG-INFO new/svgpathtools-1.6.0/PKG-INFO --- old/svgpathtools-1.5.1/PKG-INFO 2022-07-11 03:22:13.351251000 +0200 +++ new/svgpathtools-1.6.0/PKG-INFO 2023-02-13 23:49:43.994840000 +0100 @@ -1,9 +1,9 @@ Metadata-Version: 2.1 Name: svgpathtools -Version: 1.5.1 +Version: 1.6.0 Summary: A collection of tools for manipulating and analyzing SVG Path objects and Bezier curves. Home-page: https://github.com/mathandy/svgpathtools -Download-URL: https://github.com/mathandy/svgpathtools/releases/download/1.5.1/svgpathtools-1.5.1-py2.py3-none-any.whl +Download-URL: https://github.com/mathandy/svgpathtools/releases/download/1.6.0/svgpathtools-1.6.0-py2.py3-none-any.whl Author: Andy Port Author-email: andyap...@gmail.com License: MIT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/setup.py new/svgpathtools-1.6.0/setup.py --- old/svgpathtools-1.5.1/setup.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/setup.py 2023-02-13 23:49:35.000000000 +0100 @@ -3,7 +3,7 @@ import os -VERSION = '1.5.1' +VERSION = '1.6.0' AUTHOR_NAME = 'Andy Port' AUTHOR_EMAIL = 'andyap...@gmail.com' GITHUB = 'https://github.com/mathandy/svgpathtools' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/svgpathtools/document.py new/svgpathtools-1.6.0/svgpathtools/document.py --- old/svgpathtools-1.5.1/svgpathtools/document.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/svgpathtools/document.py 2023-02-13 23:49:35.000000000 +0100 @@ -13,7 +13,7 @@ Example: Typical usage looks something like the following. - >> from svgpathtools import * + >> from svgpathtools import Document >> doc = Document('my_file.html') >> for path in doc.paths(): >> # Do something with the transformed Path object. @@ -44,6 +44,7 @@ from io import StringIO from tempfile import gettempdir from time import time +import numpy as np # Internal dependencies from .parser import parse_path @@ -51,7 +52,7 @@ from .svg_to_paths import (path2pathd, ellipse2pathd, line2pathd, polyline2pathd, polygon2pathd, rect2pathd) from .misctools import open_in_browser -from .path import * +from .path import transform, Path, is_path_segment # To maintain forward/backward compatibility try: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/svgpathtools/path.py new/svgpathtools-1.6.0/svgpathtools/path.py --- old/svgpathtools-1.5.1/svgpathtools/path.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/svgpathtools/path.py 2023-02-13 23:49:35.000000000 +0100 @@ -711,6 +711,19 @@ Note: This will fail if the two segments coincide for more than a finite collection of points. tol is not used.""" + if isinstance(other_seg, (Line, QuadraticBezier, CubicBezier)): + ob = [e.real for e in other_seg.bpoints()] + sb = [e.real for e in self.bpoints()] + if min(ob) > max(sb): + return [] + if max(ob) < min(sb): + return [] + ob = [e.imag for e in other_seg.bpoints()] + sb = [e.imag for e in self.bpoints()] + if min(ob) > max(sb): + return [] + if max(ob) < min(sb): + return [] if isinstance(other_seg, Line): assert other_seg.end != other_seg.start and self.end != self.start assert self != other_seg @@ -1038,6 +1051,19 @@ self.point(t1) == other_seg.point(t2). Note: This will fail if the two segments coincide for more than a finite collection of points.""" + if isinstance(other_seg, (Line, QuadraticBezier, CubicBezier)): + ob = [e.real for e in other_seg.bpoints()] + sb = [e.real for e in self.bpoints()] + if min(ob) > max(sb): + return [] + if max(ob) < min(sb): + return [] + ob = [e.imag for e in other_seg.bpoints()] + sb = [e.imag for e in self.bpoints()] + if min(ob) > max(sb): + return [] + if max(ob) < min(sb): + return [] if isinstance(other_seg, Line): return bezier_by_line_intersections(self, other_seg) elif isinstance(other_seg, QuadraticBezier): @@ -1298,6 +1324,19 @@ This will fail if the two segments coincide for more than a finite collection of points. """ + if isinstance(other_seg, (Line, QuadraticBezier, CubicBezier)): + ob = [e.real for e in other_seg.bpoints()] + sb = [e.real for e in self.bpoints()] + if min(ob) > max(sb): + return [] + if max(ob) < min(sb): + return [] + ob = [e.imag for e in other_seg.bpoints()] + sb = [e.imag for e in self.bpoints()] + if min(ob) > max(sb): + return [] + if max(ob) < min(sb): + return [] if isinstance(other_seg, Line): return bezier_by_line_intersections(self, other_seg) elif (isinstance(other_seg, QuadraticBezier) or diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/svgpathtools/svg_io_sax.py new/svgpathtools-1.6.0/svgpathtools/svg_io_sax.py --- old/svgpathtools-1.5.1/svgpathtools/svg_io_sax.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/svgpathtools/svg_io_sax.py 2023-02-13 23:49:35.000000000 +0100 @@ -6,6 +6,7 @@ from __future__ import division, absolute_import, print_function import os from xml.etree.ElementTree import iterparse, Element, ElementTree, SubElement +import numpy as np # Internal dependencies from .parser import parse_path @@ -13,13 +14,13 @@ from .svg_to_paths import (path2pathd, ellipse2pathd, line2pathd, polyline2pathd, polygon2pathd, rect2pathd) from .misctools import open_in_browser -from .path import * +from .path import transform # To maintain forward/backward compatibility try: - str = basestring + string = basestring except NameError: - pass + string = str NAME_SVG = "svg" ATTR_VERSION = "version" @@ -164,17 +165,17 @@ if matrix is not None and not np.all(np.equal(matrix, identity)): matrix_string = "matrix(" matrix_string += " " - matrix_string += str(matrix[0][0]) + matrix_string += string(matrix[0][0]) matrix_string += " " - matrix_string += str(matrix[1][0]) + matrix_string += string(matrix[1][0]) matrix_string += " " - matrix_string += str(matrix[0][1]) + matrix_string += string(matrix[0][1]) matrix_string += " " - matrix_string += str(matrix[1][1]) + matrix_string += string(matrix[1][1]) matrix_string += " " - matrix_string += str(matrix[0][2]) + matrix_string += string(matrix[0][2]) matrix_string += " " - matrix_string += str(matrix[1][2]) + matrix_string += string(matrix[1][2]) matrix_string += ")" path.set(ATTR_TRANSFORM, matrix_string) if ATTR_DATA in values: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/svgpathtools.egg-info/PKG-INFO new/svgpathtools-1.6.0/svgpathtools.egg-info/PKG-INFO --- old/svgpathtools-1.5.1/svgpathtools.egg-info/PKG-INFO 2022-07-11 03:22:13.000000000 +0200 +++ new/svgpathtools-1.6.0/svgpathtools.egg-info/PKG-INFO 2023-02-13 23:49:43.000000000 +0100 @@ -1,9 +1,9 @@ Metadata-Version: 2.1 Name: svgpathtools -Version: 1.5.1 +Version: 1.6.0 Summary: A collection of tools for manipulating and analyzing SVG Path objects and Bezier curves. Home-page: https://github.com/mathandy/svgpathtools -Download-URL: https://github.com/mathandy/svgpathtools/releases/download/1.5.1/svgpathtools-1.5.1-py2.py3-none-any.whl +Download-URL: https://github.com/mathandy/svgpathtools/releases/download/1.6.0/svgpathtools-1.6.0-py2.py3-none-any.whl Author: Andy Port Author-email: andyap...@gmail.com License: MIT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/test/test_bezier.py new/svgpathtools-1.6.0/test/test_bezier.py --- old/svgpathtools-1.5.1/test/test_bezier.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/test/test_bezier.py 2023-02-13 23:49:35.000000000 +0100 @@ -1,7 +1,7 @@ from __future__ import division, absolute_import, print_function import numpy as np import unittest -from svgpathtools.bezier import * +from svgpathtools.bezier import bezier_point, bezier2polynomial, polynomial2bezier from svgpathtools.path import bpoints2bezier diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/test/test_document.py new/svgpathtools-1.6.0/test/test_document.py --- old/svgpathtools-1.5.1/test/test_document.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/test/test_document.py 2023-02-13 23:49:35.000000000 +0100 @@ -1,6 +1,6 @@ from __future__ import division, absolute_import, print_function import unittest -from svgpathtools import * +from svgpathtools import Document from io import StringIO from io import open # overrides build-in open for compatibility with python2 from os.path import join, dirname diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/test/test_generation.py new/svgpathtools-1.6.0/test/test_generation.py --- old/svgpathtools-1.5.1/test/test_generation.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/test/test_generation.py 2023-02-13 23:49:35.000000000 +0100 @@ -2,7 +2,7 @@ #------------------------------------------------------------------------------ from __future__ import division, absolute_import, print_function import unittest -from svgpathtools import * +from svgpathtools import parse_path class TestGeneration(unittest.TestCase): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/test/test_groups.py new/svgpathtools-1.6.0/test/test_groups.py --- old/svgpathtools-1.5.1/test/test_groups.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/test/test_groups.py 2023-02-13 23:49:35.000000000 +0100 @@ -5,7 +5,7 @@ """ from __future__ import division, absolute_import, print_function import unittest -from svgpathtools import * +from svgpathtools import Document, SVG_NAMESPACE, parse_path from os.path import join, dirname import numpy as np diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/test/test_parsing.py new/svgpathtools-1.6.0/test/test_parsing.py --- old/svgpathtools-1.5.1/test/test_parsing.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/test/test_parsing.py 2023-02-13 23:49:35.000000000 +0100 @@ -1,8 +1,9 @@ # Note: This file was taken mostly as is from the svg.path module (v 2.0) from __future__ import division, absolute_import, print_function import unittest -from svgpathtools import * +from svgpathtools import Path, Line, QuadraticBezier, CubicBezier, Arc, parse_path import svgpathtools + import numpy as np diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/test/test_path.py new/svgpathtools-1.6.0/test/test_path.py --- old/svgpathtools-1.5.1/test/test_path.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/test/test_path.py 2023-02-13 23:49:35.000000000 +0100 @@ -1,6 +1,7 @@ # External dependencies from __future__ import division, absolute_import, print_function import os +import time from sys import version_info import unittest from math import sqrt, pi @@ -10,8 +11,12 @@ import warnings # Internal dependencies -from svgpathtools import * -from svgpathtools.path import _NotImplemented4ArcException, bezier_radialrange +from svgpathtools import ( + Line, QuadraticBezier, CubicBezier, Arc, Path, poly2bez, path_encloses_pt, + bpoints2bezier, closest_point_in_path, farthest_point_in_path, + is_bezier_segment, is_bezier_path, parse_path +) +from svgpathtools.path import bezier_radialrange # An important note for those doing any debugging: # ------------------------------------------------ @@ -1491,6 +1496,50 @@ self.assertTrue(len(yix) == 1) ################################################################### + def test_random_intersections(self): + from random import Random + r = Random() + distance = 100 + distribution = 10000 + count = 500 + + def random_complex(offset_x=0.0, offset_y=0.0): + return complex(r.random() * distance + offset_x, r.random() * distance + offset_y) + + def random_line(): + offset_x = r.random() * distribution + offset_y = r.random() * distribution + return Line(random_complex(offset_x, offset_y), random_complex(offset_x, offset_y)) + + def random_quad(): + offset_x = r.random() * distribution + offset_y = r.random() * distribution + return QuadraticBezier(random_complex(offset_x, offset_y), random_complex(offset_x, offset_y), random_complex(offset_x, offset_y)) + + def random_cubic(): + offset_x = r.random() * distribution + offset_y = r.random() * distribution + return CubicBezier(random_complex(offset_x, offset_y), random_complex(offset_x, offset_y), random_complex(offset_x, offset_y), random_complex(offset_x, offset_y)) + + def random_path(): + path = Path() + for i in range(count): + type_segment = random.randint(0, 3) + if type_segment == 0: + path.append(random_line()) + if type_segment == 1: + path.append(random_quad()) + if type_segment == 2: + path.append(random_cubic()) + return path + + path1 = random_path() + path2 = random_path() + t = time.time() + intersections = path1.intersect(path2) + print("\nFound {} intersections in {} seconds.\n" + "".format(len(intersections), time.time() - t)) + def test_line_line_0(self): l0 = Line(start=(25.389999999999997+99.989999999999995j), end=(25.389999999999997+90.484999999999999j)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/test/test_polytools.py new/svgpathtools-1.6.0/test/test_polytools.py --- old/svgpathtools-1.5.1/test/test_polytools.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/test/test_polytools.py 2023-02-13 23:49:35.000000000 +0100 @@ -4,7 +4,7 @@ import numpy as np # Internal dependencies -from svgpathtools import * +from svgpathtools import rational_limit class Test_polytools(unittest.TestCase): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/test/test_sax_groups.py new/svgpathtools-1.6.0/test/test_sax_groups.py --- old/svgpathtools-1.5.1/test/test_sax_groups.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/test/test_sax_groups.py 2023-02-13 23:49:35.000000000 +0100 @@ -1,6 +1,6 @@ from __future__ import division, absolute_import, print_function import unittest -from svgpathtools import * +from svgpathtools import SaxDocument from os.path import join, dirname diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/svgpathtools-1.5.1/test/test_svg2paths.py new/svgpathtools-1.6.0/test/test_svg2paths.py --- old/svgpathtools-1.5.1/test/test_svg2paths.py 2022-07-11 03:21:59.000000000 +0200 +++ new/svgpathtools-1.6.0/test/test_svg2paths.py 2023-02-13 23:49:35.000000000 +0100 @@ -1,6 +1,6 @@ from __future__ import division, absolute_import, print_function import unittest -from svgpathtools import * +from svgpathtools import Path, Line, Arc, svg2paths, svgstr2paths from io import StringIO from io import open # overrides build-in open for compatibility with python2 from os.path import join, dirname