Kivy-examples 2.3.1.dev0__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.
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/main.py +77 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/monkey.obj +7966 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/objloader.py +147 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/3Drendering/simple.glsl +47 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/editor.kv +72 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/RST_Editor/main.py +64 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/compass.kv +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/main.py +77 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/needle.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/compass/rose.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/main.py +80 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/shadow32.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/android/takepicture/takepicture.kv +40 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/animation/animate.py +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite.py +152 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_suite_data/testkvdir.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_build.py +24 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_config.py +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv.py +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/app_with_kv_in_template1.py +27 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/template1/test.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/test.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/application/testkvfile.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_advanced.py +90 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/asyncio_basic.py +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_advanced.py +93 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/async/trio_basic.py +58 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12908_sweet_trip_mm_clap_hi.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12909_sweet_trip_mm_clap_lo.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12910_sweet_trip_mm_clap_mid.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12911_sweet_trip_mm_hat_cl.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12913_sweet_trip_mm_kick_hi.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12914_sweet_trip_mm_kick_lo.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12915_sweet_trip_mm_kick_mid.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12916_sweet_trip_mm_kwik_mod_01.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12917_sweet_trip_mm_kwik_mod_02.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12918_sweet_trip_mm_kwik_mod_03.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12919_sweet_trip_mm_kwik_mod_04.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12920_sweet_trip_mm_kwik_mod_05.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12921_sweet_trip_mm_kwik_mod_06.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12922_sweet_trip_mm_kwik_mod_07.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12923_sweet_trip_mm_metal_clave.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12925_sweet_trip_mm_sweep_x.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12926_sweet_trip_mm_sweep_y.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/12927_sweet_trip_mm_sweep_z.wav +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/audio.kv +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/main.py +81 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/audio/pitch.py +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/camera/main.py +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/bezier.py +105 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/canvas_stress.py +72 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/circle.py +84 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/fbo_canvas.py +91 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/kiwi.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines.py +296 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/lines_extended.py +183 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh.py +57 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mesh_manipulation.py +101 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture1.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/mtexture2.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/multitexture.py +110 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/repeat_texture.py +65 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rotation.py +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/rounded_rectangle.py +153 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/scale.py +37 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/stencil_canvas.py +85 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/tesselate.py +146 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture.py +143 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/canvas/texture_example_image.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/1.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/2.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/3.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/kv/root.kv +32 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/container/main.py +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_image.py +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/cover/cover_video.py +31 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/camera_puzzle.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/AnchorLayoutContainer.kv +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/BoxLayoutContainer.kv +14 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ButtonContainer.kv +27 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/CheckBoxContainer.kv +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FileChooserContainer.kv +19 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/FloatLayoutContainer.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/GridLayoutContainer.kv +20 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/LabelContainer.kv +62 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/MediaContainer.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PlaygroundContainer.kv +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/PopupContainer.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ProgressBarContainer.kv +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/RestContainer.kv +5 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/ScatterContainer.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/SelectorsContainer.kv +10 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/StackLayoutContainer.kv +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/container_kvs/TextContainer.kv +20 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/kivycatalog.kv +144 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/kivycatalog/main.py +192 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.kv +117 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/gesturedatabase.py +180 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/helpers.py +30 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.kv +164 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/historymanager.py +276 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/main.py +144 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/multistroke.kv +101 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.kv +110 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/multistroke/settings.py +97 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Bubbles.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Ill1.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/Wall.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/images/faust_github.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/main.py +73 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/pictures.kv +57 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/pictures/shadow32.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/main.py +147 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/shadereditor/shadereditor.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/README.txt +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/background.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/faust_github.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/README +4 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/bug.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-left.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/icons/chevron-right.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/accordions.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/bubbles.kv +33 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/buttons.kv +26 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/carousel.kv +51 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/checkboxes.kv +33 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/codeinput.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/dropdown.kv +40 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/filechoosers.kv +24 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/popups.kv +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/progressbar.kv +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/rstdocument.kv +24 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/scatter.kv +14 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/screenmanager.kv +46 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/sliders.kv +55 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/spinner.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/splitter.kv +13 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/switches.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/tabbedpanel + layouts.kv +69 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/textinputs.kv +48 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/data/screens/togglebutton.kv +39 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/main.py +243 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/showcase/showcase.kv +100 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/README.txt +12 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/icon.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/main.py +170 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/particle.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/demo/touchtracer/touchtracer.kv +29 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_client_app.py +82 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/echo_server_app.py +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/frameworks/twisted/twistd_app.py +66 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/gesture_board.py +95 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/gestures/my_gestures.py +90 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/controller.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/designwithkv/main.py +29 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/1_skeleton.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/2_print_touch.py +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/3_draw_ellipse.py +22 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/4_draw_line.py +26 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/5_random_colors.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/firstwidget/6_button.py +38 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/guide/quickstart/main.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/button.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/layout.kv +6 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/main.py +19 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/includes/test.kv +5 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/main.py +226 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/keyboard/numeric.json +38 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/README.txt +13 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kinect/kinectviewer.py +283 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_button.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_camera.kv +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_fbo.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_layout.kv +23 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_logo.kv +36 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_scatter.kv +6 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_stencil.kv +27 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/app_video.kv +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/builder_template.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/id_in_kv.py +20 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/id_in_kv/test.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/kv_and_py.py +34 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/ids/kv_and_py/test.kv +11 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kivy.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/kv/kvrun.py +38 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/clipboard.py +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/custom_titlebar.py +56 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/imagesave.py +14 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/joystick.py +83 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/multiple_dropfile.py +51 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/on_textedit_event.py +104 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/opacitywindow.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapecollisions.py +397 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/shapedwindow.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/two_panes.py +47 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/miscellaneous/urlrequest.py +128 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/settings/main.py +122 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.kv +9 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/plasma.py +86 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.kv +91 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/rotated.py +102 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.kv +29 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/shadertree.py +193 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/shader/tex3.jpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/benchmark.py +19 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/cloud.svg +25 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main-smaa.py +155 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/main.py +50 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/music.svg +68 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/rotated.svg +23 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/ship.svg +181 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/sun.svg +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/svg/tiger.svg +813 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/text/pango_demo.py +296 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/data/icon.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/main.py +163 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/notes/final/note.kv +154 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/main.py +82 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/pong.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/main.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step1/pong.kv +2 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/main.py +15 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step2/pong.kv +21 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/main.py +26 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step3/pong.kv +31 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/main.py +48 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step4/pong.kv +34 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/main.py +75 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/tutorials/pong/steps/step5/pong.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/accordion_1.py +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/actionbar.py +32 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/asyncimage.py +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/boxlayout_poshint.py +54 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/bubble_test.py +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/camera.py +33 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/carousel_buttons.py +50 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.mpg +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/cityCC0.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinput.py +225 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/codeinputtest.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorpicker.py +234 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/colorusage.py +62 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/compound_selection.py +83 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/customcollide.py +82 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget.py +193 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget2.py +47 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/effectwidget3_advanced.py +62 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/fbowidget.py +111 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/focus_behavior.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/image_mipmap.py +31 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/keyboardlistener.py +42 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_mipmap.py +28 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_sizing.py +193 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_text_size.py +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/label_with_markup.py +21 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/lang_dynamic_classes.py +18 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/pagelayout.py +64 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/popup_with_kv.py +35 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/basic_data.py +124 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/infinite_scrolling.py +143 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/key_viewclass.py +149 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/messenger.py +196 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/pull_to_refresh.py +95 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/recycleview/rv_animate_items.py +109 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/rstexample.py +128 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.kv +53 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scatter.py +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/screenmanager.py +106 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.kv +16 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/scrollview.py +40 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/android.txt +3 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/bird.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/button_white_animated.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/cube.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.png +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/info.zip +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/data/images/simple_cv_joint_animated.gif +0 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.kv +63 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/main.py +150 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/__init__.py +7 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/sequenced_images/uix/custom_button.py +98 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/settings.py +93 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/shorten_text.py +80 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/spinner.py +17 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/splitter.py +74 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbed_panel_showcase.py +316 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/tabbedpanel.py +50 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.kv +49 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textalign.py +48 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/textinput.py +59 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/unicode_textinput.py +244 -0
- Kivy_examples-2.3.1.dev0.data/data/share/kivy-examples/widgets/videoplayer.py +26 -0
- Kivy_examples-2.3.1.dev0.dist-info/AUTHORS +66 -0
- Kivy_examples-2.3.1.dev0.dist-info/LICENSE +21 -0
- Kivy_examples-2.3.1.dev0.dist-info/METADATA +382 -0
- Kivy_examples-2.3.1.dev0.dist-info/RECORD +624 -0
- Kivy_examples-2.3.1.dev0.dist-info/WHEEL +5 -0
- Kivy_examples-2.3.1.dev0.dist-info/dependency_links.txt +1 -0
- Kivy_examples-2.3.1.dev0.dist-info/top_level.txt +1 -0
- kivy/__init__.py +519 -0
- kivy/_version.py +18 -0
- kivy/animation.py +831 -0
- kivy/app.py +1213 -0
- kivy/atlas.py +456 -0
- kivy/base.py +617 -0
- kivy/cache.py +262 -0
- kivy/clock.py +1172 -0
- kivy/compat.py +82 -0
- kivy/config.py +1004 -0
- kivy/context.py +102 -0
- kivy/core/__init__.py +247 -0
- kivy/core/audio/__init__.py +223 -0
- kivy/core/audio/audio_android.py +104 -0
- kivy/core/audio/audio_avplayer.py +82 -0
- kivy/core/audio/audio_ffpyplayer.py +185 -0
- kivy/core/audio/audio_gstplayer.py +101 -0
- kivy/core/audio/audio_pygame.py +127 -0
- kivy/core/camera/__init__.py +151 -0
- kivy/core/camera/camera_android.py +206 -0
- kivy/core/camera/camera_gi.py +170 -0
- kivy/core/camera/camera_opencv.py +163 -0
- kivy/core/camera/camera_picamera.py +96 -0
- kivy/core/clipboard/__init__.py +157 -0
- kivy/core/clipboard/_clipboard_ext.py +36 -0
- kivy/core/clipboard/clipboard_android.py +91 -0
- kivy/core/clipboard/clipboard_dbusklipper.py +41 -0
- kivy/core/clipboard/clipboard_dummy.py +26 -0
- kivy/core/clipboard/clipboard_gtk3.py +47 -0
- kivy/core/clipboard/clipboard_nspaste.py +44 -0
- kivy/core/clipboard/clipboard_pygame.py +67 -0
- kivy/core/clipboard/clipboard_sdl2.py +36 -0
- kivy/core/clipboard/clipboard_winctypes.py +107 -0
- kivy/core/clipboard/clipboard_xclip.py +29 -0
- kivy/core/clipboard/clipboard_xsel.py +26 -0
- kivy/core/gl/__init__.py +90 -0
- kivy/core/image/__init__.py +996 -0
- kivy/core/image/img_dds.py +40 -0
- kivy/core/image/img_ffpyplayer.py +87 -0
- kivy/core/image/img_pil.py +123 -0
- kivy/core/image/img_pygame.py +119 -0
- kivy/core/image/img_sdl2.py +66 -0
- kivy/core/image/img_tex.py +58 -0
- kivy/core/spelling/__init__.py +135 -0
- kivy/core/spelling/spelling_enchant.py +50 -0
- kivy/core/spelling/spelling_osxappkit.py +64 -0
- kivy/core/text/__init__.py +1090 -0
- kivy/core/text/markup.py +893 -0
- kivy/core/text/text_pango.py +145 -0
- kivy/core/text/text_pil.py +84 -0
- kivy/core/text/text_pygame.py +117 -0
- kivy/core/text/text_sdl2.py +50 -0
- kivy/core/video/__init__.py +219 -0
- kivy/core/video/video_ffmpeg.py +106 -0
- kivy/core/video/video_ffpyplayer.py +449 -0
- kivy/core/video/video_gstplayer.py +140 -0
- kivy/core/video/video_null.py +12 -0
- kivy/core/window/__init__.py +2515 -0
- kivy/core/window/window_egl_rpi.py +86 -0
- kivy/core/window/window_pygame.py +441 -0
- kivy/core/window/window_sdl2.py +999 -0
- kivy/deps/__init__.py +6 -0
- kivy/effects/__init__.py +23 -0
- kivy/effects/dampedscroll.py +114 -0
- kivy/effects/kinetic.py +193 -0
- kivy/effects/opacityscroll.py +27 -0
- kivy/effects/scroll.py +126 -0
- kivy/event.py +12 -0
- kivy/eventmanager/__init__.py +185 -0
- kivy/extras/__init__.py +0 -0
- kivy/extras/highlight.py +52 -0
- kivy/factory.py +190 -0
- kivy/factory_registers.py +201 -0
- kivy/garden/__init__.py +186 -0
- kivy/geometry.py +121 -0
- kivy/gesture.py +424 -0
- kivy/graphics/__init__.py +126 -0
- kivy/graphics/cgl_backend/__init__.py +0 -0
- kivy/input/__init__.py +39 -0
- kivy/input/factory.py +35 -0
- kivy/input/motionevent.py +587 -0
- kivy/input/postproc/__init__.py +27 -0
- kivy/input/postproc/calibration.py +200 -0
- kivy/input/postproc/dejitter.py +74 -0
- kivy/input/postproc/doubletap.py +101 -0
- kivy/input/postproc/ignorelist.py +47 -0
- kivy/input/postproc/retaintouch.py +93 -0
- kivy/input/postproc/tripletap.py +106 -0
- kivy/input/provider.py +40 -0
- kivy/input/providers/__init__.py +68 -0
- kivy/input/providers/androidjoystick.py +117 -0
- kivy/input/providers/hidinput.py +778 -0
- kivy/input/providers/leapfinger.py +113 -0
- kivy/input/providers/linuxwacom.py +396 -0
- kivy/input/providers/mactouch.py +220 -0
- kivy/input/providers/mouse.py +424 -0
- kivy/input/providers/mtdev.py +380 -0
- kivy/input/providers/probesysfs.py +254 -0
- kivy/input/providers/tuio.py +326 -0
- kivy/input/providers/wm_common.py +162 -0
- kivy/input/providers/wm_pen.py +121 -0
- kivy/input/providers/wm_touch.py +157 -0
- kivy/input/recorder.py +335 -0
- kivy/input/shape.py +27 -0
- kivy/interactive.py +335 -0
- kivy/lang/__init__.py +883 -0
- kivy/lang/builder.py +1004 -0
- kivy/lang/parser.py +822 -0
- kivy/lib/__init__.py +21 -0
- kivy/lib/ddsfile.py +419 -0
- kivy/lib/gstplayer/__init__.py +27 -0
- kivy/lib/mtdev.py +254 -0
- kivy/lib/vidcore_lite/__init__.py +0 -0
- kivy/loader.py +579 -0
- kivy/logger.py +646 -0
- kivy/metrics.py +421 -0
- kivy/modules/__init__.py +300 -0
- kivy/modules/_webdebugger.py +200 -0
- kivy/modules/console.py +1059 -0
- kivy/modules/cursor.py +75 -0
- kivy/modules/inspector.py +755 -0
- kivy/modules/joycursor.py +299 -0
- kivy/modules/keybinding.py +64 -0
- kivy/modules/monitor.py +90 -0
- kivy/modules/recorder.py +94 -0
- kivy/modules/screen.py +183 -0
- kivy/modules/showborder.py +33 -0
- kivy/modules/touchring.py +97 -0
- kivy/modules/webdebugger.py +30 -0
- kivy/multistroke.py +1477 -0
- kivy/network/__init__.py +7 -0
- kivy/network/urlrequest.py +794 -0
- kivy/parser.py +154 -0
- kivy/resources.py +102 -0
- kivy/storage/__init__.py +405 -0
- kivy/storage/dictstore.py +98 -0
- kivy/storage/jsonstore.py +92 -0
- kivy/storage/redisstore.py +103 -0
- kivy/support.py +267 -0
- kivy/tests/__init__.py +11 -0
- kivy/tests/async_common.py +568 -0
- kivy/tests/common.py +524 -0
- kivy/tests/conftest.py +33 -0
- kivy/tests/fixtures.py +169 -0
- kivy/tests/perf_test_textinput.py +195 -0
- kivy/tests/pyinstaller/simple_widget/main.py +12 -0
- kivy/tests/pyinstaller/simple_widget/project/__init__.py +0 -0
- kivy/tests/pyinstaller/simple_widget/project/widget.py +12 -0
- kivy/tests/pyinstaller/test_pyinstaller.py +115 -0
- kivy/tests/pyinstaller/video_widget/main.py +6 -0
- kivy/tests/pyinstaller/video_widget/project/__init__.py +38 -0
- kivy/tests/test_animations.py +415 -0
- kivy/tests/test_app.py +216 -0
- kivy/tests/test_audio.py +69 -0
- kivy/tests/test_benchmark.py +292 -0
- kivy/tests/test_clipboard.py +48 -0
- kivy/tests/test_clock.py +292 -0
- kivy/tests/test_compat.py +6 -0
- kivy/tests/test_config.py +35 -0
- kivy/tests/test_coverage.py +83 -0
- kivy/tests/test_doc_gallery.py +38 -0
- kivy/tests/test_environ_cli.py +50 -0
- kivy/tests/test_fbo_py2py3.py +74 -0
- kivy/tests/test_filechooser.py +11 -0
- kivy/tests/test_filechooser_unicode.py +82 -0
- kivy/tests/test_fonts.py +42 -0
- kivy/tests/test_garden.py +23 -0
- kivy/tests/test_graphics.py +1149 -0
- kivy/tests/test_graphics_svg.py +84 -0
- kivy/tests/test_image.py +74 -0
- kivy/tests/test_imageloader.py +485 -0
- kivy/tests/test_invalid_lang.py +42 -0
- kivy/tests/test_issues/test_6315.py +55 -0
- kivy/tests/test_issues/test_issue_1084.py +47 -0
- kivy/tests/test_issues/test_issue_1091.py +19 -0
- kivy/tests/test_issues/test_issue_599.py +21 -0
- kivy/tests/test_issues/test_issue_609.py +19 -0
- kivy/tests/test_issues/test_issue_6909.py +28 -0
- kivy/tests/test_issues/test_issue_883.py +12 -0
- kivy/tests/test_kivy_init.py +30 -0
- kivy/tests/test_knspace.py +247 -0
- kivy/tests/test_lang.py +431 -0
- kivy/tests/test_lang_complex.py +87 -0
- kivy/tests/test_lang_pre_process_and_post_process.py +394 -0
- kivy/tests/test_logger.py +516 -0
- kivy/tests/test_metrics.py +30 -0
- kivy/tests/test_module_inspector.py +382 -0
- kivy/tests/test_motion_event.py +44 -0
- kivy/tests/test_mouse_hover_event.py +249 -0
- kivy/tests/test_mouse_multitouchsim.py +554 -0
- kivy/tests/test_multistroke.py +389 -0
- kivy/tests/test_properties.py +1332 -0
- kivy/tests/test_resources.py +79 -0
- kivy/tests/test_rst_replace.py +63 -0
- kivy/tests/test_screen.py +38 -0
- kivy/tests/test_storage.py +135 -0
- kivy/tests/test_uix_actionbar.py +363 -0
- kivy/tests/test_uix_anchorlayout.py +79 -0
- kivy/tests/test_uix_asyncimage.py +133 -0
- kivy/tests/test_uix_boxlayout.py +94 -0
- kivy/tests/test_uix_bubble.py +425 -0
- kivy/tests/test_uix_carousel.py +93 -0
- kivy/tests/test_uix_colorpicker.py +77 -0
- kivy/tests/test_uix_dropdown.py +91 -0
- kivy/tests/test_uix_gridlayout.py +244 -0
- kivy/tests/test_uix_layout.py +16 -0
- kivy/tests/test_uix_modal.py +101 -0
- kivy/tests/test_uix_recyclegridlayout.py +383 -0
- kivy/tests/test_uix_relativelayout.py +30 -0
- kivy/tests/test_uix_scrollview.py +358 -0
- kivy/tests/test_uix_settings.py +33 -0
- kivy/tests/test_uix_slider.py +156 -0
- kivy/tests/test_uix_stacklayout.py +120 -0
- kivy/tests/test_uix_textinput.py +577 -0
- kivy/tests/test_uix_translate_coordinates.py +72 -0
- kivy/tests/test_uix_videoplayer.py +112 -0
- kivy/tests/test_uix_widget.py +137 -0
- kivy/tests/test_urlrequest/test_urlrequest_requests.py +378 -0
- kivy/tests/test_urlrequest/test_urlrequest_urllib.py +155 -0
- kivy/tests/test_utils.py +237 -0
- kivy/tests/test_vector.py +256 -0
- kivy/tests/test_video.py +25 -0
- kivy/tests/test_weakmethod.py +44 -0
- kivy/tests/test_widget.py +127 -0
- kivy/tests/test_widget_walk.py +70 -0
- kivy/tests/test_window_base.py +60 -0
- kivy/tests/test_window_info.py +29 -0
- kivy/tests/visual_test_label.py +291 -0
- kivy/tools/__init__.py +44 -0
- kivy/tools/benchmark.py +286 -0
- kivy/tools/changelog_parser.py +120 -0
- kivy/tools/coverage.py +135 -0
- kivy/tools/gallery.py +323 -0
- kivy/tools/generate-icons.py +117 -0
- kivy/tools/gles_compat/subset_gles.py +125 -0
- kivy/tools/highlight/__init__.py +9 -0
- kivy/tools/kviewer.py +80 -0
- kivy/tools/packaging/__init__.py +12 -0
- kivy/tools/packaging/cython_cfg.py +82 -0
- kivy/tools/packaging/factory.py +105 -0
- kivy/tools/packaging/pyinstaller_hooks/__init__.py +381 -0
- kivy/tools/packaging/pyinstaller_hooks/__main__.py +29 -0
- kivy/tools/packaging/pyinstaller_hooks/hook-kivy.py +9 -0
- kivy/tools/packaging/pyinstaller_hooks/pyi_rth_kivy.py +17 -0
- kivy/tools/pep8checker/pep8.py +2316 -0
- kivy/tools/pep8checker/pep8kivy.py +109 -0
- kivy/tools/report.py +223 -0
- kivy/tools/stub-gl-debug.py +201 -0
- kivy/tools/texturecompress.py +233 -0
- kivy/uix/__init__.py +56 -0
- kivy/uix/accordion.py +484 -0
- kivy/uix/actionbar.py +934 -0
- kivy/uix/anchorlayout.py +122 -0
- kivy/uix/behaviors/__init__.py +95 -0
- kivy/uix/behaviors/button.py +212 -0
- kivy/uix/behaviors/codenavigation.py +167 -0
- kivy/uix/behaviors/compoundselection.py +688 -0
- kivy/uix/behaviors/cover.py +160 -0
- kivy/uix/behaviors/drag.py +234 -0
- kivy/uix/behaviors/emacs.py +140 -0
- kivy/uix/behaviors/focus.py +595 -0
- kivy/uix/behaviors/knspace.py +590 -0
- kivy/uix/behaviors/togglebutton.py +156 -0
- kivy/uix/behaviors/touchripple.py +318 -0
- kivy/uix/boxlayout.py +331 -0
- kivy/uix/bubble.py +576 -0
- kivy/uix/button.py +137 -0
- kivy/uix/camera.py +118 -0
- kivy/uix/carousel.py +695 -0
- kivy/uix/checkbox.py +197 -0
- kivy/uix/codeinput.py +238 -0
- kivy/uix/colorpicker.py +486 -0
- kivy/uix/dropdown.py +391 -0
- kivy/uix/effectwidget.py +772 -0
- kivy/uix/filechooser.py +1134 -0
- kivy/uix/floatlayout.py +148 -0
- kivy/uix/gesturesurface.py +625 -0
- kivy/uix/gridlayout.py +629 -0
- kivy/uix/image.py +528 -0
- kivy/uix/label.py +1200 -0
- kivy/uix/layout.py +322 -0
- kivy/uix/modalview.py +339 -0
- kivy/uix/pagelayout.py +233 -0
- kivy/uix/popup.py +266 -0
- kivy/uix/progressbar.py +95 -0
- kivy/uix/recycleboxlayout.py +183 -0
- kivy/uix/recyclegridlayout.py +255 -0
- kivy/uix/recyclelayout.py +446 -0
- kivy/uix/recycleview/__init__.py +624 -0
- kivy/uix/recycleview/datamodel.py +194 -0
- kivy/uix/recycleview/layout.py +253 -0
- kivy/uix/recycleview/views.py +423 -0
- kivy/uix/relativelayout.py +324 -0
- kivy/uix/rst.py +1492 -0
- kivy/uix/sandbox.py +198 -0
- kivy/uix/scatter.py +645 -0
- kivy/uix/scatterlayout.py +93 -0
- kivy/uix/screenmanager.py +1275 -0
- kivy/uix/scrollview.py +1288 -0
- kivy/uix/settings.py +1343 -0
- kivy/uix/slider.py +421 -0
- kivy/uix/spinner.py +221 -0
- kivy/uix/splitter.py +430 -0
- kivy/uix/stacklayout.py +331 -0
- kivy/uix/stencilview.py +40 -0
- kivy/uix/switch.py +122 -0
- kivy/uix/tabbedpanel.py +880 -0
- kivy/uix/textinput.py +4049 -0
- kivy/uix/togglebutton.py +37 -0
- kivy/uix/treeview.py +665 -0
- kivy/uix/video.py +302 -0
- kivy/uix/videoplayer.py +697 -0
- kivy/uix/vkeyboard.py +879 -0
- kivy/uix/widget.py +1629 -0
- kivy/utils.py +550 -0
- kivy/vector.py +412 -0
- kivy/weakmethod.py +72 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import configparser
|
|
2
|
+
from os.path import join, dirname
|
|
3
|
+
import textwrap
|
|
4
|
+
|
|
5
|
+
__all__ = ('get_cython_versions', 'get_cython_msg')
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def get_cython_versions(setup_cfg=''):
|
|
9
|
+
_cython_config = configparser.ConfigParser()
|
|
10
|
+
if setup_cfg:
|
|
11
|
+
_cython_config.read(setup_cfg)
|
|
12
|
+
else:
|
|
13
|
+
_cython_config.read(
|
|
14
|
+
join(dirname(__file__), '..', '..', '..', 'setup.cfg'))
|
|
15
|
+
|
|
16
|
+
cython_min = _cython_config['kivy']['cython_min']
|
|
17
|
+
cython_max = _cython_config['kivy']['cython_max']
|
|
18
|
+
cython_unsupported = _cython_config['kivy']['cython_exclude'].split(',')
|
|
19
|
+
# ref https://github.com/cython/cython/issues/1968
|
|
20
|
+
|
|
21
|
+
cython_requires = (
|
|
22
|
+
'cython>={min_version},<={max_version},{exclusion}'.format(
|
|
23
|
+
min_version=cython_min,
|
|
24
|
+
max_version=cython_max,
|
|
25
|
+
exclusion=','.join('!=%s' % excl for excl in cython_unsupported),
|
|
26
|
+
)
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
return cython_requires, cython_min, cython_max, cython_unsupported
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def get_cython_msg():
|
|
33
|
+
cython_requires, cython_min, cython_max, cython_unsupported = \
|
|
34
|
+
get_cython_versions()
|
|
35
|
+
cython_unsupported_append = '''
|
|
36
|
+
|
|
37
|
+
Please note that the following versions of Cython are not supported
|
|
38
|
+
at all: {}'''.format(', '.join(map(str, cython_unsupported)))
|
|
39
|
+
|
|
40
|
+
cython_min_msg = textwrap.dedent('''
|
|
41
|
+
This version of Cython is not compatible with Kivy. Please upgrade to
|
|
42
|
+
at least version {0}, preferably the newest supported version {1}.
|
|
43
|
+
|
|
44
|
+
If your platform provides a Cython package, make sure you have upgraded
|
|
45
|
+
to the newest version. If the newest version available is still too low,
|
|
46
|
+
please remove it and install the newest supported Cython via pip:
|
|
47
|
+
|
|
48
|
+
pip install -I "{3}"{2}
|
|
49
|
+
'''.format(cython_min, cython_max,
|
|
50
|
+
cython_unsupported_append if cython_unsupported else '',
|
|
51
|
+
cython_requires))
|
|
52
|
+
|
|
53
|
+
cython_max_msg = textwrap.dedent('''
|
|
54
|
+
This version of Cython is untested with Kivy. While this version may
|
|
55
|
+
work perfectly fine, it is possible that you may experience issues.
|
|
56
|
+
Please downgrade to a supported version, or update cython_max in
|
|
57
|
+
setup.cfg to your version of Cython. It is best to use the newest
|
|
58
|
+
supported version, {1}, but the minimum supported version is {0}.
|
|
59
|
+
|
|
60
|
+
If your platform provides a Cython package, check if you can downgrade
|
|
61
|
+
to a supported version. Otherwise, uninstall the platform package and
|
|
62
|
+
install Cython via pip:
|
|
63
|
+
|
|
64
|
+
pip install -I "{3}"{2}
|
|
65
|
+
'''.format(cython_min, cython_max,
|
|
66
|
+
cython_unsupported_append if cython_unsupported else '',
|
|
67
|
+
cython_requires))
|
|
68
|
+
|
|
69
|
+
cython_unsupported_msg = textwrap.dedent('''
|
|
70
|
+
This version of Cython suffers from known bugs and is unsupported.
|
|
71
|
+
Please install the newest supported version, {1}, if possible, but
|
|
72
|
+
the minimum supported version is {0}.
|
|
73
|
+
|
|
74
|
+
If your platform provides a Cython package, check if you can install
|
|
75
|
+
a supported version. Otherwise, uninstall the platform package and
|
|
76
|
+
install Cython via pip:
|
|
77
|
+
|
|
78
|
+
pip install -I "{3}"{2}
|
|
79
|
+
'''.format(cython_min, cython_max, cython_unsupported_append,
|
|
80
|
+
cython_requires))
|
|
81
|
+
|
|
82
|
+
return cython_min_msg, cython_max_msg, cython_unsupported_msg
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
from __future__ import print_function
|
|
2
|
+
|
|
3
|
+
__all__ = ('FactoryBuild', )
|
|
4
|
+
|
|
5
|
+
import fnmatch
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
from setuptools import Command
|
|
9
|
+
|
|
10
|
+
import kivy
|
|
11
|
+
|
|
12
|
+
ignore_list = (
|
|
13
|
+
'kivy.lib',
|
|
14
|
+
'kivy.input.providers',
|
|
15
|
+
'kivy.input.postproc',
|
|
16
|
+
'kivy.modules',
|
|
17
|
+
'kivy.tools',
|
|
18
|
+
'kivy.parser',
|
|
19
|
+
'kivy.tests',
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class FactoryBuild(Command):
|
|
24
|
+
description = 'Build the factory relation file (for factory.py)'
|
|
25
|
+
user_options = []
|
|
26
|
+
|
|
27
|
+
def initialize_options(self):
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
def finalize_options(self):
|
|
31
|
+
pass
|
|
32
|
+
|
|
33
|
+
def run(self):
|
|
34
|
+
print('--------------------------------------------')
|
|
35
|
+
print('Building factory relation file')
|
|
36
|
+
print('--------------------------------------------')
|
|
37
|
+
|
|
38
|
+
root_dir = os.path.dirname(kivy.__file__)
|
|
39
|
+
filename = os.path.join(root_dir, 'factory_registers.py')
|
|
40
|
+
with open(filename, 'w') as fd:
|
|
41
|
+
fd.close()
|
|
42
|
+
|
|
43
|
+
# ensure we don't have any thing like doc running
|
|
44
|
+
symbols = []
|
|
45
|
+
for root, dirnames, filenames in os.walk(root_dir):
|
|
46
|
+
if not root.startswith(root_dir):
|
|
47
|
+
raise Exception('Directory should start with the kivy'
|
|
48
|
+
'directory')
|
|
49
|
+
root = 'kivy' + root[len(root_dir):].replace(os.path.sep, '.')
|
|
50
|
+
for filename in fnmatch.filter(filenames, '*.[ps][yo]'):
|
|
51
|
+
module = '%s.%s' % (root, filename[:-3])
|
|
52
|
+
|
|
53
|
+
# check ignore list first
|
|
54
|
+
ignore = False
|
|
55
|
+
for ignore in ignore_list:
|
|
56
|
+
if module.startswith(ignore):
|
|
57
|
+
ignore = True
|
|
58
|
+
break
|
|
59
|
+
if ignore:
|
|
60
|
+
# print('<<< ignored (ignore list)')
|
|
61
|
+
continue
|
|
62
|
+
|
|
63
|
+
# special case, core providers
|
|
64
|
+
if root.startswith('kivy.core.'):
|
|
65
|
+
if not root.endswith('__init__.py'):
|
|
66
|
+
# print('<<< ignored (not a __init__.py)')
|
|
67
|
+
continue
|
|
68
|
+
|
|
69
|
+
print('>>>', module, '::', end=' ')
|
|
70
|
+
|
|
71
|
+
try:
|
|
72
|
+
m = __import__(name=module, fromlist='.')
|
|
73
|
+
except Exception as e:
|
|
74
|
+
print()
|
|
75
|
+
print('ERROR:', e)
|
|
76
|
+
continue
|
|
77
|
+
if not hasattr(m, '__all__'):
|
|
78
|
+
print()
|
|
79
|
+
continue
|
|
80
|
+
for symbol in getattr(m, '__all__'):
|
|
81
|
+
if symbol.startswith('_'):
|
|
82
|
+
continue
|
|
83
|
+
attr = getattr(m, symbol)
|
|
84
|
+
if type(attr) not in (type, type):
|
|
85
|
+
continue
|
|
86
|
+
symbols.append((symbol, module))
|
|
87
|
+
print(symbol, end=' ')
|
|
88
|
+
print()
|
|
89
|
+
|
|
90
|
+
print()
|
|
91
|
+
print('--------------------------------------------')
|
|
92
|
+
print('Found %d symbols, generating file' % len(symbols))
|
|
93
|
+
print('--------------------------------------------')
|
|
94
|
+
|
|
95
|
+
filename = os.path.join(root_dir, 'factory_registers.py')
|
|
96
|
+
with open(filename, 'w') as fd:
|
|
97
|
+
fd.write('# Auto-generated file by setup.py build_factory\n')
|
|
98
|
+
fd.write('\n')
|
|
99
|
+
fd.write('from kivy.factory import Factory\n')
|
|
100
|
+
fd.write('\n')
|
|
101
|
+
fd.write('r = Factory.register\n')
|
|
102
|
+
for x in symbols:
|
|
103
|
+
fd.write("r('%s', module='%s')\n" % x)
|
|
104
|
+
|
|
105
|
+
print('File written at', filename)
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Pyinstaller hooks
|
|
3
|
+
=================
|
|
4
|
+
|
|
5
|
+
Module that exports pyinstaller related methods and parameters.
|
|
6
|
+
|
|
7
|
+
Hooks
|
|
8
|
+
-----
|
|
9
|
+
|
|
10
|
+
PyInstaller comes with a default hook for kivy that lists the indirectly
|
|
11
|
+
imported modules that pyinstaller would not find on its own using
|
|
12
|
+
:func:`get_deps_all`. :func:`hookspath` returns the path to an alternate kivy
|
|
13
|
+
hook, ``kivy/tools/packaging/pyinstaller_hooks/kivy-hook.py`` that does not
|
|
14
|
+
add these dependencies to its list of hidden imports and they have to be
|
|
15
|
+
explicitly included instead.
|
|
16
|
+
|
|
17
|
+
One can overwrite the default hook by providing on the command line the
|
|
18
|
+
``--additional-hooks-dir=HOOKSPATH`` option. Because although the default
|
|
19
|
+
hook will still run, the `important global variables
|
|
20
|
+
<https://pythonhosted.org/PyInstaller/#hook-global-variables>`_, e.g.
|
|
21
|
+
``excludedimports`` and ``hiddenimports`` will be overwritten by the
|
|
22
|
+
new hook, if set there.
|
|
23
|
+
|
|
24
|
+
Additionally, one can add a hook to be run after the default hook by
|
|
25
|
+
passing e.g. ``hookspath=[HOOKSPATH]`` to the ``Analysis`` class. In both
|
|
26
|
+
cases, ``HOOKSPATH`` is the path to a directory containing a file named
|
|
27
|
+
``hook-kivy.py`` that is the pyinstaller hook for kivy to be processed
|
|
28
|
+
after the default hook.
|
|
29
|
+
|
|
30
|
+
hiddenimports
|
|
31
|
+
-------------
|
|
32
|
+
|
|
33
|
+
When a module is imported indirectly, e.g. with ``__import__``, pyinstaller
|
|
34
|
+
won't know about it and the module has to be added through ``hiddenimports``.
|
|
35
|
+
|
|
36
|
+
``hiddenimports`` and other hook variables can be specified within a hook as
|
|
37
|
+
described above. Also, these variable can be passed to ``Analysis`` and their
|
|
38
|
+
values are then appended to the hook's values for these variables.
|
|
39
|
+
|
|
40
|
+
Most of kivy's core modules, e.g. video are imported indirectly and therefore
|
|
41
|
+
need to be added in hiddenimports. The default PyInstaller hook adds all the
|
|
42
|
+
providers. To overwrite, a modified kivy-hook similar to the default hook, such
|
|
43
|
+
as :func:`hookspath` that only imports the desired modules can be added. One
|
|
44
|
+
then uses :func:`get_deps_minimal` or :func:`get_deps_all` to get the list of
|
|
45
|
+
modules and adds them manually in a modified hook or passes them to
|
|
46
|
+
``Analysis`` in the spec file.
|
|
47
|
+
|
|
48
|
+
Hook generator
|
|
49
|
+
--------------
|
|
50
|
+
|
|
51
|
+
:mod:`pyinstaller_hooks` includes a tool to generate a hook which lists
|
|
52
|
+
all the provider modules in a list so that one can manually comment out
|
|
53
|
+
the providers not to be included. To use, do::
|
|
54
|
+
|
|
55
|
+
python -m kivy.tools.packaging.pyinstaller_hooks hook filename
|
|
56
|
+
|
|
57
|
+
``filename`` is the name and path of the hook file to create. If ``filename``
|
|
58
|
+
is not provided the hook is printed to the terminal.
|
|
59
|
+
'''
|
|
60
|
+
|
|
61
|
+
import os
|
|
62
|
+
import sys
|
|
63
|
+
import pkgutil
|
|
64
|
+
import logging
|
|
65
|
+
from os.path import dirname, join
|
|
66
|
+
import importlib
|
|
67
|
+
import subprocess
|
|
68
|
+
import re
|
|
69
|
+
import glob
|
|
70
|
+
|
|
71
|
+
import kivy
|
|
72
|
+
try:
|
|
73
|
+
from kivy import deps as old_deps
|
|
74
|
+
except ImportError:
|
|
75
|
+
old_deps = None
|
|
76
|
+
try:
|
|
77
|
+
import kivy_deps
|
|
78
|
+
except ImportError:
|
|
79
|
+
kivy_deps = None
|
|
80
|
+
from kivy.factory import Factory
|
|
81
|
+
try:
|
|
82
|
+
# Pyinstaller >= 6
|
|
83
|
+
from PyInstaller.depend.bindepend import get_imports
|
|
84
|
+
except ImportError:
|
|
85
|
+
# Pyinstaller < 6
|
|
86
|
+
from PyInstaller.depend.bindepend import selectImports as get_imports
|
|
87
|
+
|
|
88
|
+
from os import environ
|
|
89
|
+
if 'KIVY_DOC' not in environ:
|
|
90
|
+
from PyInstaller.utils.hooks import collect_submodules
|
|
91
|
+
|
|
92
|
+
curdir = dirname(__file__)
|
|
93
|
+
|
|
94
|
+
kivy_modules = [
|
|
95
|
+
'xml.etree.cElementTree',
|
|
96
|
+
'kivy.core.gl',
|
|
97
|
+
'kivy.weakmethod',
|
|
98
|
+
'kivy.core.window.window_info',
|
|
99
|
+
] + collect_submodules('kivy.graphics')
|
|
100
|
+
'''List of kivy modules that are always needed as hiddenimports of
|
|
101
|
+
pyinstaller.
|
|
102
|
+
'''
|
|
103
|
+
|
|
104
|
+
excludedimports = ['tkinter', '_tkinter', 'twisted']
|
|
105
|
+
'''List of excludedimports that should always be excluded from
|
|
106
|
+
pyinstaller.
|
|
107
|
+
'''
|
|
108
|
+
|
|
109
|
+
datas = [
|
|
110
|
+
(kivy.kivy_data_dir,
|
|
111
|
+
os.path.join('kivy_install', os.path.basename(kivy.kivy_data_dir))),
|
|
112
|
+
(kivy.kivy_modules_dir,
|
|
113
|
+
os.path.join('kivy_install', os.path.basename(kivy.kivy_modules_dir)))
|
|
114
|
+
]
|
|
115
|
+
'''List of data to be included by pyinstaller.
|
|
116
|
+
'''
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def runtime_hooks():
|
|
120
|
+
'''Returns a list with the runtime hooks for kivy. It can be used with
|
|
121
|
+
``runtime_hooks=runtime_hooks()`` in the spec file. Pyinstaller comes
|
|
122
|
+
preinstalled with this hook.
|
|
123
|
+
'''
|
|
124
|
+
return [join(curdir, 'pyi_rth_kivy.py')]
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def hookspath():
|
|
128
|
+
'''Returns a list with the directory that contains the alternate (not
|
|
129
|
+
the default included with pyinstaller) pyinstaller hook for kivy,
|
|
130
|
+
``kivy/tools/packaging/pyinstaller_hooks/kivy-hook.py``. It is
|
|
131
|
+
typically used with ``hookspath=hookspath()`` in the spec
|
|
132
|
+
file.
|
|
133
|
+
|
|
134
|
+
The default pyinstaller hook returns all the core providers used using
|
|
135
|
+
:func:`get_deps_minimal` to add to its list of hidden imports. This
|
|
136
|
+
alternate hook only included the essential modules and leaves the core
|
|
137
|
+
providers to be included additionally with :func:`get_deps_minimal`
|
|
138
|
+
or :func:`get_deps_all`.
|
|
139
|
+
'''
|
|
140
|
+
return [curdir]
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def get_hooks():
|
|
144
|
+
'''Returns the dict for the spec ``hookspath`` and ``runtime_hooks``
|
|
145
|
+
values.
|
|
146
|
+
'''
|
|
147
|
+
return {'hookspath': hookspath(), 'runtime_hooks': runtime_hooks()}
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def get_deps_minimal(exclude_ignored=True, **kwargs):
|
|
151
|
+
'''Returns Kivy hidden modules as well as excluded modules to be used
|
|
152
|
+
with ``Analysis``.
|
|
153
|
+
|
|
154
|
+
The function takes core modules as keyword arguments and their value
|
|
155
|
+
indicates which of the providers to include/exclude from the compiled app.
|
|
156
|
+
|
|
157
|
+
The possible keyword names are ``audio, camera, clipboard, image, spelling,
|
|
158
|
+
text, video, and window``. Their values can be:
|
|
159
|
+
|
|
160
|
+
``True``: Include current provider
|
|
161
|
+
The providers imported when the core module is
|
|
162
|
+
loaded on this system are added to hidden imports. This is the
|
|
163
|
+
default if the keyword name is not specified.
|
|
164
|
+
``None``: Exclude
|
|
165
|
+
Don't return this core module at all.
|
|
166
|
+
``A string or list of strings``: Providers to include
|
|
167
|
+
Each string is the name of a provider for this module to be
|
|
168
|
+
included.
|
|
169
|
+
|
|
170
|
+
For example, ``get_deps_minimal(video=None, window=True,
|
|
171
|
+
audio=['gstplayer', 'ffpyplayer'], spelling='enchant')`` will exclude all
|
|
172
|
+
the video providers, will include the gstreamer and ffpyplayer providers
|
|
173
|
+
for audio, will include the enchant provider for spelling, and will use the
|
|
174
|
+
current default provider for ``window``.
|
|
175
|
+
|
|
176
|
+
``exclude_ignored``, if ``True`` (the default), if the value for a core
|
|
177
|
+
library is ``None``, then if ``exclude_ignored`` is True, not only will the
|
|
178
|
+
library not be included in the hiddenimports but it'll also added to the
|
|
179
|
+
excluded imports to prevent it being included accidentally by pyinstaller.
|
|
180
|
+
|
|
181
|
+
:returns:
|
|
182
|
+
|
|
183
|
+
A dict with three keys, ``hiddenimports``, ``excludes``, and
|
|
184
|
+
``binaries``. Their values are a list of the corresponding modules to
|
|
185
|
+
include/exclude. This can be passed directly to `Analysis`` with
|
|
186
|
+
e.g. ::
|
|
187
|
+
|
|
188
|
+
a = Analysis(['..\\kivy\\examples\\demo\\touchtracer\\main.py'],
|
|
189
|
+
...
|
|
190
|
+
hookspath=hookspath(),
|
|
191
|
+
runtime_hooks=[],
|
|
192
|
+
win_no_prefer_redirects=False,
|
|
193
|
+
win_private_assemblies=False,
|
|
194
|
+
cipher=block_cipher,
|
|
195
|
+
**get_deps_minimal(video=None, audio=None))
|
|
196
|
+
'''
|
|
197
|
+
core_mods = ['audio', 'camera', 'clipboard', 'image', 'spelling', 'text',
|
|
198
|
+
'video', 'window']
|
|
199
|
+
mods = kivy_modules[:]
|
|
200
|
+
excludes = excludedimports[:]
|
|
201
|
+
|
|
202
|
+
for mod_name, val in kwargs.items():
|
|
203
|
+
if mod_name not in core_mods:
|
|
204
|
+
raise KeyError('{} not found in {}'.format(mod_name, core_mods))
|
|
205
|
+
|
|
206
|
+
full_name = 'kivy.core.{}'.format(mod_name)
|
|
207
|
+
if not val:
|
|
208
|
+
core_mods.remove(mod_name)
|
|
209
|
+
if exclude_ignored:
|
|
210
|
+
excludes.extend(collect_submodules(full_name))
|
|
211
|
+
continue
|
|
212
|
+
if val is True:
|
|
213
|
+
continue
|
|
214
|
+
core_mods.remove(mod_name)
|
|
215
|
+
|
|
216
|
+
mods.append(full_name)
|
|
217
|
+
single_mod = False
|
|
218
|
+
if isinstance(val, (str, bytes)):
|
|
219
|
+
single_mod = True
|
|
220
|
+
mods.append('kivy.core.{0}.{0}_{1}'.format(mod_name, val))
|
|
221
|
+
if not single_mod:
|
|
222
|
+
for v in val:
|
|
223
|
+
mods.append('kivy.core.{0}.{0}_{1}'.format(mod_name, v))
|
|
224
|
+
|
|
225
|
+
for mod_name in core_mods: # process remaining default modules
|
|
226
|
+
full_name = 'kivy.core.{}'.format(mod_name)
|
|
227
|
+
mods.append(full_name)
|
|
228
|
+
m = importlib.import_module(full_name)
|
|
229
|
+
|
|
230
|
+
if mod_name == 'clipboard' and m.CutBuffer:
|
|
231
|
+
mods.append(m.CutBuffer.__module__)
|
|
232
|
+
if hasattr(m, mod_name.capitalize()): # e.g. video -> Video
|
|
233
|
+
val = getattr(m, mod_name.capitalize())
|
|
234
|
+
if val:
|
|
235
|
+
mods.append(getattr(val, '__module__'))
|
|
236
|
+
|
|
237
|
+
if hasattr(m, 'libs_loaded') and m.libs_loaded:
|
|
238
|
+
for name in m.libs_loaded:
|
|
239
|
+
mods.append('kivy.core.{}.{}'.format(mod_name, name))
|
|
240
|
+
|
|
241
|
+
mods = sorted(set(mods))
|
|
242
|
+
|
|
243
|
+
binaries = []
|
|
244
|
+
if any('gstplayer' in m for m in mods):
|
|
245
|
+
binaries = _find_gst_binaries()
|
|
246
|
+
elif exclude_ignored:
|
|
247
|
+
excludes.append('kivy.lib.gstplayer')
|
|
248
|
+
|
|
249
|
+
return {
|
|
250
|
+
'hiddenimports': mods,
|
|
251
|
+
'excludes': excludes,
|
|
252
|
+
'binaries': binaries,
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
def get_deps_all():
|
|
257
|
+
'''Similar to :func:`get_deps_minimal`, but this returns all the
|
|
258
|
+
kivy modules that can indirectly imported. Which includes all
|
|
259
|
+
the possible kivy providers.
|
|
260
|
+
|
|
261
|
+
This can be used to get a list of all the possible providers
|
|
262
|
+
which can then manually be included/excluded by commenting out elements
|
|
263
|
+
in the list instead of passing on all the items. See module description.
|
|
264
|
+
|
|
265
|
+
:returns:
|
|
266
|
+
|
|
267
|
+
A dict with three keys, ``hiddenimports``, ``excludes``, and
|
|
268
|
+
``binaries``. Their values are a list of the corresponding modules to
|
|
269
|
+
include/exclude. This can be passed directly to `Analysis`` with
|
|
270
|
+
e.g. ::
|
|
271
|
+
|
|
272
|
+
a = Analysis(['..\\kivy\\examples\\demo\\touchtracer\\main.py'],
|
|
273
|
+
...
|
|
274
|
+
**get_deps_all())
|
|
275
|
+
'''
|
|
276
|
+
return {
|
|
277
|
+
'binaries': _find_gst_binaries(),
|
|
278
|
+
'hiddenimports': sorted(set(kivy_modules +
|
|
279
|
+
collect_submodules('kivy.core'))),
|
|
280
|
+
'excludes': []}
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
def get_factory_modules():
|
|
284
|
+
'''Returns a list of all the modules registered in the kivy factory.
|
|
285
|
+
'''
|
|
286
|
+
mods = [x.get('module', None) for x in Factory.classes.values()]
|
|
287
|
+
return [m for m in mods if m]
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
def add_dep_paths():
|
|
291
|
+
'''Should be called by the hook. It adds the paths with the binary
|
|
292
|
+
dependencies to the system path so that pyinstaller can find the binaries
|
|
293
|
+
during its crawling stage.
|
|
294
|
+
'''
|
|
295
|
+
paths = []
|
|
296
|
+
if old_deps is not None:
|
|
297
|
+
for importer, modname, ispkg in pkgutil.iter_modules(
|
|
298
|
+
old_deps.__path__):
|
|
299
|
+
if not ispkg:
|
|
300
|
+
continue
|
|
301
|
+
try:
|
|
302
|
+
module_spec = importer.find_spec(modname)
|
|
303
|
+
mod = importlib.util.module_from_spec(module_spec)
|
|
304
|
+
module_spec.loader.exec_module(mod)
|
|
305
|
+
except ImportError as e:
|
|
306
|
+
logging.warning(f"deps: Error importing dependency: {e}")
|
|
307
|
+
continue
|
|
308
|
+
|
|
309
|
+
if hasattr(mod, 'dep_bins'):
|
|
310
|
+
paths.extend(mod.dep_bins)
|
|
311
|
+
sys.path.extend(paths)
|
|
312
|
+
|
|
313
|
+
if kivy_deps is None:
|
|
314
|
+
return
|
|
315
|
+
|
|
316
|
+
paths = []
|
|
317
|
+
for importer, modname, ispkg in pkgutil.iter_modules(kivy_deps.__path__):
|
|
318
|
+
if not ispkg:
|
|
319
|
+
continue
|
|
320
|
+
try:
|
|
321
|
+
module_spec = importer.find_spec(modname)
|
|
322
|
+
mod = importlib.util.module_from_spec(module_spec)
|
|
323
|
+
module_spec.loader.exec_module(mod)
|
|
324
|
+
except ImportError as e:
|
|
325
|
+
logging.warning(f"deps: Error importing dependency: {e}")
|
|
326
|
+
continue
|
|
327
|
+
|
|
328
|
+
if hasattr(mod, 'dep_bins'):
|
|
329
|
+
paths.extend(mod.dep_bins)
|
|
330
|
+
sys.path.extend(paths)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
def _find_gst_plugin_path():
|
|
334
|
+
'''Returns a list of directories to search for GStreamer plugins.
|
|
335
|
+
'''
|
|
336
|
+
if 'GST_PLUGIN_PATH' in environ:
|
|
337
|
+
return [
|
|
338
|
+
os.path.abspath(os.path.expanduser(path))
|
|
339
|
+
for path in environ['GST_PLUGIN_PATH'].split(os.pathsep)
|
|
340
|
+
]
|
|
341
|
+
|
|
342
|
+
try:
|
|
343
|
+
p = subprocess.Popen(
|
|
344
|
+
['gst-inspect-1.0', 'coreelements'],
|
|
345
|
+
stdout=subprocess.PIPE, universal_newlines=True)
|
|
346
|
+
except:
|
|
347
|
+
return []
|
|
348
|
+
(stdoutdata, stderrdata) = p.communicate()
|
|
349
|
+
|
|
350
|
+
match = re.search(r'\s+(\S+libgstcoreelements\.\S+)', stdoutdata)
|
|
351
|
+
|
|
352
|
+
if not match:
|
|
353
|
+
return []
|
|
354
|
+
|
|
355
|
+
return [os.path.dirname(match.group(1))]
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
def _find_gst_binaries():
|
|
359
|
+
'''Returns a list of GStreamer plugins and libraries to pass as the
|
|
360
|
+
``binaries`` argument of ``Analysis``.
|
|
361
|
+
'''
|
|
362
|
+
gst_plugin_path = _find_gst_plugin_path()
|
|
363
|
+
|
|
364
|
+
plugin_filepaths = []
|
|
365
|
+
for plugin_dir in gst_plugin_path:
|
|
366
|
+
plugin_filepaths.extend(
|
|
367
|
+
glob.glob(os.path.join(plugin_dir, 'libgst*')))
|
|
368
|
+
if len(plugin_filepaths) == 0:
|
|
369
|
+
logging.warning('Could not find GStreamer plugins. ' +
|
|
370
|
+
'Possible solution: set GST_PLUGIN_PATH')
|
|
371
|
+
return []
|
|
372
|
+
|
|
373
|
+
lib_filepaths = set()
|
|
374
|
+
for plugin_filepath in plugin_filepaths:
|
|
375
|
+
plugin_deps = get_imports(plugin_filepath)
|
|
376
|
+
lib_filepaths.update([path for _, path in plugin_deps])
|
|
377
|
+
|
|
378
|
+
plugin_binaries = [(f, 'gst-plugins') for f in plugin_filepaths]
|
|
379
|
+
lib_binaries = [(f, '.') for f in lib_filepaths]
|
|
380
|
+
|
|
381
|
+
return plugin_binaries + lib_binaries
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from kivy.tools.packaging.pyinstaller_hooks import get_deps_all
|
|
2
|
+
import sys
|
|
3
|
+
from os.path import dirname, join
|
|
4
|
+
|
|
5
|
+
args = sys.argv[1:]
|
|
6
|
+
if args and args[0] == 'hook':
|
|
7
|
+
with open(join(dirname(__file__), 'hook-kivy.py')) as fh:
|
|
8
|
+
src = fh.read()
|
|
9
|
+
|
|
10
|
+
formatted_lines = []
|
|
11
|
+
lines = get_deps_all()['hiddenimports']
|
|
12
|
+
|
|
13
|
+
for i, line in enumerate(lines):
|
|
14
|
+
if i and line[:line.rfind('.')] != \
|
|
15
|
+
lines[i - 1][:lines[i - 1].rfind('.')]:
|
|
16
|
+
formatted_lines.append('\n')
|
|
17
|
+
|
|
18
|
+
if i == len(lines) - 1:
|
|
19
|
+
formatted_lines.append(" '{}'".format(line))
|
|
20
|
+
else:
|
|
21
|
+
formatted_lines.append(" '{}',\n".format(line))
|
|
22
|
+
lines = formatted_lines
|
|
23
|
+
|
|
24
|
+
lines = '{}\n\nhiddenimports += [\n{}\n]\n'.format(src, ''.join(lines))
|
|
25
|
+
if len(args) > 1:
|
|
26
|
+
with open(args[1], 'w') as fh:
|
|
27
|
+
fh.write(lines)
|
|
28
|
+
else:
|
|
29
|
+
print(lines)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from kivy.tools.packaging.pyinstaller_hooks import (
|
|
2
|
+
add_dep_paths, excludedimports, datas, get_deps_all,
|
|
3
|
+
get_factory_modules, kivy_modules)
|
|
4
|
+
|
|
5
|
+
add_dep_paths()
|
|
6
|
+
|
|
7
|
+
hiddenimports = [] # get_deps_all()['hiddenimports']
|
|
8
|
+
hiddenimports = list(set(
|
|
9
|
+
get_factory_modules() + kivy_modules + hiddenimports))
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
root = os.path.join(sys._MEIPASS, 'kivy_install')
|
|
5
|
+
|
|
6
|
+
os.environ['KIVY_DATA_DIR'] = os.path.join(root, 'data')
|
|
7
|
+
os.environ['KIVY_MODULES_DIR'] = os.path.join(root, 'modules')
|
|
8
|
+
os.environ['GST_PLUGIN_PATH'] = '{}{}{}'.format(
|
|
9
|
+
sys._MEIPASS, os.pathsep, os.path.join(sys._MEIPASS, 'gst-plugins'))
|
|
10
|
+
os.environ['GST_REGISTRY'] = os.path.join(sys._MEIPASS, 'registry.bin')
|
|
11
|
+
|
|
12
|
+
sys.path += [os.path.join(root, '_libs')]
|
|
13
|
+
|
|
14
|
+
if sys.platform == 'darwin':
|
|
15
|
+
sitepackages = os.path.join(sys._MEIPASS, 'sitepackages')
|
|
16
|
+
sys.path += [sitepackages, os.path.join(sitepackages, 'gst-0.10')]
|
|
17
|
+
os.putenv('GST_REGISTRY_FORK', 'no')
|