pybiolib 0.2.951__py3-none-any.whl → 1.2.1890__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.
- biolib/__init__.py +357 -11
- biolib/_data_record/data_record.py +380 -0
- biolib/_index/__init__.py +0 -0
- biolib/_index/index.py +55 -0
- biolib/_index/query_result.py +103 -0
- biolib/_internal/__init__.py +0 -0
- biolib/_internal/add_copilot_prompts.py +58 -0
- biolib/_internal/add_gui_files.py +81 -0
- biolib/_internal/data_record/__init__.py +1 -0
- biolib/_internal/data_record/data_record.py +85 -0
- biolib/_internal/data_record/push_data.py +116 -0
- biolib/_internal/data_record/remote_storage_endpoint.py +43 -0
- biolib/_internal/errors.py +5 -0
- biolib/_internal/file_utils.py +125 -0
- biolib/_internal/fuse_mount/__init__.py +1 -0
- biolib/_internal/fuse_mount/experiment_fuse_mount.py +209 -0
- biolib/_internal/http_client.py +159 -0
- biolib/_internal/lfs/__init__.py +1 -0
- biolib/_internal/lfs/cache.py +51 -0
- biolib/_internal/libs/__init__.py +1 -0
- biolib/_internal/libs/fusepy/__init__.py +1257 -0
- biolib/_internal/push_application.py +488 -0
- biolib/_internal/runtime.py +22 -0
- biolib/_internal/string_utils.py +13 -0
- biolib/_internal/templates/__init__.py +1 -0
- biolib/_internal/templates/copilot_template/.github/instructions/general-app-knowledge.instructions.md +10 -0
- biolib/_internal/templates/copilot_template/.github/instructions/style-general.instructions.md +20 -0
- biolib/_internal/templates/copilot_template/.github/instructions/style-python.instructions.md +16 -0
- biolib/_internal/templates/copilot_template/.github/instructions/style-react-ts.instructions.md +47 -0
- biolib/_internal/templates/copilot_template/.github/prompts/biolib_app_inputs.prompt.md +11 -0
- biolib/_internal/templates/copilot_template/.github/prompts/biolib_onboard_repo.prompt.md +19 -0
- biolib/_internal/templates/copilot_template/.github/prompts/biolib_run_apps.prompt.md +12 -0
- biolib/_internal/templates/dashboard_template/.biolib/config.yml +5 -0
- biolib/_internal/templates/github_workflow_template/.github/workflows/biolib.yml +21 -0
- biolib/_internal/templates/gitignore_template/.gitignore +10 -0
- biolib/_internal/templates/gui_template/.yarnrc.yml +1 -0
- biolib/_internal/templates/gui_template/App.tsx +53 -0
- biolib/_internal/templates/gui_template/Dockerfile +27 -0
- biolib/_internal/templates/gui_template/biolib-sdk.ts +82 -0
- biolib/_internal/templates/gui_template/dev-data/output.json +7 -0
- biolib/_internal/templates/gui_template/index.css +5 -0
- biolib/_internal/templates/gui_template/index.html +13 -0
- biolib/_internal/templates/gui_template/index.tsx +10 -0
- biolib/_internal/templates/gui_template/package.json +27 -0
- biolib/_internal/templates/gui_template/tsconfig.json +24 -0
- biolib/_internal/templates/gui_template/vite-plugin-dev-data.ts +50 -0
- biolib/_internal/templates/gui_template/vite.config.mts +10 -0
- biolib/_internal/templates/init_template/.biolib/config.yml +19 -0
- biolib/_internal/templates/init_template/Dockerfile +14 -0
- biolib/_internal/templates/init_template/requirements.txt +1 -0
- biolib/_internal/templates/init_template/run.py +12 -0
- biolib/_internal/templates/init_template/run.sh +4 -0
- biolib/_internal/templates/templates.py +25 -0
- biolib/_internal/tree_utils.py +106 -0
- biolib/_internal/utils/__init__.py +65 -0
- biolib/_internal/utils/auth.py +46 -0
- biolib/_internal/utils/job_url.py +33 -0
- biolib/_internal/utils/multinode.py +263 -0
- biolib/_runtime/runtime.py +157 -0
- biolib/_session/session.py +44 -0
- biolib/_shared/__init__.py +0 -0
- biolib/_shared/types/__init__.py +74 -0
- biolib/_shared/types/account.py +12 -0
- biolib/_shared/types/account_member.py +8 -0
- biolib/_shared/types/app.py +9 -0
- biolib/_shared/types/data_record.py +40 -0
- biolib/_shared/types/experiment.py +32 -0
- biolib/_shared/types/file_node.py +17 -0
- biolib/_shared/types/push.py +6 -0
- biolib/_shared/types/resource.py +37 -0
- biolib/_shared/types/resource_deploy_key.py +11 -0
- biolib/_shared/types/resource_permission.py +14 -0
- biolib/_shared/types/resource_version.py +19 -0
- biolib/_shared/types/result.py +14 -0
- biolib/_shared/types/typing.py +10 -0
- biolib/_shared/types/user.py +19 -0
- biolib/_shared/utils/__init__.py +7 -0
- biolib/_shared/utils/resource_uri.py +75 -0
- biolib/api/__init__.py +6 -0
- biolib/api/client.py +168 -0
- biolib/app/app.py +252 -49
- biolib/app/search_apps.py +45 -0
- biolib/biolib_api_client/api_client.py +126 -31
- biolib/biolib_api_client/app_types.py +24 -4
- biolib/biolib_api_client/auth.py +31 -8
- biolib/biolib_api_client/biolib_app_api.py +147 -52
- biolib/biolib_api_client/biolib_job_api.py +161 -141
- biolib/biolib_api_client/job_types.py +21 -5
- biolib/biolib_api_client/lfs_types.py +7 -23
- biolib/biolib_api_client/user_state.py +56 -0
- biolib/biolib_binary_format/__init__.py +1 -4
- biolib/biolib_binary_format/file_in_container.py +105 -0
- biolib/biolib_binary_format/module_input.py +24 -7
- biolib/biolib_binary_format/module_output_v2.py +149 -0
- biolib/biolib_binary_format/remote_endpoints.py +34 -0
- biolib/biolib_binary_format/remote_stream_seeker.py +59 -0
- biolib/biolib_binary_format/saved_job.py +3 -2
- biolib/biolib_binary_format/{attestation_document.py → stdout_and_stderr.py} +8 -8
- biolib/biolib_binary_format/system_status_update.py +3 -2
- biolib/biolib_binary_format/utils.py +175 -0
- biolib/biolib_docker_client/__init__.py +11 -2
- biolib/biolib_errors.py +36 -0
- biolib/biolib_logging.py +27 -10
- biolib/cli/__init__.py +38 -0
- biolib/cli/auth.py +46 -0
- biolib/cli/data_record.py +164 -0
- biolib/cli/index.py +32 -0
- biolib/cli/init.py +421 -0
- biolib/cli/lfs.py +101 -0
- biolib/cli/push.py +50 -0
- biolib/cli/run.py +63 -0
- biolib/cli/runtime.py +14 -0
- biolib/cli/sdk.py +16 -0
- biolib/cli/start.py +56 -0
- biolib/compute_node/cloud_utils/cloud_utils.py +110 -161
- biolib/compute_node/job_worker/cache_state.py +66 -88
- biolib/compute_node/job_worker/cache_types.py +1 -6
- biolib/compute_node/job_worker/docker_image_cache.py +112 -37
- biolib/compute_node/job_worker/executors/__init__.py +0 -3
- biolib/compute_node/job_worker/executors/docker_executor.py +532 -199
- biolib/compute_node/job_worker/executors/docker_types.py +9 -1
- biolib/compute_node/job_worker/executors/types.py +19 -9
- biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +30 -0
- biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +3 -5
- biolib/compute_node/job_worker/job_storage.py +108 -0
- biolib/compute_node/job_worker/job_worker.py +397 -212
- biolib/compute_node/job_worker/large_file_system.py +87 -38
- biolib/compute_node/job_worker/network_alloc.py +99 -0
- biolib/compute_node/job_worker/network_buffer.py +240 -0
- biolib/compute_node/job_worker/utilization_reporter_thread.py +197 -0
- biolib/compute_node/job_worker/utils.py +9 -24
- biolib/compute_node/remote_host_proxy.py +400 -98
- biolib/compute_node/utils.py +31 -9
- biolib/compute_node/webserver/compute_node_results_proxy.py +189 -0
- biolib/compute_node/webserver/proxy_utils.py +28 -0
- biolib/compute_node/webserver/webserver.py +130 -44
- biolib/compute_node/webserver/webserver_types.py +2 -6
- biolib/compute_node/webserver/webserver_utils.py +77 -12
- biolib/compute_node/webserver/worker_thread.py +183 -42
- biolib/experiments/__init__.py +0 -0
- biolib/experiments/experiment.py +356 -0
- biolib/jobs/__init__.py +1 -0
- biolib/jobs/job.py +741 -0
- biolib/jobs/job_result.py +185 -0
- biolib/jobs/types.py +50 -0
- biolib/py.typed +0 -0
- biolib/runtime/__init__.py +14 -0
- biolib/sdk/__init__.py +91 -0
- biolib/tables.py +34 -0
- biolib/typing_utils.py +2 -7
- biolib/user/__init__.py +1 -0
- biolib/user/sign_in.py +54 -0
- biolib/utils/__init__.py +162 -0
- biolib/utils/cache_state.py +94 -0
- biolib/utils/multipart_uploader.py +194 -0
- biolib/utils/seq_util.py +150 -0
- biolib/utils/zip/remote_zip.py +640 -0
- pybiolib-1.2.1890.dist-info/METADATA +41 -0
- pybiolib-1.2.1890.dist-info/RECORD +177 -0
- {pybiolib-0.2.951.dist-info → pybiolib-1.2.1890.dist-info}/WHEEL +1 -1
- pybiolib-1.2.1890.dist-info/entry_points.txt +2 -0
- README.md +0 -17
- biolib/app/app_result.py +0 -68
- biolib/app/utils.py +0 -62
- biolib/biolib-js/0-biolib.worker.js +0 -1
- biolib/biolib-js/1-biolib.worker.js +0 -1
- biolib/biolib-js/2-biolib.worker.js +0 -1
- biolib/biolib-js/3-biolib.worker.js +0 -1
- biolib/biolib-js/4-biolib.worker.js +0 -1
- biolib/biolib-js/5-biolib.worker.js +0 -1
- biolib/biolib-js/6-biolib.worker.js +0 -1
- biolib/biolib-js/index.html +0 -10
- biolib/biolib-js/main-biolib.js +0 -1
- biolib/biolib_api_client/biolib_account_api.py +0 -21
- biolib/biolib_api_client/biolib_large_file_system_api.py +0 -108
- biolib/biolib_binary_format/aes_encrypted_package.py +0 -42
- biolib/biolib_binary_format/module_output.py +0 -58
- biolib/biolib_binary_format/rsa_encrypted_aes_package.py +0 -57
- biolib/biolib_push.py +0 -114
- biolib/cli.py +0 -203
- biolib/cli_utils.py +0 -273
- biolib/compute_node/cloud_utils/enclave_parent_types.py +0 -7
- biolib/compute_node/enclave/__init__.py +0 -2
- biolib/compute_node/enclave/enclave_remote_hosts.py +0 -53
- biolib/compute_node/enclave/nitro_secure_module_utils.py +0 -64
- biolib/compute_node/job_worker/executors/base_executor.py +0 -18
- biolib/compute_node/job_worker/executors/pyppeteer_executor.py +0 -173
- biolib/compute_node/job_worker/executors/remote/__init__.py +0 -1
- biolib/compute_node/job_worker/executors/remote/nitro_enclave_utils.py +0 -81
- biolib/compute_node/job_worker/executors/remote/remote_executor.py +0 -51
- biolib/lfs.py +0 -196
- biolib/pyppeteer/.circleci/config.yml +0 -100
- biolib/pyppeteer/.coveragerc +0 -3
- biolib/pyppeteer/.gitignore +0 -89
- biolib/pyppeteer/.pre-commit-config.yaml +0 -28
- biolib/pyppeteer/CHANGES.md +0 -253
- biolib/pyppeteer/CONTRIBUTING.md +0 -26
- biolib/pyppeteer/LICENSE +0 -12
- biolib/pyppeteer/README.md +0 -137
- biolib/pyppeteer/docs/Makefile +0 -177
- biolib/pyppeteer/docs/_static/custom.css +0 -28
- biolib/pyppeteer/docs/_templates/layout.html +0 -10
- biolib/pyppeteer/docs/changes.md +0 -1
- biolib/pyppeteer/docs/conf.py +0 -299
- biolib/pyppeteer/docs/index.md +0 -21
- biolib/pyppeteer/docs/make.bat +0 -242
- biolib/pyppeteer/docs/reference.md +0 -211
- biolib/pyppeteer/docs/server.py +0 -60
- biolib/pyppeteer/poetry.lock +0 -1699
- biolib/pyppeteer/pyppeteer/__init__.py +0 -135
- biolib/pyppeteer/pyppeteer/accessibility.py +0 -286
- biolib/pyppeteer/pyppeteer/browser.py +0 -401
- biolib/pyppeteer/pyppeteer/browser_fetcher.py +0 -194
- biolib/pyppeteer/pyppeteer/command.py +0 -22
- biolib/pyppeteer/pyppeteer/connection/__init__.py +0 -242
- biolib/pyppeteer/pyppeteer/connection/cdpsession.py +0 -101
- biolib/pyppeteer/pyppeteer/coverage.py +0 -346
- biolib/pyppeteer/pyppeteer/device_descriptors.py +0 -787
- biolib/pyppeteer/pyppeteer/dialog.py +0 -79
- biolib/pyppeteer/pyppeteer/domworld.py +0 -597
- biolib/pyppeteer/pyppeteer/emulation_manager.py +0 -53
- biolib/pyppeteer/pyppeteer/errors.py +0 -48
- biolib/pyppeteer/pyppeteer/events.py +0 -63
- biolib/pyppeteer/pyppeteer/execution_context.py +0 -156
- biolib/pyppeteer/pyppeteer/frame/__init__.py +0 -299
- biolib/pyppeteer/pyppeteer/frame/frame_manager.py +0 -306
- biolib/pyppeteer/pyppeteer/helpers.py +0 -245
- biolib/pyppeteer/pyppeteer/input.py +0 -371
- biolib/pyppeteer/pyppeteer/jshandle.py +0 -598
- biolib/pyppeteer/pyppeteer/launcher.py +0 -683
- biolib/pyppeteer/pyppeteer/lifecycle_watcher.py +0 -169
- biolib/pyppeteer/pyppeteer/models/__init__.py +0 -103
- biolib/pyppeteer/pyppeteer/models/_protocol.py +0 -12460
- biolib/pyppeteer/pyppeteer/multimap.py +0 -82
- biolib/pyppeteer/pyppeteer/network_manager.py +0 -678
- biolib/pyppeteer/pyppeteer/options.py +0 -8
- biolib/pyppeteer/pyppeteer/page.py +0 -1728
- biolib/pyppeteer/pyppeteer/pipe_transport.py +0 -59
- biolib/pyppeteer/pyppeteer/target.py +0 -147
- biolib/pyppeteer/pyppeteer/task_queue.py +0 -24
- biolib/pyppeteer/pyppeteer/timeout_settings.py +0 -36
- biolib/pyppeteer/pyppeteer/tracing.py +0 -93
- biolib/pyppeteer/pyppeteer/us_keyboard_layout.py +0 -305
- biolib/pyppeteer/pyppeteer/util.py +0 -18
- biolib/pyppeteer/pyppeteer/websocket_transport.py +0 -47
- biolib/pyppeteer/pyppeteer/worker.py +0 -101
- biolib/pyppeteer/pyproject.toml +0 -97
- biolib/pyppeteer/spell.txt +0 -137
- biolib/pyppeteer/tox.ini +0 -72
- biolib/pyppeteer/utils/generate_protocol_types.py +0 -603
- biolib/start_cli.py +0 -7
- biolib/utils.py +0 -47
- biolib/validators/validate_app_version.py +0 -183
- biolib/validators/validate_argument.py +0 -134
- biolib/validators/validate_module.py +0 -323
- biolib/validators/validate_zip_file.py +0 -40
- biolib/validators/validator_utils.py +0 -103
- pybiolib-0.2.951.dist-info/LICENSE +0 -21
- pybiolib-0.2.951.dist-info/METADATA +0 -61
- pybiolib-0.2.951.dist-info/RECORD +0 -153
- pybiolib-0.2.951.dist-info/entry_points.txt +0 -3
- /LICENSE → /pybiolib-1.2.1890.dist-info/licenses/LICENSE +0 -0
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
Lifecycle Watcher module
|
|
6
|
-
|
|
7
|
-
puppeteer equivalent: lib/LifecycleWatcher.js
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
import asyncio
|
|
11
|
-
from functools import partial
|
|
12
|
-
from typing import TYPE_CHECKING, Awaitable, List, Optional, Union
|
|
13
|
-
|
|
14
|
-
from biolib.pyppeteer.pyppeteer import helpers
|
|
15
|
-
from biolib.pyppeteer.pyppeteer.errors import BrowserError, PageError, TimeoutError
|
|
16
|
-
from biolib.pyppeteer.pyppeteer.events import Events
|
|
17
|
-
from biolib.pyppeteer.pyppeteer.helpers import safe_future_set_result
|
|
18
|
-
from biolib.pyppeteer.pyppeteer.models import WaitTargets
|
|
19
|
-
from biolib.pyppeteer.pyppeteer.network_manager import Request, Response
|
|
20
|
-
|
|
21
|
-
if TYPE_CHECKING:
|
|
22
|
-
from pyppeteer.frame import Frame, FrameManager
|
|
23
|
-
|
|
24
|
-
pyppeteerToProtocolLifecycle = {
|
|
25
|
-
'load': 'load',
|
|
26
|
-
'domcontentloaded': 'DOMContentLoaded',
|
|
27
|
-
'documentloaded': 'DOMContentLoaded',
|
|
28
|
-
'networkidle0': 'networkIdle',
|
|
29
|
-
'networkidle2': 'networkAlmostIdle',
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class LifecycleWatcher:
|
|
34
|
-
"""LifecycleWatcher class."""
|
|
35
|
-
|
|
36
|
-
def __init__(
|
|
37
|
-
self, frameManager: 'FrameManager', frame: 'Frame', timeout: Optional[float], waitUntil: WaitTargets = 'load',
|
|
38
|
-
) -> None:
|
|
39
|
-
"""Make new LifecycleWatcher"""
|
|
40
|
-
self._expectedLifecycle = []
|
|
41
|
-
if isinstance(waitUntil, str):
|
|
42
|
-
waitUntil = [waitUntil]
|
|
43
|
-
for value in waitUntil:
|
|
44
|
-
try:
|
|
45
|
-
self._expectedLifecycle.append(pyppeteerToProtocolLifecycle[value])
|
|
46
|
-
except KeyError:
|
|
47
|
-
raise KeyError(
|
|
48
|
-
f'Unknown value for waitUntil: "{value}", it\'s possible "{value}" is no longer supported'
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
self._futures = []
|
|
52
|
-
self._frameManager = frameManager
|
|
53
|
-
self._frame = frame
|
|
54
|
-
self._initialLoaderId = frame._loaderId
|
|
55
|
-
self._timeout = timeout
|
|
56
|
-
self._navigationRequest: Optional[Request] = None
|
|
57
|
-
self._hasSameDocumentNavigation = False
|
|
58
|
-
self._eventListeners = [
|
|
59
|
-
helpers.addEventListener(
|
|
60
|
-
self._frameManager._client,
|
|
61
|
-
Events.CDPSession.Disconnected,
|
|
62
|
-
partial(self._terminate, BrowserError('Navigation failed because browser has disconnected')),
|
|
63
|
-
),
|
|
64
|
-
helpers.addEventListener(
|
|
65
|
-
self._frameManager, Events.FrameManager.LifecycleEvent, self._checkLifecycleComplete,
|
|
66
|
-
),
|
|
67
|
-
helpers.addEventListener(
|
|
68
|
-
self._frameManager, Events.FrameManager.FrameNavigatedWithinDocument, self._navigatedWithinDocument,
|
|
69
|
-
),
|
|
70
|
-
helpers.addEventListener(self._frameManager, Events.FrameManager.FrameDetached, self._onFrameDetached, ),
|
|
71
|
-
helpers.addEventListener(
|
|
72
|
-
self._frameManager.networkManager, Events.NetworkManager.Request, self._onRequest,
|
|
73
|
-
),
|
|
74
|
-
]
|
|
75
|
-
self.loop = self._frameManager._client.loop
|
|
76
|
-
|
|
77
|
-
self._lifecycleFuture = self.loop.create_future()
|
|
78
|
-
self._sameDocumentNavigationFuture = self.loop.create_future()
|
|
79
|
-
self._newDocumentNavigationFuture = self.loop.create_future()
|
|
80
|
-
self._terminationFuture = self.loop.create_future()
|
|
81
|
-
|
|
82
|
-
self._timeoutFuture = self._createTimeoutFuture()
|
|
83
|
-
|
|
84
|
-
for class_attr in dir(self):
|
|
85
|
-
if class_attr.endswith('Future'):
|
|
86
|
-
self._futures.append(self.__getattribute__(class_attr))
|
|
87
|
-
|
|
88
|
-
self._checkLifecycleComplete()
|
|
89
|
-
|
|
90
|
-
@property
|
|
91
|
-
def lifecycleFuture(self) -> Awaitable[None]:
|
|
92
|
-
return self._lifecycleFuture
|
|
93
|
-
|
|
94
|
-
@property
|
|
95
|
-
def sameDocumentNavigationFuture(self) -> Awaitable[None]:
|
|
96
|
-
return self._sameDocumentNavigationFuture
|
|
97
|
-
|
|
98
|
-
@property
|
|
99
|
-
def newDocumentNavigationFuture(self) -> Awaitable[None]:
|
|
100
|
-
return self._newDocumentNavigationFuture
|
|
101
|
-
|
|
102
|
-
def _onRequest(self, request: Request) -> None:
|
|
103
|
-
if request.frame == self._frame and request.isNavigationRequest:
|
|
104
|
-
self._navigationRequest = request
|
|
105
|
-
|
|
106
|
-
def _onFrameDetached(self, frame: 'Frame' = None) -> None:
|
|
107
|
-
if frame == self._frame:
|
|
108
|
-
self._terminationFuture.set_exception(PageError('Navigating frame was detached'))
|
|
109
|
-
else:
|
|
110
|
-
self._checkLifecycleComplete()
|
|
111
|
-
|
|
112
|
-
def _terminate(self, error: Exception) -> None:
|
|
113
|
-
self._terminationFuture.set_result(error)
|
|
114
|
-
|
|
115
|
-
def navigationResponse(self) -> Optional[Response]:
|
|
116
|
-
return self._navigationRequest.response if self._navigationRequest else None
|
|
117
|
-
|
|
118
|
-
@property
|
|
119
|
-
def timeoutOrTerminationFuture(self) -> Awaitable:
|
|
120
|
-
return self._frame._client.loop.create_task(helpers.future_race(self._timeoutFuture, self._terminationFuture))
|
|
121
|
-
|
|
122
|
-
def _createTimeoutFuture(self) -> Awaitable[None]:
|
|
123
|
-
self._maximumTimerFuture = self.loop.create_future()
|
|
124
|
-
if self._timeout:
|
|
125
|
-
errorMessage = f'Navigation Timeout Exceeded: {self._timeout}ms exceeded.'
|
|
126
|
-
|
|
127
|
-
async def _timeout_func() -> None:
|
|
128
|
-
await asyncio.sleep(self._timeout / 1000)
|
|
129
|
-
self._maximumTimerFuture.set_exception(TimeoutError(errorMessage))
|
|
130
|
-
|
|
131
|
-
self._timeoutTimerFuture: Union[asyncio.Task, asyncio.Future] = self.loop.create_task(_timeout_func())
|
|
132
|
-
else:
|
|
133
|
-
self._timeoutTimerFuture = self.loop.create_future()
|
|
134
|
-
return self._maximumTimerFuture
|
|
135
|
-
|
|
136
|
-
def _navigatedWithinDocument(self, frame: 'Frame' = None) -> None:
|
|
137
|
-
# note: frame never appears to specified, left in for compatibility
|
|
138
|
-
if frame == self._frame:
|
|
139
|
-
self._hasSameDocumentNavigation = True
|
|
140
|
-
self._checkLifecycleComplete()
|
|
141
|
-
|
|
142
|
-
def _checkLifecycleComplete(self, _=None) -> None:
|
|
143
|
-
if not self._checkLifecycle(self._frame, self._expectedLifecycle):
|
|
144
|
-
return
|
|
145
|
-
# python can set future only once but this might be called multiple times
|
|
146
|
-
safe_future_set_result(self._lifecycleFuture, None)
|
|
147
|
-
if self._frame._loaderId == self._initialLoaderId and not self._hasSameDocumentNavigation:
|
|
148
|
-
return
|
|
149
|
-
if self._hasSameDocumentNavigation:
|
|
150
|
-
safe_future_set_result(self._sameDocumentNavigationFuture, None)
|
|
151
|
-
if self._frame._loaderId != self._initialLoaderId:
|
|
152
|
-
safe_future_set_result(self._newDocumentNavigationFuture, None)
|
|
153
|
-
|
|
154
|
-
def _checkLifecycle(self, frame: 'Frame', expectedLifecycle: List[str]) -> bool:
|
|
155
|
-
for event in expectedLifecycle:
|
|
156
|
-
if event not in frame._lifecycleEvents:
|
|
157
|
-
return False
|
|
158
|
-
for child in frame.childFrames:
|
|
159
|
-
if not self._checkLifecycle(child, expectedLifecycle):
|
|
160
|
-
return False
|
|
161
|
-
return True
|
|
162
|
-
|
|
163
|
-
def dispose(self) -> None:
|
|
164
|
-
helpers.removeEventListeners(self._eventListeners)
|
|
165
|
-
for fut in self._futures:
|
|
166
|
-
try:
|
|
167
|
-
fut.cancel()
|
|
168
|
-
except AttributeError:
|
|
169
|
-
continue
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"""Type definitions for widely used types"""
|
|
2
|
-
import os
|
|
3
|
-
import sys
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import TYPE_CHECKING, Any, Dict, List, Sequence, Union
|
|
6
|
-
|
|
7
|
-
from biolib.pyppeteer.pyppeteer.models._protocol import Protocol
|
|
8
|
-
|
|
9
|
-
if sys.version_info < (3, 8):
|
|
10
|
-
from typing_extensions import TypedDict, Literal
|
|
11
|
-
else:
|
|
12
|
-
from typing import TypedDict, Literal
|
|
13
|
-
|
|
14
|
-
if TYPE_CHECKING:
|
|
15
|
-
pass
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class BrowserOptions(TypedDict, total=False):
|
|
19
|
-
ignoreHTTPSErrors: bool
|
|
20
|
-
defaultViewport: Protocol.Page.Viewport
|
|
21
|
-
slowMo: float
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class ChromeArgOptions(TypedDict, total=False):
|
|
25
|
-
headless: bool
|
|
26
|
-
args: Sequence[str]
|
|
27
|
-
userDataDir: str
|
|
28
|
-
devtools: bool
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class LaunchOptions(TypedDict, total=False):
|
|
32
|
-
executablePath: str
|
|
33
|
-
ignoreDefaultArgs: Union[Literal[False], Sequence[str]]
|
|
34
|
-
handleSIGINT: bool
|
|
35
|
-
handleSIGTERM: bool
|
|
36
|
-
handleSIGHUP: bool
|
|
37
|
-
timeout: float
|
|
38
|
-
dumpio: bool
|
|
39
|
-
env: Dict[str, Union[str, bool]]
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class DeviceDetails(TypedDict):
|
|
43
|
-
userAgent: str
|
|
44
|
-
viewport: Protocol.Page.Viewport
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
class ScreenshotClip(TypedDict, total=False):
|
|
48
|
-
x: float
|
|
49
|
-
y: float
|
|
50
|
-
width: float
|
|
51
|
-
height: float
|
|
52
|
-
scale: float
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
class CoverageResult(TypedDict):
|
|
56
|
-
url: str
|
|
57
|
-
ranges: Any
|
|
58
|
-
text: str
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
class RevisionInfo(TypedDict):
|
|
62
|
-
folderPath: Union[Path, os.PathLike]
|
|
63
|
-
executablePath: Union[Path, os.PathLike]
|
|
64
|
-
url: str
|
|
65
|
-
local: bool
|
|
66
|
-
revision: str
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
class NestedRangeItemInput(TypedDict):
|
|
70
|
-
startOffset: float
|
|
71
|
-
endOffset: float
|
|
72
|
-
count: int
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
class NestedRangeItem(TypedDict):
|
|
76
|
-
start: int
|
|
77
|
-
end: int
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
WebPermission = Literal[
|
|
81
|
-
'geolocation',
|
|
82
|
-
'midi',
|
|
83
|
-
'notifications',
|
|
84
|
-
'push',
|
|
85
|
-
'camera',
|
|
86
|
-
'microphone',
|
|
87
|
-
'background-sync',
|
|
88
|
-
'ambient-light-sensor',
|
|
89
|
-
'accelerometer',
|
|
90
|
-
'gyroscope',
|
|
91
|
-
'magnetometer',
|
|
92
|
-
'accessibility-events',
|
|
93
|
-
'clipboard-read',
|
|
94
|
-
'clipboard-write',
|
|
95
|
-
'payment-handler',
|
|
96
|
-
'midi-sysex',
|
|
97
|
-
]
|
|
98
|
-
JSFunctionArg = Union['JSHandle', str, int, float, bool, None, Dict[str, Any], List[Any]]
|
|
99
|
-
Devices = Dict[str, DeviceDetails]
|
|
100
|
-
Platform = Literal['linux', 'mac', 'win32', 'win64']
|
|
101
|
-
MouseButton = Literal['left', 'right', 'middle']
|
|
102
|
-
WaitTarget = Literal['load', 'domcontentloaded', 'networkidle0', 'networkidle2']
|
|
103
|
-
WaitTargets = Union[WaitTarget, Sequence[WaitTarget]]
|