Skip to content

Schedules

pyfamilysafety.schedule.AllottedInterval

AllottedInterval(begin, end)

A time window when device use is permitted.

Times use HH:MM:SS strings, or pass :class:datetime.time objects via :meth:from_time.

Source code in pyfamilysafety/schedule.py
19
20
21
def __init__(self, begin: str, end: str) -> None:
    self.begin = begin
    self.end = end

begin instance-attribute

begin = begin

end instance-attribute

end = end

from_time classmethod

from_time(begin, end)

Build an interval from time objects.

Source code in pyfamilysafety/schedule.py
23
24
25
26
27
28
29
@classmethod
def from_time(cls, begin: time, end: time) -> "AllottedInterval":
    """Build an interval from time objects."""
    return cls(
        begin=begin.strftime("%H:%M:%S"),
        end=end.strftime("%H:%M:%S"),
    )

to_dict

to_dict()

Convert to the API request format.

Source code in pyfamilysafety/schedule.py
31
32
33
34
35
36
def to_dict(self) -> dict:
    """Convert to the API request format."""
    return {
        "begin": self.begin,
        "end": self.end,
    }

pyfamilysafety.schedule.DailyRestriction

DailyRestriction(allowance, allotted_intervals=None)

Screen time limits for a single day.

allowance is the total permitted screen time in milliseconds. allotted_intervals optionally restricts use to specific time windows.

Source code in pyfamilysafety/schedule.py
46
47
48
49
50
51
def __init__(
        self,
        allowance: int,
        allotted_intervals: list[AllottedInterval] = None) -> None:
    self.allowance = allowance
    self.allotted_intervals = allotted_intervals or []

allowance instance-attribute

allowance = allowance

allotted_intervals instance-attribute

allotted_intervals = allotted_intervals or []

from_minutes classmethod

from_minutes(allowance_minutes, allotted_intervals=None)

Build a restriction using an allowance in minutes.

Source code in pyfamilysafety/schedule.py
53
54
55
56
57
58
59
60
61
62
@classmethod
def from_minutes(
        cls,
        allowance_minutes: int,
        allotted_intervals: list[AllottedInterval] = None) -> "DailyRestriction":
    """Build a restriction using an allowance in minutes."""
    return cls(
        allowance=int(allowance_minutes * 60 * 1000),
        allotted_intervals=allotted_intervals,
    )

to_dict

to_dict()

Convert to the API request format.

Source code in pyfamilysafety/schedule.py
64
65
66
67
68
69
70
71
def to_dict(self) -> dict:
    """Convert to the API request format."""
    result = {"allowance": self.allowance}
    if self.allotted_intervals:
        result["allottedIntervals"] = [
            interval.to_dict() for interval in self.allotted_intervals
        ]
    return result

pyfamilysafety.schedule.DeviceLimitsSchedule

DeviceLimitsSchedule(platform, daily_restrictions, mode=DeviceLimitsMode.PER_DEVICE_TYPE, culture='en-GB')

Device screen time limits for a platform.

Serialize with :meth:to_dict before sending to the API. Pass an instance directly to :meth:pyfamilysafety.account.Account.set_device_limits.

Source code in pyfamilysafety/schedule.py
81
82
83
84
85
86
87
88
89
90
def __init__(
        self,
        platform: OverrideTarget,
        daily_restrictions: dict[DayOfWeek, DailyRestriction],
        mode: DeviceLimitsMode = DeviceLimitsMode.PER_DEVICE_TYPE,
        culture: str = "en-GB") -> None:
    self.platform = platform
    self.daily_restrictions = daily_restrictions
    self.mode = mode
    self.culture = culture

platform instance-attribute

platform = platform

daily_restrictions instance-attribute

daily_restrictions = daily_restrictions

mode instance-attribute

mode = mode

culture instance-attribute

culture = culture

to_dict

to_dict()

Convert to the API request format.

Source code in pyfamilysafety/schedule.py
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
def to_dict(self) -> dict:
    """Convert to the API request format."""
    return {
        "dailyRestrictions": {
            str(day): restriction.to_dict()
            for day, restriction in self.daily_restrictions.items()
        },
        "mode": str(self.mode),
        "appliesTo": str(self.platform),
        "culture": self.culture,
    }