Skip to content

Regional compliance

RegionalCompliance

Bases: Policy

Source code in june/policy/regional_compliance.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class RegionalCompliance(Policy):
    """ """
    policy_type = "regional_compliance"

    def __init__(self, start_time: str, end_time: str, compliances_per_region: dict):
        super().__init__(start_time=start_time, end_time=end_time)
        self.compliances_per_region = compliances_per_region

    def apply(self, date: datetime, regions: Regions):
        """

        Args:
            date (datetime): 
            regions (Regions): 

        """
        date = read_date(date)
        if self.is_active(date):
            for region in regions:
                region.regional_compliance = self.compliances_per_region[region.name]

apply(date, regions)

Parameters:

Name Type Description Default
date datetime
required
regions Regions
required
Source code in june/policy/regional_compliance.py
15
16
17
18
19
20
21
22
23
24
25
26
def apply(self, date: datetime, regions: Regions):
    """

    Args:
        date (datetime): 
        regions (Regions): 

    """
    date = read_date(date)
    if self.is_active(date):
        for region in regions:
            region.regional_compliance = self.compliances_per_region[region.name]

RegionalCompliances

Bases: PolicyCollection

Source code in june/policy/regional_compliance.py
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class RegionalCompliances(PolicyCollection):
    """ """
    policy_type = "regional_compliance"

    def apply(self, date: datetime, regions: Regions):
        """

        Args:
            date (datetime): 
            regions (Regions): 

        """
        # before applying compliances, reset all of them to 1.0
        if self.policies:
            for region in regions:
                region.regional_compliance = 1.0
        for policy in self.policies:
            policy.apply(date=date, regions=regions)

apply(date, regions)

Parameters:

Name Type Description Default
date datetime
required
regions Regions
required
Source code in june/policy/regional_compliance.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def apply(self, date: datetime, regions: Regions):
    """

    Args:
        date (datetime): 
        regions (Regions): 

    """
    # before applying compliances, reset all of them to 1.0
    if self.policies:
        for region in regions:
            region.regional_compliance = 1.0
    for policy in self.policies:
        policy.apply(date=date, regions=regions)

TieredLockdown

Bases: Policy

Source code in june/policy/regional_compliance.py
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class TieredLockdown(Policy):
    """ """
    policy_type = "tiered_lockdown"

    def __init__(self, start_time: str, end_time: str, tiers_per_region: dict):
        super().__init__(start_time=start_time, end_time=end_time)
        self.tiers_per_region = tiers_per_region

    def apply(self, date: datetime, regions: Regions):
        """

        Args:
            date (datetime): 
            regions (Regions): 

        """
        date = read_date(date)
        if self.is_active(date):
            for region in regions:
                lockdown_tier = int(self.tiers_per_region[region.name])
                region.policy["lockdown_tier"] = lockdown_tier
                if lockdown_tier == 2:
                    region.policy["local_closed_venues"].update("residence_visits")
                elif lockdown_tier == 3:
                    region.policy["local_closed_venues"].update(
                        set(("cinema", "residence_visits"))
                    )
                elif lockdown_tier == 4:
                    region.policy["local_closed_venues"].update(
                        set(("pub", "cinema", "gym", "residence_visits"))
                    )

apply(date, regions)

Parameters:

Name Type Description Default
date datetime
required
regions Regions
required
Source code in june/policy/regional_compliance.py
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
def apply(self, date: datetime, regions: Regions):
    """

    Args:
        date (datetime): 
        regions (Regions): 

    """
    date = read_date(date)
    if self.is_active(date):
        for region in regions:
            lockdown_tier = int(self.tiers_per_region[region.name])
            region.policy["lockdown_tier"] = lockdown_tier
            if lockdown_tier == 2:
                region.policy["local_closed_venues"].update("residence_visits")
            elif lockdown_tier == 3:
                region.policy["local_closed_venues"].update(
                    set(("cinema", "residence_visits"))
                )
            elif lockdown_tier == 4:
                region.policy["local_closed_venues"].update(
                    set(("pub", "cinema", "gym", "residence_visits"))
                )

TieredLockdowns

Bases: PolicyCollection

Source code in june/policy/regional_compliance.py
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
class TieredLockdowns(PolicyCollection):
    """ """
    policy_type = "tiered_lockdown"

    def apply(self, date: datetime, regions: Regions):
        """

        Args:
            date (datetime): 
            regions (Regions): 

        """
        # before applying compliances, reset all of them to None and empty sets
        if self.policies:
            for region in regions:
                region.policy["lockdown_tier"] = None
                region.policy["local_closed_venues"] = set()
        for policy in self.policies:
            policy.apply(date=date, regions=regions)

apply(date, regions)

Parameters:

Name Type Description Default
date datetime
required
regions Regions
required
Source code in june/policy/regional_compliance.py
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
def apply(self, date: datetime, regions: Regions):
    """

    Args:
        date (datetime): 
        regions (Regions): 

    """
    # before applying compliances, reset all of them to None and empty sets
    if self.policies:
        for region in regions:
            region.policy["lockdown_tier"] = None
            region.policy["local_closed_venues"] = set()
    for policy in self.policies:
        policy.apply(date=date, regions=regions)