[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/pythonnative/pythonnative/v0.43.1/src/pythonnative/__init__.py [Back]  [Original]

"""PythonNative: declarative native UI for Android and iOS.

PythonNative is a cross-platform toolkit that turns Python ``@component``
functions into real, native Android and iOS views. The component model
is React-like (function components plus hooks). Python owns the logical
component tree and reconciliation on a dedicated asyncio application thread.
Versioned commits cross into Swift ``PythonNativeKit`` on iOS and the Kotlin
``pythonnative`` module on Android. Those renderers own widgets, Yoga layout,
measurement, gestures, and animation frames on the platform UI thread.
The browser preview uses DOM widgets and Yoga WebAssembly.

Key building blocks:

- **Element factories** ([`Text`][pythonnative.Text],
  [`Button`][pythonnative.Button], [`Column`][pythonnative.Column], etc.)
  return immutable [`Element`][pythonnative.Element] descriptors.
- **Hooks** ([`use_state`][pythonnative.use_state],
  [`use_effect`][pythonnative.use_effect],
  [`use_reducer`][pythonnative.use_reducer], etc.) manage state, side
  effects, and context inside `@component` functions.
- **Navigation** is built from
  [`NavigationContainer`][pythonnative.NavigationContainer] plus one of
  the [`create_stack_navigator`][pythonnative.create_stack_navigator],
  [`create_tab_navigator`][pythonnative.create_tab_navigator], or
  [`create_drawer_navigator`][pythonnative.create_drawer_navigator]
  factories.
- **Styling** uses a single ``style`` dict per element (or a list of
  dicts), composable via [`StyleSheet`][pythonnative.StyleSheet].
  PythonNative ships a fully-typed [`Style`][pythonnative.style.Style]
  TypedDict so editors and ``mypy`` validate every key as you type.
- **Animations** use the ``Animated`` namespace. Serialized graphs
  connect values, arithmetic, interpolation, and style bindings.
  Native timing, spring, decay, scroll, and gesture drivers update
  supported bindings without Python work on every frame.
- **Gestures** attach to any view via the ``gestures=`` prop using
  descriptors from ``pythonnative.gestures``
  ([`Tap`][pythonnative.gestures.Tap],
  [`LongPress`][pythonnative.gestures.LongPress],
  [`Pan`][pythonnative.gestures.Pan],
  [`Swipe`][pythonnative.gestures.Swipe],
  [`Pinch`][pythonnative.gestures.Pinch],
  [`Rotation`][pythonnative.gestures.Rotation]).
- **Custom native components** can be authored with the
  ``pythonnative.sdk`` package: define a typed
  [`Props`][pythonnative.sdk.Props] dataclass, implement a
  [`ViewHandler`][pythonnative.native_views.base.ViewHandler] for each
  platform, and register it via
  [`@native_component`][pythonnative.sdk.native_component] (or expose
  it from a PyPI package via the ``pythonnative.handlers`` entry-point
  group).

Example:
    ```python
    import pythonnative as pn

    @pn.component
    def App():
        count, set_count = pn.use_state(0)
        return pn.Column(
            pn.Text(f"Count: {count}", style=pn.style(font_size=24)),
            pn.Button("+", on_press=lambda: set_count(count + 1)),
            style=pn.style(spacing=12),
        )
    ```
"""

__version__ = "0.43.1"

from . import appearance, diagnostics, gestures, runtime, sdk
from .alerts import Alert
from .animated import Animated, AnimatedValue, use_animated_value
from .component import Component, component, memo
from .components import (
    ActivityIndicator,
    Button,
    Checkbox,
    Column,
    DatePicker,
    ErrorBoundary,
    FlatList,
    Fragment,
    Image,
    ImageBackground,
    KeyboardAvoidingView,
    ListController,
    Modal,
    Picker,
    Portal,
    Pressable,
    ProgressBar,
    RefreshControl,
    Row,
    SafeAreaView,
    ScrollView,
    SectionList,
    SegmentedControl,
    Slider,
    Spacer,
    StatusBar,
    Suspense,
    Switch,
    Text,
    TextInput,
    TouchableOpacity,
    View,
    WebView,
)
from .diagnostics import HookOrderError
from .element import Element
from .hooks import (
    Context,
    MutationCall,
    MutationState,
    QueryResult,
    Ref,
    create_context,
    use_back_handler,
    use_callback,
    use_color_scheme,
    use_context,
    use_deferred_value,
    use_effect,
    use_imperative_handle,
    use_keyboard_height,
    use_layout_effect,
    use_memo,
    use_mutation,
    use_query,
    use_reducer,
    use_ref,
    use_resource,
    use_safe_area_insets,
    use_state,
    use_subscription,
    use_transition,
    use_window_dimensions,
)
from .hosts import create_screen
from .native_modules import (
    AppState,
    Battery,
    Biometrics,
    Camera,
    Clipboard,
    FileSystem,
    Haptics,
    Linking,
    Location,
    NetInfo,
    Notifications,
    Permissions,
    SecureStore,
    Share,
    Vibration,
    use_app_state,
    use_net_info,
)
from .navigation import (
    LinkingConfig,
    Navigation,
    NavigationContainer,
    NavigationState,
    Route,
    ScreenOptions,
    create_drawer_navigator,
    create_stack_navigator,
    create_tab_navigator,
    use_focus_effect,
    use_is_focused,
    use_navigation,
    use_route,
)
from .net import HTTPError, Response, fetch
from .platform import Platform, get_platform
from .runtime import run_async, run_blocking
from .scheduler import batch_updates
from .sdk import (
    Props,
    ViewHandler,
    element_factory,
    native_component,
    register_component,
)
from .storage import AsyncStorage, use_persisted_state
from .style import (
    DEFAULT_DARK_THEME,
    DEFAULT_LIGHT_THEME,
    AccessibilityState,
    AlignContent,
    AlignItems,
    AlignSelf,
    AutoCapitalize,
    Color,
    Dimension,
    Display,
    EdgeInsets,
    FlexDirection,
    FlexWrap,
    FontWeight,
    JustifyContent,
    KeyboardType,
    LayoutDirection,
    Overflow,
    PointerEvents,
    Position,
    ReturnKeyType,
    ScaleType,
    ShadowOffset,
    Style,
    StyleProp,
    StyleSheet,
    TextAlign,
    TextDecoration,
    TextTransform,
    Theme,
    ThemeContext,
    TransformSpec,
    default_theme,
    resolve_style,
    style,
    use_theme,
)
from .suspense import Resource, lazy, start_resource

__all__ = [
    # Components
    "ActivityIndicator",
    "Button",
    "Checkbox",
    "Column",
    "DatePicker",
    "ErrorBoundary",
    "FlatList",
    "Fragment",
    "Image",
    "ImageBackground",
    "KeyboardAvoidingView",
    "ListController",
    "Modal",
    "Picker",
    "Portal",
    "Pressable",
    "ProgressBar",
    "RefreshControl",
    "Row",
    "SafeAreaView",
    "ScrollView",
    "SectionList",
    "SegmentedControl",
    "Slider",
    "Spacer",
    "StatusBar",
    "Suspense",
    "Switch",
    "Text",
    "TextInput",
    "TouchableOpacity",
    "View",
    "WebView",
    # Core
    "Component",
    "Element",
    "component",
    "create_screen",
    "memo",
    # Hooks
    "Context",
    "MutationCall",
    "MutationState",
    "QueryResult",
    "Ref",
    "batch_updates",
    "create_context",
    "use_back_handler",
    "use_callback",
    "use_color_scheme",
    "use_context",
    "use_deferred_value",
    "use_effect",
    "use_imperative_handle",
    "use_keyboard_height",
    "use_layout_effect",
    "use_memo",
    "use_mutation",
    "use_persisted_state",
    "use_query",
    "use_reducer",
    "use_ref",
    "use_resource",
    "use_safe_area_insets",
    "use_state",
    "use_subscription",
    "use_transition",
    "use_window_dimensions",
    # Suspense and async rendering
    "Resource",
    "lazy",
    "start_resource",
    # Navigation
    "LinkingConfig",
    "Navigation",
    "NavigationContainer",
    "NavigationState",
    "Route",
    "ScreenOptions",
    "create_drawer_navigator",
    "create_stack_navigator",
    "create_tab_navigator",
    "use_focus_effect",
    "use_is_focused",
    "use_navigation",
    "use_route",
    # Styling - typed primitives
    "AccessibilityState",
    "AlignContent",
    "AlignItems",
    "AlignSelf",
    "AutoCapitalize",
    "Color",
    "DEFAULT_DARK_THEME",
    "DEFAULT_LIGHT_THEME",
    "Dimension",
    "Display",
    "EdgeInsets",
    "FlexDirection",
    "FlexWrap",
    "FontWeight",
    "JustifyContent",
    "KeyboardType",
    "LayoutDirection",
    "Overflow",
    "PointerEvents",
    "Position",
    "ReturnKeyType",
    "ScaleType",
    "ShadowOffset",
    "Style",
    "StyleProp",
    "StyleSheet",
    "TextAlign",
    "TextDecoration",
    "TextTransform",
    "Theme",
    "ThemeContext",
    "TransformSpec",
    "default_theme",
    "resolve_style",
    "style",
    "use_theme",
    # Appearance
    "appearance",
    # Image pipeline
    # Animation
    "Animated",
    "AnimatedValue",
    "use_animated_value",
    # Gestures
    "gestures",
    # Imperative
    "Alert",
    # Native modules
    "AppState",
    "Battery",
    "Biometrics",
    "Camera",
    "Clipboard",
    "FileSystem",
    "Haptics",
    "Linking",
    "Location",
    "NetInfo",
    "Notifications",
    "Permissions",
    "SecureStore",
    "Share",
    "Vibration",
    "use_app_state",
    "use_net_info",
    # Networking + persistence
    "AsyncStorage",
    "fetch",
    "HTTPError",
    "Response",
    # Runtime
    "run_async",
    "run_blocking",
    "runtime",
    # Diagnostics
    "HookOrderError",
    "diagnostics",
    # Platform
    "Platform",
    "get_platform",
    # Custom-component SDK
    "Props",
    "ViewHandler",
    "element_factory",
    "native_component",
    "register_component",
    "sdk",
]

Web Proxy Viewer  |  New URL  |  Original Page