Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-APScheduler for openSUSE:Factory checked in at 2023-02-23 18:00:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-APScheduler (Old) and /work/SRC/openSUSE:Factory/.python-APScheduler.new.1706 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-APScheduler" Thu Feb 23 18:00:32 2023 rev:19 rq:1067422 version:3.10.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-APScheduler/python-APScheduler.changes 2022-12-02 15:47:33.360612820 +0100 +++ /work/SRC/openSUSE:Factory/.python-APScheduler.new.1706/python-APScheduler.changes 2023-02-23 18:00:33.625264395 +0100 @@ -1,0 +2,8 @@ +Thu Feb 23 14:31:39 UTC 2023 - Dirk Müller <[email protected]> + +- update to 3.10.0: + * Fixed compatibility with SQLAlchemy 2.0 and bumped minimum + supported version to 1.4 + * Dropped support for Python versions older than 3.6 + +------------------------------------------------------------------- Old: ---- APScheduler-3.9.1.post1.tar.gz New: ---- APScheduler-3.10.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-APScheduler.spec ++++++ --- /var/tmp/diff_new_pack.duTuvK/_old 2023-02-23 18:00:34.569269986 +0100 +++ /var/tmp/diff_new_pack.duTuvK/_new 2023-02-23 18:00:34.577270033 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-APScheduler # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,13 +19,13 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %bcond_without python2 Name: python-APScheduler -Version: 3.9.1.post1 +Version: 3.10.0 Release: 0 Summary: In-process task scheduler with Cron-like capabilities License: MIT URL: https://github.com/agronholm/apscheduler Source: https://files.pythonhosted.org/packages/source/A/APScheduler/APScheduler-%{version}.tar.gz -BuildRequires: %{python_module SQLAlchemy >= 0.8} +BuildRequires: %{python_module SQLAlchemy >= 1.4} BuildRequires: %{python_module Twisted} BuildRequires: %{python_module gevent} BuildRequires: %{python_module pytest-asyncio} @@ -42,7 +42,7 @@ Requires: python-pytz Requires: python-six >= 1.4.0 Requires: python-tzlocal >= 2.0 -Recommends: python-SQLAlchemy >= 0.8 +Recommends: python-SQLAlchemy >= 1.4 Recommends: python-Twisted Recommends: python-gevent Suggests: python-kazoo ++++++ APScheduler-3.9.1.post1.tar.gz -> APScheduler-3.10.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/.github/workflows/codeqa_test.yaml new/APScheduler-3.10.0/.github/workflows/codeqa_test.yaml --- old/APScheduler-3.9.1.post1/.github/workflows/codeqa_test.yaml 2022-11-11 22:07:49.000000000 +0100 +++ new/APScheduler-3.10.0/.github/workflows/codeqa_test.yaml 2023-01-31 23:38:17.000000000 +0100 @@ -9,12 +9,12 @@ lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.x - - uses: actions/cache@v2 + - uses: actions/cache@v3 with: path: ~/.cache/pip key: pip-lint @@ -28,15 +28,15 @@ strategy: fail-fast: false matrix: - python-version: ["3.6", "3.9"] + python-version: ["3.7", "3.11"] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - - uses: actions/cache@v2 + - uses: actions/cache@v3 with: path: ~/.cache/pip key: pip-test-${{ matrix.python-version }}-ubuntu-latest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/.github/workflows/publish.yml new/APScheduler-3.10.0/.github/workflows/publish.yml --- old/APScheduler-3.9.1.post1/.github/workflows/publish.yml 2022-11-11 22:07:49.000000000 +0100 +++ new/APScheduler-3.10.0/.github/workflows/publish.yml 2023-01-31 23:38:17.000000000 +0100 @@ -12,9 +12,9 @@ publish: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: 3.x - name: Install dependencies @@ -22,7 +22,6 @@ - name: Create packages run: python -m build -s -w . - name: Upload packages - uses: pypa/[email protected] + uses: pypa/gh-action-pypi-publish@release/v1 with: - user: __token__ password: ${{ secrets.pypi_password }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/APScheduler.egg-info/PKG-INFO new/APScheduler-3.10.0/APScheduler.egg-info/PKG-INFO --- old/APScheduler-3.9.1.post1/APScheduler.egg-info/PKG-INFO 2022-11-11 22:07:59.000000000 +0100 +++ new/APScheduler-3.10.0/APScheduler.egg-info/PKG-INFO 2023-01-31 23:38:27.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: APScheduler -Version: 3.9.1.post1 +Version: 3.10.0 Summary: In-process task scheduler with Cron-like capabilities Home-page: https://github.com/agronholm/apscheduler Author: Alex Grönholm @@ -12,14 +12,13 @@ Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 -Requires-Python: !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4 -Provides-Extra: asyncio +Classifier: Programming Language :: Python :: 3.11 +Requires-Python: >=3.6 Provides-Extra: gevent Provides-Extra: mongodb Provides-Extra: redis diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/APScheduler.egg-info/requires.txt new/APScheduler-3.10.0/APScheduler.egg-info/requires.txt --- old/APScheduler-3.9.1.post1/APScheduler.egg-info/requires.txt 2022-11-11 22:07:59.000000000 +0100 +++ new/APScheduler-3.10.0/APScheduler.egg-info/requires.txt 2023-01-31 23:38:27.000000000 +0100 @@ -3,15 +3,6 @@ pytz tzlocal!=3.*,>=2.0 -[:python_version < "3.5"] -funcsigs - -[:python_version == "2.7"] -futures - -[asyncio:python_version == "2.7"] -trollius - [doc] sphinx sphinx-rtd-theme @@ -29,22 +20,14 @@ rethinkdb>=2.4.0 [sqlalchemy] -sqlalchemy>=0.8 +sqlalchemy>=1.4 [testing] pytest +pytest_asyncio pytest-cov pytest-tornado5 -[testing:python_version == "2.7"] -mock - -[testing:python_version == "3.4"] -pytest_asyncio<0.6 - -[testing:python_version >= "3.5"] -pytest_asyncio - [tornado] tornado>=4.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/PKG-INFO new/APScheduler-3.10.0/PKG-INFO --- old/APScheduler-3.9.1.post1/PKG-INFO 2022-11-11 22:07:59.590440500 +0100 +++ new/APScheduler-3.10.0/PKG-INFO 2023-01-31 23:38:27.895592000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: APScheduler -Version: 3.9.1.post1 +Version: 3.10.0 Summary: In-process task scheduler with Cron-like capabilities Home-page: https://github.com/agronholm/apscheduler Author: Alex Grönholm @@ -12,14 +12,13 @@ Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 -Requires-Python: !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4 -Provides-Extra: asyncio +Classifier: Programming Language :: Python :: 3.11 +Requires-Python: >=3.6 Provides-Extra: gevent Provides-Extra: mongodb Provides-Extra: redis diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/apscheduler/executors/asyncio.py new/APScheduler-3.10.0/apscheduler/executors/asyncio.py --- old/APScheduler-3.9.1.post1/apscheduler/executors/asyncio.py 2022-11-11 22:07:49.000000000 +0100 +++ new/APScheduler-3.10.0/apscheduler/executors/asyncio.py 2023-01-31 23:38:17.000000000 +0100 @@ -3,13 +3,9 @@ import sys from apscheduler.executors.base import BaseExecutor, run_job +from apscheduler.executors.base_py3 import run_coroutine_job from apscheduler.util import iscoroutinefunction_partial -try: - from apscheduler.executors.base_py3 import run_coroutine_job -except ImportError: - run_coroutine_job = None - class AsyncIOExecutor(BaseExecutor): """ @@ -46,11 +42,8 @@ self._run_job_success(job.id, events) if iscoroutinefunction_partial(job.func): - if run_coroutine_job is not None: - coro = run_coroutine_job(job, job._jobstore_alias, run_times, self._logger.name) - f = self._eventloop.create_task(coro) - else: - raise Exception('Executing coroutine based jobs is not supported with Trollius') + coro = run_coroutine_job(job, job._jobstore_alias, run_times, self._logger.name) + f = self._eventloop.create_task(coro) else: f = self._eventloop.run_in_executor(None, run_job, job, job._jobstore_alias, run_times, self._logger.name) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/apscheduler/jobstores/sqlalchemy.py new/APScheduler-3.10.0/apscheduler/jobstores/sqlalchemy.py --- old/APScheduler-3.9.1.post1/apscheduler/jobstores/sqlalchemy.py 2022-11-11 22:07:49.000000000 +0100 +++ new/APScheduler-3.10.0/apscheduler/jobstores/sqlalchemy.py 2023-01-31 23:38:17.000000000 +0100 @@ -57,7 +57,7 @@ # 25 = precision that translates to an 8-byte float self.jobs_t = Table( tablename, metadata, - Column('id', Unicode(191, _warn_on_bytestring=False), primary_key=True), + Column('id', Unicode(191), primary_key=True), Column('next_run_time', Float(25), index=True), Column('job_state', LargeBinary, nullable=False), schema=tableschema @@ -68,20 +68,22 @@ self.jobs_t.create(self.engine, True) def lookup_job(self, job_id): - selectable = select([self.jobs_t.c.job_state]).where(self.jobs_t.c.id == job_id) - job_state = self.engine.execute(selectable).scalar() - return self._reconstitute_job(job_state) if job_state else None + selectable = select(self.jobs_t.c.job_state).where(self.jobs_t.c.id == job_id) + with self.engine.begin() as connection: + job_state = connection.execute(selectable).scalar() + return self._reconstitute_job(job_state) if job_state else None def get_due_jobs(self, now): timestamp = datetime_to_utc_timestamp(now) return self._get_jobs(self.jobs_t.c.next_run_time <= timestamp) def get_next_run_time(self): - selectable = select([self.jobs_t.c.next_run_time]).\ + selectable = select(self.jobs_t.c.next_run_time).\ where(self.jobs_t.c.next_run_time != null()).\ order_by(self.jobs_t.c.next_run_time).limit(1) - next_run_time = self.engine.execute(selectable).scalar() - return utc_timestamp_to_datetime(next_run_time) + with self.engine.begin() as connection: + next_run_time = connection.execute(selectable).scalar() + return utc_timestamp_to_datetime(next_run_time) def get_all_jobs(self): jobs = self._get_jobs() @@ -94,29 +96,33 @@ 'next_run_time': datetime_to_utc_timestamp(job.next_run_time), 'job_state': pickle.dumps(job.__getstate__(), self.pickle_protocol) }) - try: - self.engine.execute(insert) - except IntegrityError: - raise ConflictingIdError(job.id) + with self.engine.begin() as connection: + try: + connection.execute(insert) + except IntegrityError: + raise ConflictingIdError(job.id) def update_job(self, job): update = self.jobs_t.update().values(**{ 'next_run_time': datetime_to_utc_timestamp(job.next_run_time), 'job_state': pickle.dumps(job.__getstate__(), self.pickle_protocol) }).where(self.jobs_t.c.id == job.id) - result = self.engine.execute(update) - if result.rowcount == 0: - raise JobLookupError(job.id) + with self.engine.begin() as connection: + result = connection.execute(update) + if result.rowcount == 0: + raise JobLookupError(job.id) def remove_job(self, job_id): delete = self.jobs_t.delete().where(self.jobs_t.c.id == job_id) - result = self.engine.execute(delete) - if result.rowcount == 0: - raise JobLookupError(job_id) + with self.engine.begin() as connection: + result = connection.execute(delete) + if result.rowcount == 0: + raise JobLookupError(job_id) def remove_all_jobs(self): delete = self.jobs_t.delete() - self.engine.execute(delete) + with self.engine.begin() as connection: + connection.execute(delete) def shutdown(self): self.engine.dispose() @@ -132,21 +138,22 @@ def _get_jobs(self, *conditions): jobs = [] - selectable = select([self.jobs_t.c.id, self.jobs_t.c.job_state]).\ + selectable = select(self.jobs_t.c.id, self.jobs_t.c.job_state).\ order_by(self.jobs_t.c.next_run_time) selectable = selectable.where(and_(*conditions)) if conditions else selectable failed_job_ids = set() - for row in self.engine.execute(selectable): - try: - jobs.append(self._reconstitute_job(row.job_state)) - except BaseException: - self._logger.exception('Unable to restore job "%s" -- removing it', row.id) - failed_job_ids.add(row.id) - - # Remove all the jobs we failed to restore - if failed_job_ids: - delete = self.jobs_t.delete().where(self.jobs_t.c.id.in_(failed_job_ids)) - self.engine.execute(delete) + with self.engine.begin() as connection: + for row in connection.execute(selectable): + try: + jobs.append(self._reconstitute_job(row.job_state)) + except BaseException: + self._logger.exception('Unable to restore job "%s" -- removing it', row.id) + failed_job_ids.add(row.id) + + # Remove all the jobs we failed to restore + if failed_job_ids: + delete = self.jobs_t.delete().where(self.jobs_t.c.id.in_(failed_job_ids)) + connection.execute(delete) return jobs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/apscheduler/schedulers/asyncio.py new/APScheduler-3.10.0/apscheduler/schedulers/asyncio.py --- old/APScheduler-3.9.1.post1/apscheduler/schedulers/asyncio.py 2022-11-11 22:07:49.000000000 +0100 +++ new/APScheduler-3.10.0/apscheduler/schedulers/asyncio.py 2023-01-31 23:38:17.000000000 +0100 @@ -1,18 +1,10 @@ from __future__ import absolute_import +import asyncio from functools import wraps, partial from apscheduler.schedulers.base import BaseScheduler from apscheduler.util import maybe_ref -try: - import asyncio -except ImportError: # pragma: nocover - try: - import trollius as asyncio - except ImportError: - raise ImportError( - 'AsyncIOScheduler requires either Python 3.4 or the asyncio package installed') - def run_in_event_loop(func): @wraps(func) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/apscheduler/util.py new/APScheduler-3.10.0/apscheduler/util.py --- old/APScheduler-3.9.1.post1/apscheduler/util.py 2022-11-11 22:07:49.000000000 +0100 +++ new/APScheduler-3.10.0/apscheduler/util.py 2023-01-31 23:38:17.000000000 +0100 @@ -2,6 +2,7 @@ from __future__ import division +from asyncio import iscoroutinefunction from datetime import date, datetime, time, timedelta, tzinfo from calendar import timegm from functools import partial @@ -22,15 +23,6 @@ except ImportError: TIMEOUT_MAX = 4294967 # Maximum value accepted by Event.wait() on Windows -try: - from asyncio import iscoroutinefunction -except ImportError: - try: - from trollius import iscoroutinefunction - except ImportError: - def iscoroutinefunction(func): - return False - __all__ = ('asint', 'asbool', 'astimezone', 'convert_to_datetime', 'datetime_to_utc_timestamp', 'utc_timestamp_to_datetime', 'timedelta_seconds', 'datetime_ceil', 'get_callable_name', 'obj_to_ref', 'ref_to_obj', 'maybe_ref', 'repr_escape', 'check_callable_args', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/docs/versionhistory.rst new/APScheduler-3.10.0/docs/versionhistory.rst --- old/APScheduler-3.9.1.post1/docs/versionhistory.rst 2022-11-11 22:07:49.000000000 +0100 +++ new/APScheduler-3.10.0/docs/versionhistory.rst 2023-01-31 23:38:17.000000000 +0100 @@ -4,6 +4,13 @@ To find out how to migrate your application from a previous version of APScheduler, see the :doc:`migration section <migration>`. +3.10.0 +------ + +* Fixed compatibility with SQLAlchemy 2.0 and bumped minimum supported version to 1.4 +* Dropped support for Python versions older than 3.6 + + 3.9.1 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/setup.cfg new/APScheduler-3.10.0/setup.cfg --- old/APScheduler-3.9.1.post1/setup.cfg 2022-11-11 22:07:59.590440500 +0100 +++ new/APScheduler-3.10.0/setup.cfg 2023-01-31 23:38:27.895592000 +0100 @@ -20,9 +20,6 @@ max-line-length = 99 exclude = .tox,build,docs -[bdist_wheel] -universal = 1 - [egg_info] tag_build = tag_date = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/setup.py new/APScheduler-3.10.0/setup.py --- old/APScheduler-3.9.1.post1/setup.py 2022-11-11 22:07:49.000000000 +0100 +++ new/APScheduler-3.10.0/setup.py 2023-01-31 23:38:17.000000000 +0100 @@ -1,4 +1,3 @@ -# coding: utf-8 import os.path from setuptools import setup, find_packages @@ -25,17 +24,17 @@ 'License :: OSI Approved :: MIT License', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10' + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11' ], keywords='scheduling cron', license='MIT', packages=find_packages(exclude=['tests']), - python_requires='!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4', + python_requires='>=3.6', setup_requires=[ 'setuptools_scm' ], @@ -46,25 +45,20 @@ 'tzlocal >= 2.0, != 3.*' ], extras_require={ - ':python_version == "2.7"': ['futures'], - ':python_version < "3.5"': ['funcsigs'], - 'asyncio:python_version == "2.7"': ['trollius'], 'gevent': ['gevent'], 'mongodb': ['pymongo >= 3.0'], 'redis': ['redis >= 3.0'], 'rethinkdb': ['rethinkdb >= 2.4.0'], - 'sqlalchemy': ['sqlalchemy >= 0.8'], + 'sqlalchemy': ['sqlalchemy >= 1.4'], 'tornado': ['tornado >= 4.3'], 'twisted': ['twisted'], 'zookeeper': ['kazoo'], 'testing': [ 'pytest', + 'pytest_asyncio', 'pytest-cov', 'pytest-tornado5' ], - 'testing:python_version == "2.7"': ['mock'], - 'testing:python_version == "3.4"': ['pytest_asyncio < 0.6'], - 'testing:python_version >= "3.5"': ['pytest_asyncio'], 'doc': [ 'sphinx', 'sphinx-rtd-theme', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/APScheduler-3.9.1.post1/tox.ini new/APScheduler-3.10.0/tox.ini --- old/APScheduler-3.9.1.post1/tox.ini 2022-11-11 22:07:49.000000000 +0100 +++ new/APScheduler-3.10.0/tox.ini 2023-01-31 23:38:17.000000000 +0100 @@ -1,5 +1,5 @@ [tox] -envlist = py27, py35, py36, py37, py38, py39, py310, pypy, pypy3, flake8 +envlist = py36, py37, py38, py39, py310, py311, pypy3, flake8 skip_missing_interpreters = true [testenv] @@ -16,8 +16,7 @@ twisted zookeeper deps = - {py35}: PyQt5 - {py36,py37,py38,py39,py310}: PySide6 + {py36,py37,py38,py39,py310,py311}: PySide6 [testenv:py34] deps = twisted < 19.7
