Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package openSUSE-release-tools for 
openSUSE:Factory checked in at 2026-02-11 18:48:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
 and      /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1670 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openSUSE-release-tools"

Wed Feb 11 18:48:45 2026 rev:549 rq:1332386 version:20260204.08a2a831

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
    2026-01-27 16:16:26.620348682 +0100
+++ 
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1670/openSUSE-release-tools.changes
  2026-02-11 18:50:00.044283108 +0100
@@ -1,0 +2,37 @@
+Wed Feb 04 07:04:24 UTC 2026 - [email protected]
+
+- Update to version 20260204.08a2a831:
+  * gocd: sles.target: release SLES_immutable images
+
+-------------------------------------------------------------------
+Tue Feb 03 13:30:10 UTC 2026 - [email protected]
+
+- Update to version 20260203.323cb26b:
+  * feat: add branch info in gitea request implementation
+
+-------------------------------------------------------------------
+Tue Feb 03 13:13:41 UTC 2026 - [email protected]
+
+- Update to version 20260203.ca9d7371:
+  * BCI Pipelines: Remove SP6
+
+-------------------------------------------------------------------
+Tue Feb 03 12:37:42 UTC 2026 - [email protected]
+
+- Update to version 20260203.00c4d09a:
+  * Remove BCI pipelines for SP5
+  * Remove trailing whitespace
+
+-------------------------------------------------------------------
+Tue Feb 03 10:28:51 UTC 2026 - [email protected]
+
+- Update to version 20260203.280e785a:
+  * update RPM spec file for gitea support
+
+-------------------------------------------------------------------
+Wed Jan 28 14:13:03 UTC 2026 - [email protected]
+
+- Update to version 20260128.b75a72c2:
+  * Hardcode base project name to openSUSE
+
+-------------------------------------------------------------------

Old:
----
  openSUSE-release-tools-20260120.7ecaa0c8.obscpio

New:
----
  openSUSE-release-tools-20260204.08a2a831.obscpio

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

Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.TAqeap/_old  2026-02-11 18:50:01.112327960 +0100
+++ /var/tmp/diff_new_pack.TAqeap/_new  2026-02-11 18:50:01.112327960 +0100
@@ -21,7 +21,7 @@
 %define announcer_filename factory-package-news
 %define services osrt-slsa.target [email protected] 
[email protected] [email protected] [email protected]
 Name:           openSUSE-release-tools
-Version:        20260120.7ecaa0c8
+Version:        20260204.08a2a831
 Release:        0
 Summary:        Tools to aid in staging and release work for openSUSE/SUSE
 License:        GPL-2.0-or-later AND MIT
@@ -33,7 +33,6 @@
 BuildRequires:  osc >= 0.165.1
 BuildRequires:  python3-PyYAML
 BuildRequires:  python3-cmdln
-BuildRequires:  python3-colorama
 BuildRequires:  python3-lxml
 BuildRequires:  python3-pycurl
 BuildRequires:  python3-python-dateutil
@@ -54,7 +53,6 @@
 
 Requires:       python3-PyYAML
 Requires:       python3-cmdln
-Requires:       python3-colorama
 Requires:       python3-lxml
 # issue-diff.py, legal-auto.py, and openqa-maintenance.py
 Requires:       python3-pycurl
@@ -105,6 +103,24 @@
 %description announcer
 OBS product release announcer for generating email diffs summaries.
 
+%package plat
+Summary:        Platform implementations used in %{name}
+Group:          Development/Languages/Python
+Requires:       python3-DateTime
+Requires:       python3-requests
+
+%description plat
+Platform implementations used by scripts in %{name}.
+
+%package scm
+Summary:        SCM implementations used in %{name}
+Group:          Development/Languages/Python
+Requires:       osc
+Requires:       python3-GitPython
+
+%description scm
+VCS implementations used by scripts in %{name}.
+
 %package check-source
 Summary:        Check source review bot
 Group:          Development/Tools/Other
@@ -113,6 +129,8 @@
 Requires:       obs-service-source_validator
 Requires:       osclib = %{version}
 Requires:       perl-Text-Diff
+Requires:       %{name}-plat
+Requires:       %{name}-scm
 Requires(pre):  shadow
 BuildArch:      noarch
 
@@ -309,6 +327,7 @@
 # devel-project.py needs 0.160.0 for get_request_list(withfullhistory) param.
 Requires:       osc >= 0.160.0
 Requires:       osclib = %{version}
+Requires:       python3-colorama
 BuildArch:      noarch
 
 %description -n osc-plugin-staging
@@ -336,6 +355,11 @@
 
 install -Dpm0644 slsa/osrt-slsa-user.conf 
%{buildroot}%{_sysusersdir}/%{name}.conf
 
+for dir in plat scm; do
+  mkdir -p %{buildroot}%{python_sitelib}/$dir
+  cp -r $dir/* %{buildroot}%{python_sitelib}/$dir/
+done
+
 %pre -f %{name}.pre
 %service_add_pre %{name}.service
 
@@ -464,6 +488,12 @@
 %config(noreplace) %{_sysconfdir}/openSUSE-release-tools/announcer
 %config(noreplace) %{_sysconfdir}/rsyslog.d/%{announcer_filename}.conf
 
+%files plat
+%{python_sitelib}/plat/
+
+%files scm
+%{python_sitelib}/scm/
+
 %files check-source
 %{_bindir}/osrt-check_source
 %if 0%{?suse_version} > 1500

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.TAqeap/_old  2026-02-11 18:50:01.212332159 +0100
+++ /var/tmp/diff_new_pack.TAqeap/_new  2026-02-11 18:50:01.220332496 +0100
@@ -1,7 +1,7 @@
 <servicedata>
   <service name="tar_scm">
     <param 
name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
-    <param 
name="changesrevision">7ecaa0c8dab4bef7846cd5e32952dcc43b4bd9b8</param>
+    <param 
name="changesrevision">08a2a8313d34d8c639396b29ed5731d3a1572f23</param>
   </service>
 </servicedata>
 

++++++ openSUSE-release-tools-20260120.7ecaa0c8.obscpio -> 
openSUSE-release-tools-20260204.08a2a831.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20260120.7ecaa0c8/dist/package/openSUSE-release-tools.spec
 
new/openSUSE-release-tools-20260204.08a2a831/dist/package/openSUSE-release-tools.spec
--- 
old/openSUSE-release-tools-20260120.7ecaa0c8/dist/package/openSUSE-release-tools.spec
       2026-01-20 12:58:00.000000000 +0100
+++ 
new/openSUSE-release-tools-20260204.08a2a831/dist/package/openSUSE-release-tools.spec
       2026-02-04 08:02:28.000000000 +0100
@@ -33,7 +33,6 @@
 BuildRequires:  osc >= 0.165.1
 BuildRequires:  python3-PyYAML
 BuildRequires:  python3-cmdln
-BuildRequires:  python3-colorama
 BuildRequires:  python3-lxml
 BuildRequires:  python3-pycurl
 BuildRequires:  python3-python-dateutil
@@ -54,7 +53,6 @@
 
 Requires:       python3-PyYAML
 Requires:       python3-cmdln
-Requires:       python3-colorama
 Requires:       python3-lxml
 # issue-diff.py, legal-auto.py, and openqa-maintenance.py
 Requires:       python3-pycurl
@@ -105,6 +103,24 @@
 %description announcer
 OBS product release announcer for generating email diffs summaries.
 
+%package plat
+Summary:        Platform implementations used in %{name}
+Group:          Development/Languages/Python
+Requires:       python3-DateTime
+Requires:       python3-requests
+
+%description plat
+Platform implementations used by scripts in %{name}.
+
+%package scm
+Summary:        SCM implementations used in %{name}
+Group:          Development/Languages/Python
+Requires:       osc
+Requires:       python3-GitPython
+
+%description scm
+VCS implementations used by scripts in %{name}.
+
 %package check-source
 Summary:        Check source review bot
 Group:          Development/Tools/Other
@@ -113,6 +129,8 @@
 Requires:       obs-service-source_validator
 Requires:       osclib = %{version}
 Requires:       perl-Text-Diff
+Requires:       %{name}-plat
+Requires:       %{name}-scm
 Requires(pre):  shadow
 BuildArch:      noarch
 
@@ -309,6 +327,7 @@
 # devel-project.py needs 0.160.0 for get_request_list(withfullhistory) param.
 Requires:       osc >= 0.160.0
 Requires:       osclib = %{version}
+Requires:       python3-colorama
 BuildArch:      noarch
 
 %description -n osc-plugin-staging
@@ -336,6 +355,11 @@
 
 install -Dpm0644 slsa/osrt-slsa-user.conf 
%{buildroot}%{_sysusersdir}/%{name}.conf
 
+for dir in plat scm; do
+  mkdir -p %{buildroot}%{python_sitelib}/$dir
+  cp -r $dir/* %{buildroot}%{python_sitelib}/$dir/
+done
+
 %pre -f %{name}.pre
 %service_add_pre %{name}.service
 
@@ -464,6 +488,12 @@
 %config(noreplace) %{_sysconfdir}/openSUSE-release-tools/announcer
 %config(noreplace) %{_sysconfdir}/rsyslog.d/%{announcer_filename}.conf
 
+%files plat
+%{python_sitelib}/plat/
+
+%files scm
+%{python_sitelib}/scm/
+
 %files check-source
 %{_bindir}/osrt-check_source
 %if 0%{?suse_version} > 1500
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/bci.gocd.yaml 
new/openSUSE-release-tools-20260204.08a2a831/gocd/bci.gocd.yaml
--- old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/bci.gocd.yaml     
2026-01-20 12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/gocd/bci.gocd.yaml     
2026-02-04 08:02:28.000000000 +0100
@@ -42,222 +42,6 @@
             - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org 
update_and_solve -p devel:BCI -s target
 
 
-  SLE_BCI_15SP5.RelPkgs:
-    group: BCI
-    lock_behavior: unlockWhenFinished
-    timer:
-      spec: 0 10 * ? * *
-      only_on_changes: false
-    materials:
-      git:
-        git: https://github.com/openSUSE/openSUSE-release-tools.git
-    environment_variables:
-      OSC_CONFIG: /home/go/config/oscrc-staging-bot
-    stages:
-    - Create.Release.Packages:
-        approval: manual
-        resources:
-        - repo-checker
-        tasks:
-        - script: ./pkglistgen.py -A https://api.suse.de update_and_solve -p 
SUSE:SLE-15-SP5:Update:BCI -s target --only-release-packages --force
-
-  Pkglistgen.SLE_BCI_15SP5:
-    group: BCI
-    lock_behavior: unlockWhenFinished
-    timer:
-      spec: 0 10 * ? * *
-      only_on_changes: false
-    materials:
-      repos:
-        git: git://botmaster.suse.de/suse-repos.git
-        auto_update: true
-        destination: repos
-        whitelist:
-          - SUSE:SLE-15-SP5:Update_-_standard.yaml
-      scripts:
-        auto_update: true
-        git: https://github.com/openSUSE/openSUSE-release-tools.git
-        whitelist:
-          - DO_NOT_TRIGGER
-        destination: scripts
-    environment_variables:
-      OSC_CONFIG: /home/go/config/oscrc-staging-bot
-    stages:
-    - pkglistgen:
-        approval:
-          type: manual
-        jobs:
-          BCI_target:
-            resources:
-            - repo-checker
-            tasks:
-            - script: ./scripts/pkglistgen.py -d -A https://api.suse.de 
update_and_solve -p SUSE:SLE-15-SP5:Update:BCI -s target
-    - Expect.Images.To.Finish:
-        resources:
-        - staging-bot
-        tasks:
-        - script: |
-            export PYTHONPATH=scripts
-            ./scripts/gocd/verify-repo-built-successful.py -A 
https://api.suse.de -p  SUSE:SLE-15-SP5:Update:BCI -r images
-
-    - Release.Images.to.Product:
-        approval: manual
-        roles:
-        - BCI
-        environment_variables:
-          OSC_CONFIG: /home/go/config/oscrc-totest-manager
-          BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
-        resources:
-        - staging-bot
-        tasks:
-        # can't use osc command due to 
https://github.com/openSUSE/osc/issues/1194
-        - script: |-
-            SPRJ=SUSE:SLE-15-SP5:Update:BCI
-            for arch in aarch64 ppc64le s390x x86_64 ; do
-              PKG="000product:SLE_BCI-ftp-POOL-$arch"
-              PRJ="SUSE:Products:SLE-BCI:15-SP5:$arch"
-              curl -X POST -H "Authorization: Token $BCI_TOKEN" 
"https://api.suse.de/trigger/release?project=${SPRJ}&package=${PKG}&targetproject=${PRJ}&targetrepository=images&filter_source_repository=images";
-            done
-            for arch in aarch64 ppc64le s390x x86_64 ; do
-              sleep 600
-              while (osc -A https://api.suse.de/ api 
"/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | 
grep -v 'code="published" state="published">'); do
-                  echo PENDING
-                  sleep 600
-              done
-              osc -A https://api.suse.de/ api 
"/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | 
grep 'code="published" state="published">' && echo PUBLISHED
-            done
-
-  SLE_BCI_15SP5.RepoPublisher:
-    group: BCI
-    lock_behavior: unlockWhenFinished
-    timer:
-      spec: 0 23 * ? * *
-      only_on_changes: false
-    materials:
-      git:
-        git: https://github.com/openSUSE/openSUSE-release-tools.git
-        destination: scripts
-    environment_variables:
-        OSC_CONFIG: /home/go/config/oscrc-totest-manager
-        BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
-    stages:
-    - Run:
-        approval: manual
-        resources:
-        - staging-bot
-        tasks:
-        - script: |
-            export PYTHONPATH=scripts
-            ./scripts/gocd/bci_repo_publish.py -A https://api.suse.de 
--verbose --debug run "--token=$BCI_TOKEN" 15-SP5
-
-  SLE_BCI_15SP6.RelPkgs:
-    group: BCI
-    lock_behavior: unlockWhenFinished
-    timer:
-      spec: 0 10 * ? * *
-      only_on_changes: false
-    materials:
-      git:
-        git: https://github.com/openSUSE/openSUSE-release-tools.git
-    environment_variables:
-      OSC_CONFIG: /home/go/config/oscrc-staging-bot
-    stages:
-    - Create.Release.Packages:
-        approval: manual
-        resources:
-        - repo-checker
-        tasks:
-        - script: ./pkglistgen.py -A https://api.suse.de update_and_solve -p 
SUSE:SLE-15-SP6:Update:BCI -s target --only-release-packages --force
-
-  Pkglistgen.SLE_BCI_15SP6:
-    group: BCI
-    lock_behavior: unlockWhenFinished
-    timer:
-      spec: 0 10 * ? * *
-      only_on_changes: false
-    materials:
-      repos:
-        git: git://botmaster.suse.de/suse-repos.git
-        auto_update: true
-        destination: repos
-        whitelist:
-          - SUSE:SLE-15-SP6:Update_-_standard.yaml
-      scripts:
-        auto_update: true
-        git: https://github.com/openSUSE/openSUSE-release-tools.git
-        whitelist:
-          - DO_NOT_TRIGGER
-        destination: scripts
-    environment_variables:
-      OSC_CONFIG: /home/go/config/oscrc-staging-bot
-    stages:
-    - pkglistgen:
-        approval:
-          type: manual
-        jobs:
-          BCI_target:
-            resources:
-            - repo-checker
-            tasks:
-            - script: ./scripts/pkglistgen.py -d -A https://api.suse.de 
update_and_solve -p SUSE:SLE-15-SP6:Update:BCI -s target
-    - Expect.Images.To.Finish:
-        resources:
-        - staging-bot
-        tasks:
-        - script: |
-            export PYTHONPATH=scripts
-            ./scripts/gocd/verify-repo-built-successful.py -A 
https://api.suse.de -p  SUSE:SLE-15-SP6:Update:BCI -r images
-
-    - Release.Images.to.Product:
-        approval: manual
-        roles:
-        - BCI
-        environment_variables:
-          OSC_CONFIG: /home/go/config/oscrc-totest-manager
-          BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
-        resources:
-        - staging-bot
-        tasks:
-        # can't use osc command due to 
https://github.com/openSUSE/osc/issues/1194
-        - script: |-
-            SPRJ=SUSE:SLE-15-SP6:Update:BCI
-            for arch in aarch64 ppc64le s390x x86_64 ; do
-              PKG="000product:SLE_BCI-ftp-POOL-$arch"
-              PRJ="SUSE:Products:SLE-BCI:15-SP6:$arch"
-              curl -X POST -H "Authorization: Token $BCI_TOKEN" 
"https://api.suse.de/trigger/release?project=${SPRJ}&package=${PKG}&targetproject=${PRJ}&targetrepository=images&filter_source_repository=images";
-            done
-            for arch in aarch64 ppc64le s390x x86_64 ; do
-              sleep 600
-              while (osc -A https://api.suse.de/ api 
"/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | 
grep -v 'code="published" state="published">'); do
-                  echo PENDING
-                  sleep 600
-              done
-              osc -A https://api.suse.de/ api 
"/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | 
grep 'code="published" state="published">' && echo PUBLISHED
-            done
-
-  SLE_BCI_15SP6.RepoPublisher:
-    group: BCI
-    lock_behavior: unlockWhenFinished
-    timer:
-      spec: 0 23 * ? * *
-      only_on_changes: false
-    materials:
-      git:
-        git: https://github.com/openSUSE/openSUSE-release-tools.git
-        destination: scripts
-    environment_variables:
-        OSC_CONFIG: /home/go/config/oscrc-totest-manager
-        BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}'
-    stages:
-    - Run:
-        approval: manual
-        resources:
-        - staging-bot
-        tasks:
-        - script: |
-            export PYTHONPATH=scripts
-            ./scripts/gocd/bci_repo_publish.py -A https://api.suse.de 
--verbose --debug run "--token=$BCI_TOKEN" 15-SP6
-
   SLE_BCI_15SP7.RelPkgs:
     group: BCI
     lock_behavior: unlockWhenFinished
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/bci.gocd.yaml.erb 
new/openSUSE-release-tools-20260204.08a2a831/gocd/bci.gocd.yaml.erb
--- old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/bci.gocd.yaml.erb 
2026-01-20 12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/gocd/bci.gocd.yaml.erb 
2026-02-04 08:02:28.000000000 +0100
@@ -41,7 +41,7 @@
             tasks:
             - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org 
update_and_solve -p devel:BCI -s target
 
-<% ['SP5', 'SP6', 'SP7'].each do |sp| %>
+<% ['SP7'].each do |sp| %>
   SLE_BCI_15<%= sp %>.RelPkgs:
     group: BCI
     lock_behavior: unlockWhenFinished
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/sles.target.gocd.yaml 
new/openSUSE-release-tools-20260204.08a2a831/gocd/sles.target.gocd.yaml
--- old/openSUSE-release-tools-20260120.7ecaa0c8/gocd/sles.target.gocd.yaml     
2026-01-20 12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/gocd/sles.target.gocd.yaml     
2026-02-04 08:02:28.000000000 +0100
@@ -38,7 +38,7 @@
         tasks:
         - script: |-
             set -e
-            for image in agama-installer-SLES kiwi-templates-Minimal 
SLES_transactional; do
+            for image in agama-installer-SLES kiwi-templates-Minimal 
SLES_immutable; do
               osc -A https://api.suse.de release 
--target-project=SUSE:SLFO:Products:SLES:16.1:TEST --target-repository=images 
-r images SUSE:SLFO:Products:SLES:16.1 $image
             done
             osc -A https://api.suse.de release  
--target-project=SUSE:SLFO:Products:SLES:16.1:TEST --target-repository=product 
-r product SUSE:SLFO:Products:SLES:16.1 000productcompose
@@ -83,7 +83,7 @@
         tasks:
         - script: |-
             set -e
-            for image in agama-installer-SLES kiwi-templates-Minimal 
SLES_transactional; do
+            for image in agama-installer-SLES kiwi-templates-Minimal 
SLES_immutable; do
               osc -A https://api.suse.de release 
--target-project=SUSE:SLFO:Products:SLES:16.1:PUBLISH 
--target-repository=images -r images SUSE:SLFO:Products:SLES:16.1:TEST $image
             done
             osc -A https://api.suse.de release  
--target-project=SUSE:SLFO:Products:SLES:16.1:PUBLISH 
--target-repository=product -r product SUSE:SLFO:Products:SLES:16.1:TEST 
000productcompose
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20260120.7ecaa0c8/pkglistgen/group.py 
new/openSUSE-release-tools-20260204.08a2a831/pkglistgen/group.py
--- old/openSUSE-release-tools-20260120.7ecaa0c8/pkglistgen/group.py    
2026-01-20 12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/pkglistgen/group.py    
2026-02-04 08:02:28.000000000 +0100
@@ -28,7 +28,7 @@
             self.packages[a] = []
             self.unresolvable[a] = dict()
 
-        self.comment = ' ### AUTOMATICALLY GENERATED, DO NOT EDIT ### '
+        self.comment = ' ### AUTOMATICALLY GENERATED, DO NOT EDIT ###'
         self.srcpkgs = None
         self.develpkgs = dict()
         self.silents = set()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20260120.7ecaa0c8/plat/gitea.py 
new/openSUSE-release-tools-20260204.08a2a831/plat/gitea.py
--- old/openSUSE-release-tools-20260120.7ecaa0c8/plat/gitea.py  2026-01-20 
12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/plat/gitea.py  2026-02-04 
08:02:28.000000000 +0100
@@ -4,6 +4,7 @@
 import html
 import re
 from datetime import datetime, timezone
+from dateutil.parser import isoparse
 from urllib.parse import urljoin
 
 
@@ -21,14 +22,17 @@
         self.base_url = urljoin(url, "/api/v1/")
         self.token = self.get_token()
 
-    def request(self, method, path, **kwargs):
+    def request(self, method, path, raise_for_status=True, **kwargs):
         arg_headers = kwargs.get('headers') or {}
         headers = {'Authorization': f'token {self.token}'}
         headers.update(arg_headers)
         kwargs['headers'] = headers
 
         url = urljoin(self.base_url, path)
-        return requests.request(method, url, **kwargs)
+        ret = requests.request(method, url, **kwargs)
+        if raise_for_status:
+            ret.raise_for_status()
+        return ret
 
     def get(self, path, **kwargs):
         return self.request('GET', path, **kwargs)
@@ -50,7 +54,7 @@
     def _comment_as_dict(self, comment):
         return {
             'who': comment["user"]["login"],
-            'when': datetime.fromisoformat(comment["created_at"]),
+            'when': isoparse(comment["created_at"]),
             'id': comment["id"],
             'parent': None,
             'comment': html.unescape(comment["body"])
@@ -58,12 +62,9 @@
 
     def get_comments(self, request_id, project_name=None, package_name=None):
         project_name, package_name, pr_id = 
Request.parse_request_id(request_id)
-        res = 
self.api.get(f'repos/{project_name}/{package_name}/issues/{pr_id}/comments')
-        res.raise_for_status()
-
-        json = res.json()
+        res = 
self.api.get(f'repos/{project_name}/{package_name}/issues/{pr_id}/comments').json()
         comments = {}
-        for c in json:
+        for c in res:
             c = self._comment_as_dict(c)
             comments[c['id']] = c
         return comments
@@ -71,7 +72,7 @@
     def request_as_comment_dict(self, request):
         return {
             'who': request.creator,
-            'when': datetime.fromisoformat(request.created_at),
+            'when': isoparse(request.created_at),
             'id': '-1',
             'parent': None,
             'comment': request.description,
@@ -127,12 +128,12 @@
 
     def add_comment(self, request_id=None, project_name=None,
                     package_name=None, comment=None, _parent_id=None):
-        res = 
self.api.post(f'repos/{project_name}/{package_name}/issues/{request_id}/comments',
-                            json={"body": comment})
-        res.raise_for_status()
+        
self.api.post(f'repos/{project_name}/{package_name}/issues/{request_id}/comments',
+                      json={"body": comment})
 
     def delete(self, comment_id, project, package, request):
-        
self.api.delete(f'repos/{project}/{package}/issues/{request}/comments/{comment_id}')
+        
self.api.delete(f'repos/{project}/{package}/issues/{request}/comments/{comment_id}',
+                        raise_for_status=False)
 
 
 class StagingAPI:
@@ -146,13 +147,25 @@
 
 class RequestAction:
     """Stub action class"""
-    def __init__(self, type, src_project, src_package, src_rev, tgt_project, 
tgt_package):
+    def _set_attr_from_json(self, attr, json, path):
+        node = json
+        for i in path.split('.'):
+            node = node.get(i)
+            if node is None:
+                return
+
+        setattr(self, attr, node)
+
+    def __init__(self, type, json):
         self.type = type
-        self.src_project = src_project
-        self.src_package = src_package
-        self.src_rev = src_rev
-        self.tgt_project = tgt_project
-        self.tgt_package = tgt_package
+        self._set_attr_from_json('src_project', json, 'head.repo.owner.login')
+        self._set_attr_from_json('src_package', json, 'head.repo.name')
+        self._set_attr_from_json('src_branch', json, 'head.ref')
+        self._set_attr_from_json('src_rev', json, 'head.sha')
+        self._set_attr_from_json('tgt_project', json, 'base.repo.owner.login')
+        self._set_attr_from_json('tgt_package', json, 'base.repo.name')
+        self._set_attr_from_json('tgt_branch', json, 'base.ref')
+        self._set_attr_from_json('tgt_rev', json, 'base.sha')
 
 
 class Request:
@@ -199,16 +212,13 @@
         self.reqid = Request.construct_request_id(owner, repo, json["number"])
         self.creator = json["user"]["login"]
         self.created_at = json["created_at"]
+        self.updated_at = json["updated_at"]
         self.title = json["title"]
         self.description = json["body"]
         self.state = json["state"]
-        self.actions = [RequestAction(
-            type="submit",
-            src_project=json["head"]["repo"]["owner"]["login"],
-            src_package=json["head"]["repo"]["name"],
-            src_rev=json["head"]["sha"],
-            tgt_project=json["base"]["repo"]["owner"]["login"],
-            tgt_package=json["base"]["repo"]["name"])]
+
+        self.actions = [RequestAction(type="submit", json=json)]
+
         if json.get("merged"):
             self.accept_at = json["merged_at"]
 
@@ -238,11 +248,10 @@
         return self.api.get(path)
 
     def _get_request(self, pr_id, owner, repo):
-        res = self.api.get(f'repos/{owner}/{repo}/pulls/{pr_id}')
-        res.raise_for_status()
+        res = self.api.get(f'repos/{owner}/{repo}/pulls/{pr_id}').json()
 
         ret = Request()
-        ret.read(res.json(), owner=owner, repo=repo)
+        ret.read(res, owner=owner, repo=repo)
         return ret
 
     def get_request(self, request_id, with_full_history=False):
@@ -253,7 +262,7 @@
         return ProjectConfig()
 
     def get_request_age(self, request):
-        return datetime.now(timezone.utc) - 
datetime.fromisoformat(request.created_at)
+        return datetime.now(timezone.utc) - isoparse(request.created_at)
 
     def _request_from_issue(self, issue_json):
         owner = issue_json["repository"]["owner"]
@@ -267,10 +276,8 @@
         if package != '':
             repos = [package]
         else:
-            repo_list_res = self.api.get(f'orgs/{project}/repos')
-            repo_list_res.raise_for_status()
-            repo_list_json = repo_list_res.json()
-            repos = [i["name"] for i in repo_list_json]
+            repo_list = self.api.get(f'orgs/{project}/repos').json()
+            repos = [i["name"] for i in repo_list]
 
         for r in repos:
             list_res = self.api.get(f'repos/{project}/{r}/issues?type=pulls')
@@ -290,13 +297,11 @@
         while True:
             params["page"] = page
             page += 1
-            search_res = self.api.get('repos/issues/search', params=params)
-            search_res.raise_for_status()
-            search_json = search_res.json()
-            if not search_json:
+            search_res = self.api.get('repos/issues/search', 
params=params).json()
+            if not search_res:
                 break
 
-            for i in search_json:
+            for i in search_res:
                 yield self._request_from_issue(i)
 
     def can_accept_review(self, req, **kwargs):
@@ -310,5 +315,4 @@
         elif newstate == 'declined':
             json['event'] = 'REQUEST_CHANGES'
 
-        res = 
self.api.post(f'repos/{req._owner}/{req._repo}/pulls/{req._pr_id}/reviews', 
json=json)
-        res.raise_for_status()
+        
self.api.post(f'repos/{req._owner}/{req._repo}/pulls/{req._pr_id}/reviews', 
json=json)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20260120.7ecaa0c8/ttm/totest.py 
new/openSUSE-release-tools-20260204.08a2a831/ttm/totest.py
--- old/openSUSE-release-tools-20260120.7ecaa0c8/ttm/totest.py  2026-01-20 
12:58:00.000000000 +0100
+++ new/openSUSE-release-tools-20260204.08a2a831/ttm/totest.py  2026-02-04 
08:02:28.000000000 +0100
@@ -141,7 +141,7 @@
         self.openqa_server = None
         self.jobs_num = 42
         self.test_subproject = 'ToTest'
-        self.base = project.split(':')[0]
+        self.base = "openSUSE"
         self.products = []
 
         # Defaults for products

++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.TAqeap/_old  2026-02-11 18:50:03.808441182 +0100
+++ /var/tmp/diff_new_pack.TAqeap/_new  2026-02-11 18:50:03.824441853 +0100
@@ -1,5 +1,5 @@
 name: openSUSE-release-tools
-version: 20260120.7ecaa0c8
-mtime: 1768910280
-commit: 7ecaa0c8dab4bef7846cd5e32952dcc43b4bd9b8
+version: 20260204.08a2a831
+mtime: 1770188548
+commit: 08a2a8313d34d8c639396b29ed5731d3a1572f23
 

Reply via email to