lino 25.7.2__py3-none-any.whl → 25.8.0__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.
- lino/__init__.py +1 -1
- lino/api/doctest.py +28 -2
- lino/core/actions.py +12 -1
- lino/core/atomizer.py +9 -8
- lino/core/auth/utils.py +9 -1
- lino/core/callbacks.py +2 -2
- lino/core/dbtables.py +4 -1
- lino/core/fields.py +0 -1
- lino/core/kernel.py +9 -19
- lino/core/model.py +11 -3
- lino/core/site.py +10 -14
- lino/core/store.py +3 -3
- lino/core/utils.py +14 -13
- lino/help_texts.py +9 -7
- lino/management/commands/ddt.py +60 -0
- lino/management/commands/dump2py.py +13 -25
- lino/management/commands/prep.py +1 -1
- lino/mixins/__init__.py +3 -2
- lino/mixins/{duplicable.py → clonable.py} +45 -50
- lino/mixins/dupable.py +2 -2
- lino/mixins/registrable.py +3 -3
- lino/mixins/sequenced.py +12 -14
- lino/modlib/comments/mixins.py +5 -6
- lino/modlib/comments/models.py +14 -12
- lino/modlib/comments/ui.py +0 -1
- lino/modlib/dupable/models.py +2 -2
- lino/modlib/memo/mixins.py +2 -0
- lino/modlib/notify/api.py +5 -0
- lino/modlib/printing/mixins.py +2 -2
- lino/modlib/publisher/models.py +15 -8
- lino/modlib/summaries/mixins.py +6 -4
- lino/modlib/users/actions.py +5 -0
- lino/sphinxcontrib/__init__.py +1 -1
- lino/sphinxcontrib/actordoc.py +1 -1
- lino/utils/cycler.py +6 -3
- lino/utils/diag.py +2 -2
- lino/utils/dpy.py +70 -59
- lino/utils/instantiator.py +21 -1
- {lino-25.7.2.dist-info → lino-25.8.0.dist-info}/METADATA +1 -1
- {lino-25.7.2.dist-info → lino-25.8.0.dist-info}/RECORD +43 -42
- {lino-25.7.2.dist-info → lino-25.8.0.dist-info}/WHEEL +0 -0
- {lino-25.7.2.dist-info → lino-25.8.0.dist-info}/licenses/AUTHORS.rst +0 -0
- {lino-25.7.2.dist-info → lino-25.8.0.dist-info}/licenses/COPYING +0 -0
lino/utils/dpy.py
CHANGED
@@ -6,30 +6,27 @@ Defines Lino's **Python serializer and deserializer**. See
|
|
6
6
|
:doc:`Specification </specs/dpy>`.
|
7
7
|
"""
|
8
8
|
|
9
|
-
|
10
|
-
from packaging.version import Version
|
11
|
-
|
9
|
+
# import traceback
|
12
10
|
import os
|
13
11
|
import importlib.util
|
14
12
|
import sys
|
15
|
-
from
|
13
|
+
from packaging.version import Version
|
14
|
+
from pathlib import Path
|
16
15
|
# from lino import AFTER17
|
17
|
-
|
18
16
|
from django.conf import settings
|
19
17
|
from django.db import models
|
20
|
-
|
21
18
|
from django.utils import translation
|
22
19
|
from django.utils.module_loading import import_string
|
23
20
|
from django.utils.encoding import force_str
|
24
|
-
|
25
21
|
# from django.db import IntegrityError
|
26
22
|
from django.core.serializers import base
|
27
23
|
from django.core.exceptions import ValidationError
|
28
24
|
# from django.core.exceptions import ObjectDoesNotExist
|
29
|
-
|
30
25
|
# from lino.utils.mldbc.fields import BabelCharField, BabelTextField
|
31
26
|
# from lino.core.choicelists import ChoiceListField
|
32
27
|
from lino.core.utils import obj2str, full_model_name
|
28
|
+
from lino.core.fields import VirtualField
|
29
|
+
from lino import logger
|
33
30
|
|
34
31
|
SUFFIX = ".py"
|
35
32
|
|
@@ -118,7 +115,7 @@ if SUPPORT_EMPTY_FIXTURES:
|
|
118
115
|
class FakeDeserializedObject(base.DeserializedObject):
|
119
116
|
"""Imitates DeserializedObject required by loaddata.
|
120
117
|
|
121
|
-
Unlike normal DeserializedObject, we *
|
118
|
+
Unlike normal DeserializedObject, we do *not* want to bypass
|
122
119
|
pre_save and validation methods on the individual objects.
|
123
120
|
|
124
121
|
"""
|
@@ -126,7 +123,6 @@ class FakeDeserializedObject(base.DeserializedObject):
|
|
126
123
|
def __init__(self, deserializer, object, **kw):
|
127
124
|
super().__init__(object, deserializer, **kw)
|
128
125
|
self.object = object
|
129
|
-
# self.name = name
|
130
126
|
self.deserializer = deserializer
|
131
127
|
|
132
128
|
def save(self, *args, **kw):
|
@@ -134,16 +130,9 @@ class FakeDeserializedObject(base.DeserializedObject):
|
|
134
130
|
# logger.info("Loading %s...",self.name)
|
135
131
|
|
136
132
|
self.try_save(*args, **kw)
|
137
|
-
# if self.try_save(*args,**kw):
|
138
|
-
# self.deserializer.saved += 1
|
139
|
-
# else:
|
140
|
-
# self.deserializer.save_later.append(self)
|
141
133
|
|
142
134
|
def try_save(self, *args, **kw):
|
143
|
-
"""Try to save
|
144
|
-
on success, `False` if this instance wasn't saved and should be
|
145
|
-
deferred.
|
146
|
-
"""
|
135
|
+
"""Try to save this Model instance."""
|
147
136
|
obj = self.object
|
148
137
|
try:
|
149
138
|
m = getattr(obj, "before_dumpy_save", None)
|
@@ -152,39 +141,56 @@ class FakeDeserializedObject(base.DeserializedObject):
|
|
152
141
|
if not self.deserializer.quick:
|
153
142
|
try:
|
154
143
|
obj.full_clean()
|
155
|
-
except ValidationError
|
144
|
+
except ValidationError:
|
156
145
|
# raise Exception("{0} : {1}".format(obj2str(obj), e))
|
157
146
|
raise # Exception("{0} : {1}".format(obj2str(obj), e))
|
158
147
|
obj.save(*args, **kw)
|
159
|
-
logger.debug("%s has been saved"
|
148
|
+
logger.debug("%s has been saved", obj2str(obj))
|
160
149
|
self.deserializer.register_success()
|
161
|
-
return True
|
162
|
-
# except ValidationError,e:
|
163
|
-
# except ObjectDoesNotExist,e:
|
164
|
-
# except (ValidationError,ObjectDoesNotExist), e:
|
165
|
-
# except (ValidationError,ObjectDoesNotExist,IntegrityError), e:
|
166
150
|
except Exception as e:
|
167
|
-
if
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
"Failed to save %s from manual fixture:" % obj2str(obj)
|
173
|
-
)
|
174
|
-
raise
|
151
|
+
if not settings.SITE.loading_from_dump:
|
152
|
+
# hand-written fixtures are expected to yield in savable order
|
153
|
+
logger.warning(
|
154
|
+
"Failed to save %s from manual fixture:", obj2str(obj))
|
155
|
+
raise
|
175
156
|
deps = [
|
176
|
-
f.
|
177
|
-
|
178
|
-
if f.remote_field and f.remote_field.model
|
179
|
-
]
|
157
|
+
f for f in obj._meta.fields
|
158
|
+
if f.remote_field and f.remote_field.model]
|
180
159
|
if not deps:
|
181
|
-
logger.exception(e)
|
182
|
-
|
160
|
+
# logger.exception(e)
|
161
|
+
msg = f"Failed to save independent {obj2str(obj)}."
|
162
|
+
raise Exception(msg) from e
|
163
|
+
self.on_restore_failure(obj)
|
183
164
|
self.deserializer.register_failure(self, e)
|
184
|
-
|
185
|
-
|
186
|
-
#
|
187
|
-
#
|
165
|
+
|
166
|
+
def on_restore_failure(self, obj):
|
167
|
+
# When a database row fails to save during restore.py, Lino looks
|
168
|
+
# whether it has nullable FK fields that aren't null, set these to None
|
169
|
+
# and try to save an intermediate row.
|
170
|
+
|
171
|
+
nullable = dict()
|
172
|
+
# required = dict()
|
173
|
+
for f in obj._meta.fields:
|
174
|
+
if f.remote_field and f.remote_field.model:
|
175
|
+
if f.null and (v := f.value_from_object(obj)) is not None:
|
176
|
+
nullable[f] = v
|
177
|
+
if not (nullable):
|
178
|
+
return
|
179
|
+
for f in nullable.keys():
|
180
|
+
setattr(obj, f.attname, None)
|
181
|
+
# f.set_value_in_object(obj, None)
|
182
|
+
try:
|
183
|
+
obj.full_clean()
|
184
|
+
obj.save()
|
185
|
+
except Exception:
|
186
|
+
pass
|
187
|
+
for f, v in nullable.items():
|
188
|
+
setattr(obj, f.attname, v)
|
189
|
+
# f.set_value_in_object(obj, v)
|
190
|
+
logger.info(
|
191
|
+
"Save intermediate %s without %s",
|
192
|
+
obj.__class__.__name__,
|
193
|
+
", ".join([f"{f.name}={v}" for f, v in nullable.items()]))
|
188
194
|
|
189
195
|
|
190
196
|
class Serializer(base.Serializer):
|
@@ -205,7 +211,7 @@ class Serializer(base.Serializer):
|
|
205
211
|
raise NotImplementedError("Don't use dumpdata but `dump2py`")
|
206
212
|
|
207
213
|
|
208
|
-
class FlushDeferredObjects
|
214
|
+
class FlushDeferredObjects:
|
209
215
|
"""
|
210
216
|
Indicator class object.
|
211
217
|
Fixture may yield a `FlushDeferredObjects`
|
@@ -215,10 +221,11 @@ class FlushDeferredObjects(object):
|
|
215
221
|
pass
|
216
222
|
|
217
223
|
|
218
|
-
class LoaderBase
|
224
|
+
class LoaderBase:
|
219
225
|
quick = False
|
220
226
|
source_version = None
|
221
|
-
max_deferred_objects =
|
227
|
+
max_deferred_objects = 4000
|
228
|
+
strict = False
|
222
229
|
|
223
230
|
def __init__(self):
|
224
231
|
# logger.info("20120225 DpyLoader.__init__()")
|
@@ -282,13 +289,13 @@ class LoaderBase(object):
|
|
282
289
|
self.flush_deferred_objects()
|
283
290
|
if count > self.max_deferred_objects + 1:
|
284
291
|
raise Exception(
|
285
|
-
"More than {} deferred objects"
|
286
|
-
)
|
292
|
+
f"More than {self.max_deferred_objects} deferred objects")
|
287
293
|
l.append(obj)
|
288
294
|
# report a full traceback, but only once per model and
|
289
295
|
# exception type:
|
290
296
|
k = (obj.object.__class__, e.__class__)
|
291
297
|
if k not in self.reported_tracebacks:
|
298
|
+
# traceback.print_exc(e)
|
292
299
|
logger.exception(e)
|
293
300
|
self.reported_tracebacks.add(k)
|
294
301
|
|
@@ -333,14 +340,17 @@ class LoaderBase(object):
|
|
333
340
|
", ".join([str(o.object.pk) for o in objects]),
|
334
341
|
)
|
335
342
|
count += len(objects)
|
336
|
-
msg = "Abandoning with {} unsaved instances:{}"
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
#
|
342
|
-
#
|
343
|
-
#
|
343
|
+
msg = f"Abandoning with {count} unsaved instances:{s}"
|
344
|
+
if self.strict:
|
345
|
+
raise Exception(msg)
|
346
|
+
logger.warning(msg)
|
347
|
+
|
348
|
+
# Until 20250730: Don't raise an exception. The unsaved instances
|
349
|
+
# got lost and the loaddata should be done again, but meanwhile the
|
350
|
+
# database is not necessarily invalid and may be used for further
|
351
|
+
# testing. And anyway, loaddata would catch it and still continue.
|
352
|
+
# Since 20250730: But we need a way to make sure that the restore.py
|
353
|
+
# worked well.
|
344
354
|
|
345
355
|
settings.SITE.loading_from_dump = False
|
346
356
|
# reset to False because the same SITE might get reused by
|
@@ -350,11 +360,12 @@ class LoaderBase(object):
|
|
350
360
|
class DpyLoader(LoaderBase):
|
351
361
|
"""Instantiated by :xfile:`restore.py`."""
|
352
362
|
|
353
|
-
def __init__(self, globals_dict, quick=None):
|
363
|
+
def __init__(self, globals_dict, quick=None, strict=True):
|
354
364
|
if quick is not None:
|
355
365
|
self.quick = quick
|
356
366
|
self.globals_dict = globals_dict
|
357
|
-
|
367
|
+
self.strict = strict
|
368
|
+
super().__init__()
|
358
369
|
self.source_version = globals_dict["SOURCE_VERSION"]
|
359
370
|
site = globals_dict["settings"].SITE
|
360
371
|
site.startup()
|
@@ -369,7 +380,7 @@ class DpyDeserializer(LoaderBase):
|
|
369
380
|
"""The Django deserializer for :ref:`dpy`.
|
370
381
|
|
371
382
|
Note that this deserializer explicitly ignores fixtures whose
|
372
|
-
source file is located in the current directory because
|
383
|
+
source file is located in the current directory because in the case
|
373
384
|
of `.py` files this can lead to side effects when importing them.
|
374
385
|
See e.g. :ticket:`1029`. We consider it an odd behaviour of
|
375
386
|
Django to search for fixtures also in the current directory (and
|
lino/utils/instantiator.py
CHANGED
@@ -215,13 +215,33 @@ def create_and_get(model, **kw):
|
|
215
215
|
def make_if_needed(model, **values):
|
216
216
|
qs = model.objects.filter(**values)
|
217
217
|
if qs.count() == 1:
|
218
|
-
|
218
|
+
return qs.first()
|
219
|
+
# pass # ok, nothing to do
|
219
220
|
elif qs.count() == 0:
|
220
221
|
return model(**values)
|
221
222
|
else:
|
222
223
|
raise Exception(f"Multiple {model._meta.verbose_name_plural} for {values}")
|
223
224
|
|
224
225
|
|
226
|
+
def get_or_create(model, **kwargs):
|
227
|
+
# similar to Djanop's QuerySet.get_or_create() but calls full_clean
|
228
|
+
try:
|
229
|
+
obj = model.objects.get(**kwargs)
|
230
|
+
except model.DoesNotExist:
|
231
|
+
obj = model(**kwargs)
|
232
|
+
obj.full_clean()
|
233
|
+
obj.save()
|
234
|
+
return obj
|
235
|
+
|
236
|
+
|
237
|
+
def update_or_create(m, **kwargs):
|
238
|
+
if (obj := m.objects.filter(id=kwargs['id']).first()) is not None:
|
239
|
+
for k, v in kwargs.items():
|
240
|
+
setattr(obj, k, v)
|
241
|
+
return obj
|
242
|
+
return m(**kwargs)
|
243
|
+
|
244
|
+
|
225
245
|
def _test():
|
226
246
|
import doctest
|
227
247
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lino
|
3
|
-
Version: 25.
|
3
|
+
Version: 25.8.0
|
4
4
|
Summary: A framework for writing desktop-like web applications using Django and ExtJS or React
|
5
5
|
Project-URL: Homepage, https://www.lino-framework.org
|
6
6
|
Project-URL: Repository, https://gitlab.com/lino-framework/lino
|
@@ -1,14 +1,14 @@
|
|
1
1
|
lino/.cvsignore,sha256=1vrrWoP-WD8hPfCszHHIiJEi8KUMRCt5WvoKB9TSB1k,28
|
2
2
|
lino/SciTEDirectory.properties,sha256=rCYi_e-6h8Yx5DwXhAa6MBPlVINcl6Vv9BQDYZV2_go,28
|
3
|
-
lino/__init__.py,sha256=
|
3
|
+
lino/__init__.py,sha256=3LpwRlkMk6xt6IDAzhjZGE8PgM2L4Ypq6yP6kuhqqJs,6176
|
4
4
|
lino/ad.py,sha256=AQ-vJ4scac1mx3xegXezxnxyOQpV-a0q3VFMJSDbj2s,142
|
5
5
|
lino/apps.py,sha256=ECq-dPARDkuhngwNrcipse3b4Irj70HxJs44uWEZFc4,27
|
6
6
|
lino/hello.py,sha256=7-PJg7PnEiznyETqGjOwXcKh8rda0qLetpbS2gvRYy0,532
|
7
|
-
lino/help_texts.py,sha256=
|
7
|
+
lino/help_texts.py,sha256=RPw9EDHoQD7foqFTXNC8gWlnaWPqTZJQYgBTzNtDqIg,92385
|
8
8
|
lino/api/__init__.py,sha256=WmzHU-rHdZ68se_nI0SmepQTGE8-cd9tPpovHRH9aag,512
|
9
9
|
lino/api/ad.py,sha256=F6SrcKPRRalHKOZ7QLwsRWGq9hhykQIeo0b85cEk9NQ,314
|
10
10
|
lino/api/dd.py,sha256=w-5qIpWdXu5yXyCC4Qh4ApB3yZTn0AwdxAjEhH8PyVE,7510
|
11
|
-
lino/api/doctest.py,sha256=
|
11
|
+
lino/api/doctest.py,sha256=XPcuBVeBQyjsR789G9nIhgGzXKSNAq0MJIstPlhuQdU,26119
|
12
12
|
lino/api/rt.py,sha256=OCYWhrWnMcL988MdvBLBEP8qKQJEGXQhVoam_X0sotU,1376
|
13
13
|
lino/api/selenium.py,sha256=bOu8UaNz3Q7lGVvxjmvrtYtSWn1xfI1f5MN5sVcdYr8,9383
|
14
14
|
lino/api/shell.py,sha256=epyjwEZ396TiJ0AHqhVIvzX8TBIXU8xR4UHJlYOrRhc,536
|
@@ -28,45 +28,45 @@ lino/config/unused/403.html,sha256=ePwDIUXhz1iD8xXWWyt5xEvpcGIHU4LMnXma8x0ik1c,2
|
|
28
28
|
lino/config/unused/404.html,sha256=GOJrAyF6NcM69ETdSHgjff_-lvYs_-bOYhyZBem7x3I,220
|
29
29
|
lino/config/unused/500.html,sha256=aWmP37uPoMS-PJgPuBloxdx0nEreU7AvkXxsex3yVYs,544
|
30
30
|
lino/core/__init__.py,sha256=I4X69XK6Y1MZ8X6tC13Wmg13C3r5iTfYcFDiPJKpUdw,726
|
31
|
-
lino/core/actions.py,sha256=
|
31
|
+
lino/core/actions.py,sha256=0ebutR3pIMXa7cNpoVJlyt6TueWrfJNNygvQL7XkOgQ,32659
|
32
32
|
lino/core/actors.py,sha256=hbbzTpP7iBjQ2Eup4JhV5zx8w64arqPpkv4RnCptyKY,72585
|
33
|
-
lino/core/atomizer.py,sha256=
|
33
|
+
lino/core/atomizer.py,sha256=yK_l9-g8RZIjy2_iBB_efpyO1CrvegCBbjobD5mTTVc,13476
|
34
34
|
lino/core/boundaction.py,sha256=06NNPjCesEr-R1YQKkiuy8JKzDrMJJ948x9jczOkZqY,7850
|
35
|
-
lino/core/callbacks.py,sha256=
|
35
|
+
lino/core/callbacks.py,sha256=45lg153pzY7w94XLvh7QqHH7qOH5yTxLyRH7Vn_l1Ec,7549
|
36
36
|
lino/core/choicelists.py,sha256=5Xu3M5ZVOis2JoNSuNiJGBHdkqCwLofUxSd19iLIlKs,36503
|
37
37
|
lino/core/classproperty.py,sha256=_E95WPAs7BWbAuFpPvoYM2ZwW_mbq3rvF7o43WsMq_8,4316
|
38
38
|
lino/core/constants.py,sha256=GwSyViDk3wClZzgbrCo6N-JYOa3LCP46FSof-iZ5RRU,5085
|
39
39
|
lino/core/dashboard.py,sha256=kKUoZ1P6He0By3qUOkNIPAVF1zPkXxGFgHsCOdQ8syM,6672
|
40
|
-
lino/core/dbtables.py,sha256=
|
40
|
+
lino/core/dbtables.py,sha256=b3D7gNaLpNvRgiFmOcfIwnW14Z4eCT0nWaPE8OjziOU,29258
|
41
41
|
lino/core/dbutils.py,sha256=_QHcWd-ajLUwt5G8uOp8d47lZQKD3VseHnqKJke18rA,263
|
42
42
|
lino/core/ddh.py,sha256=dYScxWKTOCDEgow7wJNJe812ESasmmITPK2ovraBQno,3172
|
43
43
|
lino/core/diff.py,sha256=XQ-oQQDS_v3kXd4eRP9Hwr5UCgp-TPZIPVav9ZblUno,5882
|
44
44
|
lino/core/elems.py,sha256=vGAqGwWkNUG9mtQkeu-EOlqPpOHyvnI6uhHn9ivsNdw,110631
|
45
45
|
lino/core/exceptions.py,sha256=QDxDo5cllSyXQ8VWet9hGXzNadxCOmwMVrFXc6V-vpE,665
|
46
|
-
lino/core/fields.py,sha256=
|
46
|
+
lino/core/fields.py,sha256=r8ZySAvyn2ZCkppPdgTVmqa0IPygM6xWU9GEgoCSQ-A,54775
|
47
47
|
lino/core/frames.py,sha256=ISxgq9zyZfqW3tDZMWdKi9Ij455lT_81qBH0xex0bfE,1161
|
48
48
|
lino/core/gfks.py,sha256=6VXn2FSIXOrwVq0stfbPevT37EWg1tg4Fn-HMNVnbmk,1970
|
49
49
|
lino/core/help.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
50
|
lino/core/inject.py,sha256=Qd_PGEn0yMXNYVPI0wCv1vvo2CNdlPkyoBmKZELOtGM,13422
|
51
|
-
lino/core/kernel.py,sha256=
|
51
|
+
lino/core/kernel.py,sha256=WbVyCANXcth5b-QGknJjidWc2mlmNjEUXiHStXzm8c0,48522
|
52
52
|
lino/core/keyboard.py,sha256=W3jA6qtB5HMppoNnd_6PgIM7ZlyHilJEhBvdeZTY7Xk,1283
|
53
53
|
lino/core/layouts.py,sha256=CWhKgCEBnjn39RMFRYUklPEvvCnZrDXhtigZpGuiR8o,28176
|
54
54
|
lino/core/menus.py,sha256=oZN93iwQU4vfUCuxQzaVz2xcccN5AG6NG2wGruL74sU,10713
|
55
55
|
lino/core/merge.py,sha256=sKtTeZtHdoDKerdHj4NXuXXNzpKDsfdPaiq-CY0NqQc,9094
|
56
|
-
lino/core/model.py,sha256=
|
56
|
+
lino/core/model.py,sha256=jcjCuB_Rg3JBvXUHT8f5kz-DlwZDBQla7kB19e1BQBs,37427
|
57
57
|
lino/core/permissions.py,sha256=sNReMhnjIpOZcJ79Z4k-Emp55evblExJZwH-PM-efcA,7579
|
58
58
|
lino/core/plugin.py,sha256=ZuA2d1oa3Mqx_jyPIwIV68cyzawLw_grthliIo83nuM,6835
|
59
59
|
lino/core/renderer.py,sha256=HhRC_gtrapNLw2Xl-cs67YdI_NdEdJ2ULsbvs5gb2wA,48252
|
60
60
|
lino/core/requests.py,sha256=_kwmx8VAwdaPssIdsZt_GzCst67BTR7WwVv4z_KCsNo,96389
|
61
61
|
lino/core/roles.py,sha256=PXwk436xUupxdbJcygRSYFu7ixfKjAJPQRUQ8sy0lB0,4425
|
62
62
|
lino/core/signals.py,sha256=ORY2s3Krlh9n24XyHetfwbeUhCqzib6YSqWeFTTY7ps,979
|
63
|
-
lino/core/site.py,sha256=
|
64
|
-
lino/core/store.py,sha256=
|
63
|
+
lino/core/site.py,sha256=DiKF-yRzubEE7xpBntBh4LGlbIaOs6jNd2dT1uTh9dg,83401
|
64
|
+
lino/core/store.py,sha256=bbWrbsV-hPS1FF3e2ABiQHQ_Q61tD2XSRBDSwoTW6jQ,46093
|
65
65
|
lino/core/tables.py,sha256=sjmVu3A8gnamxwy16n76UJy2BXgiqeNeCEbI4oGd93Q,25431
|
66
66
|
lino/core/urls.py,sha256=06QlmN1vpxjmb5snO3SPpP6lX1pMdE60bTiBiC77_vQ,2677
|
67
67
|
lino/core/user_types.py,sha256=0iSYmzr2M9v2Mn2y6hzAZeqareUT-gD7l3MfIPyG9ZI,867
|
68
68
|
lino/core/userprefs.py,sha256=cmufIS9xJErKDrw05uoWtQTUR6WRWIGkU1KdAqzNr5M,2850
|
69
|
-
lino/core/utils.py,sha256=
|
69
|
+
lino/core/utils.py,sha256=DD3v75WK3sCmAaRQH3WTX3phbEsunPvepA0O5g1PBaw,40495
|
70
70
|
lino/core/views.py,sha256=qLjEN6GSXScbmAnKN7yDHySmsjL0h4sMKRIQCpOEdPU,7026
|
71
71
|
lino/core/widgets.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
72
72
|
lino/core/workflows.py,sha256=6DJ-sCcZ7kwUWYvArD2_j4NZBia0S3OgHySifC-NSuQ,10584
|
@@ -74,7 +74,7 @@ lino/core/auth/__init__.py,sha256=gbO35DCpyHQV9zjV1l349HQMME9-YgQ1h4amVOHywAc,98
|
|
74
74
|
lino/core/auth/apps.py,sha256=XCo18f23cEWZiZd4DUgL0JMTgxeERWFuQA8cQFQfUls,47
|
75
75
|
lino/core/auth/backends.py,sha256=IN3UHtfCb0AQqQL6MzIjhu-ESEphNDu1Q86qT48RsBI,8183
|
76
76
|
lino/core/auth/middleware.py,sha256=1c_z4lP_Rhbw7pdCapprGkjIXX40OJgIlFyQew4O-Nc,9708
|
77
|
-
lino/core/auth/utils.py,sha256=
|
77
|
+
lino/core/auth/utils.py,sha256=wPR0rxkuYuLv7_-eU-Qm5MsQ0nlM8GqlFZF2Iwzam8U,4401
|
78
78
|
lino/core/management/__init__.py,sha256=fp1cONBXgq1IftPk5c4b63gRlYOWpT5VzCIKrx0aGlE,61
|
79
79
|
lino/fake_migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
80
|
lino/locale/django.pot,sha256=iyeDILZFawKvi1w-4END2Xa9TDBw81ldWgbWegdGC9c,158276
|
@@ -98,9 +98,10 @@ lino/locale/zh_Hant/LC_MESSAGES/django.po,sha256=t4Sjt5ygmJzPhmf5FqEgQmRKoFErB0R
|
|
98
98
|
lino/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
99
99
|
lino/management/commands/__init__.py,sha256=raVDRiXns3SegyXEhaLZMcxfEDs7ggy2nFUN5D0f5F0,47
|
100
100
|
lino/management/commands/buildcache.py,sha256=MrOio6uBtQNW5gnbRrPIjarwUe18R-irxC7dLBBCpR4,1949
|
101
|
+
lino/management/commands/ddt.py,sha256=bn9DqZCztwJooa8u9lDBT96sB6o8on1aJWAUKafoQT8,2347
|
101
102
|
lino/management/commands/demotest.py,sha256=NCUr3ttqU0oorOIc3Z6R_cNNgw5_OzHDbQf0HWlcB1g,4877
|
102
103
|
lino/management/commands/diag.py,sha256=vt-NlZUx5gf7T4EpbM-gle3tAwMuwfPQY8lUgxjFaUw,478
|
103
|
-
lino/management/commands/dump2py.py,sha256=
|
104
|
+
lino/management/commands/dump2py.py,sha256=V2weGrZnb2JzqNuJrmLWnkeVJFVHRbA-6f7b4f7cPBk,19895
|
104
105
|
lino/management/commands/dump_settings.py,sha256=tGOR4h_ueVe2DOk84ILFvzvndt0doshvaxRkybB-rnY,2009
|
105
106
|
lino/management/commands/initdb.py,sha256=j_cWTlugP2-UP_qnHpXmz_pzPGRK1oORymjxphhcdEg,11398
|
106
107
|
lino/management/commands/install.py,sha256=k7lCJznVLS6swR4ayKNulj5TPpJ3qf99Fha87TZAaUk,1889
|
@@ -109,23 +110,23 @@ lino/management/commands/makescreenshots.py,sha256=fJF7ATZz7_s1IWkkYMEHVTLB5r5C1
|
|
109
110
|
lino/management/commands/makeui.py,sha256=qYz68fnUKNXicZfGy3GXdjIZubhg1KyQnqjMblFN_LY,4813
|
110
111
|
lino/management/commands/mergedata.py,sha256=-dPvBtyc-AqKpQeL4TUd2IKHGe8EaaW8Citcsp_hwEU,2527
|
111
112
|
lino/management/commands/passwd.py,sha256=S-7qyUWOaBnqRo_quwWewJjzwonqK4PBP2j8fuBGy3c,3012
|
112
|
-
lino/management/commands/prep.py,sha256=
|
113
|
+
lino/management/commands/prep.py,sha256=dsHu4owaAJB3kIlRLh-11WN3mMLR3I2EpEYOxBWJGfM,2156
|
113
114
|
lino/management/commands/qtclient.py,sha256=ltZyz-SmIevotRmv26TmPiW8VTXKK37DUwdwwMUzrHI,4715
|
114
115
|
lino/management/commands/resetsequences.py,sha256=v7MdzJCw-rBXljttCsgoMIi-cgubCPptXDlcNO0pCjw,978
|
115
116
|
lino/management/commands/run.py,sha256=MiK53KIACYKDTKF6knJGwU-uzEApGnDxByi-3_nrTjQ,1115
|
116
117
|
lino/management/commands/show.py,sha256=p59mer0ZDhNuasUzJpY0HbKr_st5_BMuwygInzp_yew,1371
|
117
118
|
lino/management/commands/syncscreenshots.py,sha256=XYZhqfm5_RwJzVFNGhHJKucl4j6T6mYo2GsDaUzvjAs,1561
|
118
119
|
lino/management/commands/update_conf.py,sha256=saAaQdPhn3mNOoHcBxOFSf_vBEgM-aopTHq1sJN20Bo,1026
|
119
|
-
lino/mixins/__init__.py,sha256=
|
120
|
-
lino/mixins/
|
121
|
-
lino/mixins/
|
120
|
+
lino/mixins/__init__.py,sha256=M5P13IaRIfz-73Lz1EKCArARXHd5Dz8jKoV5c0Z0bZc,8788
|
121
|
+
lino/mixins/clonable.py,sha256=6wJeUl_dHuVv60fFVZlCMcqsrFBbo5gGzXNWxQjOAoM,4631
|
122
|
+
lino/mixins/dupable.py,sha256=_uXPiD29dYzzzAIPuw0urBRApJ2Y4-kNDJg5ye-lGf4,10215
|
122
123
|
lino/mixins/human.py,sha256=YDIfIHHAaVmzd3uGsJp_vDvkaBWOp09I7i4AGNy9YsQ,13255
|
123
124
|
lino/mixins/periods.py,sha256=b2vucnjFXYalxiDlH_LsSfPwJU5tcluKfFAaLS3vTck,11519
|
124
125
|
lino/mixins/polymorphic.py,sha256=MLbfOeIYRoDZO4048X2oWhG5cxds2pLkwciXcw1xjVQ,9393
|
125
126
|
lino/mixins/printable.py,sha256=4U8M1lrTjUeuaPwrcWoanCBo53iAxiNpSTsVctI-gI0,199
|
126
127
|
lino/mixins/ref.py,sha256=qV8CprGCvwzzWTl6LQc9I1RwD8pziD0F7Ykoaznm8wM,5550
|
127
|
-
lino/mixins/registrable.py,sha256=
|
128
|
-
lino/mixins/sequenced.py,sha256=
|
128
|
+
lino/mixins/registrable.py,sha256=DYiwiIoYMO488ZGX7C5PRbKz9HBpzk1rG6q9-_WvymQ,7208
|
129
|
+
lino/mixins/sequenced.py,sha256=3DvjBEHLHacbBBq6iiVGftcvOPhBVpA9FN_tvNc6Bpo,16567
|
129
130
|
lino/modlib/__init__.py,sha256=cO31gNu2oRkp7o2v3D9gK2H7j4jF9rbVyPxPZhZQwrQ,940
|
130
131
|
lino/modlib/about/__init__.py,sha256=jhqGQIXU1o7KkmmQjfwPKJc3buibB09Fy55carAmi7U,342
|
131
132
|
lino/modlib/about/choicelists.py,sha256=2bxDb2u7cFacBOgLoEWrMmzQ4BJ3x1pmhdgqxzUp-Rw,1424
|
@@ -173,10 +174,10 @@ lino/modlib/checkdata/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-
|
|
173
174
|
lino/modlib/checkdata/management/commands/checkdata.py,sha256=z-mvg8R0G7-BiWcyeyeMUoaLEhi9n58lockOtPdmhCg,1962
|
174
175
|
lino/modlib/comments/__init__.py,sha256=XoRLIB-pSsz4EfA2FhsbKQ27fsW_AAvS7SyA0_vhHv8,1678
|
175
176
|
lino/modlib/comments/choicelists.py,sha256=SIA7P_KwtaayqOJxCkwyZouK0Z23-2v4ZFV9a0Zexnk,3314
|
176
|
-
lino/modlib/comments/mixins.py,sha256=
|
177
|
-
lino/modlib/comments/models.py,sha256=
|
177
|
+
lino/modlib/comments/mixins.py,sha256=pDlWCsBmIDlGM5EC7znciY5-GytApn6_KuUelWfp1Lo,4370
|
178
|
+
lino/modlib/comments/models.py,sha256=adzmBA5MBufTcgEIqAKBowz57yr6qoWkBtVd88DHb5M,15980
|
178
179
|
lino/modlib/comments/roles.py,sha256=z3gctvlTa_5PAs-D4pounyzNyuEc31jTFq9g33r6Z1w,751
|
179
|
-
lino/modlib/comments/ui.py,sha256=
|
180
|
+
lino/modlib/comments/ui.py,sha256=Ttl-Fgx6AzPbeLA0DWE8xPbcHpAoJC5A4s_7QWNCaI8,9909
|
180
181
|
lino/modlib/comments/config/comments/comments.js,sha256=7oAnNyx_MKM1iWPu-QSp6iKfnOVdgq7EciQPpxTvYU8,242
|
181
182
|
lino/modlib/comments/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
182
183
|
lino/modlib/comments/fixtures/demo2.py,sha256=DSIqNtGOQlwbg8k43nE2ax1x-H_ifRsozvw6LZM330Y,25407
|
@@ -184,7 +185,7 @@ lino/modlib/dashboard/__init__.py,sha256=_PFbmakUn8DShXyJY3EfAcuZtX5ofWnS-8dk7s1
|
|
184
185
|
lino/modlib/dashboard/models.py,sha256=EgRNg88dmz-OlIdi1SyEuerWMsRqKIfqE2MgKL7kApw,3510
|
185
186
|
lino/modlib/dupable/__init__.py,sha256=fIQ8wj-T8ZbkjwQgW_-ankJsHLjPMepOTo32mJXNCvI,532
|
186
187
|
lino/modlib/dupable/mixins.py,sha256=SZ2Exe5q3ANYsP7gnEXQuQczwCDKdRfFvOavreu4mYI,6324
|
187
|
-
lino/modlib/dupable/models.py,sha256=
|
188
|
+
lino/modlib/dupable/models.py,sha256=fcPbWRLwAVOQ4y_E3kaeHUanxmZTS69dlg9TLNCeyZs,4575
|
188
189
|
lino/modlib/export_excel/__init__.py,sha256=HrsrhXjIMvMHRGu8whH3A_WijZWrH35p2cQsFXK60DY,356
|
189
190
|
lino/modlib/export_excel/models.py,sha256=u9COKVdVsPwGk5WjgVarjLSkxmS-KOdohXfH4CruF_c,5353
|
190
191
|
lino/modlib/extjs/__init__.py,sha256=6UBWAWSROwy3DfTXQmVUVJTF6eZ_e2k3BEfE4wtqVhU,10172
|
@@ -3541,7 +3542,7 @@ lino/modlib/linod/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
3541
3542
|
lino/modlib/linod/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3542
3543
|
lino/modlib/linod/management/commands/linod.py,sha256=SzJ6-yRpI1QFrXqiS8AO7_c2NmkMdV4JpFhfyGzs5eI,2587
|
3543
3544
|
lino/modlib/memo/__init__.py,sha256=mM4xIODNczmmn43ympj_Un7sPyc9RuIr6zmGKYB5vkk,5381
|
3544
|
-
lino/modlib/memo/mixins.py,sha256=
|
3545
|
+
lino/modlib/memo/mixins.py,sha256=cu5BkaYgNtFtJufqphlJrNJWO_wksZDqMdaQVBSrGAQ,10954
|
3545
3546
|
lino/modlib/memo/models.py,sha256=zUEvWu0dK5QhkU3DeMqNqsrzSUzOl6DLZaJBNytfgrs,4388
|
3546
3547
|
lino/modlib/memo/parser.py,sha256=h21I0EjXfV2oHvekp5LxqtfEGlHREa1eOFHU3yC3sOw,13029
|
3547
3548
|
lino/modlib/memo/views.py,sha256=H3g_nuiMzguptXLSWaWLJClU7BefXPFn9Rh8UIVVBeg,555
|
@@ -3550,7 +3551,7 @@ lino/modlib/memo/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
|
|
3550
3551
|
lino/modlib/memo/management/commands/removeurls.py,sha256=wZfy-u2ylCF-oKEgaMgvw9zvFIbgV3TZNUcJz4qvE2k,2133
|
3551
3552
|
lino/modlib/notify/__init__.py,sha256=suo7EMVdyTPTPFwuU2KZL25PwIEstTvvR4Turgdz7UE,6926
|
3552
3553
|
lino/modlib/notify/actions.py,sha256=ClRKDjmgx3m43IZ5cx0TdxXN_pU6hLIlo_jCwEW2LhY,2468
|
3553
|
-
lino/modlib/notify/api.py,sha256=
|
3554
|
+
lino/modlib/notify/api.py,sha256=oZemK9G8Ie6O8iEMDl5mv7BbpCpbfBHbk0xI9125RBY,4366
|
3554
3555
|
lino/modlib/notify/choicelists.py,sha256=7ZkYNMOXNDfyTvdx8Sn-Gsma9f31o-6G1CtivXmQDmA,1324
|
3555
3556
|
lino/modlib/notify/consumers.py,sha256=YaEAhAi_Oq5ovakuP5DI21YIAMvRqQcf4K8MBilcN2w,1529
|
3556
3557
|
lino/modlib/notify/mixins.py,sha256=rwsTgqpzvyiekOqHpxQRTPPdOhv2ZIPrW03YSATfdeE,3903
|
@@ -3582,7 +3583,7 @@ lino/modlib/periods/fixtures/std.py,sha256=aWzt-frGjzPDwQ2pCKU1nT3oE4xzm7AQ8uLTJ
|
|
3582
3583
|
lino/modlib/printing/__init__.py,sha256=u1fq44d073-IDH_t8hWs1sQdlAHdsCP85sfEOMSW5L4,689
|
3583
3584
|
lino/modlib/printing/actions.py,sha256=gn4XqIvToXUumymDA20sl7RRsPOejCMu8dKZ3NJJKcE,11669
|
3584
3585
|
lino/modlib/printing/choicelists.py,sha256=UeOVlkYsLV7gxmVWuKqgqrU5zRlYyUck_3ebKDYnqDA,9743
|
3585
|
-
lino/modlib/printing/mixins.py,sha256=
|
3586
|
+
lino/modlib/printing/mixins.py,sha256=meu4JvOJ_ErAOOR7qF9tEZZI-9NlRGa3z8f7KG9uHik,8335
|
3586
3587
|
lino/modlib/printing/models.py,sha256=fd-BEKSLpgxPnkh9U7fg2tjNy39exBi3xJC9VzJuXdU,185
|
3587
3588
|
lino/modlib/printing/utils.py,sha256=LUO9769wJvHCPZIqeVQ9XAS6UKJ6BfJbiwO8Dt1kHc4,737
|
3588
3589
|
lino/modlib/printing/config/report/Default.odt,sha256=4X8UD9H_5Th2CELP0C6DTe4g0ZNUPXAg1C00xP3Qluc,10930
|
@@ -3590,7 +3591,7 @@ lino/modlib/printing/config/report/Default.wk.html,sha256=4Ssx2LWm1gVpXf0Q4XoSY1
|
|
3590
3591
|
lino/modlib/publisher/__init__.py,sha256=9w4cclyodBB3PO5rFzheIkzJs-tfA62PSGx2WI0NL5Q,2303
|
3591
3592
|
lino/modlib/publisher/choicelists.py,sha256=gVzjyp1sJ-XewAW-I_bCrKdTLgygLzh1ZwFI1rKyPdo,9070
|
3592
3593
|
lino/modlib/publisher/mixins.py,sha256=yRxAtFSNe9aVvdY-th_a5wmQ76jBfKYWzeNUn-efJMA,6651
|
3593
|
-
lino/modlib/publisher/models.py,sha256=
|
3594
|
+
lino/modlib/publisher/models.py,sha256=BvGv6JxdrKoa1VJITOw5Dlbwj96lRdDkCGcRc3uoxG4,17584
|
3594
3595
|
lino/modlib/publisher/renderer.py,sha256=Rl6fX8PzfX6crmnUh8mdU5Mpe44mSN5lTu_Pv8aVSCk,1845
|
3595
3596
|
lino/modlib/publisher/ui.py,sha256=qWp3JWhO6zN_HSZvSlolmNTgiZgoJeY2_TIDh9nYf3Q,4491
|
3596
3597
|
lino/modlib/publisher/views.py,sha256=l_GomdliB1qCylg7jKKkay3ZgAaOPfWNQQ6ZPDjAUl0,2214
|
@@ -3629,7 +3630,7 @@ lino/modlib/smtpd/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
3629
3630
|
lino/modlib/smtpd/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3630
3631
|
lino/modlib/smtpd/management/commands/recmail.py,sha256=_0co9uNx3Cq0zudrho-630yupuSCRM-Ilc5cIug3exE,1980
|
3631
3632
|
lino/modlib/summaries/__init__.py,sha256=IPoKcanVyKdWx2M1uSekQbsDUcdpw8yHmGKhiWtJIr0,538
|
3632
|
-
lino/modlib/summaries/mixins.py,sha256=
|
3633
|
+
lino/modlib/summaries/mixins.py,sha256=dUf8Lwo8ZSgXCAeUIXgB2G0PrW7415lBsSzPfZDXzQM,5844
|
3633
3634
|
lino/modlib/summaries/models.py,sha256=vx28VP6ApD9D9tgoemw6x2VTZZNLbMCfnRo75f4jjTw,2039
|
3634
3635
|
lino/modlib/summaries/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3635
3636
|
lino/modlib/summaries/fixtures/checksummaries.py,sha256=WOBdRAZkdje_2CGJof6BxhSNTQkCgBT0ri4E1heXl-8,382
|
@@ -4407,7 +4408,7 @@ lino/modlib/uploads/fixtures/demo.py,sha256=rhidbKN4vOyzqnRLMXu3gkx4zAtxGj3FoSz0
|
|
4407
4408
|
lino/modlib/uploads/fixtures/demo3.py,sha256=q0bwZrx5XtRsRlFpsa33fL0sCl7IdCYaP9E1rhCnJt4,547
|
4408
4409
|
lino/modlib/uploads/fixtures/std.py,sha256=nb5oRcX_WrkTLaGoch6PT7GA0FPKmqbN-BdlPq-hHSc,516
|
4409
4410
|
lino/modlib/users/__init__.py,sha256=P9am0pJURsgCmx9J55q8LFChF8Ga9mody1PtJRXWbvM,4578
|
4410
|
-
lino/modlib/users/actions.py,sha256=
|
4411
|
+
lino/modlib/users/actions.py,sha256=NcJVCfIhP3moN2MvhIonyCKzld7ruUtnCX4tFVMK7_c,18445
|
4411
4412
|
lino/modlib/users/choicelists.py,sha256=-X76C1NxIs5e7rFHp5Z0kjJkA1NlOP2vdLKGkI2wZRU,3876
|
4412
4413
|
lino/modlib/users/mixins.py,sha256=Ukib2jUnDR2MVJrASpmzoPS_eke-Z431U78JDPe8ysk,14275
|
4413
4414
|
lino/modlib/users/models.py,sha256=V5r_aY7M7gXfY1wAcIknacwsF8k9vtiMY898-y7GSjE,17842
|
@@ -4433,8 +4434,8 @@ lino/projects/__init__.py,sha256=clYlClMVuUD0O5h_0rtmolCoA_V4fn7f5bUb6iSJn6I,111
|
|
4433
4434
|
lino/projects/std/__init__.py,sha256=F1MQWdg7KpmHmKW-vWKRI0kwrkFd1nefWviKf4IIMD0,169
|
4434
4435
|
lino/projects/std/settings.py,sha256=wZBvXavMo3sTsSOj4vm4Kgd9Cw9EgoGYFJJcJ1JzxeA,2831
|
4435
4436
|
lino/projects/std/settings_test.py,sha256=qkxqAanlEvcuqOSuMtO8oGKnevftXflRmAxeyOicuSg,392
|
4436
|
-
lino/sphinxcontrib/__init__.py,sha256=
|
4437
|
-
lino/sphinxcontrib/actordoc.py,sha256=
|
4437
|
+
lino/sphinxcontrib/__init__.py,sha256=sg03m76tbuhgXW4JranBaVj0HvBPPSVMwFATG413KWA,3968
|
4438
|
+
lino/sphinxcontrib/actordoc.py,sha256=Q5tuu1gRN0WJ_m-x_72Tq6UiZXK2_EznB4OoEUnnFwM,20708
|
4438
4439
|
lino/sphinxcontrib/base.py,sha256=pq5u4bFSxMgPm9OMDo8xPVGhuS6MZAUd9bF6rQCCHJs,1193
|
4439
4440
|
lino/sphinxcontrib/help_texts_extractor.py,sha256=mlHyeiIdzbfzQXkT8j8skdcBQ-FV3zAPW2DXnY8Hs1I,10385
|
4440
4441
|
lino/sphinxcontrib/logo/__init__.py,sha256=dCHNLzhlMdSYVMui3vc2ybzPU6D4GikiRP-G9SCu1TA,2257
|
@@ -4585,22 +4586,22 @@ lino/utils/ajax.py,sha256=SdMckREfEk6-0oaXZNdEUfi1pL-OwnwS5YzaGbXLjEs,3254
|
|
4585
4586
|
lino/utils/choosers.py,sha256=V3Eo0VtGR0t708DeiSkGwSziVCHkipoe2i95d5wTVYc,18298
|
4586
4587
|
lino/utils/code.py,sha256=-2vc8npHQ5jsrRqzxmjRZZ8FWY7QJ7-sRg7-ZhOsUEU,7053
|
4587
4588
|
lino/utils/config.py,sha256=gtaJURPOwHyV_AW7i7_vin3KTj3UwZa4iviDbldwXGE,8568
|
4588
|
-
lino/utils/cycler.py,sha256=
|
4589
|
+
lino/utils/cycler.py,sha256=Kd4jUUaj181gZxSYWMiZTgF7iT3JXZm57pBh-ZxiOMg,1775
|
4589
4590
|
lino/utils/daemoncommand.py,sha256=NjGShiz09fddIV0WU0jK2nzO_CwPj1MfdmgwAOYZi4M,11525
|
4590
4591
|
lino/utils/dataserializer.py,sha256=-_xHXaGwDSO6-sYEHEa2BtEmKS8bW6gsYx4dV-GbvDs,3779
|
4591
4592
|
lino/utils/dates.py,sha256=eWF5WxA5uJf51Y9PKvDVBWD8yIf6yBF6oO6TeU3ujzw,1030
|
4592
4593
|
lino/utils/dbfreader.py,sha256=KrGsBAFV2tF9pAd9jsmBAFpZ-yw-CRymZHEn_q9IL90,13784
|
4593
4594
|
lino/utils/dbhash.py,sha256=tG1IHe6Bz9MaagTI-131gpcLcNw3g642QVvv7GsJH2g,3303
|
4594
4595
|
lino/utils/dblogger.py,sha256=kr0YxQY6veymvNg5A4tsvkqW8haRWdwqL0C-_9_QTg0,721
|
4595
|
-
lino/utils/diag.py,sha256=
|
4596
|
+
lino/utils/diag.py,sha256=quiGcv-e0pwn_yjjt7OUMo8kr1qKYmIFBjDnHxr_5X4,18754
|
4596
4597
|
lino/utils/djangotest.py,sha256=Phz1qNp0wDonZRja5dxbCk0Xl3a73gZNiKK8v9tAgZg,8334
|
4597
|
-
lino/utils/dpy.py,sha256=
|
4598
|
+
lino/utils/dpy.py,sha256=pHeOmAQLqn4DLunipn5FwooTttRroqdewgUTUt_Dq5s,21220
|
4598
4599
|
lino/utils/fieldutils.py,sha256=6GwPOfL-Jv-uh5-tZrTqC1hJccqHhdLbVSy4CAeegDA,2957
|
4599
4600
|
lino/utils/format_date.py,sha256=zJu8PO45hGsk6Znq8_93D3vUz9HcY7CjHduAFxoU0v8,3123
|
4600
4601
|
lino/utils/html.py,sha256=nR2h6oa_47Baq5rdSln0aGbqzS6SFsWzl-uqjnGIUWU,3273
|
4601
4602
|
lino/utils/html2odf.py,sha256=Hxw4HiIHY1ZCjb4_JLykVHbr6yAMhhHrnrCnLNDYKAs,4826
|
4602
4603
|
lino/utils/html2xhtml.py,sha256=fvrIoLBFpiXtYO3UYaIgAIDjf6ATvrxolQX4etxS57Y,2119
|
4603
|
-
lino/utils/instantiator.py,sha256=
|
4604
|
+
lino/utils/instantiator.py,sha256=w_yt1ETFa4DruvF3clTUr1xQ-bVCRN4m5oi2zKljj5w,7553
|
4604
4605
|
lino/utils/jinja.py,sha256=1FZgWNKEP9wcokFuIfYysl_VD5mwVHxBHtpnmO17nRQ,1444
|
4605
4606
|
lino/utils/jscompressor.py,sha256=j9UTaaPCfRZLrWUh6PBp0KDDM0QshG7XAFzp-R_elOs,5225
|
4606
4607
|
lino/utils/jsgen.py,sha256=p5BSoCYs67AgD-Q9gmeJp_uQffskT3HXYdp7SrniDsI,15252
|
@@ -4635,8 +4636,8 @@ lino/utils/xml.py,sha256=EGDnO1UaREst9fS7KTESdbHnrrVCwKbRQdvut6B6GmQ,1612
|
|
4635
4636
|
lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
|
4636
4637
|
lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
|
4637
4638
|
lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
|
4638
|
-
lino-25.
|
4639
|
-
lino-25.
|
4640
|
-
lino-25.
|
4641
|
-
lino-25.
|
4642
|
-
lino-25.
|
4639
|
+
lino-25.8.0.dist-info/METADATA,sha256=XrP3oqzSF9Mk0zoFtZXTU6oJ77YRw4e-pyhhX469cGg,42534
|
4640
|
+
lino-25.8.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
4641
|
+
lino-25.8.0.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
|
4642
|
+
lino-25.8.0.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
|
4643
|
+
lino-25.8.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|