naeural-client 2.5.10__tar.gz → 2.5.12__tar.gz
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.
- {naeural_client-2.5.10 → naeural_client-2.5.12}/PKG-INFO +1 -1
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/_ver.py +1 -1
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/generic_session.py +65 -9
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/bc/base.py +20 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/cli/cli_commands.py +6 -4
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/cli/nodes.py +20 -18
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/apps.py +1 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/payload.py +1 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/pyproject.toml +1 -1
- naeural_client-2.5.12/tutorials/ex13_launch_repo_based_webapp.py +70 -0
- naeural_client-2.5.10/tutorials/ex13_launch_repo_based_webapp.py +0 -26
- {naeural_client-2.5.10 → naeural_client-2.5.12}/.devcontainer/Dockerfile +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/.devcontainer/devcontainer.json +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/.gitattributes +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/.github/workflows/python-publish.yml +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/.gitignore +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/.vscode/launch.json +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/LICENSE +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/README.md +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/TODOs.md +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/distributed_custom_code_presets.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/instance.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/payload/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/payload/payload.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/pipeline.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/plugin_template.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/responses.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/transaction.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base/webapp_pipeline.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/base_decentra_object.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/bc/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/bc/chain.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/bc/ec.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/certs/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/certs/r9092118.ala.eu-central-1.emqxsl.com.crt +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/cli/README.md +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/cli/cli.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/code_cheker/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/code_cheker/base.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/code_cheker/checker.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/comm/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/comm/amqp_wrapper.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/comm/mqtt_wrapper.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/README.md +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/base.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/comms.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/environment.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/formatter.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/heartbeat.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/const/misc.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/instance/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/instance/chain_dist_custom_job_01_plugin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/instance/custom_webapi_01_plugin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/instance/net_mon_01_plugin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/instance/telegram_basic_bot_01_plugin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/instance/telegram_conversational_bot_01_plugin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/instance/view_scene_01_plugin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/session/mqtt_session.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/base/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/base/base_formatter.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/default/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/default/a_dummy.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/default/aixp1.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/default/default.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/io_formatter_manager.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/base_logger.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/class_instance_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/computer_vision_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/datetime_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/download_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/general_serialization_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/json_serialization_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/pickle_serialization_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/process_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/resource_size_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/timers_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/upload_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/utils_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/small_logger.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/tzlocal/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/tzlocal/unix.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/tzlocal/utils.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/tzlocal/win32.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/tzlocal/windows_tz.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/plugins_manager_mixin.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/utils/__init__.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/utils/comm_utils.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/utils/config.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/utils/dotenv.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/nepctl.MD +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/requirements.txt +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/.example_env +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/8. custom_code_fastapi_assets/index.html +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/9. code_sandbox_from_scratch_assets/index.html +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/_example_pk_sdk.pem +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex01_part1_connect.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex01_part2_filter.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex01_part3_adv_filter.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex02_first_deploy.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex03_custom_code_on_one_remote__example_1.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex04_custom_code_on_one_remote__example_2.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex05_custom_code_on_one_remote__example_3.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex06_custom_code_on_multiple_remotes__example_1.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex07_custom_code_on_multiple_remotes__example_2.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex08_custom_webapi.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex09_code_sandbox_from_scratch.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex10_telegram_echo_bot.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex11_telegram_blackjack_bot.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/ex12_telegram_smart_bot.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/video_presentation/1. hello_world.ipynb +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/winrun.bat +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/.example_env +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/_archive/test.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/_tutorials/3. simple_real_time_custom_code.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/_tutorials/4. real_time_custom_code_2.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/_tutorials/8. chatbot.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/decentralized/chain_dist_example.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/decentralized/chain_dist_example_initiator.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/decentralized/chain_dist_example_worker.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/enc_dec/enc_dec_test.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/eth/eth_sign.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/eth/info.md +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/eth/sign.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/multi-enc-dec/multi_test1.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/utils/get_documentation.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/various/README.md +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/various/attach_example.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/various/ex1.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/various/hello.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/various/remote_exec.py +0 -0
- {naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/various/save_images.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: naeural_client
|
3
|
-
Version: 2.5.
|
3
|
+
Version: 2.5.12
|
4
4
|
Summary: `naeural_client` is the Python SDK required for client app development for the Naeural Edge Protocol Edge Protocol framework
|
5
5
|
Project-URL: Homepage, https://github.com/NaeuralEdgeProtocol/naeural_client
|
6
6
|
Project-URL: Bug Tracker, https://github.com/NaeuralEdgeProtocol/naeural_client/issues
|
@@ -1374,7 +1374,8 @@ class GenericSession(BaseDecentrAIObject):
|
|
1374
1374
|
|
1375
1375
|
def get_allowed_nodes(self):
|
1376
1376
|
"""
|
1377
|
-
Get the list of all active Naeural Edge Protocol edge nodes to whom this
|
1377
|
+
Get the list of all active Naeural Edge Protocol edge nodes to whom this
|
1378
|
+
ssion can send messages. This is based on the last heartbeat received from each individual node.
|
1378
1379
|
|
1379
1380
|
Returns
|
1380
1381
|
-------
|
@@ -1810,9 +1811,6 @@ class GenericSession(BaseDecentrAIObject):
|
|
1810
1811
|
"""
|
1811
1812
|
|
1812
1813
|
ngrok_use_api = True
|
1813
|
-
|
1814
|
-
# if isinstance(signature, str):
|
1815
|
-
|
1816
1814
|
|
1817
1815
|
pipeline: WebappPipeline = self.create_pipeline(
|
1818
1816
|
node=node,
|
@@ -1887,14 +1885,15 @@ class GenericSession(BaseDecentrAIObject):
|
|
1887
1885
|
kwargs.pop('use_ngrok', None)
|
1888
1886
|
kwargs.pop('ngrok_use_api', None)
|
1889
1887
|
|
1890
|
-
|
1891
|
-
|
1888
|
+
if ngrok_edge_label is None:
|
1889
|
+
raise ValueError("The `ngrok_edge_label` parameter is mandatory when creating a balanced web app, in order for all instances to respond to the same URL.")
|
1890
|
+
|
1892
1891
|
pipelines, instances = [], []
|
1893
1892
|
|
1894
1893
|
for node in nodes:
|
1895
1894
|
self.P("Creating web app on node {}...".format(node), color='b')
|
1896
1895
|
pipeline: WebappPipeline = self.create_pipeline(
|
1897
|
-
node=
|
1896
|
+
node=node,
|
1898
1897
|
name=name,
|
1899
1898
|
pipeline_type=WebappPipeline,
|
1900
1899
|
extra_debug=extra_debug,
|
@@ -2240,11 +2239,43 @@ class GenericSession(BaseDecentrAIObject):
|
|
2240
2239
|
online_only=False,
|
2241
2240
|
supervisors_only=False,
|
2242
2241
|
min_supervisors=2,
|
2242
|
+
allowed_only=False,
|
2243
2243
|
supervisor=None,
|
2244
2244
|
):
|
2245
2245
|
"""
|
2246
2246
|
This function will return a Pandas dataframe known nodes in the network based on
|
2247
2247
|
all the net-mon messages received so far.
|
2248
|
+
|
2249
|
+
Parameters
|
2250
|
+
----------
|
2251
|
+
|
2252
|
+
timeout : int, optional
|
2253
|
+
The maximum time to wait for the desired number of supervisors to appear online.
|
2254
|
+
Defaults to 10.
|
2255
|
+
|
2256
|
+
online_only : bool, optional
|
2257
|
+
If True, will return only the online nodes. Defaults to False.
|
2258
|
+
|
2259
|
+
supervisors_only : bool, optional
|
2260
|
+
If True, will return only the supervisors. Defaults to False.
|
2261
|
+
|
2262
|
+
min_supervisors : int, optional
|
2263
|
+
The minimum number of supervisors to wait for. Defaults to 2.
|
2264
|
+
|
2265
|
+
allowed_only : bool, optional
|
2266
|
+
If True, will return only the allowed nodes. Defaults to False.
|
2267
|
+
|
2268
|
+
supervisor : str, optional
|
2269
|
+
The supervisor to wait for. Defaults to None.
|
2270
|
+
|
2271
|
+
Returns
|
2272
|
+
-------
|
2273
|
+
|
2274
|
+
dict
|
2275
|
+
A dictionary containing the report, the reporter and the number of supervisors.
|
2276
|
+
|
2277
|
+
|
2278
|
+
|
2248
2279
|
"""
|
2249
2280
|
mapping = OrderedDict({
|
2250
2281
|
'Address': PAYLOAD_DATA.NETMON_ADDRESS,
|
@@ -2254,13 +2285,16 @@ class GenericSession(BaseDecentrAIObject):
|
|
2254
2285
|
'Last probe' : PAYLOAD_DATA.NETMON_LAST_REMOTE_TIME,
|
2255
2286
|
'Zone' : PAYLOAD_DATA.NETMON_NODE_UTC,
|
2256
2287
|
'Supervisor' : PAYLOAD_DATA.NETMON_IS_SUPERVISOR,
|
2288
|
+
'Peered' : PAYLOAD_DATA.NETMON_WHITELIST,
|
2257
2289
|
})
|
2258
2290
|
reverse_mapping = {v: k for k, v in mapping.items()}
|
2259
2291
|
res = OrderedDict()
|
2260
2292
|
for k in mapping:
|
2261
2293
|
res[k] = []
|
2294
|
+
|
2295
|
+
# the following loop will wait for the desired number of supervisors to appear online
|
2296
|
+
# for the current session
|
2262
2297
|
start = tm()
|
2263
|
-
|
2264
2298
|
while (tm() - start) < timeout:
|
2265
2299
|
if supervisor is not None:
|
2266
2300
|
if supervisor in self.__current_network_statuses:
|
@@ -2268,7 +2302,10 @@ class GenericSession(BaseDecentrAIObject):
|
|
2268
2302
|
elif len(self.__current_network_statuses) >= min_supervisors:
|
2269
2303
|
break
|
2270
2304
|
sleep(0.1)
|
2305
|
+
elapsed = tm() - start
|
2271
2306
|
# end while
|
2307
|
+
# done waiting for supervisors
|
2308
|
+
|
2272
2309
|
if len(self.__current_network_statuses) > 0:
|
2273
2310
|
best_info = {}
|
2274
2311
|
best_super = None
|
@@ -2276,10 +2313,17 @@ class GenericSession(BaseDecentrAIObject):
|
|
2276
2313
|
if len(net_info) > len(best_info):
|
2277
2314
|
best_info = net_info
|
2278
2315
|
best_super = supervisor
|
2316
|
+
best_super_alias = None
|
2279
2317
|
# done found best supervisor
|
2280
2318
|
for _, node_info in best_info.items():
|
2281
2319
|
is_online = node_info.get(PAYLOAD_DATA.NETMON_STATUS_KEY, None) == PAYLOAD_DATA.NETMON_STATUS_ONLINE
|
2282
2320
|
is_supervisor = node_info.get(PAYLOAD_DATA.NETMON_IS_SUPERVISOR, False)
|
2321
|
+
# the following will get the whitelist for the current inspected node
|
2322
|
+
# without calling self.get_allowed_nodes but instead using the netmon data
|
2323
|
+
whitelist = node_info.get(PAYLOAD_DATA.NETMON_WHITELIST, [])
|
2324
|
+
client_is_allowed = self.bc_engine.contains_current_address(whitelist)
|
2325
|
+
if allowed_only and not client_is_allowed:
|
2326
|
+
continue
|
2283
2327
|
if online_only and not is_online:
|
2284
2328
|
continue
|
2285
2329
|
if supervisors_only and not is_supervisor:
|
@@ -2294,9 +2338,21 @@ class GenericSession(BaseDecentrAIObject):
|
|
2294
2338
|
# convert val (seconds) to a human readable format
|
2295
2339
|
val = seconds_to_short_format(val)
|
2296
2340
|
elif key == PAYLOAD_DATA.NETMON_ADDRESS:
|
2341
|
+
if self.bc_engine._remove_prefix(val) == self.bc_engine._remove_prefix(best_super):
|
2342
|
+
# again self.get_node_name(best_super) might not work if using the hb data
|
2343
|
+
best_super_alias = node_info.get(PAYLOAD_DATA.NETMON_EEID, None)
|
2297
2344
|
val = self.bc_engine._add_prefix(val)
|
2345
|
+
elif key == PAYLOAD_DATA.NETMON_WHITELIST:
|
2346
|
+
val = client_is_allowed
|
2298
2347
|
res[column].append(val)
|
2299
2348
|
# end for
|
2300
2349
|
# end if
|
2301
2350
|
pd.options.display.float_format = '{:.1f}'.format
|
2302
|
-
|
2351
|
+
dct_result ={
|
2352
|
+
'report' : pd.DataFrame(res),
|
2353
|
+
'reporter' : best_super,
|
2354
|
+
'reporter_alias' : best_super_alias,
|
2355
|
+
'nr_super' : len(self.__current_network_statuses),
|
2356
|
+
'elapsed' : elapsed,
|
2357
|
+
}
|
2358
|
+
return dct_result
|
@@ -847,10 +847,30 @@ class BaseBlockEngine:
|
|
847
847
|
#### ####
|
848
848
|
#############################################################################
|
849
849
|
|
850
|
+
|
851
|
+
def contains_current_address(self, lst_addresses):
|
852
|
+
"""
|
853
|
+
Checks if the current address is in the list of addresses
|
854
|
+
|
855
|
+
Parameters
|
856
|
+
----------
|
857
|
+
lst_addresses : list
|
858
|
+
the list of addresses.
|
859
|
+
|
860
|
+
Returns
|
861
|
+
-------
|
862
|
+
bool
|
863
|
+
True if the current address is in the list.
|
864
|
+
|
865
|
+
"""
|
866
|
+
lst = [self._remove_prefix(x) for x in lst_addresses]
|
867
|
+
return self.address_no_prefix in lst
|
868
|
+
|
850
869
|
@property
|
851
870
|
def address(self):
|
852
871
|
"""Returns the public address"""
|
853
872
|
return self.__address
|
873
|
+
|
854
874
|
|
855
875
|
@property
|
856
876
|
def address_no_prefix(self):
|
@@ -11,10 +11,12 @@ CLI_COMMANDS = {
|
|
11
11
|
"nodes": {
|
12
12
|
"func": get_nodes,
|
13
13
|
"params": {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
### use "flag" to indicate a boolean flag otherwise it will be
|
15
|
+
### treated as a str parameter
|
16
|
+
"--all": "Get all known nodes flag", # DONE
|
17
|
+
"--online" : "Get only online nodes flag", # DONE
|
18
|
+
"--peered": "Get only peered nodes flag", # DONE
|
19
|
+
"--supervisor" : "Use a specific supervisor node"
|
18
20
|
}
|
19
21
|
},
|
20
22
|
"supervisors": {
|
@@ -15,22 +15,20 @@ def get_nodes(args):
|
|
15
15
|
log_with_color(f"Getting nodes from supervisor <{supervisor_addr}>...", color='b')
|
16
16
|
from naeural_client import Session
|
17
17
|
sess = Session(silent=not args.verbose)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
log_with_color(f"Online nodes reported by <{supervisor}>:", color='b')
|
33
|
-
log_with_color(f"{df}")
|
18
|
+
online_only = args.online or args.peered
|
19
|
+
allowed_only = args.peered
|
20
|
+
|
21
|
+
dct_info = sess.get_network_known_nodes(
|
22
|
+
online_only=online_only, allowed_only=allowed_only, supervisor=supervisor_addr
|
23
|
+
)
|
24
|
+
df = dct_info['report']
|
25
|
+
supervisor = dct_info['reporter']
|
26
|
+
super_alias = dct_info['reporter_alias']
|
27
|
+
nr_supers = dct_info['nr_super']
|
28
|
+
elapsed = dct_info['elapsed']
|
29
|
+
prefix = "Online n" if online_only else "N"
|
30
|
+
log_with_color(f"{prefix}odes reported by <{supervisor}> '{super_alias}' in {elapsed:.1f}s ({nr_supers} supervisors seen):", color='b')
|
31
|
+
log_with_color(f"{df}")
|
34
32
|
return
|
35
33
|
|
36
34
|
|
@@ -42,8 +40,12 @@ def get_supervisors(args):
|
|
42
40
|
log_with_color("Getting supervisors...", color='b')
|
43
41
|
from naeural_client import Session
|
44
42
|
sess = Session(silent=not args.verbose)
|
45
|
-
|
46
|
-
|
43
|
+
dct_info = sess.get_network_known_nodes(online_only=True, supervisors_only=True)
|
44
|
+
df = dct_info['report']
|
45
|
+
supervisor = dct_info['reporter']
|
46
|
+
super_alias = dct_info['reporter_alias']
|
47
|
+
elapsed = dct_info['elapsed']
|
48
|
+
log_with_color(f"Supervisors reported by <{supervisor}> '{super_alias}' in {elapsed:.1f}s", color='b')
|
47
49
|
log_with_color(f"{df}")
|
48
50
|
return
|
49
51
|
|
@@ -6,6 +6,7 @@ class PLUGIN_SIGNATURES:
|
|
6
6
|
NET_MON_01 = 'NET_MON_01'
|
7
7
|
VIEW_SCENE_01 = 'VIEW_SCENE_01'
|
8
8
|
CUSTOM_WEBAPI_01 = 'CUSTOM_CODE_FASTAPI_01'
|
9
|
+
GENERIC_WEB_APP = 'GENERIC_WEB_APP'
|
9
10
|
CHAIN_DIST_CUSTOM_JOB_01 = 'PROCESS_REAL_TIME_COLLECTED_DATA_CUSTOM_EXEC_CHAIN_DIST'
|
10
11
|
TELEGRAM_BASIC_BOT_01 = 'TELEGRAM_BASIC_BOT_01'
|
11
12
|
TELEGRAM_CONVERSATIONAL_BOT_01 = 'TELEGRAM_CONVERSATIONAL_BOT_01'
|
@@ -0,0 +1,70 @@
|
|
1
|
+
"""
|
2
|
+
|
3
|
+
This demo starts a generic webapp and generates a dynamic URL that can be used to access the webapp.
|
4
|
+
For this demo, we will use a custom webapp that resides at a public repository.
|
5
|
+
|
6
|
+
"""
|
7
|
+
from os import environ
|
8
|
+
from naeural_client import Session, PLUGIN_SIGNATURES
|
9
|
+
|
10
|
+
|
11
|
+
if __name__ == "__main__":
|
12
|
+
session = Session()
|
13
|
+
|
14
|
+
nodes = [
|
15
|
+
environ.get("TARGET_NODE_1", "INSERT_YOUR_NODE_ADDRESS_HERE"),
|
16
|
+
environ.get("TARGET_NODE_2", "INSERT_YOUR_NODE_ADDRESS_HERE")
|
17
|
+
]
|
18
|
+
|
19
|
+
if isinstance(nodes, str):
|
20
|
+
nodes = [nodes]
|
21
|
+
|
22
|
+
for node in nodes:
|
23
|
+
session.wait_for_node(node)
|
24
|
+
|
25
|
+
# In case this is not provided and create_and_deploy_balanced_web_app is used an exception will be raised.
|
26
|
+
# In case this is not provided by the user, but create_webapp method is used, a unique URL will be generated by the ngrok service.
|
27
|
+
# Warning! create_webapp method does not support multiple nodes.
|
28
|
+
ngrok_edge_label = environ.get("NGROK_EDGE_LABEL", None)
|
29
|
+
|
30
|
+
# Defining the environment variables for the webapp.
|
31
|
+
port = 3000
|
32
|
+
env_vars = {
|
33
|
+
'APP_PORT': port,
|
34
|
+
'LOCAL_ADDRESS': '/edge_node/_local_cache/_data/local_address.txt'
|
35
|
+
}
|
36
|
+
|
37
|
+
# Defining the webapp setup commands.
|
38
|
+
setup_commands = [
|
39
|
+
"npm install"
|
40
|
+
]
|
41
|
+
|
42
|
+
# Defining the assets of the application.
|
43
|
+
assets = {
|
44
|
+
'operation': "clone",
|
45
|
+
"url": "https://github.com/NaeuralEdgeProtocol/demo-deploy-nodejs",
|
46
|
+
}
|
47
|
+
|
48
|
+
# Defining the webapp run commands.
|
49
|
+
run_command = "npm start"
|
50
|
+
|
51
|
+
# instance: PLUGIN_TYPES.CUSTOM_WEBAPI_01
|
52
|
+
session.create_and_deploy_balanced_web_app(
|
53
|
+
nodes=nodes,
|
54
|
+
name="Ratio1_WebApp_tutorial",
|
55
|
+
signature=PLUGIN_SIGNATURES.GENERIC_WEB_APP,
|
56
|
+
env_vars=env_vars,
|
57
|
+
port=port,
|
58
|
+
setup_commands=setup_commands,
|
59
|
+
run_command=run_command,
|
60
|
+
ngrok_edge_label=ngrok_edge_label,
|
61
|
+
assets=assets
|
62
|
+
)
|
63
|
+
|
64
|
+
# Observation:
|
65
|
+
# next code is not mandatory - it is used to keep the session open and cleanup the resources
|
66
|
+
# in production, you would not need this code as the script can close after the pipeline will be sent
|
67
|
+
session.run(
|
68
|
+
wait=True, # wait for the user to stop the execution
|
69
|
+
close_pipelines=True # when the user stops the execution, the remote edge-node pipelines will be closed
|
70
|
+
)
|
@@ -1,26 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
|
3
|
-
This demo starts a generic webapp and generates a dynamic URL that can be used to access the webapp.
|
4
|
-
For this demo, we will use a custom webapp that resides at a public repository.
|
5
|
-
|
6
|
-
"""
|
7
|
-
|
8
|
-
from naeural_client import CustomPluginTemplate, Session, PLUGIN_TYPES
|
9
|
-
|
10
|
-
|
11
|
-
if __name__ == "__main__":
|
12
|
-
session = Session()
|
13
|
-
|
14
|
-
node = "INSERT_YOUR_NODE_ADDRESS_HERE"
|
15
|
-
session.wait_for_node(node)
|
16
|
-
|
17
|
-
instance: PLUGIN_TYPES.CUSTOM_WEBAPI_01
|
18
|
-
pipeline, instance = session.create_web_app(
|
19
|
-
|
20
|
-
)
|
21
|
-
|
22
|
-
|
23
|
-
url = pipeline.deploy()
|
24
|
-
|
25
|
-
print(f"Webapp is now available at: {url}")
|
26
|
-
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/instance/net_mon_01_plugin.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/default/session/mqtt_session.py
RENAMED
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/base/__init__.py
RENAMED
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/base/base_formatter.py
RENAMED
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/default/__init__.py
RENAMED
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/default/a_dummy.py
RENAMED
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/default/aixp1.py
RENAMED
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/default/default.py
RENAMED
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/io_formatter/io_formatter_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/timers_mixin.py
RENAMED
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/upload_mixin.py
RENAMED
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/logger_mixins/utils_mixin.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/naeural_client/logging/tzlocal/windows_tz.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/8. custom_code_fastapi_assets/index.html
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/tutorials/video_presentation/1. hello_world.ipynb
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/_tutorials/4. real_time_custom_code_2.py
RENAMED
File without changes
|
File without changes
|
{naeural_client-2.5.10 → naeural_client-2.5.12}/xperimental/decentralized/chain_dist_example.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|