public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/kdevelop-python] rawhide: 26.07.90
@ 2026-08-03 12:17 Steve Cossette
  0 siblings, 0 replies; only message in thread
From: Steve Cossette @ 2026-08-03 12:17 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/kdevelop-python
Branch : rawhide
Commit : 8c532d8fa7e9e4c8fe827ecf21f29f28f9cd5486
Author : Steve Cossette <farchord@gmail.com>
Date   : 2026-08-03T08:17:04-04:00
Stats  : +9/-411 in 4 file(s)
URL    : https://src.fedoraproject.org/rpms/kdevelop-python/c/8c532d8fa7e9e4c8fe827ecf21f29f28f9cd5486?branch=rawhide

Log:
26.07.90

---
diff --git a/.gitignore b/.gitignore
index ca7e32a..07f7305 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,3 +38,4 @@
 /kdev-python-5.6.2.tar.xz
 /kdev-python-26.04.2.tar.xz
 /kdev-python-26.04.3.tar.xz
+/kdev-python-26.07.90.tar.xz

diff --git a/65.patch b/65.patch
deleted file mode 100644
index 7d90f07..0000000
--- a/65.patch
+++ /dev/null
@@ -1,403 +0,0 @@
-From b483204bb39f6691d2a5a682b295a15ac7c08c40 Mon Sep 17 00:00:00 2001
-From: Morten Danielsen Volden <mvolden2@gmail.com>
-Date: Fri, 5 Jun 2026 23:33:38 +0200
-Subject: [PATCH 1/4] Fix build for python 3.14 and forward
-
----
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 4a8ee6f2..e1ea85d7 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -42,7 +42,7 @@ add_definitions( -DTRANSLATION_DOMAIN=\"kdevpython\" )
- 
- set(Python3_USE_STATIC_LIBS FALSE)
- set(Python3_FIND_STRATEGY VERSION)
--find_package(Python3 3.4.3...<3.14 COMPONENTS Interpreter Development REQUIRED)
-+find_package(Python3 3.4.3 COMPONENTS Interpreter Development REQUIRED)
- 
- configure_file(kdevpythonversion.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/kdevpythonversion.h" @ONLY)
- 
--- 
-GitLab
-
-
-From 6ee5cbb3f6129470439a1a5d9b9483417ba045ac Mon Sep 17 00:00:00 2001
-From: Morten Danielsen Volden <mvolden2@gmail.com>
-Date: Sat, 27 Jun 2026 07:19:38 +0200
-Subject: [PATCH 2/4] Add support for python 3.14 AST features Fixes the
- following scenario. If a user writes t"hello {name}" in Python 3.14 code, the
- Python AST produces an ast.TemplateStr node. The transformer at
- asttransformer.cpp:816-819 will then hit the unhandled fallthrough:
-
-// asttransformer.cpp:816
-else {
-    qWarning() << "Unsupported _expr AST type: " << PyUnicodeObjectToQString(PyObject_Str(node));
-    Q_ASSERT(false);   // crashes debug builds, skips in release
-}
----
- parser/ast.cpp               | 10 ++++++
- parser/ast.h                 | 17 ++++++++++
- parser/astdefaultvisitor.cpp | 11 +++++++
- parser/astdefaultvisitor.h   |  4 +++
- parser/asttransformer.cpp    | 24 ++++++++++++++
- parser/astvisitor.cpp        |  2 ++
- parser/astvisitor.h          |  2 ++
- parser/python_grammar.h      | 15 +++++++++
- parser/tests/pyasttest.cpp   | 64 ++++++++++++++++++++++++++++++++++++
- parser/tests/pyasttest.h     |  3 ++
- 10 files changed, 152 insertions(+)
-
-diff --git a/parser/ast.cpp b/parser/ast.cpp
-index b10fcb11..3a5f95e0 100644
---- a/parser/ast.cpp
-+++ b/parser/ast.cpp
-@@ -676,6 +676,16 @@ FormattedValueAst::FormattedValueAst(Ast* parent): ExpressionAst(parent, Ast::Fo
- 
- }
- 
-+TemplateStringAst::TemplateStringAst(Ast* parent): ExpressionAst(parent, Ast::TemplateStringAstType), values()
-+{
-+
-+}
-+
-+InterpolationAst::InterpolationAst(Ast* parent): ExpressionAst(parent, Ast::InterpolationAstType), value(nullptr), expr(), conversion(0), formatSpec(nullptr)
-+{
-+
-+}
-+
- SubscriptAst::SubscriptAst(Ast* parent): ExpressionAst(parent, Ast::SubscriptAstType), value(nullptr), slice(nullptr)
- {
-     
-diff --git a/parser/ast.h b/parser/ast.h
-index ba64ad23..0c029c9b 100644
---- a/parser/ast.h
-+++ b/parser/ast.h
-@@ -108,6 +108,8 @@ public:
-         StringAstType,
-         JoinedStringAstType,
-         FormattedValueAstType,
-+        TemplateStringAstType,
-+        InterpolationAstType,
-         BytesAstType,
-         SubscriptAstType,
-         StarredAstType,
-@@ -694,6 +696,21 @@ public:
-     ExpressionAst* formatSpec;
- };
- 
-+class KDEVPYTHONPARSER_EXPORT TemplateStringAst : public ExpressionAst {
-+public:
-+    TemplateStringAst(Ast* parent);
-+    QList<ExpressionAst*> values;
-+};
-+
-+class KDEVPYTHONPARSER_EXPORT InterpolationAst : public ExpressionAst {
-+public:
-+    InterpolationAst(Ast* parent);
-+    ExpressionAst* value;
-+    QString expr; // raw source text of the interpolated expression
-+    int conversion;
-+    ExpressionAst* formatSpec;
-+};
-+
- class KDEVPYTHONPARSER_EXPORT BytesAst : public ConstantAst {
- public:
-     BytesAst(Ast* parent) : ConstantAst(parent, Ast::BytesAstType) {};
-diff --git a/parser/astdefaultvisitor.cpp b/parser/astdefaultvisitor.cpp
-index 5aaeaed7..9a60d989 100644
---- a/parser/astdefaultvisitor.cpp
-+++ b/parser/astdefaultvisitor.cpp
-@@ -45,6 +45,17 @@ void AstDefaultVisitor::visitFormattedValue(FormattedValueAst* node) {
-     visitNode(node->formatSpec);
- }
- 
-+void AstDefaultVisitor::visitTemplateString(TemplateStringAst* node) {
-+    for (Ast* value : std::as_const(node->values)) {
-+        visitNode(value);
-+    }
-+}
-+
-+void AstDefaultVisitor::visitInterpolation(InterpolationAst* node) {
-+    visitNode(node->value);
-+    visitNode(node->formatSpec);
-+}
-+
- void AstDefaultVisitor::visitStarred(StarredAst* node) {
-     visitNode(node->value);
- }
-diff --git a/parser/astdefaultvisitor.h b/parser/astdefaultvisitor.h
-index 458fead0..c6811a16 100644
---- a/parser/astdefaultvisitor.h
-+++ b/parser/astdefaultvisitor.h
-@@ -67,6 +67,8 @@ public:
-     void visitString(StringAst* node) override;
-     void visitJoinedString(JoinedStringAst* node) override;
-     void visitFormattedValue(FormattedValueAst* node) override;
-+    void visitTemplateString(TemplateStringAst* node) override;
-+    void visitInterpolation(InterpolationAst* node) override;
-     void visitBytes(BytesAst* node) override;
-     void visitYield(YieldAst* node) override;
-     void visitYieldFrom(YieldFromAst* node) override;
-@@ -149,6 +151,8 @@ public:
-     void visitString(StringAst* node) override { AstDefaultVisitor::visitString(node); delete node; }
-     void visitJoinedString(JoinedStringAst* node) override { AstDefaultVisitor::visitJoinedString(node); delete node; }
-     void visitFormattedValue(FormattedValueAst* node) override { AstDefaultVisitor::visitFormattedValue(node); delete node; }
-+    void visitTemplateString(TemplateStringAst* node) override { AstDefaultVisitor::visitTemplateString(node); delete node; }
-+    void visitInterpolation(InterpolationAst* node) override { AstDefaultVisitor::visitInterpolation(node); delete node; }
-     void visitBytes(BytesAst* node) override { AstDefaultVisitor::visitBytes(node); delete node; }
-     void visitYield(YieldAst* node) override { AstDefaultVisitor::visitYield(node); delete node; }
-     void visitYieldFrom(YieldFromAst* node) override { AstDefaultVisitor::visitYieldFrom(node); delete node; }
-diff --git a/parser/asttransformer.cpp b/parser/asttransformer.cpp
-index 462f7975..0e42b346 100644
---- a/parser/asttransformer.cpp
-+++ b/parser/asttransformer.cpp
-@@ -618,6 +618,30 @@ Ast* AstTransformer::visitExprNode(PyObject* node, Ast* parent)
-         result = v;
-     }
- #endif
-+#if PYTHON_VERSION >= QT_VERSION_CHECK(3, 14, 0)
-+    else if (PyObject_IsInstance(node, grammar.ast_TemplateStr)) {
-+        TemplateStringAst* v = new TemplateStringAst(parent);
-+        {
-+            PyObjectRef values = getattr<PyObjectRef>(node, "values");
-+            v->values = visitNodeList<ExpressionAst>(values, v);
-+        }
-+        result = v;
-+    }
-+    else if (PyObject_IsInstance(node, grammar.ast_Interpolation)) {
-+        InterpolationAst* v = new InterpolationAst(parent);
-+        {
-+            PyObjectRef value = getattr<PyObjectRef>(node, "value");
-+            v->value = static_cast<ExpressionAst*>(visitExprNode(value, v));
-+        }
-+        v->expr = getattr<QString>(node, "str");
-+        v->conversion = getattr<int>(node, "conversion");
-+        {
-+            PyObjectRef format_spec = getattr<PyObjectRef>(node, "format_spec");
-+            v->formatSpec = static_cast<ExpressionAst*>(visitExprNode(format_spec, v));
-+        }
-+        result = v;
-+    }
-+#endif
- #if PYTHON_VERSION < QT_VERSION_CHECK(3, 8, 0)
-     else if (PyObject_IsInstance(node, grammar.ast_Bytes)) {
-         BytesAst* v = new  BytesAst(parent);
-diff --git a/parser/astvisitor.cpp b/parser/astvisitor.cpp
-index df21cddf..0f96922a 100644
---- a/parser/astvisitor.cpp
-+++ b/parser/astvisitor.cpp
-@@ -65,6 +65,8 @@ void AstVisitor::visitNode(Ast* node)
-         case Ast::StringAstType:                                this->visitString(static_cast<StringAst*>(node)); break;
-         case Ast::FormattedValueAstType:                        this->visitFormattedValue(static_cast<FormattedValueAst*>(node)); break;
-         case Ast::JoinedStringAstType:                          this->visitJoinedString(static_cast<JoinedStringAst*>(node)); break;
-+        case Ast::TemplateStringAstType:                        this->visitTemplateString(static_cast<TemplateStringAst*>(node)); break;
-+        case Ast::InterpolationAstType:                         this->visitInterpolation(static_cast<InterpolationAst*>(node)); break;
-         case Ast::BytesAstType:                                 this->visitBytes(static_cast<BytesAst*>(node)); break;
-         case Ast::YieldAstType:                                 this->visitYield(static_cast<YieldAst*>(node)); break;
-         case Ast::NameAstType:                                  this->visitName(static_cast<NameAst*>(node)); break;
-diff --git a/parser/astvisitor.h b/parser/astvisitor.h
-index aa4d8015..9ac05ced 100644
---- a/parser/astvisitor.h
-+++ b/parser/astvisitor.h
-@@ -80,6 +80,8 @@ public:
-     virtual void visitString(StringAst* node) { Q_UNUSED(node); };
-     virtual void visitFormattedValue(FormattedValueAst* node) { Q_UNUSED(node); };
-     virtual void visitJoinedString(JoinedStringAst* node) { Q_UNUSED(node); };
-+    virtual void visitTemplateString(TemplateStringAst* node) { Q_UNUSED(node); };
-+    virtual void visitInterpolation(InterpolationAst* node) { Q_UNUSED(node); };
-     virtual void visitBytes(BytesAst* node) { Q_UNUSED(node); };
-     virtual void visitYield(YieldAst* node) { Q_UNUSED(node); };
-     virtual void visitName(NameAst* node) { Q_UNUSED(node); };
-diff --git a/parser/python_grammar.h b/parser/python_grammar.h
-index 88c68f70..a908da3b 100644
---- a/parser/python_grammar.h
-+++ b/parser/python_grammar.h
-@@ -187,6 +187,12 @@ public:
-     PyObject* ast_Bytes;
- #endif
- 
-+#if PYTHON_VERSION >= QT_VERSION_CHECK(3, 14, 0)
-+    // PEP 750 t-strings
-+    PyObject* ast_TemplateStr;
-+    PyObject* ast_Interpolation;
-+#endif
-+
-     Grammar() {
-         PyObject* mod = PyImport_ImportModule("ast");
- 
-@@ -338,6 +344,11 @@ public:
-         Py_GRAMMAR_GET(mod, TypeAlias);
- #endif
- 
-+#if PYTHON_VERSION >= QT_VERSION_CHECK(3, 14, 0)
-+        Py_GRAMMAR_GET(mod, TemplateStr);
-+        Py_GRAMMAR_GET(mod, Interpolation);
-+#endif
-+
-         Py_DECREF(mod);
-     }
- 
-@@ -486,6 +497,10 @@ public:
- #endif
- #if PYTHON_VERSION >= QT_VERSION_CHECK(3, 12, 0)
-         Py_XDECREF(ast_TypeAlias);
-+#endif
-+#if PYTHON_VERSION >= QT_VERSION_CHECK(3, 14, 0)
-+        Py_XDECREF(ast_TemplateStr);
-+        Py_XDECREF(ast_Interpolation);
- #endif
-     }
- };
-diff --git a/parser/tests/pyasttest.cpp b/parser/tests/pyasttest.cpp
-index 16852f8d..442fa16b 100644
---- a/parser/tests/pyasttest.cpp
-+++ b/parser/tests/pyasttest.cpp
-@@ -243,6 +243,12 @@ void PyAstTest::testExpressions_data()
-     QTest::newRow("ExtSlice") << "A[1:3,3:5]";
-     QTest::newRow("FString") << "f\"hi {a.b}\"";
-     QTest::newRow("Formatted") << "'%s %s' % ('one', 'two')";
-+#if PYTHON_VERSION >= QT_VERSION_CHECK(3, 14, 0)
-+    QTest::newRow("TString") << "t\"hello {name}\"";
-+    QTest::newRow("TString_conversion") << "t\"{value!r}\"";
-+    QTest::newRow("TString_format_spec") << "t\"{value:.2f}\"";
-+    QTest::newRow("TString_nested_expr") << "t\"{a + b}\"";
-+#endif
- 
- #if PYTHON_VERSION >= QT_VERSION_CHECK(3, 6, 0)
-     QTest::newRow("async_generator") << "async def foo(): result = [i async for i in aiter() if i % 2]";
-@@ -321,4 +327,62 @@ void PyAstTest::testClass()
-     testCode(QStringLiteral("class c: pass"));
- }
- 
-+#if PYTHON_VERSION >= QT_VERSION_CHECK(3, 14, 0)
-+void PyAstTest::testTemplateStrings()
-+{
-+    // t"hello {name}" -> TemplateStringAst with [StringAst, InterpolationAst]
-+    {
-+        CodeAst::Ptr ast = getAst(QStringLiteral("t\"hello {name}\""));
-+        QVERIFY(ast);
-+        QCOMPARE(ast->body.size(), 1);
-+        QCOMPARE(ast->body.first()->astType, Ast::ExpressionAstType);
-+        ExpressionAst* expr = static_cast<ExpressionAst*>(ast->body.first());
-+        QCOMPARE(expr->value->astType, Ast::TemplateStringAstType);
-+        TemplateStringAst* tstr = static_cast<TemplateStringAst*>(expr->value);
-+        QCOMPARE(tstr->values.size(), 2);
-+        QCOMPARE(tstr->values.at(0)->astType, Ast::StringAstType);
-+        QCOMPARE(tstr->values.at(1)->astType, Ast::InterpolationAstType);
-+        InterpolationAst* interp = static_cast<InterpolationAst*>(tstr->values.at(1));
-+        QCOMPARE(interp->expr, QStringLiteral("name"));
-+        QCOMPARE(interp->conversion, -1); // no conversion
-+        QVERIFY(!interp->formatSpec);
-+        QVERIFY(interp->value);
-+        QCOMPARE(interp->value->astType, Ast::NameAstType);
-+    }
-+
-+    // t"{value!r}" -> InterpolationAst with conversion == 'r' (114)
-+    {
-+        CodeAst::Ptr ast = getAst(QStringLiteral("t\"{value!r}\""));
-+        QVERIFY(ast);
-+        ExpressionAst* expr = static_cast<ExpressionAst*>(ast->body.first());
-+        TemplateStringAst* tstr = static_cast<TemplateStringAst*>(expr->value);
-+        QCOMPARE(tstr->values.size(), 1);
-+        QCOMPARE(tstr->values.first()->astType, Ast::InterpolationAstType);
-+        InterpolationAst* interp = static_cast<InterpolationAst*>(tstr->values.first());
-+        QCOMPARE(interp->conversion, 114); // 'r'
-+        QVERIFY(!interp->formatSpec);
-+    }
-+
-+    // t"{value:.2f}" -> InterpolationAst with non-null formatSpec
-+    {
-+        CodeAst::Ptr ast = getAst(QStringLiteral("t\"{value:.2f}\""));
-+        QVERIFY(ast);
-+        ExpressionAst* expr = static_cast<ExpressionAst*>(ast->body.first());
-+        TemplateStringAst* tstr = static_cast<TemplateStringAst*>(expr->value);
-+        QCOMPARE(tstr->values.size(), 1);
-+        InterpolationAst* interp = static_cast<InterpolationAst*>(tstr->values.first());
-+        QCOMPARE(interp->conversion, -1);
-+        QVERIFY(interp->formatSpec);
-+    }
-+
-+    // VerifyVisitor walks the entire tree without asserting
-+    {
-+        CodeAst::Ptr ast = getAst(QStringLiteral("x = t\"sum={a+b:.2f} items={items!s}\""));
-+        QVERIFY(ast);
-+        VerifyVisitor v;
-+        v.visitCode(ast.data());
-+    }
-+}
-+#endif
-+
- #include "moc_pyasttest.cpp"
-diff --git a/parser/tests/pyasttest.h b/parser/tests/pyasttest.h
-index 9a37822b..401f13eb 100644
---- a/parser/tests/pyasttest.h
-+++ b/parser/tests/pyasttest.h
-@@ -40,6 +40,9 @@ private Q_SLOTS:
-     void testExceptionHandlers();
-     void testCorrectedFuncRanges();
-     void testCorrectedFuncRanges_data();
-+#if PYTHON_VERSION >= QT_VERSION_CHECK(3, 14, 0)
-+    void testTemplateStrings();
-+#endif
- };
- 
- }
--- 
-GitLab
-
-
-From 2164bb8ad9fbb70a822bdbf762232c8dfa4af618 Mon Sep 17 00:00:00 2001
-From: Morten Danielsen Volden <mvolden2@gmail.com>
-Date: Sat, 27 Jun 2026 07:31:25 +0200
-Subject: [PATCH 3/4] Bring back upper requirements for python Also bump to
- include 3.14
-
----
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e1ea85d7..cd8346c5 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -42,7 +42,7 @@ add_definitions( -DTRANSLATION_DOMAIN=\"kdevpython\" )
- 
- set(Python3_USE_STATIC_LIBS FALSE)
- set(Python3_FIND_STRATEGY VERSION)
--find_package(Python3 3.4.3 COMPONENTS Interpreter Development REQUIRED)
-+find_package(Python3 3.4.3...<3.15 COMPONENTS Interpreter Development REQUIRED)
- 
- configure_file(kdevpythonversion.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/kdevpythonversion.h" @ONLY)
- 
--- 
-GitLab
-
-
-From c71b0ecad3e7d3184cb88ab0659580298b0d8f0e Mon Sep 17 00:00:00 2001
-From: Morten Danielsen Volden <mvolden2@gmail.com>
-Date: Sun, 28 Jun 2026 07:40:56 +0200
-Subject: [PATCH 4/4] Update python to include version 3.15
-
----
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index cd8346c5..35bf830b 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -42,7 +42,7 @@ add_definitions( -DTRANSLATION_DOMAIN=\"kdevpython\" )
- 
- set(Python3_USE_STATIC_LIBS FALSE)
- set(Python3_FIND_STRATEGY VERSION)
--find_package(Python3 3.4.3...<3.15 COMPONENTS Interpreter Development REQUIRED)
-+find_package(Python3 3.4.3...<3.16 COMPONENTS Interpreter Development REQUIRED)
- 
- configure_file(kdevpythonversion.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/kdevpythonversion.h" @ONLY)
- 
--- 
-GitLab
-

diff --git a/kdevelop-python.spec b/kdevelop-python.spec
index 2581ba1..ac1a527 100644
--- a/kdevelop-python.spec
+++ b/kdevelop-python.spec
@@ -1,17 +1,14 @@
 %global upstream_name kdev-python
 
 Name:           kdevelop-python
-Version:        26.04.3
-Release:        3%{?dist}
+Version:        26.07.90
+Release:        1%{?dist}
 Summary:        KDevelop Python language support
 
 License:        CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND MIT
 URL:            https://kdevelop.org/
 Source0:        https://download.kde.org/%{stable_kf6}/release-service/%{version}/src/%{upstream_name}-%{version}.tar.xz
 
-# Fixes to build against python 3.15
-Patch0:         65.patch
-
 # kdevelop depends on qt6-qtwebengine, which is only available on some arches
 ExclusiveArch:  %{qt6_qtwebengine_arches}
  
@@ -66,14 +63,17 @@ appstream-util validate-relax --nonet %{buildroot}%{_kf6_metainfodir}/org.kde.kd
 %license LICENSES/*
 %doc DESIGN INSTALL README README.packagers
 %{_kf6_libdir}/libkdevpython*.so
-%{_kf6_qtplugindir}/kdevplatform/65/kdevpdb.so
-%{_kf6_qtplugindir}/kdevplatform/65/kdevpythonlanguagesupport.so
+%{_kf6_qtplugindir}/kdevplatform/*/kdevpdb.so
+%{_kf6_qtplugindir}/kdevplatform/*/kdevpythonlanguagesupport.so
 %{_kf6_datadir}/kdevappwizard/templates/*.tar.bz2
 %{_kf6_datadir}/kdevpythonsupport/
 %{_kf6_metainfodir}/org.kde.kdev-python.metainfo.xml
 %{_kf6_datadir}/qlogging-categories6/kdevpythonsupport.categories
 
 %changelog
+* Mon Aug 03 2026 Steve Cossette <farchord@gmail.com> - 26.07.90-1
+- 26.07.90
+
 * Wed Jul 22 2026 Python Maint <python-maint@redhat.com> - 26.04.3-3
 - Rebuilt for Python 3.15.0b4 ABI change
 

diff --git a/sources b/sources
index ddcef13..4f22b06 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (kdev-python-26.04.3.tar.xz) = de9121ef720eb1e72c46a865c5281b6320ae66440db4bb3bfcb74ef409eaa8cf27962aa6dce6eebee7a82ad79fcc91e05ff6c49daab438f2685fec1fad549309
+SHA512 (kdev-python-26.07.90.tar.xz) = 064e037e6b50f80bc4241bfb4dd83b41ebe50d2cae4a74780bcb429e96a0648c726b0a657eb4f741091dd78b3dad4465e2c237134aab3fd1e4480f46de783995

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-03 12:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-03 12:17 [rpms/kdevelop-python] rawhide: 26.07.90 Steve Cossette

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox