lino 25.4.0__py3-none-any.whl → 25.4.1__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 CHANGED
@@ -31,7 +31,7 @@ from django import VERSION
31
31
  from django.apps import AppConfig
32
32
  from django.conf import settings
33
33
  import warnings
34
- __version__ = '25.4.0'
34
+ __version__ = '25.4.1'
35
35
 
36
36
  # import setuptools # avoid UserWarning "Distutils was imported before Setuptools"?
37
37
 
lino/core/kernel.py CHANGED
@@ -41,7 +41,7 @@ from django.db import models
41
41
 
42
42
  # import lino # for is_testing
43
43
  from lino import logger
44
- from lino.utils import codetime
44
+ # from lino.utils import codetime
45
45
  from lino.utils.html import E
46
46
  # from lino.core.utils import format_request
47
47
  # from lino.utils import isiterable
@@ -111,22 +111,21 @@ class Kernel(object):
111
111
  self.GFK_LIST = []
112
112
  # logger.info("20140227 Kernel.__init__() done")
113
113
 
114
- _code_mtime = None
115
- _lino_version = None
116
-
117
- @property
118
- def code_mtime(self):
119
- if self._code_mtime is None:
120
- # packages = [os.environ['DJANGO_SETTINGS_MODULE'], 'lino']
121
- # self._code_mtime = codetime(*packages)
122
- if self.site.developer_site_cache:
123
- self._code_mtime = codetime()
124
- else:
125
- # On a production server we test only the timestamp of
126
- # settings.py file because otherwise the result can differ
127
- # depending on which modules have already been imported.
128
- self._code_mtime = codetime(settings.SETTINGS_MODULE)
129
- return self._code_mtime
114
+ # _code_mtime = None
115
+ #
116
+ # @property
117
+ # def code_mtime(self):
118
+ # if self._code_mtime is None:
119
+ # # packages = [os.environ['DJANGO_SETTINGS_MODULE'], 'lino']
120
+ # # self._code_mtime = codetime(*packages)
121
+ # if self.site.developer_site_cache:
122
+ # self._code_mtime = codetime()
123
+ # else:
124
+ # # On a production server we test only the timestamp of
125
+ # # settings.py file because otherwise the result can differ
126
+ # # depending on which modules have already been imported.
127
+ # self._code_mtime = codetime(settings.SETTINGS_MODULE)
128
+ # return self._code_mtime
130
129
 
131
130
  def kernel_startup(self, site):
132
131
  """This is a part of a Lino site startup. The Django Model
@@ -908,7 +907,7 @@ class Kernel(object):
908
907
  self._must_build = True
909
908
 
910
909
  def make_cache_file(self, fn, write, force=False, verbosity=1):
911
- """Make the specified cache file. This is used internally at server
910
+ """Make the specified cache file. This is used internally at site
912
911
  startup.
913
912
 
914
913
  """
@@ -919,7 +918,8 @@ class Kernel(object):
919
918
  fn = self.site.media_root / fn
920
919
  if not force and not self._must_build and fn.exists():
921
920
  mtime = os.stat(fn).st_mtime
922
- if mtime > self.code_mtime:
921
+ # if mtime > self.code_mtime:
922
+ if mtime > self.site.lino_version:
923
923
  # logger.debug("%s (%s) is up to date.", fn, time.ctime(mtime))
924
924
  return 0
925
925
 
lino/core/site.py CHANGED
@@ -558,17 +558,18 @@ class Site(object):
558
558
  break
559
559
 
560
560
  if self.master_site is None:
561
- cache_root = os.environ.get("LINO_CACHE_ROOT", None)
562
- if cache_root:
563
- # TODO: deprecate
564
- cr = Path(cache_root).absolute()
565
- if not cr.exists():
566
- msg = "LINO_CACHE_ROOT ({0}) does not exist!".format(cr)
567
- raise Exception(msg)
568
- self.site_dir = (cr / self.project_name).resolve()
569
- self.setup_cache_directory()
570
- else:
571
- self.site_dir = self.project_dir
561
+ # cache_root = os.environ.get("LINO_CACHE_ROOT", None)
562
+ # if cache_root:
563
+ # # TODO: deprecate
564
+ # cr = Path(cache_root).absolute()
565
+ # if not cr.exists():
566
+ # msg = "LINO_CACHE_ROOT ({0}) does not exist!".format(cr)
567
+ # raise Exception(msg)
568
+ # self.site_dir = (cr / self.project_name).resolve()
569
+ # self.setup_cache_directory()
570
+ # else:
571
+ # self.site_dir = self.project_dir
572
+ self.site_dir = self.project_dir
572
573
  db = self.get_database_settings()
573
574
  if db is not None:
574
575
  self.django_settings.update(DATABASES=db)
@@ -987,11 +988,12 @@ class Site(object):
987
988
  self.update_settings(MEDIA_URL="/media/")
988
989
 
989
990
  if not "STATIC_ROOT" in self.django_settings:
990
- cache_root = os.environ.get("LINO_CACHE_ROOT", None)
991
- if cache_root:
992
- p = Path(cache_root)
993
- else:
994
- p = self.site_dir
991
+ # cache_root = os.environ.get("LINO_CACHE_ROOT", None)
992
+ # if cache_root:
993
+ # p = Path(cache_root)
994
+ # else:
995
+ # p = self.site_dir
996
+ p = self.site_dir
995
997
  self.update_settings(STATIC_ROOT=str(p / "static_root"))
996
998
  if not "STATIC_URL" in self.django_settings:
997
999
  self.update_settings(STATIC_URL="/static/")
@@ -1142,40 +1144,40 @@ class Site(object):
1142
1144
 
1143
1145
  # print(20150331, self.django_settings['FIXTURE_DIRS'])
1144
1146
 
1145
- def setup_cache_directory(self):
1146
- stamp = self.site_dir / "lino_cache.txt"
1147
- this = class2str(self.__class__)
1148
- if stamp.exists():
1149
- other = stamp.read_file()
1150
- if other == this:
1151
- ok = True
1152
- else:
1153
- ok = False
1154
- for parent in self.__class__.__mro__:
1155
- if other == class2str(parent):
1156
- ok = True
1157
- break
1158
- if not ok:
1159
- # Can happen e.g. when `python -m lino.hello` is
1160
- # called. in certain conditions.
1161
- msg = (
1162
- "Cannot use {site_dir} for {this} "
1163
- "because it is used for {other}. (Settings {settings})"
1164
- )
1165
- msg = msg.format(
1166
- site_dir=self.site_dir,
1167
- this=this,
1168
- settings=self.django_settings.get("SETTINGS_MODULE"),
1169
- other=other,
1170
- )
1171
- if True:
1172
- raise Exception(msg)
1173
- else:
1174
- # print(msg)
1175
- self.site_dir = None
1176
- else:
1177
- self.makedirs_if_missing(self.site_dir)
1178
- stamp.write_file(this)
1147
+ # def setup_cache_directory(self):
1148
+ # stamp = self.site_dir / "lino_cache.txt"
1149
+ # this = class2str(self.__class__)
1150
+ # if stamp.exists():
1151
+ # other = stamp.read_file()
1152
+ # if other == this:
1153
+ # ok = True
1154
+ # else:
1155
+ # ok = False
1156
+ # for parent in self.__class__.__mro__:
1157
+ # if other == class2str(parent):
1158
+ # ok = True
1159
+ # break
1160
+ # if not ok:
1161
+ # # Can happen e.g. when `python -m lino.hello` is
1162
+ # # called. in certain conditions.
1163
+ # msg = (
1164
+ # "Cannot use {site_dir} for {this} "
1165
+ # "because it is used for {other}. (Settings {settings})"
1166
+ # )
1167
+ # msg = msg.format(
1168
+ # site_dir=self.site_dir,
1169
+ # this=this,
1170
+ # settings=self.django_settings.get("SETTINGS_MODULE"),
1171
+ # other=other,
1172
+ # )
1173
+ # if True:
1174
+ # raise Exception(msg)
1175
+ # else:
1176
+ # # print(msg)
1177
+ # self.site_dir = None
1178
+ # else:
1179
+ # self.makedirs_if_missing(self.site_dir)
1180
+ # stamp.write_file(this)
1179
1181
 
1180
1182
  def set_user_model(self, spec):
1181
1183
  # if self.user_model is not None:
@@ -2004,6 +2006,17 @@ class Site(object):
2004
2006
  s = self.plugins.jinja.render_from_ar(ar, "admin_main.html", **context)
2005
2007
  return mark_safe(s)
2006
2008
 
2009
+ _lino_version = None
2010
+
2011
+ @property
2012
+ def lino_version(self):
2013
+ p = self.site_dir / "lino_version.txt"
2014
+ if self._lino_version is None:
2015
+ if not p.exists():
2016
+ p.touch()
2017
+ self._lino_version = p.stat().st_mtime
2018
+ return self._lino_version
2019
+
2007
2020
  def build_site_cache(self, force=False, later=False, verbosity=1):
2008
2021
  from lino.modlib.users.utils import with_user_profile
2009
2022
  from lino.modlib.users.choicelists import UserTypes
@@ -2011,10 +2024,12 @@ class Site(object):
2011
2024
  # if not self.is_prepared:
2012
2025
  # self.prepare_layouts()
2013
2026
  # self.is_prepared = True
2027
+ # settings_file = self.django_settings.get("__file__")
2028
+ # Path(settings_file).touch()
2029
+ p = self.site_dir / "lino_version.txt"
2030
+ p.touch()
2014
2031
 
2015
2032
  if later:
2016
- settings_file = self.django_settings.get("__file__")
2017
- Path(settings_file).touch()
2018
2033
  # print("20230823 later")
2019
2034
  return
2020
2035
 
lino/help_texts.py CHANGED
@@ -153,13 +153,13 @@ help_texts = {
153
153
  'lino.modlib.memo.Plugin' : _("""Base class for this plugin."""),
154
154
  'lino.modlib.memo.Plugin.parser' : _("""An instance of lino.modlib.memo.parser.Parser."""),
155
155
  'lino.modlib.memo.Plugin.front_end' : _("""The front end to use when writing previews."""),
156
+ 'lino.modlib.memo.parser.Suggester' : _("""Holds the configuration for the behaviour of a given “trigger”."""),
156
157
  'lino.modlib.memo.parser.Parser' : _("""The memo parser."""),
157
158
  'lino.modlib.memo.parser.Parser.add_suggester' : _("""Add a Suggester (see there for args and kwargs)."""),
158
- 'lino.modlib.memo.parser.Parser.get_referred_objects' : _("""Yield all database objects referred in the given text using a suggester."""),
159
- 'lino.modlib.memo.parser.Parser.parse' : _("""Parse the given string src, replacing memo commands by their result."""),
160
159
  'lino.modlib.memo.parser.Parser.register_command' : _("""Register a memo command identified by the given text cmd."""),
161
160
  'lino.modlib.memo.parser.Parser.register_django_model' : _("""Register the given string name as command for referring to database rows of the given Django database model model."""),
162
- 'lino.modlib.memo.parser.Suggester' : _("""Holds the configuration for the behaviour of a given “trigger”."""),
161
+ 'lino.modlib.memo.parser.Parser.get_referred_objects' : _("""Yield all database objects referred in the given text using a suggester."""),
162
+ 'lino.modlib.memo.parser.Parser.parse' : _("""Parse the given string src, replacing memo commands by their result."""),
163
163
  'lino.modlib.restful.Plugin' : _("""See /dev/plugins."""),
164
164
  'lino.modlib.smtpd.Plugin' : _("""See /dev/plugins."""),
165
165
  'lino.modlib.system.Plugin' : _("""See /dev/plugins."""),
@@ -119,7 +119,7 @@ class About(EmptyTable):
119
119
  packages = set(["django"])
120
120
 
121
121
  items.append(
122
- E.li(gettext("Server timestamp"), " : ", E.b(dtfmt(site.kernel.code_mtime)))
122
+ E.li(gettext("Server timestamp"), " : ", E.b(dtfmt(site.lino_version)))
123
123
  )
124
124
 
125
125
  for p in site.installed_plugins:
@@ -1481,7 +1481,7 @@ class ExtRenderer(JsCacheRenderer):
1481
1481
  # if settings.SITE.never_build_site_cache:
1482
1482
  # yield "GEN_TIMESTAMP = '%s';" % settings.SITE.kernel.lino_version
1483
1483
  # else:
1484
- yield "GEN_TIMESTAMP = %s;" % py2js(settings.SITE.kernel.code_mtime)
1484
+ yield "GEN_TIMESTAMP = %s;" % py2js(settings.SITE.lino_version)
1485
1485
 
1486
1486
  return "\n".join(fn())
1487
1487
 
@@ -138,7 +138,7 @@ def test_version_mismatch(request):
138
138
  if os.environ.get("PYCHARM_HOSTED", False):
139
139
  return {}
140
140
  lv = request.GET.get(constants.URL_PARAM_LINO_VERSION)
141
- if lv is None or float(lv) == settings.SITE.kernel.code_mtime:
141
+ if lv is None or float(lv) == settings.SITE.lino_version:
142
142
  return {}
143
143
  # print("20201217", lv, settings.SITE.kernel.code_mtime)
144
144
  cache.clear()
@@ -13,6 +13,9 @@ TODO:
13
13
  which would be empty for # and @ but "]" for memo commands.
14
14
 
15
15
  """
16
+ from etgen import etree
17
+ from django.db.models import Model
18
+ from django.conf import settings
16
19
  from lino import logger
17
20
 
18
21
  import re
@@ -24,9 +27,6 @@ import warnings
24
27
 
25
28
  warnings.filterwarnings("ignore", category=MarkupResemblesLocatorWarning)
26
29
 
27
- from django.conf import settings
28
- from django.db.models import Model
29
- from etgen import etree
30
30
 
31
31
  # COMMAND_REGEX = re.compile(r"\[(\w+)\s*((?:[^[\]]|\[.*?\])*?)\]")
32
32
  # ===...... .......=
@@ -139,7 +139,7 @@ class Parser:
139
139
  for key in self.suggesters.keys()
140
140
  ]
141
141
  )
142
- return re.compile(r"([^\w])?([" + triggers + "])(\w+)")
142
+ return re.compile(r"([^\w])?([" + triggers + r"])(\w+)")
143
143
 
144
144
  def register_command(self, cmdname, func: Callable[[Any, str, str, dict], None]):
145
145
  """Register a memo command identified by the given text `cmd`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lino
3
- Version: 25.4.0
3
+ Version: 25.4.1
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,10 +1,10 @@
1
1
  lino/.cvsignore,sha256=1vrrWoP-WD8hPfCszHHIiJEi8KUMRCt5WvoKB9TSB1k,28
2
2
  lino/SciTEDirectory.properties,sha256=rCYi_e-6h8Yx5DwXhAa6MBPlVINcl6Vv9BQDYZV2_go,28
3
- lino/__init__.py,sha256=hX67Z8YgYIUBNNmzsKRsa1ltkl1uwshB28hWTFIKLIU,6176
3
+ lino/__init__.py,sha256=CcmiXMf7kjvfR3armsMJoL2tdYjk5eeMI5a5XcwanPk,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=fyiY0oSJ8iGNjKdw36QbrLu2y38SvIeddW3FH3y0Nbw,90988
7
+ lino/help_texts.py,sha256=MGIQvx-xvYSyfgtSHkolpJ2aQlvChEFyR9_Xw1qt49w,90988
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=FSv9gDstKcKM1qFgSSJpJOGhvT0bDTIqwjcPA9pbMm8,7431
@@ -47,7 +47,7 @@ lino/core/frames.py,sha256=ISxgq9zyZfqW3tDZMWdKi9Ij455lT_81qBH0xex0bfE,1161
47
47
  lino/core/gfks.py,sha256=6VXn2FSIXOrwVq0stfbPevT37EWg1tg4Fn-HMNVnbmk,1970
48
48
  lino/core/help.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  lino/core/inject.py,sha256=Qd_PGEn0yMXNYVPI0wCv1vvo2CNdlPkyoBmKZELOtGM,13422
50
- lino/core/kernel.py,sha256=EVufMGdX_80mZrLbDAxUJj1kjISXinM15OfojmLVuGg,46882
50
+ lino/core/kernel.py,sha256=BY86dmUaU95zw22RlhZXbbBGpuOvsxfanMqzFr6Us0w,46939
51
51
  lino/core/keyboard.py,sha256=W3jA6qtB5HMppoNnd_6PgIM7ZlyHilJEhBvdeZTY7Xk,1283
52
52
  lino/core/layouts.py,sha256=Wojx5UUyhy7PsZE8FWmiXcmZDj4wz2y_1_wlz1G560Q,28663
53
53
  lino/core/menus.py,sha256=W0Co9K-ayvfX5Zt5rgSxJrFRejtiYrwIR5EecdYXPNc,10857
@@ -59,7 +59,7 @@ lino/core/renderer.py,sha256=auQn2v9bBp6jLIH3hXRQXbrjFrTmsO1o0DwaoXBn1eE,47310
59
59
  lino/core/requests.py,sha256=67335dTFqcwfF1PvWFmWwDKmVyJvDW9dMRQJF_X_Q9I,95093
60
60
  lino/core/roles.py,sha256=PXwk436xUupxdbJcygRSYFu7ixfKjAJPQRUQ8sy0lB0,4425
61
61
  lino/core/signals.py,sha256=0JT89mkjSbRm57QZcSI9DoThoKUGkyi-egNhuLUKEds,948
62
- lino/core/site.py,sha256=SOwcz3MZNRq0HFpRUwEMhnrqX4bGAWMPBYi0sS9eIaw,82631
62
+ lino/core/site.py,sha256=RsvMMSaCHzGcVpvUWKhkW4ugP6Fj7EfQXx5NegzJ9PQ,83164
63
63
  lino/core/store.py,sha256=6pd4J5Y-U7Muz4mKFSL6K9KEZpJUbpM-I7RQTWyCo-8,51483
64
64
  lino/core/tables.py,sha256=rMMDmDKMcWJ39fD9Q_EFV7qdcXMktwO40G4ATyKuRGg,24427
65
65
  lino/core/urls.py,sha256=06QlmN1vpxjmb5snO3SPpP6lX1pMdE60bTiBiC77_vQ,2677
@@ -129,7 +129,7 @@ lino/mixins/sequenced.py,sha256=6FiHJX2ZIraqUofdnb082b978PISNbpd2Vr87YA_1pg,1646
129
129
  lino/modlib/__init__.py,sha256=cO31gNu2oRkp7o2v3D9gK2H7j4jF9rbVyPxPZhZQwrQ,940
130
130
  lino/modlib/about/__init__.py,sha256=jhqGQIXU1o7KkmmQjfwPKJc3buibB09Fy55carAmi7U,342
131
131
  lino/modlib/about/choicelists.py,sha256=2bxDb2u7cFacBOgLoEWrMmzQ4BJ3x1pmhdgqxzUp-Rw,1424
132
- lino/modlib/about/models.py,sha256=X5yJJlyoQ58GN9RsdlUA1KsumvRtkureWnxLPPAXWlE,5131
132
+ lino/modlib/about/models.py,sha256=7dbWnw5DXy0BWsvj9bW9ugRQIxD8B_My3yA_ReLUP5o,5126
133
133
  lino/modlib/awesomeuploader/__init__.py,sha256=pUUnpdglJ0IDMBgW-ZQwnTOPHDRjItEiIWbSwv4qvBM,1825
134
134
  lino/modlib/awesomeuploader/models.py,sha256=LaK6IzLoCX4qMkVhsgdPfgawyFPe5rcHUgBFY0PbzWg,801
135
135
  lino/modlib/awesomeuploader/config/awesomeuploader/snippet.js,sha256=cZCGi0e9lDW96vCg3KVJ5DUtg2KHLNdnPo5KPRrQxv8,1792
@@ -188,8 +188,8 @@ lino/modlib/dupable/models.py,sha256=0watviKwTiVwlArC54V3IxVVfcB1Yg5kO6ed2xCM9a0
188
188
  lino/modlib/export_excel/__init__.py,sha256=k11dEbh1VgA7cMaUdMhiJvHNboX4BqN0Z5Wj9fV7rWw,469
189
189
  lino/modlib/export_excel/models.py,sha256=MoGj3RyAj8PBy75HFGBv9Y1QnsG-H_ajRK27UDpZPKo,5094
190
190
  lino/modlib/extjs/__init__.py,sha256=6UBWAWSROwy3DfTXQmVUVJTF6eZ_e2k3BEfE4wtqVhU,10172
191
- lino/modlib/extjs/ext_renderer.py,sha256=FAuqvEpmX8skaGXN6mXZuB7cq2pC38lxACxntiJ7RvU,60614
192
- lino/modlib/extjs/views.py,sha256=M9282Qayd2z_cXIMs155ZTUeHt6HdwL2PwhwpeDaVDY,26297
191
+ lino/modlib/extjs/ext_renderer.py,sha256=DVUoCmy-knDO_i6s8yVGy8xI2qsWBA8GByiv29Lm8ts,60609
192
+ lino/modlib/extjs/views.py,sha256=7IlzseAwtGPZtpsbow103mEV8VuKIH9uhfZmv9StneA,26292
193
193
  lino/modlib/extjs/config/extjs/index.html,sha256=jO5hdNpFSkm9t0xhHD5hc8Hw1fSr6xb3zYq9aMyOI7Q,8603
194
194
  lino/modlib/extjs/config/extjs/linoweb.js,sha256=I4VYGmkK4htqZvHM9g-6psJF3pp7SvgHEI0I02Sxpvo,175127
195
195
  lino/modlib/extjs/config/extjs/service-worker.js,sha256=KEKWeehTlfBHk3r8NbsP9C5av_DukHORybxFOwbjYaQ,1767
@@ -3547,7 +3547,7 @@ lino/modlib/linod/management/commands/linod.py,sha256=RsUgUBz-soF8wkfgUE8KJiLZlt
3547
3547
  lino/modlib/memo/__init__.py,sha256=GdzNURo3v_o5PxTBZ_KNkzrjlcDzn4AO95pYBbHmk8Q,5389
3548
3548
  lino/modlib/memo/mixins.py,sha256=Ij_bFcBY_ivo5t2HWArEeRkxIQhg61iP0sTNnhZpRac,11246
3549
3549
  lino/modlib/memo/models.py,sha256=zUEvWu0dK5QhkU3DeMqNqsrzSUzOl6DLZaJBNytfgrs,4388
3550
- lino/modlib/memo/parser.py,sha256=YbGf1EdJqTI4rqM05ZPTdufN_-aWeV_Z85Nh47HH8Pw,12996
3550
+ lino/modlib/memo/parser.py,sha256=AKMfdbNFl9ehxl8TTFWwQ-ngfx7CD7hUjVA6bUNBY1c,12997
3551
3551
  lino/modlib/memo/views.py,sha256=H3g_nuiMzguptXLSWaWLJClU7BefXPFn9Rh8UIVVBeg,555
3552
3552
  lino/modlib/notify/__init__.py,sha256=suo7EMVdyTPTPFwuU2KZL25PwIEstTvvR4Turgdz7UE,6926
3553
3553
  lino/modlib/notify/actions.py,sha256=ClRKDjmgx3m43IZ5cx0TdxXN_pU6hLIlo_jCwEW2LhY,2468
@@ -4633,8 +4633,8 @@ lino/utils/xml.py,sha256=EGDnO1UaREst9fS7KTESdbHnrrVCwKbRQdvut6B6GmQ,1612
4633
4633
  lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
4634
4634
  lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
4635
4635
  lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
4636
- lino-25.4.0.dist-info/METADATA,sha256=ebewMi9c7NVn3fuBa28StXDO0GH1KOGbD70Js5S4a9s,42534
4637
- lino-25.4.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4638
- lino-25.4.0.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4639
- lino-25.4.0.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4640
- lino-25.4.0.dist-info/RECORD,,
4636
+ lino-25.4.1.dist-info/METADATA,sha256=tByKXlu49CnGrkvvWX-WVmYBSYIQyjUr3rhA5AIKys4,42534
4637
+ lino-25.4.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
4638
+ lino-25.4.1.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4639
+ lino-25.4.1.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4640
+ lino-25.4.1.dist-info/RECORD,,
File without changes