lona

View on PyPIReverse Dependencies (7)

1.16.2 lona-1.16.2-py3-none-any.whl

Wheel Details

Project: lona
Version: 1.16.2
Filename: lona-1.16.2-py3-none-any.whl
Download: [link]
Size: 146251
MD5: 025ab99a21c5f9e6c2d8f402bad532c3
SHA256: 8440fa28779ac1645fb4cfd8c763a17f34fbcde08262f9f6eb9533014c095837
Uploaded: 2024-03-25 19:35:40 +0000

dist-info

METADATA

Metadata-Version: 2.1
Name: lona
Version: 1.16.2
Summary: Write responsive web apps in full python
Author-Email: Florian Scherf <mail[at]florianscherf.de>
Project-Url: Homepage, https://lona-web.org
Project-Url: Repository, https://github.com/lona-web-org/lona
Project-Url: Bug Tracker, https://github.com/lona-web-org/lona/issues
License: MIT License Copyright (c) 2020 Florian Scherf Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: AsyncIO
Classifier: Framework :: Django
Classifier: Framework :: Pytest
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: Unix
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Internet
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Requires-Python: >=3.8
Requires-Dist: aiohttp (<4,>=3)
Requires-Dist: watchfiles
Requires-Dist: jinja2
Requires-Dist: rlpython
Requires-Dist: typing-extensions
Requires-Dist: tox; extra == "dev"
Requires-Dist: aiohttp (<4,>=3); extra == "lint"
Requires-Dist: jinja2; extra == "lint"
Requires-Dist: rlpython; extra == "lint"
Requires-Dist: typing-extensions; extra == "lint"
Requires-Dist: coverage; extra == "lint"
Requires-Dist: flake8 (==7.0.0); extra == "lint"
Requires-Dist: flake8-2020 (==1.8.1); extra == "lint"
Requires-Dist: flake8-bugbear (==24.2.6); extra == "lint"
Requires-Dist: flake8-commas (==2.1.0); extra == "lint"
Requires-Dist: flake8-comprehensions (==3.14.0); extra == "lint"
Requires-Dist: flake8-length (==0.3.1); extra == "lint"
Requires-Dist: flake8-logging-format (==0.9.0); extra == "lint"
Requires-Dist: flake8-mutable (==1.2.0); extra == "lint"
Requires-Dist: flake8-noqa (==1.4.0); extra == "lint"
Requires-Dist: flake8-pytest-style (==1.7.2); extra == "lint"
Requires-Dist: flake8-quotes (==3.4.0); extra == "lint"
Requires-Dist: flake8-use-fstring (==1.4); extra == "lint"
Requires-Dist: mypy (==1.9.0); extra == "lint"
Requires-Dist: isort (==5.13.2); extra == "lint"
Requires-Dist: pytest (==8.1.1); extra == "lint"
Requires-Dist: build; extra == "packaging"
Requires-Dist: twine; extra == "packaging"
Requires-Dist: aiohttp (<4,>=3); extra == "test"
Requires-Dist: jinja2; extra == "test"
Requires-Dist: rlpython; extra == "test"
Requires-Dist: typing-extensions; extra == "test"
Requires-Dist: coverage (==7.4.4); extra == "test"
Requires-Dist: pytest (==8.1.1); extra == "test"
Requires-Dist: pytest-aiohttp (==1.0.5); extra == "test"
Requires-Dist: pytest-mock (==3.14.0); extra == "test"
Requires-Dist: pytest-timeout (==2.3.1); extra == "test"
Requires-Dist: playwright (==1.40.0); extra == "test"
Provides-Extra: dev
Provides-Extra: lint
Provides-Extra: packaging
Provides-Extra: test
Description-Content-Type: text/x-rst
License-File: LICENSE.txt
[Description omitted; length: 2845 characters]

WHEEL

Wheel-Version: 1.0
Generator: bdist_wheel (0.43.0)
Root-Is-Purelib: true
Tag: py3-none-any

RECORD

Path Digest Size
lona/__init__.py sha256=1s2uDVulkMcJyyEbbBseA9LbMlAhOBBsaxnVbJIDWqI 468
lona/__main__.py sha256=6QjfLyrR_BebxYAJP9oGIQxmmXLtHh7iLHkR8IitbOk 152
lona/_json.py sha256=NAvkbunSl5z77DMj6ZcqOzlC-LPUObJ_No-EHKLa5Rs 478
lona/app.py sha256=PsRAa-Ee_awWVktckBN9Az1anPOcHClaYwqckrPSyXc 12511
lona/buckets.py sha256=uPY4QGRK3zskxndgdEoYcqtng195rDM-gNpjViKP_cI 13157
lona/channels.py sha256=0LxEwbFgYAdmXs5TNaGzu5ymtUZb-f5dCFOY12wR5KU 10214
lona/compat.py sha256=6D2nidHle7n0VTcpDET8ObylzHkHaBDDE4g9i0Kctik 2207
lona/connection.py sha256=dyN8qfkq1H5H5JcEMUYyZhDpLzdFtkr-HbXblnTNmvg 881
lona/default_routes.py sha256=rqIJThSkllAZBOrPqeASYu-op5Q6czwEqmV-17PUb7Y 85
lona/default_settings.py sha256=Ne8K_cgcl8FpQplphVUdrX8oWhixJNlAnibd7Ejm9Eo 3278
lona/default_views.py sha256=WgXuqfosusFsmVIsquTBc4co3IFAAgNo2TLsCl8CHqw 1849
lona/errors.py sha256=ujBaQOq9OV_FGXHj0QVbnglbxQ7t6VZzosDVFgWxTaw 241
lona/exceptions.py sha256=Qsa5iCF95pO9IzuNyOlh_iLzRW58_D0UnpiyWWlva3k 119
lona/imports.py sha256=fB2DNO4k8fnvgfZxbvqu7AeVq1eQgkxDkqZjb2LUNqg 1360
lona/logging.py sha256=_9zAY7L_ET3bfT2H647YdsFS6OUcQSusD5-Zt7znl5A 6706
lona/middleware_controller.py sha256=EWEALyl3a21akmmEoUIFjzHdep45fsTfGQqC-yoXIm0 7071
lona/protocol.py sha256=bLX457Lru8kKbNRZ_6_ESpD2ZKEZB-CERztBQV5kqAk 5343
lona/pytest.py sha256=-u48yOEcu-3Hl_ITt9mCar7omw0dCO52Yetk79KTP4c 7042
lona/request.py sha256=VKroL7K_T4hfw8bERX_MEDKaqq30aUfNeVhg0joWHkg 1182
lona/responses.py sha256=Uv61Uw6bFNkLji2fj4IXJDkJKXhxXugEr34VlTOfePU 8677
lona/routing.py sha256=DiYY_alSkQGBRdpxo49bZxIJDEUmDf776Vm-u4ksuAY 6416
lona/server.py sha256=Fb8YD9ENytDjY01m31zfnI6VOvFR44n67SOk6xCsD2c 31221
lona/settings.py sha256=S0PTm5xdmjJA7PERZl46ab2k3yNIGSe10N3EQi9kIi4 1738
lona/state.py sha256=xg1xflNRYL9l6zu1fLZ9umxIn2U29skWGevfLju-Tp8 2253
lona/static_file_loader.py sha256=14L0TaKsmVM3yInMvUxlo9hHATKtrMOnaUFtU_emR-U 8099
lona/static_files.py sha256=7okWiZHdzA4YZi2eVtjAoYn2ONRBvtSq4uUdo3FtSCk 577
lona/templating.py sha256=4Q3FIqwL7eushLkBTArkT21HlLg0DhabjfVdi2dFug8 4869
lona/unique_ids.py sha256=R_Y8Yn5fptuK8apRDSHB-XiuW42_y3FPu2gBPmDqZxM 527
lona/view.py sha256=kHyThjAvTW1cPsnzfRmE_LkprlZkRpFqQxMfgir_Mgg 11878
lona/view_loader.py sha256=uLZLjDltDu9Ga1uEExoXU1lFm-sqw5ZFj73Eq98eNIA 4110
lona/view_runtime.py sha256=1L3m6SZBeALnOe09jQA2k8n2ztbfnML_T6kW4bal-3k 28275
lona/view_runtime_controller.py sha256=sDRdvPBNOULLTrg68vk7lrY85q_imovw6nBmpS3KCik 13755
lona/warnings.py sha256=cwQzkhBcs-ijrHX7x0xGMFeDQXDOMKlGnqTwBhhXbyI 2263
lona/worker_pool.py sha256=dYeJsGsBw2gdkCqnDkrJ63Wmnp1aYrk6TiIVHB0Uy-k 1620
lona/client/_lona/client/context.js sha256=mUZahqjy7eOWbRcm-EwYwNPfjcH8OP_HoxzW6KPOzD8 10799
lona/client/_lona/client/dom-renderer.js sha256=54LJ7A_goZ6t-TzNLf2guzSQlCQGo-dweIyojK8Ox9c 7428
lona/client/_lona/client/dom-updater.js sha256=RpKgnKKFXffgdT8f_MrftkGbw8GcklgOnIEp5lUAFsw 16485
lona/client/_lona/client/input-events.js sha256=OOBNbAkrObBOWhpYH-08PLQSvM3bZ8UUiwgDCs0s59s 12580
lona/client/_lona/client/lona.js sha256=LmBU9S177mYKjVoiFqTtBgrbAzkRLMnBPr2p1x-laww 1776
lona/client/_lona/client/widget-data-updater.js sha256=Ch3pKKzSY118YUAzzCBb_wHrmAC3nqZBbqcrEXoaDDY 3188
lona/client/_lona/client/window.js sha256=b0E66dm86qsf14SmegVs4vg4mBA25_-dLWBKBbivIrM 12052
lona/client2/_lona/client2/context.js sha256=3F6rlvou9NOvl1t7I4VBl3_ANgUrcrs3NWYK5bXvU6M 10375
lona/client2/_lona/client2/input-events.js sha256=pDzNUhif5oMCxkdjzQAR-nwimejSAhsabCS3Uyi9bqI 12809
lona/client2/_lona/client2/lona.js sha256=LmBU9S177mYKjVoiFqTtBgrbAzkRLMnBPr2p1x-laww 1776
lona/client2/_lona/client2/rendering-engine.js sha256=aDDLKalJhgJvTPTAEsUStR1KmpTD5LbajksaApEYAPY 18898
lona/client2/_lona/client2/widget.js sha256=z8cey8bhDnCExbL3oZWCKqYXaAb4sNnARZcyzjoiDt0 3986
lona/client2/_lona/client2/window-shim.js sha256=RWOzEjYUOLzIaEZc53FJdT12iV-fejeHylULDhQeVXE 1815
lona/client2/_lona/client2/window.js sha256=eWG3iPjrARnmqvCDLHVG6wT_BY_z06mBHUOOkoh-CHY 7607
lona/command_line/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
lona/command_line/collect_static.py sha256=d5cG0tq0ATEme54LiiOXjp7LF3tLUm5dhb84AKklcW8 1956
lona/command_line/handle_command_line.py sha256=S-wIaOX5ZKA2ERFOfJHxfotY1iF5_NxpKEAPYjSbRMA 5548
lona/command_line/run_server.py sha256=9GhuhVaqEuXO3pwYEtVCzW2rGCWK3rIBvFm-sYbcwzo 3260
lona/command_line/terminal.py sha256=VSr6DpuCO6jZ8L97ghOaxClOFeskJs2a603iTsHSsBE 594
lona/events/__init__.py sha256=LcljXaVV1ExNhcqM6_b30PelKE0yhJBLDEg37iNFM5w 52
lona/events/event_types.py sha256=wE9ucAfw-txiB-SX4Fg5b3d0dSDvK-E6NHUpFcKbU24 1401
lona/events/input_event.py sha256=-mgYKeqkpReytoeX06HVvZR7opctyH_GyYKw0rxxpqc 3039
lona/events/view_event.py sha256=T0iquuGF2jWpKLcKFKdWoK6q7A-zIE-w-CUAuicfjDo 279
lona/html/__init__.py sha256=8CsXtRZo9pSEZQc-h7QEqMJ5cJ4upNXB_SgegZ2tfxo 5718
lona/html/abstract_node.py sha256=WoHIDO9xZDx9qxfnPv-WtWG2qtVMnFHl6MtHLExowKw 6201
lona/html/attribute_dict.py sha256=qq6850J-0TVM5VZp-NvOTXf66ub86Q2XqG5Rwjpd3cc 6563
lona/html/attribute_list.py sha256=ZUQUaMPOp85zce7PWUljfVGtQ2CE-oFLp82p40gK-F0 4159
lona/html/document.py sha256=y4ujs6eo-Opjg72NK1YvAhXoBXHNTg6ZNjh5nBIAcf4 2463
lona/html/mixins.py sha256=e7h2y-JzJ8iItzQ8T-sJvVu1TlJvwFzlQMRvm0yLMuU 401
lona/html/node.py sha256=mFEI2NiElOgxIaQz_nzXcS32p9A6wLoBGI_FfGOQqcA 12654
lona/html/node_event_list.py sha256=4vwfVNDWxRzpy9kfC8hauXjIcsVsyUdEzdfghUE5yYw 2420
lona/html/node_list.py sha256=VZP-YHQfGoYOLfwEiGQj3DCuF2ChbaeSkDSYTV1BFrc 6923
lona/html/parsing.py sha256=4GLQ13PK_hivjTH-hMmP4sqjtw_hTG6OA8uZKX4dY6A 9114
lona/html/patches.py sha256=4p97xOURd0Rrv6Lo83hCxbdU2ShoR8OYhhaD17C08cY 772
lona/html/selector.py sha256=Mq39d8poQ9dykqLI2-Lys9PnCfN4AAq4DiM8QR2TBQQ 3093
lona/html/text_node.py sha256=aZLjhBLYa3OLitXDsMhCGMAtneuDu7M9QGXIyuTKPQQ 2046
lona/html/widget.py sha256=HmSRXgJEf_HHFOQeJ5RaucL0OWRUalVARzDGAZYAEpA 2324
lona/html/widget_data.py sha256=jsB2KjQPrhXRSQdYFdNtVXHLF1sjO90hBKQ6bhE8Hsc 13778
lona/html/widgets.py sha256=m8KB3fPy3-CSIXt6MFNiH7SuNPLkcmQ0QGKNbnyCONg 2235
lona/html/nodes/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
lona/html/nodes/content_sectioning.py sha256=mZgzVXl5oHARuC4rIrkerPt_JwAD0iHo-KeExwa61eY 668
lona/html/nodes/demarcating_edits.py sha256=CWL5oig6nO-eJ91qhwGTqSZmMKg967xywRA2B03rrcs 112
lona/html/nodes/document_metadata.py sha256=dZDx2BedzCSysos2jt_Ib-1Y_fNg3aBWn3A66TBqtrU 372
lona/html/nodes/embedded_content.py sha256=a7vY3qFbonCxArutqzNPFkxxadN-pI65WvZovVPkcio 364
lona/html/nodes/image_and_multimedia.py sha256=KKfUSznFvd5E8NlBCcF6Mh45pSIVQeVyJaUd83lj9GQ 370
lona/html/nodes/inline_text_semantics.py sha256=NTAG2xJr8HF2elYATs9ap8ft9uZBzKi2E1Il3usQ_CE 1927
lona/html/nodes/interactive_elements.py sha256=kYm671QJsSNnkwmEHhwDdB8y7LDyYDO0qdiWi59m5JM 174
lona/html/nodes/raw_nodes.py sha256=WSO-skcu9W9bumy0FWYKD8UQ0MqjYLIUgGFNYrjknQo 596
lona/html/nodes/scripting.py sha256=txxBDSrS-RmgsARL3hXESDdkTEBunmQpKRowswGNw1U 174
lona/html/nodes/sectioning_root.py sha256=y2TY-eptawMAcOJ4ySi2i-UbiiqhIaInuOgzwK4rsC0 74
lona/html/nodes/svg_and_mathml.py sha256=ndDbBZuHqpgHKzU0xo5C0mv6hu1unJ2J7BzDjkyjvis 159
lona/html/nodes/table_content.py sha256=7itnzD_JLl7BAbMXe0lNCyZxCyqp28aJePu6oLbDB3M 488
lona/html/nodes/text_content.py sha256=CihuJmzP94whTrFU3V2ipk8dwNDH7qJS8MtvuoBenx0 978
lona/html/nodes/web_components.py sha256=g4vfd8pCutgnT57g0MX-1ZCs9FT1lHMhmdZdOpB-MZk 124
lona/html/nodes/widgets.css sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
lona/html/nodes/widgets.js sha256=w-sCvpUpWzmc-QUpzEcRM2F8f7YOKrsmxbunc7ByG10 429
lona/html/nodes/forms/__init__.py sha256=kErCsEVFOEQABef5l0cZ627Vww6S3S0ZWlEPYydEen8 1259
lona/html/nodes/forms/inputs.py sha256=cHIZGqU7yvFRfTd2rEtHrGaZOqIxclV2rGMrBmi8WnU 8584
lona/html/nodes/forms/radio_button.py sha256=Iu7vqnhznAnSkquYSVK96GJfQberx1mIzkRnKXAcecI 5485
lona/html/nodes/forms/select.py sha256=Eun_Py7H1wep7Jpx22lAmandLDtLY4qlRjWujJ-8R-Y 4251
lona/html/nodes/forms/select2.py sha256=Qi1G3CqU3ldah1l78HdO4BiM3xhB1sC1zuFXSKdeUd8 6590
lona/middlewares/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
lona/middlewares/lona_messages.py sha256=4zwBru7LNYHspDfOv6U9VerlOFQwJqapEBbL19RxejU 965
lona/middlewares/sessions.py sha256=y5cZKM18PsnJEPReiFhT4dvgGHgQdtKvq17Mt9xVGyI 2969
lona/shell/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
lona/shell/shell.py sha256=u0TTR2M0pCJwtCuLX3yhIS2aFNHXlcMKY8xEO3yr2AE 574
lona/shell/commands/__init__.py sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
lona/shell/commands/lona_buckets.py sha256=RCxdM6ngcG8AK_9WJE0Z5PZXPMk8kg8VPRm8THn3hVY 1731
lona/shell/commands/lona_connections.py sha256=8Yib89-4fmmB4uWzH4KVFNz9OHN2DNuXt3oDgh-FbGQ 807
lona/shell/commands/lona_info.py sha256=lfU1KfhARnYB-N2RrkGs8TlSn6l_zIKz3w3lC8mQuow 936
lona/shell/commands/lona_middlewares.py sha256=ECJ47y8Z_4kRfV0YpgXO2pdA0Nrqqwu-fP7uXYoisOQ 1146
lona/shell/commands/lona_routes.py sha256=yfCu9ZbbSDFX-c6gA01v663cu3x5GrZNG1zuCitPBBQ 1865
lona/shell/commands/lona_server_state.py sha256=98hjet_PJYMUl5fDywxDhen96NIvHBUNNS5Ltfiv4ls 880
lona/shell/commands/lona_settings.py sha256=LFVOHIgiQ4yCbPZ1aAc8xIi3p8MFWw4ukn24BosR4uM 1400
lona/shell/commands/lona_static_files.py sha256=Xb09Nd-Z1ftNxhVcyTXzRXYsoOesoC50qvFm-MZoQ58 1973
lona/shell/commands/lona_templates.py sha256=MBdJM9HcRuvb7miSPMXVnvcTEPzo7GXTzOR7eRgLuu0 1968
lona/shell/commands/lona_views.py sha256=a2bqFW_jeM9We8MLHsxqpAkra33bA1DfFlXN5-8itlQ 9116
lona/static/lona/style.css sha256=6aEV1cxoIkzrubl3HIj2WPc_IKuoBSLFCNAkJHRhj_Y 57
lona/templates/lona/403.html sha256=EC7I2WhD3DSnYq5TAZgZB0PNCZKjUwV90VhBjEv7UdY 30
lona/templates/lona/404.html sha256=Oaw8GlS9D7cj1UJYSh63VUX746a7D96GETRCnkRTZuk 30
lona/templates/lona/500.html sha256=u5lCI-uUboC6FHeHzjdQwHZRLnIao_zWWtRYN_0_hVU 35
lona/templates/lona/bucket.html sha256=L1Yqc8TXSQ_LKuWbujIdM9XjWT9nDJ-Ky9D-2G3Ohok 1525
lona/templates/lona/disconnect-message.html sha256=LujFUlmHKdKv_1ZFtJMFiEZzct8LgVH5MtAM4SxvhJs 113
lona/templates/lona/footer.html sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
lona/templates/lona/frontend.html sha256=r0gqUN9WNzceubXyFX0VpoIXsZ60ndxBa3EuAty2M6c 2553
lona/templates/lona/frontend.js sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
lona/templates/lona/header.html sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU 0
lona/templates/lona/script_tags.html sha256=94zqMHFq5wHy87RpYJFuioYT9Cf3jcV27I_KdGj7M5U 486
lona/templates/lona/style_tags.html sha256=HAosgFRWOTmutVmgsmq868T0_P7UON8_VMlsnzrJW9o 144
lona/templates/lona/waiting-for-server-message.html sha256=iTr74Ocvzw8iFtkA61Q7K9hp6AukokYCBucss7eRPS8 22
lona-1.16.2.data/scripts/lona sha256=lt2RgD5RNdwnf2kKhQB_E4Ll8dAL1CVIP_6lUxKrFyo 178
lona-1.16.2.dist-info/LICENSE.txt sha256=HLOlNt9IrrfqdnxZEPdKkoAmVpGFYIPfLgTHX2lNi9Y 1071
lona-1.16.2.dist-info/METADATA sha256=vFc1IhACwaBh1iH4mL-v2vAx7zPWPI30mNduuqf2NEY 6957
lona-1.16.2.dist-info/WHEEL sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ 92
lona-1.16.2.dist-info/entry_points.txt sha256=2svMt1xT_um8rzENoDGGKZO5QSEc0r2yLCGRzNCuxdE 30
lona-1.16.2.dist-info/top_level.txt sha256=ENRewFqc-BnFkyiAOGyi6MsX6LZJyaUs4tVskv7rJbI 5
lona-1.16.2.dist-info/RECORD

top_level.txt

lona

entry_points.txt

lona = lona.pytest