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
