Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-guessit for openSUSE:Factory 
checked in at 2026-07-09 22:23:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-guessit (Old)
 and      /work/SRC/openSUSE:Factory/.python-guessit.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-guessit"

Thu Jul  9 22:23:41 2026 rev:28 rq:1364779 version:4.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-guessit/python-guessit.changes    
2025-04-10 22:01:14.653600904 +0200
+++ /work/SRC/openSUSE:Factory/.python-guessit.new.1991/python-guessit.changes  
2026-07-09 22:23:42.455012550 +0200
@@ -1,0 +2,188 @@
+Thu Jul  9 18:13:53 UTC 2026 - Luigi Baldoni <[email protected]>
+
+- Update to version 4.1.0
+  Bug Fixes:
+  * episodes: Don't treat a title year as a number-first season
+    marker
+  * film: Keep a leading film number in the title
+  * options: Read bundled options.json as UTF-8
+  * title: Reclaim a title-word property value from the title
+    zone
+  * website: Refresh IANA TLD list so modern-gTLD hosts are
+    detected
+  Features:
+  * episodes: Keep a title-trailing number out of number-first
+    seasons
+  * episodes: Recognize non-English season/episode keywords
+  * title: Split a leading original-language script prefix into
+    alternative_title
+  Performance Improvements:
+  * Cache effective options across calls with stable options
+- Update license
+- Switch to alts where possible
+
+-------------------------------------------------------------------
+Mon Jun 29 18:42:59 UTC 2026 - Luigi Baldoni <[email protected]>
+
+- Update to version 4.0.2
+  Bug Fixes:
+  * title: Keep languages instead of a language-only title
+  version 4.0.1
+  Bug Fixes:
+  * changelog: Trim noise commit types from the changelog and
+    PyPI page
+  * packaging: Balance changelog code fences in the PyPI long
+    description
+  version 4.0.0
+  Bug Fixes:
+  * Do not absorb a bracketed or non-target-preposition country
+    into the title
+  * Do not turn an "other"-only bracket into an anime
+    release_group
+  * Don't mutate shared config list values between guesses
+  * Don't pin an enum for the OS-dependent mimetype property
+  * Extend lone-article merge to episode_title so it absorbs a
+    following other word
+  * Gate the leading-anime-bracket release_group guard on an
+    episode/season
+  * Keep a subtitle language glued to its extension even if it
+    is a common word
+  * Keep edition/scene-tag words as properties, not titles
+  * Keep leading hyphenated title whole instead of splitting
+    into release_group
+  * Keep properties() keys alphabetically sorted
+  * Let the filename's season/episode win over a parent
+    directory's
+  * Only keep a lowercase subtitle language glued to its
+    extension
+  * Only treat a leading dash token as a hyphenated title when
+    it is one word
+  * Prefer the leading anime [bracket] over a trailing
+    parenthetical as release_group
+  * Read Unicode × as a resolution separator and bound CJK
+    season markers
+  * Reclaim a bare "Cam" after the episode marker as
+    episode_title, not source
+  * Recognise CJK & Unicode × episode markers, numeric
+    episode_title as episode
+  * Stop a real title word being consumed as
+    country/language/edition/other
+  * Stop short tokens matching glued inside a larger word
+  * Weight season+episode completeness so the filename wins
+    without mixing fileparts
+  * Widen valid_year bounds and reject a year used as a season
+    number
+  * api,release_group: Clear error on None input and stable
+    release-group casing
+  * date: Absorb a weekday glued to a date so episode_title
+    survives
+  * episode_title: Keep title when a release tag follows the
+    episode marker
+  * episodes: Keep release-group digit prefix out of episodes
+    with -t episode
+  * numeral: Initialise word-numeral regex to ""
+  * screen_size: Tolerate trailing "up" upscaled marker
+  * title: Keep dash-joined parent-directory title whole
+  * title: Keep trailing "Us" in a title ending on "of"
+  Build System:
+  * Add pre-commit
+  * Add ruff-format hook and run pre-commit tools via uv run
+  * Add tox
+  * Migrate to uv and modernize tooling
+  * Require Python >=3.10 and rebulk 6 for guessit 4
+  * Require rebulk >=4,<5 and add mypy tooling
+  * Require rebulk >=4.1 and exploit its precise query overloads
+  * Run pre-commit hooks locally via uvx and bump CI to Python
+    3.14
+  * deps: Require rebulk >=6,<7
+  Chores:
+  * deps: Require rebulk >=4.2.2
+  * title: Fix contradictory TITLE_STOP_WORDS comment
+  Code Style:
+  * Clean up code for the expanded ruff ruleset
+  * Format the codebase with ruff format
+  Documentation:
+  * Add CLAUDE.md with architecture and dev guidance
+  * Drop guessit-js parity mentions from comments
+  * Mention mypy in CLAUDE.md commands and pre-commit hooks
+  * Note GitHub closing keywords to auto-close issues on merge
+  * Record won't-fix structural-ambiguity cases as known
+    limitations
+  * Remove Build Status from README
+  * known-limitations: Add historical won't-fix cases from issue
+    tracker
+  * known-limitations: Add structural cases found sweeping
+    closed Invalid Guess issues
+  * known-limitations: Record #637/#693/#690/#660 as structural
+    won't-fix
+  * properties: Document credits_number and Creditless
+  * rules: Correct stale rebulk 5 references to rebulk 6
+  Features:
+  * Add GUESSIT_SCHEMA machine-readable property schema
+  * Add other values
+  * Add volume, imdb_id, tmdb_id and tvdb_id properties
+  * Classify artwork files as other, register svg mimetype
+  * Make properties() code-complete against GUESSIT_SCHEMA
+  * Recognise archive and image extensions as container
+  * Ship output-schema.json and schema regression tests
+  * deps: Require rebulk 5 and adopt typed Key handles
+  * deps: Require rebulk>=4.2.1 and use multi-name Matches.named
+  * episode_title: Title from parent directory for
+    absolute-numbered episodes
+  * episodes: Support Chinese season/episode markers 第N季 /
+    第N集
+  * other: Add VR angle and stereoscopic 3D format support
+  * other: Detect DoVi as Dolby Vision
+  * other: Match opening/ending credits with index and version
+  * other: Match opening/ending credits with index and version
+  * other: OPED yields both Opening and Ending Credits
+  * rules: Adopt rebulk declared Keys and enforce value types in
+    CI
+  * rules: Centralize typed Keys in a registry and wire config
+    formatters
+  * source: Add Laserdisc
+  * streaming_service: Add ADN, Channel 5, Max and NowTV
+  * title: Align TITLE_STOP_WORDS with guessit-js
+  *   Refactoring:
+  * title: Use Match.tagged(*RELEASE_TAG_MARKERS)
+  * types: Annotate api, options, cli, markers and rules core
+  * types: Annotate common helpers and utils for mypy strict
+  * types: Annotate config and the simpler property modules
+  * types: Annotate date, country and screen_size properties
+  * types: Annotate language and subtitle_language rules
+  * types: Annotate other, audio_codec, streaming_service,
+    release_group
+  * types: Annotate source and episodes rules
+  * types: Annotate tests and enable the mypy strict pre-commit
+    hook
+  * types: Annotate title and episode_title rules
+  Testing:
+  * Add fixtures, regenerate schema and document new properties
+  * Add regression anchors for ambiguity-prone parsing boundaries
+  * Add regression anchors for historically-fixed Invalid Guess
+    Result issues
+  * Anchor correct behaviour of the shared rules touched by
+    recent fixes
+  * Archive/artwork tests, fixtures, schema and docs
+  * Complete the container enum with all archive/image extensions
+  * Fixture for filename season winning over a parent-directory
+    season
+  * Fixtures for a common-word language kept before a subtitle
+    extension
+  * Fixtures for anime leading-bracket release group
+  * Fixtures for CJK / × markers and numeric episode_title
+  * Fixtures for glued short tokens and release_group bracket
+    edges
+  * Fixtures for hyphenated/compound titles kept whole
+  * Fixtures for title words wrongly consumed as
+    country/language/other
+  * Fixtures for year/season validation
+  * Memoize corpus sweeps in schema tests
+  Breaking Changes:
+  * Drops support for Python 3.7, 3.8 and 3.9 — guessit now
+    requires Python >=3.10. PyPy is no longer tested or
+    supported. The rebulk engine dependency moves to >=6,<7
+- Refreshed remove-six.patch
+- Remove shebangs in a safer way
+
+-------------------------------------------------------------------

Old:
----
  guessit-3.8.0.tar.gz

New:
----
  guessit-4.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-guessit.spec ++++++
--- /var/tmp/diff_new_pack.T9XLk9/_old  2026-07-09 22:23:43.687054522 +0200
+++ /var/tmp/diff_new_pack.T9XLk9/_new  2026-07-09 22:23:43.691054659 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-guessit
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,14 +18,16 @@
 
 %if 0%{?suse_version} > 1500
 %bcond_without test
+%bcond_without libalternatives
 %else
 %bcond_with test
+%bcond_with libalternatives
 %endif
 Name:           python-guessit
-Version:        3.8.0
+Version:        4.1.0
 Release:        0
 Summary:        A library for guessing information from video files
-License:        LGPL-3.0-only
+License:        LGPL-3.0-or-later
 Group:          Development/Languages/Python
 URL:            https://github.com/wackou/guessit
 Source0:        
https://files.pythonhosted.org/packages/source/g/guessit/guessit-%{version}.tar.gz
@@ -33,10 +35,11 @@
 Patch0:         remove-six.patch
 BuildRequires:  %{python_module PyYAML}
 BuildRequires:  %{python_module babelfish >= 0.6.0}
-BuildRequires:  %{python_module importlib_resources if %python-base < 3.9}
+BuildRequires:  %{python_module base >= 3.10}
+BuildRequires:  %{python_module hatchling}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module python-dateutil}
-BuildRequires:  %{python_module rebulk >= 3.2.0}
+BuildRequires:  %{python_module rebulk >= 6}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
@@ -47,8 +50,13 @@
 %if %{?python_version_nodots} < 39
 Requires:       python-importlib_resources
 %endif
+%if %{with libalternatives}
+BuildRequires:  alts
+Requires:       alts
+%else
 Requires(post): update-alternatives
 Requires(postun): update-alternatives
+%endif
 BuildArch:      noarch
 %if %{with test}
 BuildRequires:  %{python_module pytest >= 5}
@@ -66,18 +74,7 @@
 
 %prep
 %autosetup -p1 -n guessit-%{version}
-# Remove shebang from non-executable files
-for i in 
{'audio_codec','bit_rate','bonus','cd','container','country','crc','date','edition','episodes','episode_title','film','__init__','language','mimetype','other','part','release_group','screen_size','size','source','streaming_service','title','type','video_codec','website'};
 do
-  sed -i -e "1d" "guessit/rules/properties/$i.py"
-done
-for i in 
{'common/comparators','common/date','common/expected','common/formatters','common/__init__','common/numeral','common/pattern','common/quantity','common/validators','common/words','__init__','markers/groups','markers/__init__','markers/path','processors','properties/audio_codec','properties/bit_rate','properties/bonus','properties/cd','properties/container','properties/country','properties/crc','properties/date','properties/edition','properties/episodes','properties/episode_title','properties/film','properties/__init__','properties/language','properties/mimetype','properties/other','properties/part','properties/release_group','properties/screen_size','properties/size','properties/source','properties/streaming_service','properties/title','properties/type','properties/video_codec','properties/website'};
 do
-  sed -i -e "1d" "guessit/rules/$i.py"
-done
-for i in 
{'api','data/__init__','__init__','jsonutils','__main__','monkeypatch','options','reutils','test/__init__','test/rules/__init__','test/rules/processors_test','test/test_api','test/test_api_unicode_literals','test/test_benchmark','test/test_main','test/test_options','test/test_yml','__version__','yamlutils'};
 do
-  sed -i -e "1d" "guessit/$i.py"
-done
-# https://pypi.org/project/pytest-runner/
-sed -i 's:.pytest-runner.::' setup.py
+find guessit -type f -name "*.py" -exec sed -i '1{/^#!/d}' {} +
 
 %build
 %pyproject_wheel
@@ -92,6 +89,10 @@
 %pytest
 %endif
 
+%pre
+# If libalternatives is used: Removing old update-alternatives entries.
+%python_libalternatives_reset_alternative guessit
+
 %post
 %python_install_alternative guessit
 

++++++ guessit-3.8.0.tar.gz -> guessit-4.1.0.tar.gz ++++++
++++ 36506 lines of diff (skipped)

++++++ remove-six.patch ++++++
--- /var/tmp/diff_new_pack.T9XLk9/_old  2026-07-09 22:23:44.023065969 +0200
+++ /var/tmp/diff_new_pack.T9XLk9/_new  2026-07-09 22:23:44.031066242 +0200
@@ -1,19 +1,19 @@
-Index: guessit-3.8.0/guessit/jsonutils.py
+Index: guessit-4.0.2/guessit/jsonutils.py
 ===================================================================
---- guessit-3.8.0.orig/guessit/jsonutils.py
-+++ guessit-3.8.0/guessit/jsonutils.py
-@@ -4,7 +4,6 @@ JSON Utils
- """
- import json
+--- guessit-4.0.2.orig/guessit/jsonutils.py
++++ guessit-4.0.2/guessit/jsonutils.py
+@@ -7,7 +7,6 @@ import json
+ from typing import Any
  
--from six import text_type
  from rebulk.match import Match
+-from six import text_type
+ 
  
  class GuessitEncoder(json.JSONEncoder):
-@@ -16,6 +15,6 @@ class GuessitEncoder(json.JSONEncoder):
+@@ -19,6 +18,6 @@ class GuessitEncoder(json.JSONEncoder):
          if isinstance(o, Match):
-             return o.advanced
-         if hasattr(o, 'name'):  # Babelfish languages/countries long name
+             return o.advanced  # type: ignore[attr-defined]
+         if hasattr(o, "name"):  # Babelfish languages/countries long name
 -            return text_type(o.name)
 +            return str(o.name)
          # pragma: no cover

Reply via email to