kivymd / KivyMD

KivyMD is a collection of Material Design compliant widgets for use with Kivy, a framework for cross-platform, touch-enabled graphical applications. https://youtube.com/c/KivyMD https://twitter.com/KivyMD https://habr.com/ru/users/kivymd https://stackoverflow.com/tags/kivymd
https://kivymd.readthedocs.io
MIT License
2.25k stars 674 forks source link

Support for Python 3.7 or at least 3.8 (such as for Windows 7). #1723

Open Poikilos opened 4 months ago

Poikilos commented 4 months ago

Description of the Bug

The readme and tests indicate KivyMD will work on Python 3.7, but it will not due to typing, with not work on 3.7 nor 3.8.

The PyPI page also says it supports 3.7, but it will probably since it is the old version (works fine using Python 3.8 on Windows 7).

You may need (solutions from https://stackoverflow.com/questions/75202610/typeerror-type-object-is-not-subscriptable-python):

from __future__ import annotations

or worst case: from typing import List and change list[ to List[ (same for other cases)

Python 3.8 is the last version to work on Windows 7. Ideally you can support KivyMD. Please also fix the CI tests, since they indicate it will work on 3.7 and 3.8. Often in industrial or hobby setups, people (such as clients in my case) are stuck with a certain version of Windows. The same goes for people who cannot afford a new computer, including certain countries where I know people who say that is common. A program supporting an old OS maybe is avoidable since someone can choose a different program, but since KivyMD is a core component it is not interchangeable with something else.

Code and Logs

from kivymd.app import MDApp
from kivy.lang import Builder

kv = """
Screen:
    # KV-Code
"""

class MainApp(App):
    def build(self):
        self.root = Builder.load_string(kv)

if __name__ == '__main__':
    MainApp().run()

result:

Exception has occurred: TypeError
'type' object is not subscriptable
  File "C:\Users\Owner\git\DepotPro\example-mdapp.py", line 3, in <module>
    from kivymd.app import MDApp
TypeError: 'type' object is not subscriptable

Versions