lino 24.9.3__py3-none-any.whl → 24.9.4__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
@@ -26,6 +26,8 @@ defines no models, some template files, a series of :term:`django-admin commands
26
26
 
27
27
  """
28
28
 
29
+ __version__ = '24.9.4'
30
+
29
31
  # from __future__ import unicode_literals
30
32
  # from __future__ import absolute_import
31
33
  # from builtins import str
lino/core/actors.py CHANGED
@@ -533,7 +533,7 @@ class Actor(actions.Parametrizable, Permittable, metaclass=ActorMetaClass):
533
533
  @classmethod
534
534
  def get_row_by_pk(self, ar, pk):
535
535
  """Return the data row identified by the given primary key."""
536
- return None
536
+ raise NotImplementedError()
537
537
 
538
538
  @classmethod
539
539
  def get_master_instance(cls, ar, model, pk):
lino/core/dbtables.py CHANGED
@@ -334,18 +334,19 @@ class Table(AbstractTable):
334
334
  Note: `ar` may not be None.
335
335
 
336
336
  """
337
- qs = self.model.get_request_queryset(ar)
338
- try:
339
- return qs.get(pk=pk)
340
- # return self.get_queryset(ar).get(pk=pk)
341
- except ValueError:
342
- return None
343
- except self.model.DoesNotExist:
344
- # import sqlparse
345
- # sql = str(qs.query).replace('"', '')
346
- # sql = sqlparse.format(sql, reindent=True, keyword_case='upper')
347
- # raise Exception("20240324 {}, {}".format(ar.param_values, sql))
348
- return None
337
+ return self.model.objects.get(pk=pk)
338
+ # qs = self.model.get_request_queryset(ar)
339
+ # try:
340
+ # return qs.get(pk=pk)
341
+ # # return self.get_queryset(ar).get(pk=pk)
342
+ # except ValueError:
343
+ # return None
344
+ # except self.model.DoesNotExist:
345
+ # # import sqlparse
346
+ # # sql = str(qs.query).replace('"', '')
347
+ # # sql = sqlparse.format(sql, reindent=True, keyword_case='upper')
348
+ # # raise Exception("20240324 {}, {}".format(ar.param_values, sql))
349
+ # return None
349
350
 
350
351
  # @classmethod
351
352
  # def disabled_actions(self, ar, obj): # no longer used since 20170909
lino/core/fields.py CHANGED
@@ -321,6 +321,14 @@ class FakeField(object):
321
321
  raise Exception("{} has no attribute {}".format(self, k))
322
322
  setattr(self, k, v)
323
323
 
324
+ def __repr__(self):
325
+ # copied from django Field
326
+ path = "%s.%s" % (self.__class__.__module__, self.__class__.__qualname__)
327
+ name = getattr(self, "name", None)
328
+ if name is not None:
329
+ return "<%s: %s>" % (path, name)
330
+ return "<%s>" % path
331
+
324
332
  def is_enabled(self, lh):
325
333
  """
326
334
  Overridden by mti.EnableChild
lino/core/requests.py CHANGED
@@ -400,7 +400,7 @@ class BaseRequest(object):
400
400
  try:
401
401
  master = ContentType.objects.get(pk=master_type).model_class()
402
402
  except ContentType.DoesNotExist:
403
- raise exceptions.BadRequest("Invalid master_type {}".format(master_type))
403
+ raise exceptions.BadRequest("Invalid master_type {}".format(master_type)) from None
404
404
  self.master = master
405
405
 
406
406
  if self.master is not None and self.master_instance is None:
@@ -633,14 +633,13 @@ class BaseRequest(object):
633
633
  """
634
634
  # ~ print 20131003, selected_pks
635
635
  self.selected_rows = []
636
- for pk in selected_pks:
637
- if pk and pk != "-99998" and pk != "-99999":
638
- obj = self.get_row_by_pk(pk)
639
- if obj is None:
640
- raise exceptions.ObjectDoesNotExist(
641
- "Invalid primary key {0} for {1}".format(pk, self.actor)
642
- )
643
- self.selected_rows.append(obj)
636
+ try:
637
+ for pk in selected_pks:
638
+ if pk and pk != "-99998" and pk != "-99999":
639
+ self.selected_rows.append(self.get_row_by_pk(pk))
640
+ except Exception as e:
641
+ raise exceptions.BadRequest(
642
+ "Invalid primary key {0} for {1} ({2})".format(pk, self.actor, e)) from None
644
643
  # self.selected_rows = filter(lambda x: x, self.selected_rows)
645
644
  # note: ticket #523 was because the GET contained an empty pk ("&sr=")
646
645
 
lino/core/site.py CHANGED
@@ -2061,7 +2061,7 @@ class Site(object):
2061
2061
  ):
2062
2062
  yield "social_django.middleware.SocialAuthExceptionMiddleware"
2063
2063
 
2064
- if True:
2064
+ if False: # removed 20240921, see #5755 (Should we remove AjaxExceptionResponse?)
2065
2065
  yield "lino.utils.ajax.AjaxExceptionResponse"
2066
2066
 
2067
2067
  if self.use_security_features:
@@ -3153,7 +3153,7 @@ Lino.FormPanel = Ext.extend(Lino.FormPanel,{
3153
3153
  }
3154
3154
 
3155
3155
  ,set_current_record : function(record, after) {
3156
- console.log('20160825 set_current_record', record);
3156
+ // console.log('20160825 set_current_record', record);
3157
3157
  if (this.record_selector) {
3158
3158
  this.record_selector.clearValue();
3159
3159
  // e.g. InsertWrapper FormPanel doesn't have a record_selector
@@ -12,8 +12,8 @@ Adds functionality for using memo commands in your text fields.
12
12
 
13
13
  """
14
14
 
15
- from importlib import import_module
16
- from rstgen.utils import py2url_txt
15
+ # from importlib import import_module
16
+ # from rstgen.utils import py2url_txt
17
17
  from lino.api import ad
18
18
  from .parser import Parser, split_name_rest
19
19
  from lino.utils.html import tostring
@@ -76,14 +76,18 @@ class Plugin(ad.Plugin):
76
76
 
77
77
  self.parser.register_command("url", url2html)
78
78
 
79
- def py2html(parser, s, cmdname, mentions, context):
80
- url, txt = py2url_txt(s)
81
- if url:
82
- # lines = inspect.getsourcelines(s)
83
- return '<a href="{0}" target="_blank">{1}</a>'.format(url, txt)
84
- return "<pre>{}</pre>".format(s)
79
+ # 20240920 I disabled the "py" memo command because I don't know anybody
80
+ # who used it (except myself a few times for testing it) and because it
81
+ # requires SETUP_INFO, which has an uncertain future.
85
82
 
86
- self.parser.register_command("py", py2html)
83
+ # def py2html(parser, s, cmdname, mentions, context):
84
+ # url, txt = py2url_txt(s)
85
+ # if url:
86
+ # # lines = inspect.getsourcelines(s)
87
+ # return '<a href="{0}" target="_blank">{1}</a>'.format(url, txt)
88
+ # return "<pre>{}</pre>".format(s)
89
+ #
90
+ # self.parser.register_command("py", py2html)
87
91
 
88
92
  def show2html(ar, s, cmdname, mentions, context):
89
93
  # kwargs = dict(header_level=3) #, nosummary=True)
lino/utils/ajax.py CHANGED
@@ -1,15 +1,15 @@
1
1
  # -*- coding: UTF-8 -*-
2
- # Copyright 2011-2021 Rumma & Ko Ltd
2
+ # Copyright 2011-2024 Rumma & Ko Ltd
3
3
  # License: GNU Affero General Public License v3 (see file COPYING for details)
4
- """This middleware is automatically being installed on every Lino
5
- site.
4
+ """This middleware was automatically being installed on every Lino site until
5
+ 20240921. No longer used since then. See :ticket:`5755` (Should we remove
6
+ AjaxExceptionResponse?)
6
7
 
7
- When an exception occurs during an AJAX call, Lino should not respond
8
- with Django's default HTML formatted error report but with a
9
- plain-text traceback because that's more readable when seen in a
10
- browser console.
8
+ The idea was that when an exception occurs during an AJAX call, Lino should not
9
+ respond with Django's default HTML formatted error report but with a plain-text
10
+ traceback because that's more readable when seen in a browser console.
11
11
 
12
- Originally inspired by http://djangosnippets.org/snippets/650
12
+ Originally inspired by https://djangosnippets.org/snippets/650
13
13
 
14
14
  Additions by LS:
15
15
 
@@ -26,9 +26,6 @@ Additions by LS:
26
26
 
27
27
  """
28
28
 
29
- from __future__ import unicode_literals
30
- from builtins import object
31
-
32
29
  import sys
33
30
  import traceback
34
31
  from django.conf import settings
@@ -48,34 +45,34 @@ class AjaxExceptionResponse(MiddlewareMixin):
48
45
  """The middleware class definition."""
49
46
 
50
47
  no_traceback = (PermissionDenied, ObjectDoesNotExist)
51
-
52
48
  # no_traceback = (PermissionDenied, )
53
49
 
54
50
  # see also /docs/specs/invalid_requests.rst
55
51
  # it can be helpful to temporarily disable filtering of ObjectDoesNotExist
56
52
  # exceptions on a production site in order to debug problems like #2699
57
53
 
54
+ # 20240920 I had a sporadic ObjectDoesNotExist exception on a production
55
+ # server that took me a while to understand because there was no log message
56
+ # at all.
57
+
58
58
  def process_exception(self, request, exception):
59
59
  # if request.is_ajax(): # See https://docs.djangoproject.com/en/5.0/releases/3.1/
60
60
  if request.headers.get("x-requested-with") == "XMLHttpRequest":
61
61
  (exc_type, exc_info, tb) = sys.exc_info()
62
-
63
62
  # response to client:
64
- response = "%s: " % exc_type.__name__
65
- response += "%s" % exc_info
66
-
67
- if not isinstance(exception, self.no_traceback):
68
- # message to be logged:
69
- msg = "AjaxExceptionResponse {0}".format(response)
70
- msg += "\nin request {0}\n".format(format_request(request))
71
- if settings.DEBUG:
72
- msg += "TRACEBACK:\n"
73
- for tb in traceback.format_tb(tb):
74
- msg += smart_str(tb)
75
- settings.SITE.logger.warning(msg)
76
- else:
77
- settings.SITE.logger.exception(msg)
78
-
63
+ response = "AjaxExceptionResponse {}: {}".format(
64
+ exc_type.__name__, exc_info)
65
+ # message to be logged:
66
+ msg = response + "\nin request {0}\n".format(format_request(request))
67
+ if isinstance(exception, self.no_traceback):
68
+ settings.SITE.logger.warning(msg)
69
+ elif settings.DEBUG:
70
+ msg += "TRACEBACK:\n"
71
+ for tb in traceback.format_tb(tb):
72
+ msg += smart_str(tb)
73
+ settings.SITE.logger.warning(msg)
74
+ else:
75
+ settings.SITE.logger.exception(msg)
79
76
  return HttpResponse(response, status=400)
80
77
  # if isinstance(exception, ObjectDoesNotExist):
81
78
  # return HttpResponseBadRequest(response)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lino
3
- Version: 24.9.3
3
+ Version: 24.9.4
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
@@ -705,6 +705,10 @@ Requires-Dist: pyyaml
705
705
  Requires-Dist: sphinx
706
706
  Requires-Dist: unipath
707
707
  Requires-Dist: weasyprint
708
+ Provides-Extra: dev
709
+ Requires-Dist: hatch; extra == 'dev'
710
+ Requires-Dist: pytest; extra == 'dev'
711
+ Requires-Dist: pytest-cov; extra == 'dev'
708
712
  Provides-Extra: testing
709
713
  Requires-Dist: atelier; extra == 'testing'
710
714
  Requires-Dist: pytest; extra == 'testing'
@@ -717,17 +721,14 @@ Description-Content-Type: text/x-rst
717
721
  The ``lino`` package
718
722
  ====================
719
723
 
720
-
721
- This is the core package of the Lino framework.
722
-
723
- This repository is an integral part of the `Lino framework
724
+ This repository is the core package of the `Lino framework
724
725
  <https://www.lino-framework.org>`__, a sustainably free open-source project
725
- maintained by the `Synodalsoft team <https://www.synodalsoft.net>`__ sponsored
726
- by `Rumma & Ko OÜ <https://www.saffre-rumma.net>`__. Your contributions are
727
- welcome.
726
+ maintained by the `Synodalsoft team <https://www.synodalsoft.net>`__. Your
727
+ contributions are welcome.
728
728
 
729
+ - Developer Guide: https://dev.lino-framework.org
729
730
  - Code repository: https://gitlab.com/lino-framework/lino
730
- - Test results: https://gitlab.com/lino-framework/lino/-/pipelines
731
- - Feedback: https://community.lino-framework.org
731
+ - Test suite: https://gitlab.com/lino-framework/book/-/pipelines
732
732
  - Maintainer: https://www.synodalsoft.net
733
- - Service provider: https://www.saffre-rumma.net
733
+ - Changelog: https://www.lino-framework.org/changes/
734
+ - Contact: https://www.saffre-rumma.net/contact/
@@ -1,11 +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=qvE_98LyPCbXR-e0N7mR0cDRAVI4Fg3BMEWEkF4LTK4,5671
3
+ lino/__init__.py,sha256=7-TOhCuofchTVj6Pff_GK_qoaIMX9Dnm3w3lASKhALw,5695
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
7
  lino/help_texts.py,sha256=gZq8EJfReHB8Z5jKFFOr1pjDRODm7FVkHC8IRA7gq3w,89104
8
- lino/setup_info.py,sha256=Dq3ZZe3mMnPWcIJ2Nd0rWlHykpgMgvKsD6Z-K8B6-iA,2060
9
8
  lino/api/__init__.py,sha256=WmzHU-rHdZ68se_nI0SmepQTGE8-cd9tPpovHRH9aag,512
10
9
  lino/api/ad.py,sha256=F6SrcKPRRalHKOZ7QLwsRWGq9hhykQIeo0b85cEk9NQ,314
11
10
  lino/api/dd.py,sha256=LHooukTaNuxAbhtSdvDNVbI7nkxeU-QTp5Dfz00bmjk,7764
@@ -30,20 +29,20 @@ lino/config/unused/404.html,sha256=GOJrAyF6NcM69ETdSHgjff_-lvYs_-bOYhyZBem7x3I,2
30
29
  lino/config/unused/500.html,sha256=aWmP37uPoMS-PJgPuBloxdx0nEreU7AvkXxsex3yVYs,544
31
30
  lino/core/__init__.py,sha256=p3JsyPh_EJG9qaB80k4TWfjqx8hyARTy0Ppp6iPC7Vc,703
32
31
  lino/core/actions.py,sha256=aCyknMQL9KBB6kJWe4FOu16UMV3-QJTlPywm2CY9VOY,46241
33
- lino/core/actors.py,sha256=SdlIN5UNpXWIhFPRDVrZgDzSKttc9uRbY7y0Cz8XoRs,68525
32
+ lino/core/actors.py,sha256=LBs1k5QGnzsoyXdqkSz1AKkRwk570sVc0cW11tvXR3E,68541
34
33
  lino/core/boundaction.py,sha256=tb0C4WwbJpAP3yKbR6OaibzcAkwVs3nfeuD0RjXTjIg,6665
35
34
  lino/core/callbacks.py,sha256=xkosb1l48o6WeSdj82k5udK9OmjI7-p6x4AJFjXiOf8,7518
36
35
  lino/core/choicelists.py,sha256=45ehEOyTAt0UjxGc19aku9RSCIkvPeswisXXGyg0xtY,36009
37
36
  lino/core/classproperty.py,sha256=_E95WPAs7BWbAuFpPvoYM2ZwW_mbq3rvF7o43WsMq_8,4316
38
37
  lino/core/constants.py,sha256=P44_mZT72ON10m5xpghuH3W7Lapn9hNj9oH08gVGKRA,4204
39
38
  lino/core/dashboard.py,sha256=IyV6pgClV9QhY4MqJpxO_O9LDZnScYFb8X99tgZ2fq0,6344
40
- lino/core/dbtables.py,sha256=Oq0xXR14msENFYied8PB95_2hBReYk8dTsrXLuF3ZJE,29438
39
+ lino/core/dbtables.py,sha256=Y_T36KY5tsnc5QMFS18pEQNmA1H53zxRzhWcvhbP_Ds,29507
41
40
  lino/core/dbutils.py,sha256=_QHcWd-ajLUwt5G8uOp8d47lZQKD3VseHnqKJke18rA,263
42
41
  lino/core/ddh.py,sha256=dYScxWKTOCDEgow7wJNJe812ESasmmITPK2ovraBQno,3172
43
42
  lino/core/diff.py,sha256=XQ-oQQDS_v3kXd4eRP9Hwr5UCgp-TPZIPVav9ZblUno,5882
44
43
  lino/core/elems.py,sha256=UFOfodPk1nKwrn8_4z1wtvyZwLn_YpOKw6Ct8sTsXmk,108624
45
44
  lino/core/exceptions.py,sha256=QDxDo5cllSyXQ8VWet9hGXzNadxCOmwMVrFXc6V-vpE,665
46
- lino/core/fields.py,sha256=bS0ky1L1uLcaQ68u8_eanL9WeOltimWH9SDovGllYSg,56143
45
+ lino/core/fields.py,sha256=oDjM1O8ZKZNO1sQS5BfdvGaqnxwS7Mw6X5KqDuLIHwM,56432
47
46
  lino/core/frames.py,sha256=ISxgq9zyZfqW3tDZMWdKi9Ij455lT_81qBH0xex0bfE,1161
48
47
  lino/core/gfks.py,sha256=6VXn2FSIXOrwVq0stfbPevT37EWg1tg4Fn-HMNVnbmk,1970
49
48
  lino/core/help.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -57,10 +56,10 @@ lino/core/model.py,sha256=GCTRer7xbuZWpbqLTmDGjrxc5INB-gusz5nq0_LZ7oU,36783
57
56
  lino/core/permissions.py,sha256=Fnemz3NwWz21X0YATI9Q7ba2FcAdg-EMLHjIcbt_AVU,6840
58
57
  lino/core/plugin.py,sha256=xht9x4oXH3cvPm5jg8J5beajf5-B1PP4v0X9RW7d944,6790
59
58
  lino/core/renderer.py,sha256=RV66zKl8_ifnQJ8fG_tc21g5h25-AmK2FzKkxea49v8,46552
60
- lino/core/requests.py,sha256=eHdZwSO4l3PLQVJk43trr8B2n5vOgxFtx4IjtQYwaL0,69585
59
+ lino/core/requests.py,sha256=O6pQYVaxGphwyhhwXW_Fd9OzNR6368qlHOZ_kC0wUW4,69567
61
60
  lino/core/roles.py,sha256=PXwk436xUupxdbJcygRSYFu7ixfKjAJPQRUQ8sy0lB0,4425
62
61
  lino/core/signals.py,sha256=0JT89mkjSbRm57QZcSI9DoThoKUGkyi-egNhuLUKEds,948
63
- lino/core/site.py,sha256=6N4mLX9jod_7ktTiQNhDrRPBpObkYSjSpaOh7iiYvms,85369
62
+ lino/core/site.py,sha256=sUuyTNi9IvJ-BwOW1LbAiRKmAE0xOYpHlJqsDH_ID5E,85443
64
63
  lino/core/store.py,sha256=dJiTDWw44LGmThYXvbnpA7GCwobTg_Vag9-kw9hUjKc,51266
65
64
  lino/core/tablerequest.py,sha256=KLNRxcCjvuLMQ9P6h2PHbI8Wp2phMsjr_JmqgDstGl4,27938
66
65
  lino/core/tables.py,sha256=gwOcFiGkrFY3YFOlNgj7N_IyIECjOAf0zX_QaVQ8Sl4,24960
@@ -194,7 +193,7 @@ lino/modlib/extjs/__init__.py,sha256=-TfGa8YR8SWuCHkZ2_pFNVBfOhvVfL5ec4zz6_TWeo4
194
193
  lino/modlib/extjs/ext_renderer.py,sha256=JQbBepb1jeAPwj2zqfTDfHEnRuqsyOUJqCPVQU22Krg,60606
195
194
  lino/modlib/extjs/views.py,sha256=DTDWrbcQ4eC5X2q2hUbnhUsjIHLOF0XkmlY0BcTtVyo,22661
196
195
  lino/modlib/extjs/config/extjs/index.html,sha256=jO5hdNpFSkm9t0xhHD5hc8Hw1fSr6xb3zYq9aMyOI7Q,8603
197
- lino/modlib/extjs/config/extjs/linoweb.js,sha256=Z4vYuJe6YpQWIQJj20XUh8aJyNLe_XMpBJctscVkS-k,175124
196
+ lino/modlib/extjs/config/extjs/linoweb.js,sha256=I4VYGmkK4htqZvHM9g-6psJF3pp7SvgHEI0I02Sxpvo,175127
198
197
  lino/modlib/extjs/config/extjs/service-worker.js,sha256=KEKWeehTlfBHk3r8NbsP9C5av_DukHORybxFOwbjYaQ,1767
199
198
  lino/modlib/extjs/static/ext-3.3.1/INCLUDE_ORDER.txt,sha256=rTFv3rfTG7ImAYYEBuhcaITJISCmF_JavgD5oWjLIzM,860
200
199
  lino/modlib/extjs/static/ext-3.3.1/ext-all-debug-w-comments.js,sha256=WT9XxUlG2jgWFF-bF26-N4JAMAKEm54u3mENjSHP6g0,2855028
@@ -3543,7 +3542,7 @@ lino/modlib/linod/utils.py,sha256=dE973Xib6Be1DvNsZ0M5wzY_jpkk35R21WKs-jQPorM,33
3543
3542
  lino/modlib/linod/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3544
3543
  lino/modlib/linod/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3545
3544
  lino/modlib/linod/management/commands/linod.py,sha256=9-zRm-Xgp3uWj6AlDZpjtzo_TqSPyxIkKIrI_jshxVI,3457
3546
- lino/modlib/memo/__init__.py,sha256=sPMUkreFjJXNUUOofyYt0mPmhuhSJlA1170uVKXiKfc,4994
3545
+ lino/modlib/memo/__init__.py,sha256=JEfB1Zb31d32gjfx7AQRBYwb4Z6YARc3hyRkYcRPaEk,5245
3547
3546
  lino/modlib/memo/mixins.py,sha256=QOvbGguhjT-87K7p0hcC4kMsPHGlDmSyFdBOTEuvZ7s,16649
3548
3547
  lino/modlib/memo/models.py,sha256=YHwzh0YVAVuAruHRTw1nEJBuFGbICb88F5uqw0Y9ams,1833
3549
3548
  lino/modlib/memo/parser.py,sha256=g3ImxhMRMTnr_9TNaW2tZSv6VehlLguxAKzkqpr_Zb4,12831
@@ -4590,7 +4589,7 @@ lino/templates_old/base.html,sha256=qYqj5-u1UPtpatrFkqBr3MnwS0oFUXCyQRcuNZczDfk,
4590
4589
  lino/templates_old/base_site.html,sha256=NcLEk0kBT1b-SrhoGpDPUej7NExqJ9-dP1kbrvwBzrs,255
4591
4590
  lino/utils/__init__.py,sha256=MZ6F1NxEDMKutXaD_kzLU0z_ujbd2wuK0_25k55NNUM,18292
4592
4591
  lino/utils/addressable.py,sha256=o7bmLbyvrmOoAT478s7XqjWKvnZ7zSXj4k7Xf0ccqf8,2213
4593
- lino/utils/ajax.py,sha256=Dya3NLrq1pxB6B4bNZ_bVEIGalrxIcOtYXN213pvQHY,3059
4592
+ lino/utils/ajax.py,sha256=npCS0WumhTQlBzXxQPKnp2sYCRcPsYcbFqzE2ykVc4Q,3254
4594
4593
  lino/utils/choosers.py,sha256=vY4LVyd6e5iupaVVBGQmeJ_7Ued-BwU2KRAQhyntzAI,17201
4595
4594
  lino/utils/code.py,sha256=-2vc8npHQ5jsrRqzxmjRZZ8FWY7QJ7-sRg7-ZhOsUEU,7053
4596
4595
  lino/utils/config.py,sha256=wkegrAmExYSNOGa8MIIg_fhjtQhzTnsHGom0a0HOf_Y,8456
@@ -4641,8 +4640,8 @@ lino/utils/xml.py,sha256=4Z44W1e5HvTVrU8erkohgnwqY-5Cr2NHywaAJ5OgRvw,989
4641
4640
  lino/utils/mldbc/__init__.py,sha256=QqWRlzeXaOmFfbCk-vTY3SZMn1-FCf67XnpZdd_Nim0,1134
4642
4641
  lino/utils/mldbc/fields.py,sha256=tAX8G5UKigr9c6g0F3ARIjZZtg406mdaZ--PWSbiH9E,2873
4643
4642
  lino/utils/mldbc/mixins.py,sha256=CkYe5jDa7xp9fJq_V8zcZf8ocxgIjUgHc9KZccvA_Yw,1945
4644
- lino-24.9.3.dist-info/METADATA,sha256=wLXpMdYJqNdApBtFviH3KkK1K_eGjfnY_8DjsdMLqmc,42458
4645
- lino-24.9.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
4646
- lino-24.9.3.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4647
- lino-24.9.3.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4648
- lino-24.9.3.dist-info/RECORD,,
4643
+ lino-24.9.4.dist-info/METADATA,sha256=r3h8APKF-CH1cjvH0vTrzZSINgW18ga7T8KQqcS7OE0,42534
4644
+ lino-24.9.4.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
4645
+ lino-24.9.4.dist-info/licenses/AUTHORS.rst,sha256=8VEm_G4HOmYEa4oi1nVoKKsdo4JanekEJCefWd2E8vk,981
4646
+ lino-24.9.4.dist-info/licenses/COPYING,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
4647
+ lino-24.9.4.dist-info/RECORD,,
lino/setup_info.py DELETED
@@ -1,90 +0,0 @@
1
- # -*- coding: UTF-8 -*-
2
- # Copyright 2009-2024 Rumma & Ko Ltd
3
- # License: GNU Affero General Public License v3 (see file COPYING for details)
4
- # python setup.py test -s tests.test_packages
5
-
6
-
7
- SETUP_INFO = dict(
8
- test_suite="tests",
9
- packages=[
10
- str(n)
11
- for n in """
12
- lino
13
- lino.api
14
- lino.core
15
- lino.core.auth
16
- lino.core.management
17
- lino.fake_migrations
18
- lino.mixins
19
- lino.modlib
20
- lino.modlib.about
21
- lino.modlib.awesomeuploader
22
- lino.modlib.blacklist
23
- lino.modlib.bootstrap3
24
- lino.modlib.changes
25
- lino.modlib.comments
26
- lino.modlib.comments.fixtures
27
- lino.modlib.dashboard
28
- lino.modlib.dupable
29
- lino.modlib.export_excel
30
- lino.modlib.extjs
31
- lino.modlib.forms
32
- lino.modlib.gfks
33
- lino.modlib.help
34
- lino.modlib.help.fixtures
35
- lino.modlib.help.management
36
- lino.modlib.help.management.commands
37
- lino.modlib.ipdict
38
- lino.modlib.jinja
39
- lino.modlib.jinja.management
40
- lino.modlib.jinja.management.commands
41
- lino.modlib.importfilters
42
- lino.modlib.languages
43
- lino.modlib.languages.fixtures
44
- lino.modlib.linod
45
- lino.modlib.linod.management
46
- lino.modlib.linod.management.commands
47
- lino.management
48
- lino.management.commands
49
- lino.modlib.odata
50
- lino.modlib.memo
51
- lino.modlib.office
52
- lino.modlib.checkdata
53
- lino.modlib.checkdata.fixtures
54
- lino.modlib.checkdata.management
55
- lino.modlib.checkdata.management.commands
56
- lino.modlib.publisher
57
- lino.modlib.publisher.fixtures
58
- lino.modlib.printing
59
- lino.modlib.restful
60
- lino.modlib.smtpd
61
- lino.modlib.smtpd.management
62
- lino.modlib.smtpd.management.commands
63
- lino.modlib.notify
64
- lino.modlib.notify.fixtures
65
- lino.modlib.search
66
- lino.modlib.search.management
67
- lino.modlib.search.management.commands
68
- lino.modlib.summaries
69
- lino.modlib.summaries.fixtures
70
- lino.modlib.summaries.management
71
- lino.modlib.summaries.management.commands
72
- lino.modlib.system
73
- lino.modlib.tinymce
74
- lino.modlib.tinymce.fixtures
75
- lino.modlib.uploads
76
- lino.modlib.uploads.fixtures
77
- lino.modlib.users
78
- lino.modlib.users.fixtures
79
- lino.modlib.weasyprint
80
- lino.modlib.wkhtmltopdf
81
- lino.projects
82
- lino.projects.std
83
- lino.sphinxcontrib
84
- lino.sphinxcontrib.logo
85
- lino.utils
86
- lino.utils.mldbc
87
- """.splitlines()
88
- if n
89
- ]
90
- )
File without changes