Bläddra i källkod

profile the import of

Falko Schindler 2 månader sedan
förälder
incheckning
f34094a1b6
3 ändrade filer med 160 tillägg och 121 borttagningar
  1. 1 0
      .gitignore
  2. 144 121
      nicegui/ui.py
  3. 15 0
      profile_imports.py

+ 1 - 0
.gitignore

@@ -10,3 +10,4 @@ venv
 .nicegui/
 *.sqlite*
 .DS_Store
+*.lprof

+ 144 - 121
nicegui/ui.py

@@ -127,124 +127,147 @@ __all__ = [
     'video',
 ]
 
-from .context import context
-from .element import Element as element
-from .elements.aggrid import AgGrid as aggrid
-from .elements.audio import Audio as audio
-from .elements.avatar import Avatar as avatar
-from .elements.badge import Badge as badge
-from .elements.button import Button as button
-from .elements.button_dropdown import DropdownButton as dropdown_button
-from .elements.button_group import ButtonGroup as button_group
-from .elements.card import Card as card
-from .elements.card import CardActions as card_actions
-from .elements.card import CardSection as card_section
-from .elements.carousel import Carousel as carousel
-from .elements.carousel import CarouselSlide as carousel_slide
-from .elements.chat_message import ChatMessage as chat_message
-from .elements.checkbox import Checkbox as checkbox
-from .elements.chip import Chip as chip
-from .elements.code import Code as code
-from .elements.codemirror import CodeMirror as codemirror
-from .elements.color_input import ColorInput as color_input
-from .elements.color_picker import ColorPicker as color_picker
-from .elements.colors import Colors as colors
-from .elements.column import Column as column
-from .elements.context_menu import ContextMenu as context_menu
-from .elements.dark_mode import DarkMode as dark_mode
-from .elements.date import Date as date
-from .elements.dialog import Dialog as dialog
-from .elements.echart import EChart as echart
-from .elements.editor import Editor as editor
-from .elements.expansion import Expansion as expansion
-from .elements.fullscreen import Fullscreen as fullscreen
-from .elements.grid import Grid as grid
-from .elements.highchart import highchart
-from .elements.html import Html as html
-from .elements.icon import Icon as icon
-from .elements.image import Image as image
-from .elements.input import Input as input  # pylint: disable=redefined-builtin
-from .elements.interactive_image import InteractiveImage as interactive_image
-from .elements.item import Item as item
-from .elements.item import ItemLabel as item_label
-from .elements.item import ItemSection as item_section
-from .elements.joystick import Joystick as joystick
-from .elements.json_editor import JsonEditor as json_editor
-from .elements.keyboard import Keyboard as keyboard
-from .elements.knob import Knob as knob
-from .elements.label import Label as label
-from .elements.leaflet import Leaflet as leaflet
-from .elements.line_plot import LinePlot as line_plot
-from .elements.link import Link as link
-from .elements.link import LinkTarget as link_target
-from .elements.list import List as list  # pylint: disable=redefined-builtin
-from .elements.log import Log as log
-from .elements.markdown import Markdown as markdown
-from .elements.menu import Menu as menu
-from .elements.menu import MenuItem as menu_item
-from .elements.mermaid import Mermaid as mermaid
-from .elements.notification import Notification as notification
-from .elements.number import Number as number
-from .elements.pagination import Pagination as pagination
-from .elements.plotly import Plotly as plotly
-from .elements.progress import CircularProgress as circular_progress
-from .elements.progress import LinearProgress as linear_progress
-from .elements.pyplot import Matplotlib as matplotlib
-from .elements.pyplot import Pyplot as pyplot
-from .elements.query import Query as query
-from .elements.radio import Radio as radio
-from .elements.range import Range as range  # pylint: disable=redefined-builtin
-from .elements.rating import Rating as rating
-from .elements.restructured_text import ReStructuredText as restructured_text
-from .elements.row import Row as row
-from .elements.scene import Scene as scene
-from .elements.scene_view import SceneView as scene_view
-from .elements.scroll_area import ScrollArea as scroll_area
-from .elements.select import Select as select
-from .elements.separator import Separator as separator
-from .elements.skeleton import Skeleton as skeleton
-from .elements.slide_item import SlideItem as slide_item
-from .elements.slider import Slider as slider
-from .elements.space import Space as space
-from .elements.spinner import Spinner as spinner
-from .elements.splitter import Splitter as splitter
-from .elements.stepper import Step as step
-from .elements.stepper import Stepper as stepper
-from .elements.stepper import StepperNavigation as stepper_navigation
-from .elements.switch import Switch as switch
-from .elements.table import Table as table
-from .elements.tabs import Tab as tab
-from .elements.tabs import TabPanel as tab_panel
-from .elements.tabs import TabPanels as tab_panels
-from .elements.tabs import Tabs as tabs
-from .elements.teleport import Teleport as teleport
-from .elements.textarea import Textarea as textarea
-from .elements.time import Time as time
-from .elements.timeline import Timeline as timeline
-from .elements.timeline import TimelineEntry as timeline_entry
-from .elements.timer import Timer as timer
-from .elements.toggle import Toggle as toggle
-from .elements.tooltip import Tooltip as tooltip
-from .elements.tree import Tree as tree
-from .elements.upload import Upload as upload
-from .elements.video import Video as video
-from .functions import clipboard
-from .functions.download import download
-from .functions.html import add_body_html, add_head_html
-from .functions.javascript import run_javascript
-from .functions.navigate import navigate
-from .functions.notify import notify
-from .functions.on import on
-from .functions.page_title import page_title
-from .functions.refreshable import refreshable, refreshable_method, state
-from .functions.style import add_css, add_sass, add_scss
-from .functions.update import update
-from .page import page
-from .page_layout import Drawer as drawer
-from .page_layout import Footer as footer
-from .page_layout import Header as header
-from .page_layout import LeftDrawer as left_drawer
-from .page_layout import PageSticky as page_sticky
-from .page_layout import RightDrawer as right_drawer
-from .ui_run import run
-from .ui_run_with import run_with
+
+@profile
+def import_ui():
+    global context, element, aggrid, audio, avatar, badge, button, dropdown_button, button_group
+    global card, card_actions, card_section, carousel, carousel_slide, chat_message, checkbox
+    global chip, code, codemirror, color_input, color_picker, colors, column, context_menu
+    global dark_mode, date, dialog, echart, editor, expansion, fullscreen, grid, highchart
+    global html, icon, image, input, interactive_image, item, item_label, item_section
+    global joystick, json_editor, keyboard, knob, label, leaflet, line_plot, link, link_target
+    global list, log, markdown, menu, menu_item, mermaid, notification, number, pagination
+    global plotly, circular_progress, linear_progress, matplotlib, pyplot, query, radio
+    global range, rating, restructured_text, row, scene, scene_view, scroll_area, select
+    global separator, skeleton, slide_item, slider, space, spinner, splitter, step, stepper
+    global stepper_navigation, switch, table, tab, tab_panel, tab_panels, tabs, teleport
+    global textarea, time, timeline, timeline_entry, timer, toggle, tooltip, tree, upload
+    global video, clipboard, download, add_body_html, add_head_html, run_javascript, navigate
+    global notify, on, page_title, refreshable, refreshable_method, state, add_css, add_sass
+    global add_scss, update, page, drawer, footer, header, left_drawer, page_sticky
+    global right_drawer, run, run_with
+
+    from .context import context
+    from .element import Element as element
+    from .elements.aggrid import AgGrid as aggrid
+    from .elements.audio import Audio as audio
+    from .elements.avatar import Avatar as avatar
+    from .elements.badge import Badge as badge
+    from .elements.button import Button as button
+    from .elements.button_dropdown import DropdownButton as dropdown_button
+    from .elements.button_group import ButtonGroup as button_group
+    from .elements.card import Card as card
+    from .elements.card import CardActions as card_actions
+    from .elements.card import CardSection as card_section
+    from .elements.carousel import Carousel as carousel
+    from .elements.carousel import CarouselSlide as carousel_slide
+    from .elements.chat_message import ChatMessage as chat_message
+    from .elements.checkbox import Checkbox as checkbox
+    from .elements.chip import Chip as chip
+    from .elements.code import Code as code
+    from .elements.codemirror import CodeMirror as codemirror
+    from .elements.color_input import ColorInput as color_input
+    from .elements.color_picker import ColorPicker as color_picker
+    from .elements.colors import Colors as colors
+    from .elements.column import Column as column
+    from .elements.context_menu import ContextMenu as context_menu
+    from .elements.dark_mode import DarkMode as dark_mode
+    from .elements.date import Date as date
+    from .elements.dialog import Dialog as dialog
+    from .elements.echart import EChart as echart
+    from .elements.editor import Editor as editor
+    from .elements.expansion import Expansion as expansion
+    from .elements.fullscreen import Fullscreen as fullscreen
+    from .elements.grid import Grid as grid
+    from .elements.highchart import highchart
+    from .elements.html import Html as html
+    from .elements.icon import Icon as icon
+    from .elements.image import Image as image
+    from .elements.input import Input as input  # pylint: disable=redefined-builtin
+    from .elements.interactive_image import InteractiveImage as interactive_image
+    from .elements.item import Item as item
+    from .elements.item import ItemLabel as item_label
+    from .elements.item import ItemSection as item_section
+    from .elements.joystick import Joystick as joystick
+    from .elements.json_editor import JsonEditor as json_editor
+    from .elements.keyboard import Keyboard as keyboard
+    from .elements.knob import Knob as knob
+    from .elements.label import Label as label
+    from .elements.leaflet import Leaflet as leaflet
+    from .elements.line_plot import LinePlot as line_plot
+    from .elements.link import Link as link
+    from .elements.link import LinkTarget as link_target
+    from .elements.list import List as list  # pylint: disable=redefined-builtin
+    from .elements.log import Log as log
+    from .elements.markdown import Markdown as markdown
+    from .elements.menu import Menu as menu
+    from .elements.menu import MenuItem as menu_item
+    from .elements.mermaid import Mermaid as mermaid
+    from .elements.notification import Notification as notification
+    from .elements.number import Number as number
+    from .elements.pagination import Pagination as pagination
+    from .elements.plotly import Plotly as plotly
+    from .elements.progress import CircularProgress as circular_progress
+    from .elements.progress import LinearProgress as linear_progress
+    from .elements.pyplot import Matplotlib as matplotlib
+    from .elements.pyplot import Pyplot as pyplot
+    from .elements.query import Query as query
+    from .elements.radio import Radio as radio
+    from .elements.range import Range as range  # pylint: disable=redefined-builtin
+    from .elements.rating import Rating as rating
+    from .elements.restructured_text import ReStructuredText as restructured_text
+    from .elements.row import Row as row
+    from .elements.scene import Scene as scene
+    from .elements.scene_view import SceneView as scene_view
+    from .elements.scroll_area import ScrollArea as scroll_area
+    from .elements.select import Select as select
+    from .elements.separator import Separator as separator
+    from .elements.skeleton import Skeleton as skeleton
+    from .elements.slide_item import SlideItem as slide_item
+    from .elements.slider import Slider as slider
+    from .elements.space import Space as space
+    from .elements.spinner import Spinner as spinner
+    from .elements.splitter import Splitter as splitter
+    from .elements.stepper import Step as step
+    from .elements.stepper import Stepper as stepper
+    from .elements.stepper import StepperNavigation as stepper_navigation
+    from .elements.switch import Switch as switch
+    from .elements.table import Table as table
+    from .elements.tabs import Tab as tab
+    from .elements.tabs import TabPanel as tab_panel
+    from .elements.tabs import TabPanels as tab_panels
+    from .elements.tabs import Tabs as tabs
+    from .elements.teleport import Teleport as teleport
+    from .elements.textarea import Textarea as textarea
+    from .elements.time import Time as time
+    from .elements.timeline import Timeline as timeline
+    from .elements.timeline import TimelineEntry as timeline_entry
+    from .elements.timer import Timer as timer
+    from .elements.toggle import Toggle as toggle
+    from .elements.tooltip import Tooltip as tooltip
+    from .elements.tree import Tree as tree
+    from .elements.upload import Upload as upload
+    from .elements.video import Video as video
+    from .functions import clipboard
+    from .functions.download import download
+    from .functions.html import add_body_html, add_head_html
+    from .functions.javascript import run_javascript
+    from .functions.navigate import navigate
+    from .functions.notify import notify
+    from .functions.on import on
+    from .functions.page_title import page_title
+    from .functions.refreshable import refreshable, refreshable_method, state
+    from .functions.style import add_css, add_sass, add_scss
+    from .functions.update import update
+    from .page import page
+    from .page_layout import Drawer as drawer
+    from .page_layout import Footer as footer
+    from .page_layout import Header as header
+    from .page_layout import LeftDrawer as left_drawer
+    from .page_layout import PageSticky as page_sticky
+    from .page_layout import RightDrawer as right_drawer
+    from .ui_run import run
+    from .ui_run_with import run_with
+
+
+import_ui()

+ 15 - 0
profile_imports.py

@@ -0,0 +1,15 @@
+# NOTE: run this file like this:
+#
+# kernprof -l -v profile_imports.py
+
+import sys
+
+from line_profiler import LineProfiler
+
+profile = LineProfiler()
+sys.modules['__main__'].__dict__['profile'] = profile
+
+if True:
+    from nicegui import ui
+
+profile.print_stats()