From aaae1a6b0b1b6101a7b3e4cd7b20cf7fb87b4c27 Mon Sep 17 00:00:00 2001
From: Antoine Lambert <anlambert@softwareheritage.org>
Date: Fri, 3 May 2024 13:52:02 +0200
Subject: [PATCH] launchpad, npm: Port code to updated swh-scheduler API

The oldest part of the scheduler API was updated to use model classes
(based on attr package) instead of dictionaries in order to improve
typing.
---
 requirements-swh.txt                   |  4 +++-
 requirements-test.txt                  |  2 +-
 swh/lister/launchpad/tests/conftest.py | 17 +++++++++--------
 swh/lister/npm/__init__.py             |  8 +++++---
 4 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/requirements-swh.txt b/requirements-swh.txt
index 8edab5aa..51be4cda 100644
--- a/requirements-swh.txt
+++ b/requirements-swh.txt
@@ -1,2 +1,4 @@
 swh.core[db] >= 2.22.0
-swh.scheduler >= 1.12.0
+swh.scheduler >= 2.3.0
+
+
diff --git a/requirements-test.txt b/requirements-test.txt
index 5bb91bd9..484cb3f7 100644
--- a/requirements-test.txt
+++ b/requirements-test.txt
@@ -2,7 +2,7 @@ pandas
 pytest >= 8.1
 pytest-mock
 requests_mock
-swh-scheduler[testing]
+swh-scheduler[testing] >= 2.3.0
 types-beautifulsoup4
 types-click
 types-pyyaml
diff --git a/swh/lister/launchpad/tests/conftest.py b/swh/lister/launchpad/tests/conftest.py
index 1412de96..38f1ffdf 100644
--- a/swh/lister/launchpad/tests/conftest.py
+++ b/swh/lister/launchpad/tests/conftest.py
@@ -1,9 +1,9 @@
-# Copyright (C) 2020  The Software Heritage developers
+# Copyright (C) 2020-2024  The Software Heritage developers
 # See the AUTHORS file at the top-level directory of this distribution
 # License: GNU General Public License version 3, or any later version
 # See top-level LICENSE file for more information
 
-from datetime import datetime
+from datetime import datetime, timedelta
 import json
 import os
 from unittest.mock import patch
@@ -11,6 +11,7 @@ from unittest.mock import patch
 import pytest
 
 from swh.lister import get_lister
+from swh.scheduler.model import TaskType
 
 
 @pytest.fixture
@@ -45,12 +46,12 @@ def lister_launchpad(datadir, lister_db_url, engine, swh_scheduler):
         lister = get_lister("launchpad", db_url=lister_db_url)
 
     lister.scheduler.create_task_type(
-        {
-            "type": "load-git",
-            "description": "Load git repository",
-            "backend_name": "swh.loader.git.tasks.UpdateGitRepository",
-            "default_interval": "1 day",
-        }
+        TaskType(
+            type="load-git",
+            description="Load git repository",
+            backend_name="swh.loader.git.tasks.UpdateGitRepository",
+            default_interval=timedelta(days=1),
+        )
     )
 
     return lister
diff --git a/swh/lister/npm/__init__.py b/swh/lister/npm/__init__.py
index 1a5f84b3..e271e6a5 100644
--- a/swh/lister/npm/__init__.py
+++ b/swh/lister/npm/__init__.py
@@ -4,6 +4,8 @@
 
 
 def register():
+    from datetime import timedelta
+
     from .lister import NpmLister
 
     return {
@@ -11,9 +13,9 @@ def register():
         "task_modules": ["%s.tasks" % __name__],
         "task_types": {
             "list-npm-full": {
-                "default_interval": "7 days",
-                "min_interval": "7 days",
-                "max_interval": "7 days",
+                "default_interval": timedelta(days=7),
+                "min_interval": timedelta(days=7),
+                "max_interval": timedelta(days=7),
             },
         },
     }
-- 
GitLab