Rename Job.context to Job.data (#3028)

This commit is contained in:
Aditya Yadav 2022-05-12 22:56:03 +05:30 committed by GitHub
parent e47d18c9ec
commit 1f7efe4519
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 39 deletions

View file

@ -43,7 +43,7 @@ async def start(update: Update, context: CallbackContext.DEFAULT_TYPE) -> None:
async def alarm(context: CallbackContext.DEFAULT_TYPE) -> None:
"""Send the alarm message."""
job = context.job
await context.bot.send_message(job.chat_id, text=f"Beep! {job.context} seconds are over!")
await context.bot.send_message(job.chat_id, text=f"Beep! {job.data} seconds are over!")
def remove_job_if_exists(name: str, context: CallbackContext.DEFAULT_TYPE) -> bool:
@ -67,7 +67,7 @@ async def set_timer(update: Update, context: CallbackContext.DEFAULT_TYPE) -> No
return
job_removed = remove_job_if_exists(str(chat_id), context)
context.job_queue.run_once(alarm, due, chat_id=chat_id, name=str(chat_id), context=due)
context.job_queue.run_once(alarm, due, chat_id=chat_id, name=str(chat_id), data=due)
text = "Timer successfully set!"
if job_removed:

View file

@ -64,7 +64,7 @@ _logger = logging.getLogger(__name__)
@dataclass
class _ConversationTimeoutContext(Generic[CCT]):
"""Used as a datastore for conversation timeouts. Passed in the
:paramref:`JobQueue.run_once.context` parameter. See :meth:`_trigger_timeout`.
:paramref:`JobQueue.run_once.data` parameter. See :meth:`_trigger_timeout`.
"""
__slots__ = ("conversation_key", "update", "application", "callback_context")
@ -667,9 +667,7 @@ class ConversationHandler(BaseHandler[Update, CCT]):
self.timeout_jobs[conversation_key] = j_queue.run_once(
self._trigger_timeout,
self.conversation_timeout, # type: ignore[arg-type]
context=_ConversationTimeoutContext(
conversation_key, update, application, context
),
data=_ConversationTimeoutContext(conversation_key, update, application, context),
)
except Exception as exc:
_logger.exception("Failed to schedule timeout.", exc_info=exc)
@ -885,7 +883,7 @@ class ConversationHandler(BaseHandler[Update, CCT]):
:obj:`True` is handled.
"""
job = cast("Job", context.job)
ctxt = cast(_ConversationTimeoutContext, job.context)
ctxt = cast(_ConversationTimeoutContext, job.data)
_logger.debug(
"Conversation timeout was triggered for conversation %s!", ctxt.conversation_key

View file

@ -121,7 +121,7 @@ class JobQueue:
self,
callback: JobCallback,
when: Union[float, datetime.timedelta, datetime.datetime, datetime.time],
context: object = None,
data: object = None,
name: str = None,
chat_id: int = None,
user_id: int = None,
@ -163,9 +163,12 @@ class JobQueue:
be available in the callback.
.. versionadded:: 20.0
context (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.context` in the callback. Defaults to
data (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.data` in the callback. Defaults to
:obj:`None`.
.. versionchanged:: 20.0
Renamed the parameter ``context`` to :paramref:`data`.
name (:obj:`str`, optional): The name of the new job. Defaults to
:external:attr:`callback.__name__ <definition.__name__>`.
job_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to pass to the
@ -180,7 +183,7 @@ class JobQueue:
job_kwargs = {}
name = name or callback.__name__
job = Job(callback=callback, context=context, name=name, chat_id=chat_id, user_id=user_id)
job = Job(callback=callback, data=data, name=name, chat_id=chat_id, user_id=user_id)
date_time = self._parse_time_input(when, shift_day=True)
j = self.scheduler.add_job(
@ -202,7 +205,7 @@ class JobQueue:
interval: Union[float, datetime.timedelta],
first: Union[float, datetime.timedelta, datetime.datetime, datetime.time] = None,
last: Union[float, datetime.timedelta, datetime.datetime, datetime.time] = None,
context: object = None,
data: object = None,
name: str = None,
chat_id: int = None,
user_id: int = None,
@ -254,9 +257,12 @@ class JobQueue:
assumed.
Defaults to :obj:`None`.
context (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.context` in the callback. Defaults to
data (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.data` in the callback. Defaults to
:obj:`None`.
.. versionchanged:: 20.0
Renamed the parameter ``context`` to :paramref:`data`.
name (:obj:`str`, optional): The name of the new job. Defaults to
:external:attr:`callback.__name__ <definition.__name__>`.
chat_id (:obj:`int`, optional): Chat id of the chat associated with this job. If
@ -282,7 +288,7 @@ class JobQueue:
job_kwargs = {}
name = name or callback.__name__
job = Job(callback=callback, context=context, name=name, chat_id=chat_id, user_id=user_id)
job = Job(callback=callback, data=data, name=name, chat_id=chat_id, user_id=user_id)
dt_first = self._parse_time_input(first)
dt_last = self._parse_time_input(last)
@ -312,7 +318,7 @@ class JobQueue:
callback: JobCallback,
when: datetime.time,
day: int,
context: object = None,
data: object = None,
name: str = None,
chat_id: int = None,
user_id: int = None,
@ -336,9 +342,12 @@ class JobQueue:
be within the range of 1 and 31, inclusive. If a month has fewer days than this
number, the job will not run in this month. Passing -1 leads to the job running on
the last day of the month.
context (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.context` in the callback. Defaults to
data (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.data` in the callback. Defaults to
:obj:`None`.
.. versionchanged:: 20.0
Renamed the parameter ``context`` to :paramref:`data`.
name (:obj:`str`, optional): The name of the new job. Defaults to
:external:attr:`callback.__name__ <definition.__name__>`.
chat_id (:obj:`int`, optional): Chat id of the chat associated with this job. If
@ -364,7 +373,7 @@ class JobQueue:
job_kwargs = {}
name = name or callback.__name__
job = Job(callback=callback, context=context, name=name, chat_id=chat_id, user_id=user_id)
job = Job(callback=callback, data=data, name=name, chat_id=chat_id, user_id=user_id)
j = self.scheduler.add_job(
job.run,
@ -386,7 +395,7 @@ class JobQueue:
callback: JobCallback,
time: datetime.time,
days: Tuple[int, ...] = tuple(range(7)),
context: object = None,
data: object = None,
name: str = None,
chat_id: int = None,
user_id: int = None,
@ -411,9 +420,12 @@ class JobQueue:
be used.
days (Tuple[:obj:`int`], optional): Defines on which days of the week the job should
run (where ``0-6`` correspond to monday - sunday). Defaults to ``EVERY_DAY``
context (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.context` in the callback. Defaults to
data (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.data` in the callback. Defaults to
:obj:`None`.
.. versionchanged:: 20.0
Renamed the parameter ``context`` to :paramref:`data`.
name (:obj:`str`, optional): The name of the new job. Defaults to
:external:attr:`callback.__name__ <definition.__name__>`.
chat_id (:obj:`int`, optional): Chat id of the chat associated with this job. If
@ -439,7 +451,7 @@ class JobQueue:
job_kwargs = {}
name = name or callback.__name__
job = Job(callback=callback, context=context, name=name, chat_id=chat_id, user_id=user_id)
job = Job(callback=callback, data=data, name=name, chat_id=chat_id, user_id=user_id)
j = self.scheduler.add_job(
job.run,
@ -461,7 +473,7 @@ class JobQueue:
self,
callback: JobCallback,
job_kwargs: JSONDict,
context: object = None,
data: object = None,
name: str = None,
chat_id: int = None,
user_id: int = None,
@ -476,9 +488,12 @@ class JobQueue:
job_kwargs (:obj:`dict`): Arbitrary keyword arguments. Used as arguments for
:meth:`apscheduler.schedulers.base.BaseScheduler.add_job`.
context (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.context` in the callback. Defaults to
data (:obj:`object`, optional): Additional data needed for the callback function.
Can be accessed through :attr:`Job.data` in the callback. Defaults to
:obj:`None`.
.. versionchanged:: 20.0
Renamed the parameter ``context`` to :paramref:`data`.
name (:obj:`str`, optional): The name of the new job. Defaults to
:external:attr:`callback.__name__ <definition.__name__>`.
chat_id (:obj:`int`, optional): Chat id of the chat associated with this job. If
@ -499,7 +514,7 @@ class JobQueue:
"""
name = name or callback.__name__
job = Job(callback=callback, context=context, name=name, chat_id=chat_id, user_id=user_id)
job = Job(callback=callback, data=data, name=name, chat_id=chat_id, user_id=user_id)
j = self.scheduler.add_job(job.run, args=(self.application,), name=name, **job_kwargs)
@ -564,7 +579,8 @@ class Job:
this :class:`telegram.ext.Job` to be useful.
.. versionchanged:: 20.0
Removed argument and attribute ``job_queue``.
* Removed argument and attribute ``job_queue``.
* Renamed ``Job.context`` to :attr:`Job.data`.
Args:
callback (:term:`coroutine function`): The callback function that should be executed by the
@ -572,8 +588,8 @@ class Job:
async def callback(context: CallbackContext)
context (:obj:`object`, optional): Additional data needed for the callback function. Can be
accessed through :attr:`Job.context` in the callback. Defaults to :obj:`None`.
data (:obj:`object`, optional): Additional data needed for the callback function. Can be
accessed through :attr:`Job.data` in the callback. Defaults to :obj:`None`.
name (:obj:`str`, optional): The name of the new job. Defaults to
:external:obj:`callback.__name__ <definition.__name__>`.
job (:class:`apscheduler.job.Job`, optional): The APS Job this job is a wrapper for.
@ -587,7 +603,7 @@ class Job:
Attributes:
callback (:term:`coroutine function`): The callback function that should be executed by the
new job.
context (:obj:`object`): Optional. Additional data needed for the callback function.
data (:obj:`object`): Optional. Additional data needed for the callback function.
name (:obj:`str`): Optional. The name of the new job.
job (:class:`apscheduler.job.Job`): Optional. The APS Job this job is a wrapper for.
chat_id (:obj:`int`): Optional. Chat id of the chat that this job is associated with.
@ -600,7 +616,7 @@ class Job:
__slots__ = (
"callback",
"context",
"data",
"name",
"_removed",
"_enabled",
@ -612,7 +628,7 @@ class Job:
def __init__(
self,
callback: JobCallback,
context: object = None,
data: object = None,
name: str = None,
job: APSJob = None,
chat_id: int = None,
@ -620,7 +636,7 @@ class Job:
):
self.callback = callback
self.context = context
self.data = data
self.name = name or callback.__name__
self.chat_id = chat_id
self.user_id = user_id

View file

@ -65,7 +65,7 @@ class TestJobQueue:
isinstance(context, CallbackContext)
and isinstance(context.job, Job)
and isinstance(context.update_queue, asyncio.Queue)
and context.job.context is None
and context.job.data is None
and context.chat_data is None
and context.user_data is None
and isinstance(context.bot_data, dict)
@ -79,8 +79,8 @@ class TestJobQueue:
self.result += 1
context.job.schedule_removal()
async def job_run_once_with_context(self, context):
self.result += context.job.context
async def job_run_once_with_data(self, context):
self.result += context.job.data
async def job_datetime_tests(self, context):
self.job_time = time.time()
@ -121,8 +121,8 @@ class TestJobQueue:
await asyncio.sleep(0.1)
assert self.result == 1
async def test_job_with_context(self, job_queue):
job_queue.run_once(self.job_run_once_with_context, 0.1, context=5)
async def test_job_with_data(self, job_queue):
job_queue.run_once(self.job_run_once_with_data, 0.1, data=5)
await asyncio.sleep(0.2)
assert self.result == 5