Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-fontParts for openSUSE:Factory checked in at 2023-12-08 22:31:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-fontParts (Old) and /work/SRC/openSUSE:Factory/.python-fontParts.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-fontParts" Fri Dec 8 22:31:49 2023 rev:8 rq:1131701 version:0.12.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-fontParts/python-fontParts.changes 2022-12-14 14:11:28.647641135 +0100 +++ /work/SRC/openSUSE:Factory/.python-fontParts.new.25432/python-fontParts.changes 2023-12-08 22:32:00.483899726 +0100 @@ -1,0 +2,11 @@ +Thu Dec 7 21:29:37 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 0.12.1: + * Tweak to logic of `setStartSegment` +- update to 0.12.0: + * Fixes to `setStartSegment` so that it keeps the start point + on-curve and prevents setting a setting a start segment on an + open contour (issues #709 and #412). Thanks @typesupply! + * Fixes to docs and test setup. Boring things. + +------------------------------------------------------------------- Old: ---- fontParts-0.11.0.zip New: ---- fontParts-0.12.1.zip ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-fontParts.spec ++++++ --- /var/tmp/diff_new_pack.iA4tgz/_old 2023-12-08 22:32:01.591940495 +0100 +++ /var/tmp/diff_new_pack.iA4tgz/_new 2023-12-08 22:32:01.595940643 +0100 @@ -1,7 +1,7 @@ # # spec file # -# 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 @@ -27,7 +27,7 @@ %define skip_python2 1 %define skip_python36 1 Name: python-fontParts%{psuffix} -Version: 0.11.0 +Version: 0.12.1 Release: 0 Summary: API for interacting with the parts of fonts License: MIT ++++++ fontParts-0.11.0.zip -> fontParts-0.12.1.zip ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/.github/workflows/publish-package.yml new/fontParts-0.12.1/.github/workflows/publish-package.yml --- old/fontParts-0.11.0/.github/workflows/publish-package.yml 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/.github/workflows/publish-package.yml 2023-10-30 19:21:38.000000000 +0100 @@ -25,9 +25,9 @@ runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3.5.3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4.7.0 with: python-version: '3.x' - name: Install dependencies @@ -40,4 +40,4 @@ TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | python setup.py sdist bdist_wheel - twine upload dist/* \ No newline at end of file + twine upload dist/* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/.github/workflows/run-tests.yml new/fontParts-0.12.1/.github/workflows/run-tests.yml --- old/fontParts-0.11.0/.github/workflows/run-tests.yml 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/.github/workflows/run-tests.yml 2023-10-30 19:21:38.000000000 +0100 @@ -18,21 +18,21 @@ if: "! contains(toJSON(github.event.commits.*.message), '[skip ci]')" strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10'] + python-version: ['3.8', '3.9', '3.10', '3.11'] platform: [ubuntu-latest, macos-latest, windows-latest] exclude: # Only test on the oldest and latest supported stable Python on macOS and Windows. - platform: macos-latest - python-version: 3.8 - - platform: windows-latest - python-version: 3.8 - - platform: macos-latest python-version: 3.9 - platform: windows-latest python-version: 3.9 + - platform: macos-latest + python-version: 3.10 + - platform: windows-latest + python-version: 3.10 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3.5.3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4.7.0 with: python-version: ${{ matrix.python-version }} - name: Install packages @@ -44,7 +44,7 @@ coverage combine coverage xml - name: Upload coverage to Codecov - uses: codecov/codecov-action@v1.5.2 + uses: codecov/codecov-action@v3.1.4 with: file: coverage.xml flags: unittests diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/Lib/fontParts/_version.py new/fontParts-0.12.1/Lib/fontParts/_version.py --- old/fontParts-0.11.0/Lib/fontParts/_version.py 2022-12-09 17:36:02.000000000 +0100 +++ new/fontParts-0.12.1/Lib/fontParts/_version.py 2023-10-30 19:21:56.000000000 +0100 @@ -1 +1 @@ -__version__ = "0.11.0" \ No newline at end of file +__version__ = "0.12.1" \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/Lib/fontParts/base/contour.py new/fontParts-0.12.1/Lib/fontParts/base/contour.py --- old/fontParts-0.11.0/Lib/fontParts/base/contour.py 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/Lib/fontParts/base/contour.py 2023-10-30 19:21:38.000000000 +0100 @@ -628,6 +628,8 @@ Set the first segment on the contour. segment can be a segment object or an index. """ + if self.open: + raise FontPartsError("An open contour can not change the starting segment.") segments = self.segments if not isinstance(segment, int): segmentIndex = segments.index(segment) @@ -638,50 +640,21 @@ if segmentIndex == 0: return if segmentIndex >= len(segments): - raise ValueError(("The contour does not contain a segment " - "at index %d" % segmentIndex)) + raise ValueError(("The contour does not contain a segment at index %d" % segmentIndex)) self._setStartSegment(segmentIndex) def _setStartSegment(self, segmentIndex, **kwargs): """ Subclasses may override this method. """ + # get the previous segment and set + # its on curve as the first point + # in the contour. this matches the + # iteration behavior of self.segments. + segmentIndex -= 1 segments = self.segments - oldStart = segments[-1] - oldLast = segments[0] - # If the contour ends with a curve on top of a move, - # delete the move. - if oldLast.type == "curve" or oldLast.type == "qcurve": - startOn = oldStart.onCurve - lastOn = oldLast.onCurve - if startOn.x == lastOn.x and startOn.y == lastOn.y: - self.removeSegment(0) - # Shift new the start index. - segmentIndex = segmentIndex - 1 - segments = self.segments - # If the first point is a move, convert it to a line. - if segments[0].type == "move": - segments[0].type = "line" - # Reorder the points internally. - segments = segments[segmentIndex - 1:] + segments[:segmentIndex - 1] - points = [] - for segment in segments: - for point in segment: - points.append(((point.x, point.y), point.type, - point.smooth, point.name, point.identifier)) - # Clear the points. - for point in self.points: - self.removePoint(point) - # Add the points. - for point in points: - position, type, smooth, name, identifier = point - self.appendPoint( - position, - type=type, - smooth=smooth, - name=name, - identifier=identifier - ) + segment = segments[segmentIndex] + self.setStartPoint(segment.points[-1]) # ------- # bPoints @@ -960,11 +933,10 @@ def setStartPoint(self, point): """ Set the first point on the contour. - point can be a segment object or an index. + point can be a point object or an index. """ if self.open: raise FontPartsError("An open contour can not change the starting point.") - points = self.points if not isinstance(point, int): pointIndex = points.index(point) @@ -972,10 +944,8 @@ pointIndex = point if pointIndex == 0: return - if pointIndex >= len(points): - raise ValueError(("The contour does not contain a point " - "at index %d" % pointIndex)) + raise ValueError(("The contour does not contain a point at index %d" % pointIndex)) self._setStartPoint(pointIndex) def _setStartPoint(self, pointIndex, **kwargs): @@ -996,6 +966,7 @@ name=point.name, identifier=point.identifier ) + # --------- # Selection # --------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/Lib/fontParts/base/glyph.py new/fontParts-0.12.1/Lib/fontParts/base/glyph.py --- old/fontParts-0.11.0/Lib/fontParts/base/glyph.py 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/Lib/fontParts/base/glyph.py 2023-10-30 19:21:38.000000000 +0100 @@ -1694,7 +1694,7 @@ mathGlyph.drawPoints(pen, filterRedundantPoints=filterRedundantPoints) for anchor in mathGlyph.anchors: a = copied.appendAnchor( - name=anchor["name"], + name=anchor.get("name"), position=(anchor["x"], anchor["y"]), color=anchor["color"] ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/Lib/fontParts/test/test_contour.py new/fontParts-0.12.1/Lib/fontParts/test/test_contour.py --- old/fontParts-0.11.0/Lib/fontParts/test/test_contour.py 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/Lib/fontParts/test/test_contour.py 2023-10-30 19:21:38.000000000 +0100 @@ -670,6 +670,24 @@ [(0, 0), (2, 2), (3, 3), (4, 4), (1, 1), (5, 5)] ) + def test_setStartSegment(self): + contour, _ = self.objectGenerator("contour") + contour.appendPoint((50, 0), "curve") + contour.appendPoint((75, 0), "offcurve") + contour.appendPoint((100, 25), "offcurve") + contour.appendPoint((100, 50), "curve") + contour.appendPoint((100, 75), "offcurve") + contour.appendPoint((75, 100), "offcurve") + contour.appendPoint((50, 100), "curve") + contour.appendPoint((25, 100), "offcurve") + contour.appendPoint((0, 75), "offcurve") + contour.appendPoint((0, 50), "curve") + contour.appendPoint((0, 25), "offcurve") + contour.appendPoint((25, 0), "offcurve") + contour.setStartSegment(1) + self.assertEqual(contour.points[0].type, "curve") + self.assertEqual((contour.points[0].x, contour.points[0].y), (100, 50)) + # ------ # points # ------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/Lib/fontParts.egg-info/PKG-INFO new/fontParts-0.12.1/Lib/fontParts.egg-info/PKG-INFO --- old/fontParts-0.11.0/Lib/fontParts.egg-info/PKG-INFO 2022-12-09 17:36:02.000000000 +0100 +++ new/fontParts-0.12.1/Lib/fontParts.egg-info/PKG-INFO 2023-10-30 19:21:56.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: fontParts -Version: 0.11.0 +Version: 0.12.1 Summary: An API for interacting with the parts of fonts during the font development process. Home-page: http://github.com/robotools/fontParts Author: Just van Rossum, Tal Leming, Erik van Blokland, Ben Kiel, others @@ -23,6 +23,10 @@ Classifier: Topic :: Software Development :: Libraries Requires-Python: >=3.7 License-File: LICENSE +Requires-Dist: FontTools[lxml,ufo,unicode]>=3.32.0 +Requires-Dist: fontMath>=0.4.8 +Requires-Dist: defcon[pens]>=0.6.0 +Requires-Dist: booleanOperations>=0.9.0 |CI Build Status| |Coverage| |PyPI| |Versions| @@ -149,7 +153,7 @@ :target: https://github.com/robotools/fontParts/actions?query=workflow%3ATests .. |PyPI| image:: https://img.shields.io/pypi/v/fontParts.svg :target: https://pypi.org/project/fontParts -.. |Versions| image:: https://img.shields.io/badge/python-3.7%2C%203.8%2C%203.9%2C%203.10-blue.svg +.. |Versions| image:: https://img.shields.io/badge/python-3.8%2C%203.9%2C%203.10%2C%203.11-blue.svg :alt: Python Versions .. |Coverage| image:: https://codecov.io/gh/robotools/fontParts/branch/master/graph/badge.svg :target: https://codecov.io/gh/robotools/fontParts diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/NEWS.rst new/fontParts-0.12.1/NEWS.rst --- old/fontParts-0.11.0/NEWS.rst 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/NEWS.rst 2023-10-30 19:21:38.000000000 +0100 @@ -1,3 +1,18 @@ +0.12.1 (released 2023-10-30) +--------------------------- +- Tweak to logic of `setStartSegment` + +0.12.0 (released 2023-10-30) +--------------------------- +- Fixes to `setStartSegment` so that it keeps the start point on-curve and prevents setting a setting a start segment on an open contour (issues #709 and #412). Thanks @typesupply! +- Fixes to docs and test setup. Boring things. + +0.11.0 (released 2022-12-09) +--------------------------- +- Expose the `mathGlyph` options. Thanks @typesupply! See #672 +- Set defaultLayer to "public.default" when its available. Fixes issue #674. Thanks @typemytype! See #675. +- Add `info.update` to the info object. Thanks @typesupply! See #676 + 0.10.8 (released 2022-09-03) --------------------------- - Adds `setStartPoint` to the contour object. Thanks @typemytype! See #668. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/PKG-INFO new/fontParts-0.12.1/PKG-INFO --- old/fontParts-0.11.0/PKG-INFO 2022-12-09 17:36:02.000000000 +0100 +++ new/fontParts-0.12.1/PKG-INFO 2023-10-30 19:21:56.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: fontParts -Version: 0.11.0 +Version: 0.12.1 Summary: An API for interacting with the parts of fonts during the font development process. Home-page: http://github.com/robotools/fontParts Author: Just van Rossum, Tal Leming, Erik van Blokland, Ben Kiel, others @@ -23,6 +23,10 @@ Classifier: Topic :: Software Development :: Libraries Requires-Python: >=3.7 License-File: LICENSE +Requires-Dist: FontTools[lxml,ufo,unicode]>=3.32.0 +Requires-Dist: fontMath>=0.4.8 +Requires-Dist: defcon[pens]>=0.6.0 +Requires-Dist: booleanOperations>=0.9.0 |CI Build Status| |Coverage| |PyPI| |Versions| @@ -149,7 +153,7 @@ :target: https://github.com/robotools/fontParts/actions?query=workflow%3ATests .. |PyPI| image:: https://img.shields.io/pypi/v/fontParts.svg :target: https://pypi.org/project/fontParts -.. |Versions| image:: https://img.shields.io/badge/python-3.7%2C%203.8%2C%203.9%2C%203.10-blue.svg +.. |Versions| image:: https://img.shields.io/badge/python-3.8%2C%203.9%2C%203.10%2C%203.11-blue.svg :alt: Python Versions .. |Coverage| image:: https://codecov.io/gh/robotools/fontParts/branch/master/graph/badge.svg :target: https://codecov.io/gh/robotools/fontParts diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/README.rst new/fontParts-0.12.1/README.rst --- old/fontParts-0.11.0/README.rst 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/README.rst 2023-10-30 19:21:38.000000000 +0100 @@ -123,7 +123,7 @@ :target: https://github.com/robotools/fontParts/actions?query=workflow%3ATests .. |PyPI| image:: https://img.shields.io/pypi/v/fontParts.svg :target: https://pypi.org/project/fontParts -.. |Versions| image:: https://img.shields.io/badge/python-3.7%2C%203.8%2C%203.9%2C%203.10-blue.svg +.. |Versions| image:: https://img.shields.io/badge/python-3.8%2C%203.9%2C%203.10%2C%203.11-blue.svg :alt: Python Versions .. |Coverage| image:: https://codecov.io/gh/robotools/fontParts/branch/master/graph/badge.svg :target: https://codecov.io/gh/robotools/fontParts diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/documentation/source/objectref/objects/info.rst new/fontParts-0.12.1/documentation/source/objectref/objects/info.rst --- old/fontParts-0.11.0/documentation/source/objectref/objects/info.rst 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/documentation/source/objectref/objects/info.rst 2023-10-30 19:21:38.000000000 +0100 @@ -13,6 +13,10 @@ :class:`Info <BaseInfo>` validates any value set for a `Info <BaseInfo>` item, but does not check if the data is sane (i.e., you can set valid but incorrect data). +The :class:`Info <BaseInfo>` object (as any other fontParts object) does not allow to modify mutable containers (like lists) in-place. Always get a value, modify it and then set it back to perform an edit. + +For a list of info attributes, refer to the `UFO fontinfo.plist Specification <https://unifiedfontobject.org/versions/ufo3/fontinfo.plist/#specification>`_. + ******** Overview ******** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/requirements.txt new/fontParts-0.12.1/requirements.txt --- old/fontParts-0.11.0/requirements.txt 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/requirements.txt 2023-10-30 19:21:38.000000000 +0100 @@ -1,4 +1,4 @@ -FontTools[unicode,ufo,lxml]==4.38.0 +FontTools[ufo,lxml,unicode]==4.43.1 fontMath==0.9.3 -defcon[pens]==0.10.2 +defcon[pens]==0.10.3 booleanOperations==0.9.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/setup.cfg new/fontParts-0.12.1/setup.cfg --- old/fontParts-0.11.0/setup.cfg 2022-12-09 17:36:02.000000000 +0100 +++ new/fontParts-0.12.1/setup.cfg 2023-10-30 19:21:56.000000000 +0100 @@ -8,7 +8,7 @@ max-line-length = 500 [options] -setup_requires = setuptools_scm==7.0.5 +setup_requires = setuptools_scm==8.0.3 [egg_info] tag_build = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fontParts-0.11.0/tox.ini new/fontParts-0.12.1/tox.ini --- old/fontParts-0.11.0/tox.ini 2022-12-09 17:35:50.000000000 +0100 +++ new/fontParts-0.12.1/tox.ini 2023-10-30 19:21:38.000000000 +0100 @@ -5,7 +5,7 @@ [tox] minversion = 3.0 -envlist = py3{7,8,9,10}-cov, htmlcov +envlist = py3{8,9,10,11}-cov, htmlcov [testenv] deps =