pythonnative 0.37.0__py3-none-any.whl → 0.38.0__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.
- pythonnative/__init__.py +9 -1
- pythonnative/alerts.py +6 -14
- pythonnative/cli/pn.py +96 -10
- pythonnative/components/_base.py +31 -0
- pythonnative/components/controls.py +19 -16
- pythonnative/components/layout.py +5 -8
- pythonnative/components/lists.py +6 -6
- pythonnative/gestures.py +27 -6
- pythonnative/native_modules/__init__.py +19 -0
- pythonnative/native_modules/battery.py +13 -14
- pythonnative/native_modules/biometrics.py +12 -14
- pythonnative/native_modules/camera.py +10 -6
- pythonnative/native_modules/clipboard.py +9 -11
- pythonnative/native_modules/file_system.py +81 -172
- pythonnative/native_modules/haptics.py +14 -10
- pythonnative/native_modules/linking.py +9 -8
- pythonnative/native_modules/location.py +10 -12
- pythonnative/native_modules/net_info.py +1 -4
- pythonnative/native_modules/notifications.py +25 -32
- pythonnative/native_modules/permissions.py +70 -22
- pythonnative/native_modules/secure_store.py +16 -20
- pythonnative/native_modules/share.py +5 -5
- pythonnative/navigation/__init__.py +2 -1
- pythonnative/navigation/hooks.py +46 -7
- pythonnative/navigation/state.py +30 -9
- pythonnative/project/android.py +23 -0
- pythonnative/project/builder.py +64 -35
- pythonnative/project/config.py +84 -24
- pythonnative/project/deps.py +703 -0
- pythonnative/project/doctor.py +53 -4
- pythonnative/project/runtime_assets.py +13 -14
- pythonnative/style.py +94 -44
- pythonnative/templates/android_template/app/build.gradle +5 -2
- pythonnative/templates/android_template/build.gradle +7 -4
- pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +1 -1
- pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +15 -4
- pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/PermissionModules.swift +25 -10
- pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +3 -2
- pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +35 -9
- pythonnative/utils.py +22 -27
- pythonnative/virtual_rows.py +10 -20
- {pythonnative-0.37.0.dist-info → pythonnative-0.38.0.dist-info}/METADATA +8 -8
- {pythonnative-0.37.0.dist-info → pythonnative-0.38.0.dist-info}/RECORD +47 -46
- {pythonnative-0.37.0.dist-info → pythonnative-0.38.0.dist-info}/WHEEL +0 -0
- {pythonnative-0.37.0.dist-info → pythonnative-0.38.0.dist-info}/entry_points.txt +0 -0
- {pythonnative-0.37.0.dist-info → pythonnative-0.38.0.dist-info}/licenses/LICENSE +0 -0
- {pythonnative-0.37.0.dist-info → pythonnative-0.38.0.dist-info}/top_level.txt +0 -0
pythonnative/utils.py
CHANGED
|
@@ -7,12 +7,12 @@ results are cached the first time
|
|
|
7
7
|
[`IS_IOS`][pythonnative.utils.IS_IOS] are read.
|
|
8
8
|
|
|
9
9
|
Attributes:
|
|
10
|
-
IS_ANDROID: `True` when running inside an Android process
|
|
11
|
-
|
|
12
|
-
`java` module imports successfully).
|
|
13
|
-
IS_IOS: `True` when running inside an iOS app bundle
|
|
14
|
-
`
|
|
15
|
-
`
|
|
10
|
+
IS_ANDROID: `True` when running inside an Android process
|
|
11
|
+
(`sys.platform == "android"` on the embedded CPython 3.13+, or
|
|
12
|
+
Chaquopy's `java` module imports successfully).
|
|
13
|
+
IS_IOS: `True` when running inside an iOS app bundle
|
|
14
|
+
(`sys.platform == "ios"` on the embedded CPython 3.13+, or the
|
|
15
|
+
explicit `PN_PLATFORM=ios` override).
|
|
16
16
|
IS_DESKTOP: `True` when running the desktop preview backend
|
|
17
17
|
(signaled by `PN_PLATFORM=desktop`, set by ``pn preview``).
|
|
18
18
|
This drives the Tkinter native-view registry so a PythonNative
|
|
@@ -33,9 +33,12 @@ _is_desktop: Optional[bool] = None
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
def _detect_android() -> bool:
|
|
36
|
-
"""Return whether we're running inside an Android process.
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
"""Return whether we're running inside an Android process.
|
|
37
|
+
|
|
38
|
+
CPython 3.13+ reports ``sys.platform == "android"`` (PEP 738); the
|
|
39
|
+
Chaquopy ``java`` module import is kept as a secondary signal.
|
|
40
|
+
"""
|
|
41
|
+
if sys.platform == "android":
|
|
39
42
|
return True
|
|
40
43
|
try:
|
|
41
44
|
from java import jclass # noqa: F401
|
|
@@ -51,25 +54,18 @@ def _detect_ios() -> bool:
|
|
|
51
54
|
|
|
52
55
|
Signals, in priority order:
|
|
53
56
|
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
- `/CoreSimulator/Devices/` in `$HOME` (iOS Simulator fallback if
|
|
60
|
-
the template signal is missing for some reason).
|
|
57
|
+
- `sys.platform == "ios"`: CPython 3.13+ reports this on both
|
|
58
|
+
devices and the Simulator (PEP 730), so it is the canonical
|
|
59
|
+
signal for the embedded runtime.
|
|
60
|
+
- Explicit `PN_PLATFORM=ios` env var: set by the iOS template before
|
|
61
|
+
Python starts as a belt-and-braces override, and by tests.
|
|
61
62
|
|
|
62
63
|
Running on macOS is never enough on its own: the desktop preview
|
|
63
64
|
and unit tests run there and must not be mistaken for iOS.
|
|
64
65
|
"""
|
|
65
|
-
if os.environ.get("PN_PLATFORM") == "ios":
|
|
66
|
-
return True
|
|
67
66
|
if sys.platform == "ios":
|
|
68
67
|
return True
|
|
69
|
-
|
|
70
|
-
if "/CoreSimulator/Devices/" in home:
|
|
71
|
-
return True
|
|
72
|
-
return False
|
|
68
|
+
return os.environ.get("PN_PLATFORM") == "ios"
|
|
73
69
|
|
|
74
70
|
|
|
75
71
|
def _detect_desktop() -> bool:
|
|
@@ -121,16 +117,15 @@ def _get_is_desktop() -> bool:
|
|
|
121
117
|
IS_ANDROID: bool = _get_is_android()
|
|
122
118
|
"""``True`` when running inside an Android process.
|
|
123
119
|
|
|
124
|
-
The flag is computed once at import time,
|
|
125
|
-
|
|
120
|
+
The flag is computed once at import time, from ``sys.platform ==
|
|
121
|
+
"android"`` or a successful import of Chaquopy's `java` module.
|
|
126
122
|
"""
|
|
127
123
|
|
|
128
124
|
IS_IOS: bool = _get_is_ios()
|
|
129
125
|
"""``True`` when running inside an iOS app bundle.
|
|
130
126
|
|
|
131
|
-
The flag is computed once at import time,
|
|
132
|
-
|
|
133
|
-
`HOME` path.
|
|
127
|
+
The flag is computed once at import time, from ``sys.platform ==
|
|
128
|
+
"ios"`` or the explicit `PN_PLATFORM=ios` override.
|
|
134
129
|
"""
|
|
135
130
|
|
|
136
131
|
IS_DESKTOP: bool = _get_is_desktop()
|
pythonnative/virtual_rows.py
CHANGED
|
@@ -15,7 +15,9 @@ a different row index (recycling), and tears everything down when the
|
|
|
15
15
|
list is destroyed.
|
|
16
16
|
|
|
17
17
|
State inside rows works: hooks like ``use_state`` mark the row's own
|
|
18
|
-
reconciler dirty and
|
|
18
|
+
reconciler dirty and the reconciler's inline flush (its default when
|
|
19
|
+
no host render callback is set) re-renders just that row. Re-entrant
|
|
20
|
+
requests during a flush are drained by the reconciler itself.
|
|
19
21
|
"""
|
|
20
22
|
|
|
21
23
|
from typing import Any, Callable, Dict
|
|
@@ -39,27 +41,15 @@ class RowSubtree:
|
|
|
39
41
|
from .reconciler import Reconciler
|
|
40
42
|
|
|
41
43
|
self._reconciler = Reconciler(get_registry())
|
|
42
|
-
#
|
|
43
|
-
# re-renders
|
|
44
|
-
#
|
|
45
|
-
|
|
46
|
-
self.
|
|
47
|
-
self._reconciler._screen_re_render = self._request_flush
|
|
44
|
+
# Rows flush synchronously: a ``use_state`` setter inside a row
|
|
45
|
+
# re-renders that row before the setter returns. The reconciler
|
|
46
|
+
# queues and drains re-entrant requests on its own, so no
|
|
47
|
+
# extra guard is needed here.
|
|
48
|
+
self._reconciler.on_render_requested = self._flush
|
|
48
49
|
self.native_root: Any = None
|
|
49
50
|
|
|
50
|
-
def
|
|
51
|
-
|
|
52
|
-
self._flush_queued = True
|
|
53
|
-
return
|
|
54
|
-
self._flushing = True
|
|
55
|
-
try:
|
|
56
|
-
for _ in range(8):
|
|
57
|
-
self._flush_queued = False
|
|
58
|
-
self.native_root = self._reconciler.flush_dirty()
|
|
59
|
-
if not self._flush_queued:
|
|
60
|
-
break
|
|
61
|
-
finally:
|
|
62
|
-
self._flushing = False
|
|
51
|
+
def _flush(self) -> None:
|
|
52
|
+
self.native_root = self._reconciler.flush_dirty()
|
|
63
53
|
|
|
64
54
|
def mount(self, element: Element, width: float, height: float) -> Any:
|
|
65
55
|
"""Mount ``element`` at the given cell size; returns the native root."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pythonnative
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.38.0
|
|
4
4
|
Summary: Cross-platform native UI toolkit for Android and iOS
|
|
5
5
|
Author: Owen Carey
|
|
6
6
|
License: MIT License
|
|
@@ -34,16 +34,13 @@ Classifier: Intended Audience :: Developers
|
|
|
34
34
|
Classifier: License :: OSI Approved :: MIT License
|
|
35
35
|
Classifier: Programming Language :: Python :: 3
|
|
36
36
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
37
|
-
Classifier: Programming Language :: Python :: 3.
|
|
38
|
-
Classifier: Programming Language :: Python :: 3.
|
|
39
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
38
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
40
39
|
Classifier: Topic :: Software Development :: User Interfaces
|
|
41
|
-
Requires-Python: >=3.
|
|
40
|
+
Requires-Python: >=3.13
|
|
42
41
|
Description-Content-Type: text/markdown
|
|
43
42
|
License-File: LICENSE
|
|
44
43
|
Requires-Dist: requests>=2.31.0
|
|
45
|
-
Requires-Dist: tomli>=2.0; python_version < "3.11"
|
|
46
|
-
Requires-Dist: typing_extensions>=4.4; python_version < "3.11"
|
|
47
44
|
Provides-Extra: build
|
|
48
45
|
Requires-Dist: Pillow>=10.0; extra == "build"
|
|
49
46
|
Dynamic: license-file
|
|
@@ -86,7 +83,7 @@ PythonNative is a cross-platform toolkit for building native Android and iOS app
|
|
|
86
83
|
- **Hooks and function components:** Manage state with `use_state`, side effects with `use_effect` / `use_layout_effect`, refs and imperative handles with `use_ref` / `use_imperative_handle`, and navigation with `use_navigation`, all through one consistent pattern. Components can return a single element, a list of siblings, or `None`, and `Fragment`, `Portal`, and reactive `Provider` context work the way they do in React.
|
|
87
84
|
- **Async-first rendering:** One `asyncio` event loop runs the whole framework on the platform's main thread. Components can be `async def` and `await` data directly in the body; `Suspense` boundaries show declarative loading states while they wait. `use_resource` fetches during render, `use_effect` accepts coroutine callbacks (cancelled automatically on unmount), `lazy` code-splits components, and `use_transition` / `use_deferred_value` keep the UI responsive during expensive updates.
|
|
88
85
|
- **Developer feedback that finds your bugs:** In dev mode (`pn preview`, hot reload, or `PN_DEV=1`), uncaught errors from renders, effects, and event handlers show a full-screen RedBox with the traceback; unknown style keys and duplicate list keys print "did you mean" warnings; and conditional hooks raise a `HookOrderError` at the source instead of silently cross-wiring state.
|
|
89
|
-
- **Typed `style` prop:** Pass all visual and layout properties through a single `style` dict, fully described by the `pn.Style` `TypedDict` and the ergonomic `pn.style(...)` helper for IDE autocomplete and static checking. Compose reusable styles with `StyleSheet
|
|
86
|
+
- **Typed `style` prop and theme:** Pass all visual and layout properties through a single `style` dict, fully described by the `pn.Style` `TypedDict` and the ergonomic `pn.style(...)` helper for IDE autocomplete and static checking. Compose reusable styles with `StyleSheet`, and read design tokens from a typed, immutable `pn.Theme` via `use_theme()` that follows light and dark mode by default.
|
|
90
87
|
- **Cross-platform flexbox engine:** A pure-Python, Yoga-style layout engine computes frames once and applies them to native views, so `flex`, `padding`, `aspect_ratio`, and `position: "absolute"` produce the same geometry on Android and iOS.
|
|
91
88
|
- **Virtual view tree + reconciler:** Element trees are diffed and patched with minimal native mutations, similar to React's reconciliation. Each commit lands as **one batched transaction** of mutation ops, and event callbacks are routed through a tag-based registry so re-renders that only change closures cost zero native calls. State updates re-render **locally**: only the component whose state changed (and its subtree) re-runs, and unchanged leaves reuse cached intrinsic measurements, so deep UIs stay responsive instead of re-rendering the whole app from the root on every tap.
|
|
92
89
|
- **Native-driven animations:** The `Animated` API (timing / spring / decay / loop / stagger, awaitable or fire-and-forget) hands animations to Core Animation and `ViewPropertyAnimator` whenever possible, so no Python code runs per frame; a pure-Python ticker covers the rest. `interpolate`, arithmetic operators on animated nodes, `Animated.event` scroll binding, and `diff_clamp` cover the scroll-driven patterns (collapsing headers, parallax) that define native feel.
|
|
@@ -95,6 +92,7 @@ PythonNative is a cross-platform toolkit for building native Android and iOS app
|
|
|
95
92
|
- **Native rendering core:** each commit is one serialized transaction applied by Swift and Kotlin component managers, the same shape as React Native's Fabric. Device APIs are native modules registered by name (TurboModules-style), callable from thin Python facades.
|
|
96
93
|
- **Custom-component SDK:** Wrap any platform widget as a first-class element with type-checked props via `pythonnative.sdk` (`Props`, `@native_component`, `element_factory`). Plugins distributed on PyPI auto-register through the `pythonnative.handlers` entry-point group.
|
|
97
94
|
- **CLI scaffolding:** `pn init` creates a ready-to-run project; `pn run android` and `pn run ios` build and launch your app.
|
|
95
|
+
- **PyPI packages, binary wheels included:** List requirements in `pythonnative.toml` and the CLI resolves them for the *device* (iOS wheels via PEP 730 and BeeWare's index, Android wheels via PEP 738 and Chaquopy), bundling numpy, Pillow, cryptography, and friends alongside pure-Python packages. `pn deps` reports what each target resolves to before you build, and a weekly-checked compatibility matrix keeps the docs honest.
|
|
98
96
|
- **Instant desktop preview:** `pn preview` renders your app in a native desktop window via Tkinter with Fast Refresh on every save: iterate on layout, state, and navigation in milliseconds without booting a simulator or device. The reconciler, hooks, layout engine, and navigation are the same code that ships to the phone.
|
|
99
97
|
- **Native-backed navigation:** Declarative `Stack`, `Tab`, and `Drawer` navigators inspired by React Navigation. The root stack drives the platform's native navigation controller (`UINavigationController` on iOS, AndroidX Navigation Component on Android), so transitions, back gestures, and the hardware back button match what users expect; `use_back_handler` intercepts the back action when a screen needs to.
|
|
100
98
|
- **Fast Refresh hot reload:** `pn run --hot-reload` watches `app/` and patches edits into the running app on save, preserving component state across most changes.
|
|
@@ -104,6 +102,8 @@ PythonNative is a cross-platform toolkit for building native Android and iOS app
|
|
|
104
102
|
|
|
105
103
|
### Installation
|
|
106
104
|
|
|
105
|
+
Requires Python 3.13 or newer.
|
|
106
|
+
|
|
107
107
|
```bash
|
|
108
108
|
pip install pythonnative
|
|
109
109
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
pythonnative/__init__.py,sha256=
|
|
1
|
+
pythonnative/__init__.py,sha256=UCEJhPHefkOJJ9L1Eamgn8UUaQXPvaDFaTtta6p6rig,9267
|
|
2
2
|
pythonnative/_ios_log.py,sha256=jmghL5GgcceTVL0e_2EwMDJjX0GMPhuwKOAJfZzRM0E,2576
|
|
3
|
-
pythonnative/alerts.py,sha256=
|
|
3
|
+
pythonnative/alerts.py,sha256=PO6ih7jiS7aiDKN-egwrcLjriTfvuhhOkCN2cB9bVr4,7848
|
|
4
4
|
pythonnative/animated.py,sha256=T8xVB7uqbHLzOJAfSqjYmiaA30OikdYOcE1GX8LbqaY,60065
|
|
5
5
|
pythonnative/appearance.py,sha256=vMkDRIz9ptaprMmlPmiYJLVwrDslfnc1bhwyE27M2ZI,3891
|
|
6
6
|
pythonnative/bootstrap.py,sha256=oXrVOyDmp_jpBYM3iuBcAb1w3-RX1Gis45WNo2w6m-8,3031
|
|
@@ -8,7 +8,7 @@ pythonnative/component.py,sha256=a7lfcd_WxEpQgYwehxDMkvphH1h960EFW8OQWrXwWnI,966
|
|
|
8
8
|
pythonnative/diagnostics.py,sha256=S4ULu8ROsCIt2j6hsGXmGNVnyH5n9sn12nZ3WBqegiE,7991
|
|
9
9
|
pythonnative/element.py,sha256=j27rIFEADgCwgtNOTMZVX1mzx5R7Ejn2sb18rhUa1s4,5569
|
|
10
10
|
pythonnative/events.py,sha256=EFYz8HxVOTA3soAe0Z9P2gZN9ShLjXhKH7I34DmnNbM,7895
|
|
11
|
-
pythonnative/gestures.py,sha256=
|
|
11
|
+
pythonnative/gestures.py,sha256=CyukKo7x-5yC2wT5wUTwmfCdKGZE-DM3iQYvKD6kIAU,47529
|
|
12
12
|
pythonnative/hooks.py,sha256=Fe1l-7eabGFeDmIvPROtgaDJBluyilsHQEloGq-oKQs,56026
|
|
13
13
|
pythonnative/hot_reload.py,sha256=MQVW8jqJiOMrNlsDlINiBa_P3ulLxm1JNtkF8E0pOqc,25198
|
|
14
14
|
pythonnative/images.py,sha256=MU_6ljEeIsjQEFpGuc38On4Y5Ri0i51HuQv8psXFtT4,6561
|
|
@@ -22,22 +22,22 @@ pythonnative/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
22
22
|
pythonnative/runtime.py,sha256=qpRJ0-EAsWeXmxJoCCkyY4gLsJ3QlgdBUTeaQhi7xu0,19394
|
|
23
23
|
pythonnative/scheduler.py,sha256=PAj3ybfs6Gn1RF2PHLN7Oqbe8R7ps83RXP8lwy-0vYQ,5457
|
|
24
24
|
pythonnative/storage.py,sha256=7AAgz9wAuDTad-Y0uBKkwtqcgYa_s-ScvDcgZ8Wmf3w,6131
|
|
25
|
-
pythonnative/style.py,sha256=
|
|
25
|
+
pythonnative/style.py,sha256=PK9hHAwdAYCq8lvdvnqLEZmgQQrgVvz-sZnFiErR1wo,26281
|
|
26
26
|
pythonnative/suspense.py,sha256=ojyz2yW1jTt2BJw0uLFYpnjTrCfUGsGC52lsAlKYgzg,14570
|
|
27
|
-
pythonnative/utils.py,sha256=
|
|
28
|
-
pythonnative/virtual_rows.py,sha256=
|
|
27
|
+
pythonnative/utils.py,sha256=EUebhRGO1Ob-vAxxoDeRFJZ8uQySpH0WuHgxIhfucmI,4656
|
|
28
|
+
pythonnative/virtual_rows.py,sha256=zbus3zAebMNul1vAspLKC5TRc_oEyjxB2GYDPwlYd8M,4825
|
|
29
29
|
pythonnative/bridge/__init__.py,sha256=lKzVBv82VbyaxCaezUsDXNTYG930Yd9N_sFcr4Uq628,10374
|
|
30
30
|
pythonnative/bridge/android.py,sha256=x2z7Ni0puQpSzdwkzbpTvUUPbSX2isE2RnWnYwvqcZM,3177
|
|
31
31
|
pythonnative/bridge/codec.py,sha256=qXpnE2jxZH6JCOnZ-TwV8ssIqht3JPDk_AMoH1m_FRU,5824
|
|
32
32
|
pythonnative/bridge/fake.py,sha256=U8eTkJGo1KwgeH6yE_OLFusEvvlhUXtEOfuVGuqpxRk,10417
|
|
33
33
|
pythonnative/bridge/ios.py,sha256=NeCxmWsp6qFweG8vobsvVbsR144wRRoIEiYZjzW3qvw,5936
|
|
34
34
|
pythonnative/cli/__init__.py,sha256=NM1psvKe8jT0vzp8Ak4MMoygZz4P_msk5g-YEsY8xLk,232
|
|
35
|
-
pythonnative/cli/pn.py,sha256=
|
|
35
|
+
pythonnative/cli/pn.py,sha256=mPSvdr-8CvluVzE-MrsuQ0XknMSWGA6p8U1rYQjsUhM,44705
|
|
36
36
|
pythonnative/components/__init__.py,sha256=6xbkZYU3M4Jvv4wOLSiL8pj5HGkEYbOHXcyC0gj4oZU,2640
|
|
37
|
-
pythonnative/components/_base.py,sha256=
|
|
38
|
-
pythonnative/components/controls.py,sha256=
|
|
39
|
-
pythonnative/components/layout.py,sha256=
|
|
40
|
-
pythonnative/components/lists.py,sha256=
|
|
37
|
+
pythonnative/components/_base.py,sha256=nuIMUxPfxB5KdnWjHgSFm0gDqU_UMgLJkpkozNkbR10,6068
|
|
38
|
+
pythonnative/components/controls.py,sha256=RNX0Nsy0k77vQ-I9hWNaCl9WKSwNL1j6fZtRw-m5YrU,18620
|
|
39
|
+
pythonnative/components/layout.py,sha256=4uhMSBcDSNgOOmjICNDNULGB40ALN26kRiX3eOvipQY,21069
|
|
40
|
+
pythonnative/components/lists.py,sha256=ilPqFC5wPo2oIIv-G5vMA5Op2XbzMqsoW2IFGVxFxkY,33044
|
|
41
41
|
pythonnative/components/media.py,sha256=g6bf8bidJlrASJ3bxEaFpuW9WegstkzvFgysLzALjC8,8167
|
|
42
42
|
pythonnative/components/overlays.py,sha256=n8wkOT2TST9aLD7Yrx8dW72qv5vXdx7DuuXHbM4C9wM,4124
|
|
43
43
|
pythonnative/components/pressable.py,sha256=vLPDOblFkWIErera0Cj8p3FQUAyB0xhK3Ut50-WWRUA,10214
|
|
@@ -47,47 +47,48 @@ pythonnative/hosts/__init__.py,sha256=jCPXGnPaSNw7sSG2ATA6qpiT9UW0oAA7gzfjEsTOXv
|
|
|
47
47
|
pythonnative/hosts/base.py,sha256=CDXBrRsE5ZieDvN-GL9P9z4M0w7YAGVlEiTJ7VmBu7k,26657
|
|
48
48
|
pythonnative/hosts/desktop.py,sha256=CnhveLgGcgQaAsa8J7avJ1ufAHdm8SikLdfQbbdgOqg,3922
|
|
49
49
|
pythonnative/hosts/native.py,sha256=A6msAdMLGA3S5Cu-uyajftFFW9WprSKGszjUJ0_jwj0,12686
|
|
50
|
-
pythonnative/native_modules/__init__.py,sha256=
|
|
50
|
+
pythonnative/native_modules/__init__.py,sha256=t3xiiQervny7FAWEZGe0S1kmjGaWpTjVONHoPZatYkw,4563
|
|
51
51
|
pythonnative/native_modules/app_state.py,sha256=TnuaeacxpgFUQbd1qrGIv_4A_B000Ik3oq0ZmzuHZnQ,2757
|
|
52
|
-
pythonnative/native_modules/battery.py,sha256=
|
|
53
|
-
pythonnative/native_modules/biometrics.py,sha256=
|
|
54
|
-
pythonnative/native_modules/camera.py,sha256=
|
|
55
|
-
pythonnative/native_modules/clipboard.py,sha256=
|
|
52
|
+
pythonnative/native_modules/battery.py,sha256=sLVnkbQuFQXOt0P1I7ckaqqFWYqwN3mxP7URE0PRKBk,2597
|
|
53
|
+
pythonnative/native_modules/biometrics.py,sha256=_lP8tWl-fWYQkRLiotkW9eHZkpTKlLpQF1G5LL6Q0Js,1399
|
|
54
|
+
pythonnative/native_modules/camera.py,sha256=0Pt0CTICu9m8LiU3ViiM34gLNrzjZzrPYMfmLnYCXgU,2033
|
|
55
|
+
pythonnative/native_modules/clipboard.py,sha256=DOJfQkX-ZmYt3CwBVfQXC_-XB_OAQvMy3K86dh4FYHM,1401
|
|
56
56
|
pythonnative/native_modules/desktop.py,sha256=4hkV3h_SUNpBM4fbgFShSW2FE48Dq512THrc2bEc0Xk,9258
|
|
57
|
-
pythonnative/native_modules/file_system.py,sha256=
|
|
58
|
-
pythonnative/native_modules/haptics.py,sha256=
|
|
59
|
-
pythonnative/native_modules/linking.py,sha256=
|
|
60
|
-
pythonnative/native_modules/location.py,sha256=
|
|
61
|
-
pythonnative/native_modules/net_info.py,sha256=
|
|
62
|
-
pythonnative/native_modules/notifications.py,sha256=
|
|
63
|
-
pythonnative/native_modules/permissions.py,sha256=
|
|
57
|
+
pythonnative/native_modules/file_system.py,sha256=JzmCu1QYNg2Yq8M0Tson9aD7Kvn41bxbxvJYFqmnPjs,5425
|
|
58
|
+
pythonnative/native_modules/haptics.py,sha256=ENoGVZSMZBt81eFRJ8oO8_4CAuACJ0JZeFXAivZmNCI,2258
|
|
59
|
+
pythonnative/native_modules/linking.py,sha256=laOcVgx0eH5nDIJ4Eupdt14IYAHsPYKzUc3ivGQQUug,3808
|
|
60
|
+
pythonnative/native_modules/location.py,sha256=YgSqlW-d72nTMGb2nmoFTPK0TFR1jHZ_Gq_74VCGF0A,2681
|
|
61
|
+
pythonnative/native_modules/net_info.py,sha256=f_PSGW5PaChRAvnxZS2LVM3fsVPGW2-yrCB2hmUyR1Y,3342
|
|
62
|
+
pythonnative/native_modules/notifications.py,sha256=kPC3C572j3sTmeX2nYxR-pHhGMLcl_jYOhV4ElvbSeM,4701
|
|
63
|
+
pythonnative/native_modules/permissions.py,sha256=5vLEjNac0eMC4nUO-KgzdiHwX_kHDv0zxCfNFi5j55g,3740
|
|
64
64
|
pythonnative/native_modules/registry.py,sha256=g0c8oB96sciw5AEOPxWETjw_6hLlHarbQ6hndNZJ7YI,17875
|
|
65
|
-
pythonnative/native_modules/secure_store.py,sha256=
|
|
66
|
-
pythonnative/native_modules/share.py,sha256=
|
|
65
|
+
pythonnative/native_modules/secure_store.py,sha256=ldcxXGc8QUeCM17IHhj2VmLe9TSHnpANl_Azhzt6yUw,1861
|
|
66
|
+
pythonnative/native_modules/share.py,sha256=vcPKVxrbtElQAAFN2fk_Nr0RsnqvPN6PeOYZPYMs5cg,1476
|
|
67
67
|
pythonnative/native_views/__init__.py,sha256=8SdHxna9ffVrnR6XPciZMWnqHXLARrSrNz8OYySeyCw,14833
|
|
68
68
|
pythonnative/native_views/base.py,sha256=5z9P_2iF1bui9_1CWOQ1cEd86D4Peo4ELN4os3AYQME,12062
|
|
69
69
|
pythonnative/native_views/bridge_backend.py,sha256=-O71Lxltygy2-5N8P8wkNve2_n_9CtCYt8lHuPQxpYQ,10920
|
|
70
70
|
pythonnative/native_views/desktop.py,sha256=0p4z_QkSYMjHyV2Q_S96NHmhOHKEbS1sSs0Kl5yLnMM,94418
|
|
71
|
-
pythonnative/navigation/__init__.py,sha256=
|
|
71
|
+
pythonnative/navigation/__init__.py,sha256=qp4MHsEYnoDdQUftqXw0OPdrwut28vMa9XY-Lw7Luiw,2877
|
|
72
72
|
pythonnative/navigation/container.py,sha256=eob849GyalJnq1aQxXC0Jz79MdK9Cs1i6dh7W7D3uqo,5298
|
|
73
73
|
pythonnative/navigation/handle.py,sha256=SYjfqMIQWCcHmd0sDQE9OQ0iaHPPhA1iOKQjdwCeWIQ,23550
|
|
74
|
-
pythonnative/navigation/hooks.py,sha256=
|
|
74
|
+
pythonnative/navigation/hooks.py,sha256=vbT-oh5-jdEi1seJlCSVNiPq-o3fyAuwPR93W0dZRWw,4431
|
|
75
75
|
pythonnative/navigation/host.py,sha256=ZDT16pMssTwLQ48Xash887GQoNlOxijGDJK4wmcU7gk,2365
|
|
76
76
|
pythonnative/navigation/linking.py,sha256=A4as0oZN9kv32w_Ormr3wFGAJ5DVRzJ6e-ch3iUoV88,7972
|
|
77
77
|
pythonnative/navigation/navigators.py,sha256=hzjjWwUZOqAhznsiMQo2ekr3-OMK3yZ14tSDzW6umXI,22056
|
|
78
78
|
pythonnative/navigation/screen.py,sha256=8U7sPWrhDKjrKzDht22FiZG4eI8n_fiREWDzUegN5so,6386
|
|
79
|
-
pythonnative/navigation/state.py,sha256=
|
|
79
|
+
pythonnative/navigation/state.py,sha256=fdSBegt7QAef068AKVqsFzWztoNK3QOFCEB2WqocBGY,10827
|
|
80
80
|
pythonnative/project/__init__.py,sha256=kAhWLONs53H1L7xVtczLmzYcQSOOkdRZTAJnIMhpBts,2064
|
|
81
|
-
pythonnative/project/android.py,sha256=
|
|
82
|
-
pythonnative/project/builder.py,sha256=
|
|
83
|
-
pythonnative/project/config.py,sha256=
|
|
81
|
+
pythonnative/project/android.py,sha256=a-R_w7eZ5ycJrX64Km2SFPkr3hrLglaPGiCQMeVCErM,20795
|
|
82
|
+
pythonnative/project/builder.py,sha256=q321_fBORu7_NOCVYcj_RRElTGRhGC3qTfNnR1rSoMQ,26255
|
|
83
|
+
pythonnative/project/config.py,sha256=6ws9CpSOzrG9Md1x9s11imeBAdrw0gyUt-d8-ROuRHs,29998
|
|
84
|
+
pythonnative/project/deps.py,sha256=igQ4slCdoELmv-N7i3T8pawTNGXyLllm19pkLPeygfI,27023
|
|
84
85
|
pythonnative/project/devices.py,sha256=zH0v95vOqWxXGdeTDljrZTA0RWBuU79v3zTQSaXkDh8,10106
|
|
85
|
-
pythonnative/project/doctor.py,sha256=
|
|
86
|
+
pythonnative/project/doctor.py,sha256=SdIGGrzR-FD91YJkmbf1xAo_XcZGUsIGvNGmX4oyzZE,10549
|
|
86
87
|
pythonnative/project/icons.py,sha256=GaXpktQ9v4v2JZPM3ppueNPmwjTuFiLanHJDaZbLGuo,7945
|
|
87
88
|
pythonnative/project/ios.py,sha256=7Hb-PNm8ZJwXoCQoVCb57n2Qfsjvsdgx0KnckMS9ZBA,13126
|
|
88
89
|
pythonnative/project/permissions.py,sha256=WyApoqZ0mCTeAtffYbpCGV-bgLvOG7SlPcV7zSO_IV8,14227
|
|
89
90
|
pythonnative/project/plugins.py,sha256=j609UgtxZYW5Tbc-ijBQN-FZFFpao55pFVyLqxF9Pig,14228
|
|
90
|
-
pythonnative/project/runtime_assets.py,sha256=
|
|
91
|
+
pythonnative/project/runtime_assets.py,sha256=DeYOby42bDkgzxF7k-WVNMjS3inGHmuGmSCnIrX2lbQ,6900
|
|
91
92
|
pythonnative/reconciler/__init__.py,sha256=mwlPUA5naD50N-JpTyXGy030xA-0R5x9EaunNgDKlfg,808
|
|
92
93
|
pythonnative/reconciler/boundaries.py,sha256=FIt0fxL-mFs6SGKwwCWMcvW8GjNyzCsK6T1egEwW2K0,15038
|
|
93
94
|
pythonnative/reconciler/children.py,sha256=k_eP2FmSAjtvEEGTz6eGXpMpLeQ6PgyHnZpnKzTAyhE,3340
|
|
@@ -96,12 +97,12 @@ pythonnative/reconciler/layout_pass.py,sha256=OBsqzMp6hphxPMGTRNlh8N31OHn51K2bfW
|
|
|
96
97
|
pythonnative/reconciler/vnode.py,sha256=4AMqZBFXxJeV1v2qn_FEbaLw9hSIXGJEvAx7ifImH0k,10052
|
|
97
98
|
pythonnative/sdk/__init__.py,sha256=3Jj3WZyb6zCXEgb9OOgm6T1bTk8Mvd7BiVAPCsprfsk,4208
|
|
98
99
|
pythonnative/sdk/_components.py,sha256=ezu9CCxaMO6xaThveaCo330WyskPJmY_1ikK2GWBkX8,13959
|
|
99
|
-
pythonnative/templates/android_template/build.gradle,sha256=
|
|
100
|
+
pythonnative/templates/android_template/build.gradle,sha256=MR1GSgugCawgte6Uw0f9XOjhR0Ay9lNYioaNco_GTyQ,562
|
|
100
101
|
pythonnative/templates/android_template/gradle.properties,sha256=REPaKLRfQiiVfIV8wYmgwzPWvF1f3bhh_kAMV9p4HME,1358
|
|
101
102
|
pythonnative/templates/android_template/gradlew,sha256=YxNShxF6Hm0SyEWA8fScYdG6AiGOzShmBgXpf5dufWU,5766
|
|
102
103
|
pythonnative/templates/android_template/gradlew.bat,sha256=xGonx5AHdG3lkisXq7YjDWStixujrRWF7lxlQ8KpsSk,2674
|
|
103
104
|
pythonnative/templates/android_template/settings.gradle,sha256=t3iF-7oXBYWt9AijuZm3yyUQBEOr98uF3KMSGQEfHL0,357
|
|
104
|
-
pythonnative/templates/android_template/app/build.gradle,sha256=
|
|
105
|
+
pythonnative/templates/android_template/app/build.gradle,sha256=cbiIyY0o6PTZUhLyEafhw9CArTKWRJEo5hNmlim4YaQ,2191
|
|
105
106
|
pythonnative/templates/android_template/app/proguard-rules.pro,sha256=Vv2WDPIl9spA-YKxOl27DYvD394T_3ZCKCXGBw0KGJA,750
|
|
106
107
|
pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt,sha256=Am8Yla3i1eR_ac5FVgPU_RsuMrCbyT79h1BcajGE-zI,693
|
|
107
108
|
pythonnative/templates/android_template/app/src/main/AndroidManifest.xml,sha256=BYJG1s2BZKY-WenCpgWYpHFUiioB9LGHAdoNV0ry9cE,1245
|
|
@@ -131,7 +132,7 @@ pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml,sh
|
|
|
131
132
|
pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml,sha256=yx_EerSphFMO1g4ObuY4kpwwOCkOfn4LSwOjow--c4E,551
|
|
132
133
|
pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt,sha256=Z6lsNy__lyw7Nzj4GndWK1VLZkgAyX3czP8YX9to7r4,357
|
|
133
134
|
pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar,sha256=6ZbUUtJkXnDAHBEUPKLTdCc0oo2iv2HyXIK9wojJ5jc,59203
|
|
134
|
-
pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties,sha256=
|
|
135
|
+
pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties,sha256=guGpN9_pjqfL3mOpsGEaTmzf-Lvby7NZazlPbP3OmzM,230
|
|
135
136
|
pythonnative/templates/android_template/pythonnative/build.gradle,sha256=nyO-iIffzOM1mCVe2Hyti0l7163eITyCWNukVFUXjeM,1368
|
|
136
137
|
pythonnative/templates/android_template/pythonnative/src/main/AndroidManifest.xml,sha256=X30MdSw3RdlAYuLGZ1lc7Zn4bCUKFfJiBSsOIU-lvFo,527
|
|
137
138
|
pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/PNBridge.kt,sha256=wI8NBi8EEt-uogIkLlR487K2XDEjhfYTwCRNlrFoMrs,7922
|
|
@@ -176,7 +177,7 @@ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnat
|
|
|
176
177
|
pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt,sha256=2yNWP-GsLqslCApnyttQO_xu_2Z7zsoLY-mAU9F6oSg,8060
|
|
177
178
|
pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt,sha256=hOs0pvaLjXkFA-Tw84j1DSXnCSyX6AJhv4BG0qBYVaQ,5214
|
|
178
179
|
pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt,sha256=tOHKerLi9bwNtaLvUR76KN4Gm7NhtlwbukL5e8nWSOE,3842
|
|
179
|
-
pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt,sha256=
|
|
180
|
+
pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt,sha256=GSjVjfB1O_TW_0dcqDK_To9yV92l4iXW6UFNiVE-GPg,4610
|
|
180
181
|
pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt,sha256=pPHkPY6uZRmdJeCLjux5ePXukc8ZxFrpnTkY-O0CDGs,3543
|
|
181
182
|
pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt,sha256=opvoMziD5_q55RrenoG4aDhgJt8feyMLeySzA1ow_A4,6788
|
|
182
183
|
pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt,sha256=EHxRUYYDLoa4Yw-LPPXITHQ8q0VnLaf-Dp0inNhLOaQ,531
|
|
@@ -223,7 +224,7 @@ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modu
|
|
|
223
224
|
pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/LifecycleModules.swift,sha256=1t0tdZpml5CMt9ZxG6sYs_A10T6jgcjEE_iYb-hPNuU,6597
|
|
224
225
|
pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/MediaModules.swift,sha256=anUy6xmnAa0dy1-M6B0J-Yq2_lcKHTuR2knfBvlzyrI,6686
|
|
225
226
|
pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/PNNativeModule.swift,sha256=wlHJO6ni-jyRoQUMP63Rat--hSCECNSgWZ-N52qZeEo,4436
|
|
226
|
-
pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/PermissionModules.swift,sha256=
|
|
227
|
+
pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/PermissionModules.swift,sha256=Gj_mmZDcMYdJm-oiJPIHQV-4bL6fuNLvSXONaGmA1nM,10622
|
|
227
228
|
pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/SystemModules.swift,sha256=H9MukERogcDCfJDbut9TnD7_ggXnFGDRaxv-8Pb_aT4,9472
|
|
228
229
|
pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift,sha256=WbWwvoHy1yY5wpF3vomM-h0ifNbpkgeziDYoRQohYk8,382
|
|
229
230
|
pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift,sha256=_tb7laOdgUQhv4aM-Z0jAPSj8F5IOvtTPFIQTmOoiBI,1378
|
|
@@ -240,14 +241,14 @@ pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/P
|
|
|
240
241
|
pythonnative/templates/ios_template/ios_template/AppDelegate.swift,sha256=gUq-urF0ehOQ7yiUrfcQl0Vea_QQdg0ZvweQkZdot1g,1544
|
|
241
242
|
pythonnative/templates/ios_template/ios_template/BridgingHeader.h,sha256=JwlbCXMf3xsSrZYhTbW-F6JJw7xrXkA1W7ctc6Qc2Nw,332
|
|
242
243
|
pythonnative/templates/ios_template/ios_template/Info.plist,sha256=LuiCWAutMwxwVSkVC2tFPfycdKVDiGMBSP5dYYEpjNI,920
|
|
243
|
-
pythonnative/templates/ios_template/ios_template/PythonRuntime.swift,sha256=
|
|
244
|
+
pythonnative/templates/ios_template/ios_template/PythonRuntime.swift,sha256=fNpXcAjPFf7rxMBr5skiHf6jX5Fo4wR7yibeYR3sYas,15822
|
|
244
245
|
pythonnative/templates/ios_template/ios_template/SceneDelegate.swift,sha256=8gs0LJIBroRlFkh_eJ5nN-t2_Rs1paRVPo8kin7_mH4,1930
|
|
245
246
|
pythonnative/templates/ios_template/ios_template/ViewController.swift,sha256=qN_kXcZvkHMznl_MWQfPnpOmNyeEDbek3IBYl6pO1Pg,792
|
|
246
247
|
pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json,sha256=D9Sbo8NYXHCWeOAEaoIcPGBoXscGNyDTDTo0SL46IIs,63
|
|
247
248
|
pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json,sha256=mvZQhvowtJJS-uGhIlcxaR3nlPd3WvdNcb7-tQfRK3w,123
|
|
248
249
|
pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json,sha256=VUwGr7K_geOvQjFh5VKB6iVXV1mi0tjGMinUmB2JvQs,177
|
|
249
250
|
pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard,sha256=HJWMXGXzJJWbBcAvFwAE8_Wq0p6coMJUV2fv1baxVhY,1665
|
|
250
|
-
pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj,sha256=
|
|
251
|
+
pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj,sha256=lOkvRtM6ehepYPH7GnxQj6rSg-TN_ghG4x8mmy0svjU,30813
|
|
251
252
|
pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist,sha256=36D5u4W5XMupxoEa2t-MtAf7XVIIjonbg-vDCOxEhUI,238
|
|
252
253
|
pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift,sha256=YnwzZx7yXB13xKAXEGNgz17VuhWeqkHTRTtBJ2Vu3_E,1238
|
|
253
254
|
pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift,sha256=HLRr3cmouRqQeXG13WrZ2XSAmgMgCsNXfZpbwkxeFcs,1385
|
|
@@ -255,9 +256,9 @@ pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunc
|
|
|
255
256
|
pythonnative/testing/__init__.py,sha256=a76InZThMU9UI1-AJURZ6rB9guZLJFl62Ep5CEOjpno,1683
|
|
256
257
|
pythonnative/testing/backend.py,sha256=1uePC5rWj4X2bz4w2z3esD675LEJWok8EFbixiiwk60,11299
|
|
257
258
|
pythonnative/testing/harness.py,sha256=nAUGPqgVhKBuSmdGXLKO7qxTRyHVLtzGVKXCZAkH35M,16418
|
|
258
|
-
pythonnative-0.
|
|
259
|
-
pythonnative-0.
|
|
260
|
-
pythonnative-0.
|
|
261
|
-
pythonnative-0.
|
|
262
|
-
pythonnative-0.
|
|
263
|
-
pythonnative-0.
|
|
259
|
+
pythonnative-0.38.0.dist-info/licenses/LICENSE,sha256=A69iG7TIAe6KkGQf6xoVHkc5JSZtOr5eRSvC5iuivnI,1067
|
|
260
|
+
pythonnative-0.38.0.dist-info/METADATA,sha256=9hNA5iQs6sBmt7mW7Rixo--ChIn4Jj_5HoWozx_AkE8,11596
|
|
261
|
+
pythonnative-0.38.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
262
|
+
pythonnative-0.38.0.dist-info/entry_points.txt,sha256=iUtDawWSAJAEyWTycpZxDuYz73ol31butpzDIEAgPO0,48
|
|
263
|
+
pythonnative-0.38.0.dist-info/top_level.txt,sha256=kT4SEATY2ywzrZ2Pgea6_zxyym44Q_PbOsUoOYjJLFE,13
|
|
264
|
+
pythonnative-0.38.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|