Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
4a7ef6c
Let's see where this takes us...
thusser Oct 18, 2025
f01b445
working on scheduler
thusser Oct 20, 2025
8564d02
testing
thusser Oct 24, 2025
2b59d6b
Merge branch 'develop' into feature/scheduler
thusser Oct 27, 2025
162b0f9
Merge remote-tracking branch 'origin/feature/scheduler' into feature/…
thusser Oct 27, 2025
8146ba4
Merge branch 'develop' into feature/scheduler
thusser Oct 31, 2025
b950efa
introduced ScheduledTask
thusser Oct 31, 2025
15dd1a6
working on abstracting schedulers
thusser Oct 31, 2025
c2997c0
added own constraints and targets
thusser Oct 31, 2025
1fae240
new scheduler structure seems to be working
thusser Oct 31, 2025
5f04d8d
moved some files
thusser Oct 31, 2025
0e6c58c
fixed inputs
thusser Oct 31, 2025
89e1442
added merit
thusser Oct 31, 2025
e6ec139
added moon avoidance merit
thusser Oct 31, 2025
d37c07b
added (empty) MeritScheduler
thusser Nov 1, 2025
dea31d1
added (empty) MeritScheduler
thusser Nov 1, 2025
477b702
processing scheduled tasks one by one
thusser Nov 1, 2025
93e5ca5
extracted create_constraints_for_configuration and create task with o…
thusser Nov 1, 2025
52c6200
moved data parameter back into __call__
thusser Nov 1, 2025
7a22dca
added merits to tasks
thusser Nov 1, 2025
07b6304
working on merit scheduler
thusser Nov 1, 2025
340138e
fixed test
thusser Nov 1, 2025
3c447bd
fixed imports
thusser Nov 1, 2025
33c296c
working on merit scheduler
thusser Nov 1, 2025
cb12db2
added TimeWindowMerit
thusser Nov 2, 2025
a1ddd5c
working on merit scheduler
thusser Nov 2, 2025
a0d14fc
added tests
thusser Nov 2, 2025
164b5b9
moved schedule_range and safety_time to module
thusser Nov 2, 2025
d18860d
always schedule intervals
thusser Nov 2, 2025
ec922f6
schedule_in_interval
thusser Nov 2, 2025
094185f
removed MoonAvoidanceMerit
thusser Nov 2, 2025
f2f5046
tests for merits
thusser Nov 2, 2025
7b4ef15
added comment
thusser Nov 2, 2025
3b5f71b
added BeforeTime and AfterTime merits and tests
thusser Nov 2, 2025
8b72eda
filling holes seems to work
thusser Nov 2, 2025
3c7ade4
Merge remote-tracking branch 'origin/feature/scheduler' into feature/…
thusser Nov 3, 2025
a7072be
scheduler can now just postpone a better task until the other one is …
thusser Nov 3, 2025
ab632c1
un-outcommented code
thusser Nov 3, 2025
443a058
evaluate merits 1 if no merits exist
thusser Nov 3, 2025
f11ee54
renamed schedule_in_interval to schedule_first_in_interval
thusser Nov 3, 2025
51f217a
can fill time window with schedule
thusser Nov 3, 2025
7fa0326
renamed evaluate_merits to evaluate_constraints_and_merits
thusser Nov 3, 2025
0ff2ffe
implemented Constraints and tests
thusser Nov 3, 2025
464861e
evaluate constraints
thusser Nov 3, 2025
9692c13
Merge remote-tracking branch 'origin/feature/scheduler' into feature/…
thusser Nov 4, 2025
a16c6db
create merits, constraints, target, and duration in LcoTask c'tor
thusser Nov 4, 2025
e4adcbd
fixed airmass<0
thusser Nov 4, 2025
d213cb3
fixed order of constraint/merit evaluation
thusser Nov 4, 2025
e3b3ea7
added origin_mismatch="ignore" to remove warnings
thusser Nov 4, 2025
d90c12e
schedule into the future, even if currently no task was found
thusser Nov 4, 2025
40b36c6
Merge remote-tracking branch 'origin/feature/scheduler' into feature/…
thusser Nov 10, 2025
314e08e
Merge branch 'develop' into feature/scheduler
thusser Dec 12, 2025
38b325d
Merge branch 'develop' into feature/scheduler
thusser Jan 6, 2026
775e5be
added __eq__ for comparison
thusser Jan 6, 2026
b31ea8f
added comparison methods for ScheduledTask
thusser Jan 6, 2026
470df9c
fixed bug that removed is now a list of ints
thusser Jan 6, 2026
977c69b
make safety_time a second again...
thusser Jan 6, 2026
bda3c7d
Merge branch 'develop' into feature/scheduler
thusser Jan 7, 2026
6b85349
Merge branch 'develop' into feature/scheduler
thusser Jan 7, 2026
7d3bd75
removed "* u.second", since duration already returns seconds
thusser Jan 7, 2026
682be68
get_task now returns a ScheduledTask
thusser Jan 11, 2026
c0a21f8
added pydantic and astropydantic
thusser Jan 12, 2026
c9d87ae
added method for retrieving observations
thusser Jan 12, 2026
7c2680b
added Observation and ObservationArchive
thusser Jan 12, 2026
58bda87
removed output
thusser Jan 12, 2026
5eb8f94
Merge branch 'develop' into feature/scheduler
thusser Jan 12, 2026
36671c4
explicitly del some objects
thusser Jan 12, 2026
a21ac9a
changed order of execution
thusser Jan 12, 2026
f2031cc
always run update in get_task
thusser Jan 14, 2026
ff238c2
made merits and constraints async
thusser Jan 14, 2026
f93d3c5
added ObservationList for filtering Observations
thusser Jan 14, 2026
5dbffbf
use ObservationList
thusser Jan 14, 2026
ce120a4
moved DataProvider
thusser Jan 14, 2026
31347cc
renamed observations() to observations_for_task()
thusser Jan 14, 2026
773625e
added ObservationArchiveEvolution for evolving an observation archive…
thusser Jan 14, 2026
e1836f6
use ObservationArchiveEvolution
thusser Jan 14, 2026
7f7adb9
async
thusser Jan 14, 2026
9b49677
new night_obs
thusser Jan 14, 2026
6ff8401
added observations_for_night
thusser Jan 14, 2026
c4ff0a1
ObservationArchiveEvolution needs observer
thusser Jan 14, 2026
16b25d2
added night()
thusser Jan 14, 2026
fc0f448
return ObservationList
thusser Jan 14, 2026
c9ff17c
return float instead of bool
thusser Jan 15, 2026
410923e
added FollowMerrit
thusser Jan 15, 2026
534e9fa
fixed object handling
thusser Jan 15, 2026
9d0a3b4
Task not abstract anymore, makes testing easier.
thusser Jan 15, 2026
260b3c7
removed TestTask, since it's not needed anymore after Task is not abs…
thusser Jan 15, 2026
0340171
added missing import
thusser Jan 15, 2026
801dbf9
added test for PerNightMerit
thusser Jan 15, 2026
953a8d4
Merge branch 'develop' into feature/scheduler
thusser Jan 16, 2026
9d5a4b9
Merge branch 'develop' into feature/scheduler
thusser Jan 16, 2026
952835d
fixed bug, initialized wrong parser...
thusser Jan 16, 2026
f695aa2
Merge branch 'develop' into feature/scheduler
thusser Jan 16, 2026
5a926a3
fixed bug
thusser Jan 16, 2026
c285489
removed any()
thusser Jan 16, 2026
4048b6b
moved import
thusser Jan 16, 2026
052be95
added MeritScheduler
thusser Jan 16, 2026
0f41450
also search for telescope
thusser Jan 16, 2026
8cbf3ec
removed **kwargs from call to super __init__
thusser Jan 16, 2026
f257b60
added create method
thusser Jan 16, 2026
8657098
added __all__
thusser Jan 16, 2026
13c3ecd
made all methods class members and added global constraints
thusser Jan 16, 2026
88da4d4
Task is not hashable, so use Task.id instead
thusser Jan 16, 2026
92672f2
fixed wrong comparison
thusser Jan 16, 2026
de15b09
fixed that methods are now members
thusser Jan 16, 2026
5ee6c5d
added create methos
thusser Jan 16, 2026
4340cb0
added __all__
thusser Jan 16, 2026
78c5be7
mixing params into config for Merits
thusser Jan 16, 2026
73b4225
added IntervalMerit
thusser Jan 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion pyobs/cli/pyobsd.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import subprocess
import sys
import time
from typing import Optional, List
from typing import Optional, List, Any

from ._cli import CLI

Expand Down Expand Up @@ -91,6 +91,7 @@ def __init__(
chuid: Optional[str] = None,
start_stop_daemon: str = "start-stop-daemon",
verbose: bool = False,
**kwargs: Any,
):
self._config_path = config_path
self._run_path = run_path
Expand Down
14 changes: 7 additions & 7 deletions pyobs/modules/robotic/mastermind.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from pyobs.events.taskfinished import TaskFinishedEvent
from pyobs.events.taskstarted import TaskStartedEvent
from pyobs.interfaces import IFitsHeaderBefore, IAutonomous
from pyobs.robotic.task import Task
from pyobs.robotic.task import Task, ScheduledTask
from pyobs.utils.time import Time
from pyobs.robotic import TaskRunner, TaskSchedule

Expand Down Expand Up @@ -96,15 +96,15 @@ async def _run_thread(self) -> None:
now = Time.now()

# find task that we want to run now
task: Task | None = await self._task_schedule.get_task(now)
if task is None or not await self._task_runner.can_run(task):
scheduled_task: ScheduledTask | None = await self._task_schedule.get_task(now)
if scheduled_task is None or not await self._task_runner.can_run(scheduled_task.task):
# no task found
await asyncio.sleep(10)
continue

# starting too late?
if not task.can_start_late:
late_start = now - task.start
if not scheduled_task.task.can_start_late:
late_start = now - scheduled_task.start
if late_start > self._allowed_late_start * u.second:
# only warn once
if first_late_start_warning:
Expand All @@ -123,10 +123,10 @@ async def _run_thread(self) -> None:
first_late_start_warning = True

# task is definitely not None here
self._task = task
self._task = scheduled_task.task

# ETA
eta = now + self._task.duration * u.second
eta = now + self._task.duration

# send event
await self.comm.send_event(TaskStartedEvent(name=self._task.name, id=self._task.id, eta=eta))
Expand Down
Loading
Loading