simo 2.7.1__py3-none-any.whl → 2.7.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of simo might be problematic. Click here for more details.
- simo/core/__pycache__/controllers.cpython-38.pyc +0 -0
- simo/core/__pycache__/signal_receivers.cpython-38.pyc +0 -0
- simo/core/controllers.py +29 -0
- simo/fleet/__pycache__/controllers.cpython-38.pyc +0 -0
- simo/fleet/__pycache__/forms.cpython-38.pyc +0 -0
- simo/fleet/forms.py +6 -0
- simo/generic/__pycache__/controllers.cpython-38.pyc +0 -0
- simo/generic/__pycache__/forms.cpython-38.pyc +0 -0
- simo/generic/__pycache__/gateways.cpython-38.pyc +0 -0
- simo/generic/controllers.py +12 -0
- simo/generic/forms.py +41 -1
- simo/generic/gateways.py +76 -0
- {simo-2.7.1.dist-info → simo-2.7.2.dist-info}/METADATA +1 -1
- {simo-2.7.1.dist-info → simo-2.7.2.dist-info}/RECORD +18 -18
- {simo-2.7.1.dist-info → simo-2.7.2.dist-info}/LICENSE.md +0 -0
- {simo-2.7.1.dist-info → simo-2.7.2.dist-info}/WHEEL +0 -0
- {simo-2.7.1.dist-info → simo-2.7.2.dist-info}/entry_points.txt +0 -0
- {simo-2.7.1.dist-info → simo-2.7.2.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
simo/core/controllers.py
CHANGED
|
@@ -608,6 +608,15 @@ class Dimmer(ControllerBase, TimerMixin, OnOffPokerMixin):
|
|
|
608
608
|
else:
|
|
609
609
|
self.turn_on()
|
|
610
610
|
|
|
611
|
+
def fade_up(self):
|
|
612
|
+
raise NotImplemented()
|
|
613
|
+
|
|
614
|
+
def fade_down(self):
|
|
615
|
+
raise NotImplemented()
|
|
616
|
+
|
|
617
|
+
def fade_stop(self):
|
|
618
|
+
raise NotImplemented()
|
|
619
|
+
|
|
611
620
|
|
|
612
621
|
class DimmerPlus(ControllerBase, TimerMixin, OnOffPokerMixin):
|
|
613
622
|
name = _("Dimmer Plus")
|
|
@@ -689,6 +698,16 @@ class DimmerPlus(ControllerBase, TimerMixin, OnOffPokerMixin):
|
|
|
689
698
|
self.turn_on()
|
|
690
699
|
|
|
691
700
|
|
|
701
|
+
def fade_up(self):
|
|
702
|
+
raise NotImplemented()
|
|
703
|
+
|
|
704
|
+
def fade_down(self):
|
|
705
|
+
raise NotImplemented()
|
|
706
|
+
|
|
707
|
+
def fade_stop(self):
|
|
708
|
+
raise NotImplemented()
|
|
709
|
+
|
|
710
|
+
|
|
692
711
|
class RGBWLight(ControllerBase, TimerMixin, OnOffPokerMixin):
|
|
693
712
|
name = _("RGB(W) Light")
|
|
694
713
|
base_type = 'rgbw-light'
|
|
@@ -747,6 +766,16 @@ class RGBWLight(ControllerBase, TimerMixin, OnOffPokerMixin):
|
|
|
747
766
|
self.send(self.component.value)
|
|
748
767
|
|
|
749
768
|
|
|
769
|
+
def fade_up(self):
|
|
770
|
+
raise NotImplemented()
|
|
771
|
+
|
|
772
|
+
def fade_down(self):
|
|
773
|
+
raise NotImplemented()
|
|
774
|
+
|
|
775
|
+
def fade_stop(self):
|
|
776
|
+
raise NotImplemented()
|
|
777
|
+
|
|
778
|
+
|
|
750
779
|
class MultiSwitchBase(ControllerBase):
|
|
751
780
|
|
|
752
781
|
def _validate_val(self, value, occasion=None):
|
|
Binary file
|
|
Binary file
|
simo/fleet/forms.py
CHANGED
|
@@ -306,6 +306,12 @@ class ColonelButtonConfigForm(ColonelComponentForm):
|
|
|
306
306
|
('up', "UP (On +5V delivery)")
|
|
307
307
|
)
|
|
308
308
|
)
|
|
309
|
+
btn_type = forms.ChoiceField(
|
|
310
|
+
label="Type", initial='momentary',
|
|
311
|
+
choices=(
|
|
312
|
+
('momentary', "Momentary"), ('toggle', "Toggle")
|
|
313
|
+
)
|
|
314
|
+
)
|
|
309
315
|
|
|
310
316
|
def __init__(self, *args, **kwargs):
|
|
311
317
|
super().__init__(*args, **kwargs)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
simo/generic/controllers.py
CHANGED
|
@@ -33,6 +33,7 @@ from .app_widgets import (
|
|
|
33
33
|
WeatherWidget
|
|
34
34
|
)
|
|
35
35
|
from .forms import (
|
|
36
|
+
DimmableLightsGroupConfigForm, SwitchGroupConfigForm,
|
|
36
37
|
ThermostatConfigForm, AlarmGroupConfigForm,
|
|
37
38
|
IPCameraConfigForm, WeatherForm,
|
|
38
39
|
WateringConfigForm, StateSelectForm, MainStateSelectForm,
|
|
@@ -43,6 +44,17 @@ from .forms import (
|
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
|
|
47
|
+
class DimmableLightsGroup(Dimmer):
|
|
48
|
+
name = _("Dimmable Lights Group")
|
|
49
|
+
gateway_class = GenericGatewayHandler
|
|
50
|
+
config_form = DimmableLightsGroupConfigForm
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class SwitchGroup(Switch):
|
|
54
|
+
name = _("On/Off Group")
|
|
55
|
+
gateway_class = GenericGatewayHandler
|
|
56
|
+
config_form = SwitchGroupConfigForm
|
|
57
|
+
|
|
46
58
|
|
|
47
59
|
class Thermostat(ControllerBase):
|
|
48
60
|
name = _("Thermostat")
|
simo/generic/forms.py
CHANGED
|
@@ -16,7 +16,7 @@ from simo.core.form_fields import (
|
|
|
16
16
|
Select2ModelChoiceField, Select2ListChoiceField,
|
|
17
17
|
Select2ModelMultipleChoiceField
|
|
18
18
|
)
|
|
19
|
-
|
|
19
|
+
from simo.core.forms import DimmerConfigForm, SwitchForm
|
|
20
20
|
|
|
21
21
|
ACTION_METHODS = (
|
|
22
22
|
('turn_on', "Turn ON"), ('turn_off', "Turn OFF"),
|
|
@@ -26,6 +26,46 @@ ACTION_METHODS = (
|
|
|
26
26
|
)
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
class ControlForm(forms.Form):
|
|
30
|
+
button = Select2ModelChoiceField(
|
|
31
|
+
queryset=Component.objects.filter(base_type='button'),
|
|
32
|
+
url='autocomplete-component'
|
|
33
|
+
)
|
|
34
|
+
prefix = 'controls'
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class DimmableLightsGroupConfigForm(DimmerConfigForm):
|
|
38
|
+
slaves = Select2ModelMultipleChoiceField(
|
|
39
|
+
queryset=Component.objects.filter(
|
|
40
|
+
base_type__in=('dimmer', 'switch')
|
|
41
|
+
),
|
|
42
|
+
url='autocomplete-component',
|
|
43
|
+
forward=(forward.Const(['dimmer', 'switch'], 'base_type'),),
|
|
44
|
+
required=False
|
|
45
|
+
)
|
|
46
|
+
controls = FormsetField(
|
|
47
|
+
formset_factory(
|
|
48
|
+
ControlForm, can_delete=True, can_order=True, extra=0, max_num=999
|
|
49
|
+
)
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class SwitchGroupConfigForm(SwitchForm):
|
|
54
|
+
slaves = Select2ModelMultipleChoiceField(
|
|
55
|
+
queryset=Component.objects.filter(
|
|
56
|
+
base_type__in=('dimmer', 'switch')
|
|
57
|
+
),
|
|
58
|
+
url='autocomplete-component',
|
|
59
|
+
forward=(forward.Const(['dimmer', 'switch'], 'base_type'),),
|
|
60
|
+
required=False
|
|
61
|
+
)
|
|
62
|
+
controls = FormsetField(
|
|
63
|
+
formset_factory(
|
|
64
|
+
ControlForm, can_delete=True, can_order=True, extra=0, max_num=999
|
|
65
|
+
)
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
29
69
|
class ThermostatConfigForm(BaseComponentForm):
|
|
30
70
|
temperature_sensor = Select2ModelChoiceField(
|
|
31
71
|
queryset=Component.objects.filter(
|
simo/generic/gateways.py
CHANGED
|
@@ -59,6 +59,82 @@ class CameraWatcher(threading.Thread):
|
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
|
|
62
|
+
class GroupButtonsHandler:
|
|
63
|
+
|
|
64
|
+
def __init__(self, *args, **kwargs):
|
|
65
|
+
super().__init__(*args, **kwargs)
|
|
66
|
+
self.group_buttons = {}
|
|
67
|
+
self.fade_directions = {}
|
|
68
|
+
|
|
69
|
+
def watch_groups(self):
|
|
70
|
+
from .controllers import DimmableLightsGroup, SwitchGroup
|
|
71
|
+
current_group_buttons = {}
|
|
72
|
+
for group_comp in Component.objects.filter(
|
|
73
|
+
controller_uid__in=(DimmableLightsGroup.uid, SwitchGroup.uid)
|
|
74
|
+
):
|
|
75
|
+
for ctrl in group_comp.config.get('controls', []):
|
|
76
|
+
if ctrl['button'] not in current_group_buttons:
|
|
77
|
+
current_group_buttons[ctrl['button']] = set(group_comp.id)
|
|
78
|
+
else:
|
|
79
|
+
current_group_buttons[ctrl['button']].add(group_comp.id)
|
|
80
|
+
|
|
81
|
+
if ctrl['button'] not in self.group_buttons:
|
|
82
|
+
self.group_buttons[ctrl['button']] = set()
|
|
83
|
+
if group_comp.id not in self.group_buttons[ctrl['button']]:
|
|
84
|
+
self.group_buttons[ctrl['button']].add(group_comp.id)
|
|
85
|
+
btn = Component.objects.filter(id=ctrl['button']).first()
|
|
86
|
+
if btn:
|
|
87
|
+
btn.on_change(self.watch_group_button)
|
|
88
|
+
|
|
89
|
+
# remove groups and buttons that are no longer in use
|
|
90
|
+
for btn_id, groups in self.group_buttons.items():
|
|
91
|
+
if btn_id not in current_group_buttons:
|
|
92
|
+
self.group_buttons[btn_id] = set()
|
|
93
|
+
continue
|
|
94
|
+
self.group_buttons[btn_id] = current_group_buttons[btn_id]
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def watch_group_button(self, button):
|
|
98
|
+
group_ids = self.group_buttons.get(button.id)
|
|
99
|
+
if not group_ids:
|
|
100
|
+
return
|
|
101
|
+
|
|
102
|
+
btn_type = button.config.get('btn_type', 'momentary')
|
|
103
|
+
|
|
104
|
+
if btn_type == 'momentary':
|
|
105
|
+
if button.value not in ('click', 'hold', 'up', 'double-click'):
|
|
106
|
+
return
|
|
107
|
+
for g_id in group_ids:
|
|
108
|
+
group = Component.objects.filter(id=g_id).first()
|
|
109
|
+
if not group:
|
|
110
|
+
continue
|
|
111
|
+
if button.value == 'click':
|
|
112
|
+
group.toggle()
|
|
113
|
+
elif button.value == 'double-click':
|
|
114
|
+
group.send(group.config.get('max', 100))
|
|
115
|
+
elif button.value == 'down':
|
|
116
|
+
if self.fade_directions.get(group.id, 0) < 0:
|
|
117
|
+
self.fade_directions[group.id] = 1
|
|
118
|
+
group.fade_up()
|
|
119
|
+
else:
|
|
120
|
+
self.fade_directions[group.id] = -1
|
|
121
|
+
group.fade_down()
|
|
122
|
+
elif button.value == 'up':
|
|
123
|
+
if self.fade_directions.get(group.id):
|
|
124
|
+
self.fade_directions[group.id] = 0
|
|
125
|
+
group.fade_stop()
|
|
126
|
+
|
|
127
|
+
else: # toggle
|
|
128
|
+
if button.value not in ('down', 'up'):
|
|
129
|
+
return
|
|
130
|
+
for g_id in group_ids:
|
|
131
|
+
group = Component.objects.filter(id=g_id).first()
|
|
132
|
+
if not group:
|
|
133
|
+
continue
|
|
134
|
+
group.toggle()
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
62
138
|
class GenericGatewayHandler(BaseObjectCommandsGatewayHandler):
|
|
63
139
|
name = "Generic"
|
|
64
140
|
config_form = BaseGatewayForm
|
|
@@ -70,7 +70,7 @@ simo/core/auto_urls.py,sha256=FBDclIeRp5UVWomIUbRzUgY-AoMk-r2qC2htlwKD4Lo,1106
|
|
|
70
70
|
simo/core/autocomplete_views.py,sha256=x3MKOZvXYS3xVQ-V1S7Liv_U5bxr-uc0gePa85wv5nA,4561
|
|
71
71
|
simo/core/base_types.py,sha256=WypW8hTfzveuTQtruGjLYAGQZIuczxTlW-SdRk3iQug,666
|
|
72
72
|
simo/core/context.py,sha256=LKw1I4iIRnlnzoTCuSLLqDX7crHdBnMo3hjqYvVmzFc,1557
|
|
73
|
-
simo/core/controllers.py,sha256=
|
|
73
|
+
simo/core/controllers.py,sha256=Js4r5SBi-61IlXN24FJtIbdD8sFIrNamObBVX3zGyuE,36786
|
|
74
74
|
simo/core/dynamic_settings.py,sha256=bUs58XEZOCIEhg1TigR3LmYggli13KMryBZ9pC7ugAQ,1872
|
|
75
75
|
simo/core/events.py,sha256=1_KIk5pJqdLPRQlCQ9xSyALst2Cn0b2lAEAJ3QjwIjE,4801
|
|
76
76
|
simo/core/filters.py,sha256=6wbn8C2WvKTTjtfMwwLBp2Fib1V0-DMpS4iqJd6jJQo,2540
|
|
@@ -103,7 +103,7 @@ simo/core/__pycache__/auto_urls.cpython-38.pyc,sha256=ib_ns5Ko8ybfrdJJWYVV1jevih
|
|
|
103
103
|
simo/core/__pycache__/autocomplete_views.cpython-38.pyc,sha256=rZzjrxAir0HzN9uKPoXIY753f1CSdFWaSW7QBDen3qc,4448
|
|
104
104
|
simo/core/__pycache__/base_types.cpython-38.pyc,sha256=CX-qlF7CefRi_mCE954wYa9rUFR88mOl6g7fybDRu7g,803
|
|
105
105
|
simo/core/__pycache__/context.cpython-38.pyc,sha256=NlTHt2GvXxA21AhBkeyOLfRFUuXw7wmwqyNhhcDl2cw,1373
|
|
106
|
-
simo/core/__pycache__/controllers.cpython-38.pyc,sha256=
|
|
106
|
+
simo/core/__pycache__/controllers.cpython-38.pyc,sha256=669Uz5CUb10fh7PHePJxLngnbOCB3Cc4skapyvEVbhs,31829
|
|
107
107
|
simo/core/__pycache__/dynamic_settings.cpython-38.pyc,sha256=wGpnscX1DxFpRl54MQURhjz2aD3NJohSzw9JCFnzh2Y,2384
|
|
108
108
|
simo/core/__pycache__/events.cpython-38.pyc,sha256=1y8YaZsiDkBOeIWzH7SQz4holmMG_RLlMWi8kuSZcoE,5280
|
|
109
109
|
simo/core/__pycache__/filters.cpython-38.pyc,sha256=WBBDwcDQwOmgbrRhyUxenSN80rU4Eq9jQ6RcrRGCP_o,2440
|
|
@@ -117,7 +117,7 @@ simo/core/__pycache__/models.cpython-38.pyc,sha256=po4B4bMyA-KDBu8qbVwGjrpUZJQPV
|
|
|
117
117
|
simo/core/__pycache__/permissions.cpython-38.pyc,sha256=UdtxCTXPEbe99vgZOfRz9wfKSYvUn9hSRbpIV9CJSyI,2988
|
|
118
118
|
simo/core/__pycache__/routing.cpython-38.pyc,sha256=3T3FPJ8Cn99xZCGvMyg2xjl7al-Shm9CelbSpkJtNP8,599
|
|
119
119
|
simo/core/__pycache__/serializers.cpython-38.pyc,sha256=xegjaPbTp71RK9pfle_vgbHiUhr4CQIq34A7RxpvNGg,19817
|
|
120
|
-
simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=
|
|
120
|
+
simo/core/__pycache__/signal_receivers.cpython-38.pyc,sha256=v-qSKC9KX--aw9-vSNX8z8HXNFr0yOII0Aw8JxrYM0U,4920
|
|
121
121
|
simo/core/__pycache__/socket_consumers.cpython-38.pyc,sha256=KqbO1cOewodVPcy0-htVefyUjCuELKV0o7fOfYqfgPc,8490
|
|
122
122
|
simo/core/__pycache__/storage.cpython-38.pyc,sha256=9R1Xu0FJDflfRXUPsqEgt0SpwiP7FGk7HaR8s8XRyI8,721
|
|
123
123
|
simo/core/__pycache__/tasks.cpython-38.pyc,sha256=GFIC8IsQ_bK4rgNRl_oGbMCQHhbcgGS7dx-rjPcLy08,11220
|
|
@@ -10256,7 +10256,7 @@ simo/fleet/auto_urls.py,sha256=vrfrooPyY4pDuQjya-eLxCgZldfhwbEeEiXa7diO_CY,847
|
|
|
10256
10256
|
simo/fleet/base_types.py,sha256=wL9RVkHr0gA7HI1wZq0pruGEIgvQqpfnCL4cC3ywsvw,102
|
|
10257
10257
|
simo/fleet/ble.py,sha256=eHA_9ABjbmH1vUVCv9hiPXQL2GZZSEVwfO0xyI1S0nI,1081
|
|
10258
10258
|
simo/fleet/controllers.py,sha256=PezfOT-1N_UONSsbyTXEIyGO6Po57KdEBRv4yzk_sw0,28605
|
|
10259
|
-
simo/fleet/forms.py,sha256=
|
|
10259
|
+
simo/fleet/forms.py,sha256=cA0iqixII5k9LUqbMPWzTyvfu9SNH23ChH_Mt6C6Ggk,66913
|
|
10260
10260
|
simo/fleet/gateways.py,sha256=C7dyapWDlJ5erYPNLkSoH50I8kj0lIXicSno0_CrdXc,5783
|
|
10261
10261
|
simo/fleet/managers.py,sha256=ZNeHFSkF5kzsl9E1DCBevOW6kXJlD6kw0LU4B-JMOG8,828
|
|
10262
10262
|
simo/fleet/models.py,sha256=zPplx_v64nfKBmb-nCb74aCVtEeY3m3SjEy-VhbnydU,17511
|
|
@@ -10272,8 +10272,8 @@ simo/fleet/__pycache__/api.cpython-38.pyc,sha256=rZ1mkfkaMBEXhi9sw_jTKdk2CPJhBNx
|
|
|
10272
10272
|
simo/fleet/__pycache__/auto_urls.cpython-38.pyc,sha256=jHsvfwAumiBusr91QK1-qC-nmpPEC3r2uMGG8g0fABE,769
|
|
10273
10273
|
simo/fleet/__pycache__/base_types.cpython-38.pyc,sha256=deyPwjpT6xZiFxBGFnj5b7R-lbdOTh2krgpJhrcGVhc,274
|
|
10274
10274
|
simo/fleet/__pycache__/ble.cpython-38.pyc,sha256=Nrof9w7cm4OlpFWHeVnmvvanh2_oF9oQ3TknJiV93-0,1267
|
|
10275
|
-
simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=
|
|
10276
|
-
simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=
|
|
10275
|
+
simo/fleet/__pycache__/controllers.cpython-38.pyc,sha256=vH7mK1K4JBcLU9eKtqTJwbgB0SFMJ-s7WvO0qOsWjrg,24739
|
|
10276
|
+
simo/fleet/__pycache__/forms.cpython-38.pyc,sha256=lNb_jc66-aO1NkYIJs4TWOX7uS8H2a8oCP-HCLJZoNY,45169
|
|
10277
10277
|
simo/fleet/__pycache__/gateways.cpython-38.pyc,sha256=MIpXuGWitGNdsxJ99fWvMXJ6sVE96ac7iR4K4aM4Sds,5148
|
|
10278
10278
|
simo/fleet/__pycache__/managers.cpython-38.pyc,sha256=Vmm23zoQnS3-uS5_WJt2n3wtjhLiEhLWaYxXJCU6Gts,1339
|
|
10279
10279
|
simo/fleet/__pycache__/models.cpython-38.pyc,sha256=AXk1Q_nnHDXirHYgM3EW5pLsrR2CaPWk4EuvGCuDUpI,14131
|
|
@@ -10376,18 +10376,18 @@ simo/fleet/templates/fleet/controllers_info/ENS160AirQualitySensor.md,sha256=3LS
|
|
|
10376
10376
|
simo/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10377
10377
|
simo/generic/app_widgets.py,sha256=y8W3jR76Hh26O9pPQyg2SophMbYIOtAWD33MPKbB8Mg,856
|
|
10378
10378
|
simo/generic/base_types.py,sha256=u3SlfpNYaCwkVBwomWgso4ODzL71ay9MhiAW-bxgnDU,341
|
|
10379
|
-
simo/generic/controllers.py,sha256=
|
|
10380
|
-
simo/generic/forms.py,sha256=
|
|
10381
|
-
simo/generic/gateways.py,sha256=
|
|
10379
|
+
simo/generic/controllers.py,sha256=_WN2TTJ4JQWmnB-Zoew8p5J_xbbuQc-vVtXt4crS9sQ,46067
|
|
10380
|
+
simo/generic/forms.py,sha256=kQL8NdK_9-PxFcoPK6fMMCmtroY2Nbx_MqERgBoRg6g,22933
|
|
10381
|
+
simo/generic/gateways.py,sha256=cC7ZIS3vbhNzgPOR4DF8Fv-i_bXmmPLcm4BdWTlbgqc,15236
|
|
10382
10382
|
simo/generic/models.py,sha256=Adq7ipWK-renxJlNW-SZnAq2oGEOwKx8EdUWaKnfcVQ,7597
|
|
10383
10383
|
simo/generic/routing.py,sha256=elQVZmgnPiieEuti4sJ7zITk1hlRxpgbotcutJJgC60,228
|
|
10384
10384
|
simo/generic/socket_consumers.py,sha256=K2OjphIhKJH48BvfFfoCOyCQZ1NmXb_phs6y1IP-qaQ,1757
|
|
10385
10385
|
simo/generic/__pycache__/__init__.cpython-38.pyc,sha256=mLu54WS9KIl-pHwVCBKpsDFIlOqml--JsOVzAUHg6cU,161
|
|
10386
10386
|
simo/generic/__pycache__/app_widgets.cpython-38.pyc,sha256=D9b13pbMlirgHmjDnQhfLIDGSVINoSouHb4SWOeCRrs,1642
|
|
10387
10387
|
simo/generic/__pycache__/base_types.cpython-38.pyc,sha256=aV5NdIuvXR-ItKpI__MwcyPZHD6Z882TFdgYkPCkr1I,493
|
|
10388
|
-
simo/generic/__pycache__/controllers.cpython-38.pyc,sha256
|
|
10389
|
-
simo/generic/__pycache__/forms.cpython-38.pyc,sha256=
|
|
10390
|
-
simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=
|
|
10388
|
+
simo/generic/__pycache__/controllers.cpython-38.pyc,sha256=-QCIswFOwMP9jKONuPUcmcVEaZOzwKXfJimkUJXyBpg,30118
|
|
10389
|
+
simo/generic/__pycache__/forms.cpython-38.pyc,sha256=2rmamwhD9wdrW2zO73oAAbeAMZiJqGKB1lizwTRuGZs,17258
|
|
10390
|
+
simo/generic/__pycache__/gateways.cpython-38.pyc,sha256=lmerYEFqsJ2rOCvyv3-ObelirNUWgpj2Ea_wjlCNI8Q,11359
|
|
10391
10391
|
simo/generic/__pycache__/models.cpython-38.pyc,sha256=MZpum7syAFxuulf47K7gtUlJJ7xRD-IBUBAwUM1ZRnw,5825
|
|
10392
10392
|
simo/generic/__pycache__/routing.cpython-38.pyc,sha256=xtxTUTBTdivzFyA5Wh7k-hUj1WDO_FiRq6HYXdbr9Ks,382
|
|
10393
10393
|
simo/generic/__pycache__/socket_consumers.cpython-38.pyc,sha256=qJO5kvQLWhsQDOr1AtAtsAybuRWioxSkQei3Pc7rdP0,1737
|
|
@@ -10603,9 +10603,9 @@ simo/users/templates/invitations/expired_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
10603
10603
|
simo/users/templates/invitations/expired_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10604
10604
|
simo/users/templates/invitations/taken_msg.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10605
10605
|
simo/users/templates/invitations/taken_suggestion.html,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10606
|
-
simo-2.7.
|
|
10607
|
-
simo-2.7.
|
|
10608
|
-
simo-2.7.
|
|
10609
|
-
simo-2.7.
|
|
10610
|
-
simo-2.7.
|
|
10611
|
-
simo-2.7.
|
|
10606
|
+
simo-2.7.2.dist-info/LICENSE.md,sha256=M7wm1EmMGDtwPRdg7kW4d00h1uAXjKOT3HFScYQMeiE,34916
|
|
10607
|
+
simo-2.7.2.dist-info/METADATA,sha256=yeGvxE8PG-LGFzJfsEN6BQWNtnPsiMhL62y-6hFrclM,1952
|
|
10608
|
+
simo-2.7.2.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
|
10609
|
+
simo-2.7.2.dist-info/entry_points.txt,sha256=S9PwnUYmTSW7681GKDCxUbL0leRJIaRk6fDQIKgbZBA,135
|
|
10610
|
+
simo-2.7.2.dist-info/top_level.txt,sha256=GmS1hrAbpVqn9OWZh6UX82eIOdRLgYA82RG9fe8v4Rs,5
|
|
10611
|
+
simo-2.7.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|