neuronum 3.0.3__py3-none-any.whl → 4.0.1__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.
Potentially problematic release.
This version of neuronum might be problematic. Click here for more details.
- cli/main.py +6 -61
- neuronum/neuronum.py +0 -175
- neuronum-4.0.1.dist-info/METADATA +96 -0
- neuronum-4.0.1.dist-info/RECORD +10 -0
- {neuronum-3.0.3.dist-info → neuronum-4.0.1.dist-info}/top_level.txt +0 -1
- cellai/__init__.py +0 -0
- cellai/cellai.py +0 -7
- neuronum-3.0.3.dist-info/METADATA +0 -126
- neuronum-3.0.3.dist-info/RECORD +0 -12
- {neuronum-3.0.3.dist-info → neuronum-4.0.1.dist-info}/WHEEL +0 -0
- {neuronum-3.0.3.dist-info → neuronum-4.0.1.dist-info}/entry_points.txt +0 -0
- {neuronum-3.0.3.dist-info → neuronum-4.0.1.dist-info}/licenses/LICENSE +0 -0
cli/main.py
CHANGED
|
@@ -304,14 +304,12 @@ async def async_init_node(sync, stream):
|
|
|
304
304
|
tx = await cell.list_tx()
|
|
305
305
|
ctx = await cell.list_ctx()
|
|
306
306
|
stx = await cell.list_stx()
|
|
307
|
-
contracts = await cell.list_contracts()
|
|
308
307
|
nodes = await cell.list_nodes()
|
|
309
308
|
|
|
310
309
|
await asyncio.to_thread((project_path / "cells.json").write_text, json.dumps(cells, indent=4))
|
|
311
310
|
await asyncio.to_thread((project_path / "transmitters.json").write_text, json.dumps(tx, indent=4))
|
|
312
311
|
await asyncio.to_thread((project_path / "circuits.json").write_text, json.dumps(ctx, indent=4))
|
|
313
312
|
await asyncio.to_thread((project_path / "streams.json").write_text, json.dumps(stx, indent=4))
|
|
314
|
-
await asyncio.to_thread((project_path / "contracts.json").write_text, json.dumps(contracts, indent=4))
|
|
315
313
|
await asyncio.to_thread((project_path / "nodes.json").write_text, json.dumps(nodes, indent=4))
|
|
316
314
|
|
|
317
315
|
env_path = project_path / ".env"
|
|
@@ -334,8 +332,8 @@ async def async_init_node(sync, stream):
|
|
|
334
332
|
"link": "https://www.python.org/downloads/"
|
|
335
333
|
},
|
|
336
334
|
{
|
|
337
|
-
"name": "
|
|
338
|
-
"version": ">=
|
|
335
|
+
"name": "neuronum",
|
|
336
|
+
"version": ">= 4.0.0",
|
|
339
337
|
"link": "https://pypi.org/project/neuronum/"
|
|
340
338
|
}
|
|
341
339
|
],
|
|
@@ -442,8 +440,7 @@ cell = neuronum.Cell(
|
|
|
442
440
|
)
|
|
443
441
|
|
|
444
442
|
async def main():
|
|
445
|
-
|
|
446
|
-
async for operation in cell.sync(STX):
|
|
443
|
+
async for operation in cell.sync():
|
|
447
444
|
message = operation.get("data").get("message")
|
|
448
445
|
print(message)
|
|
449
446
|
|
|
@@ -471,73 +468,34 @@ cell = neuronum.Cell(
|
|
|
471
468
|
)
|
|
472
469
|
|
|
473
470
|
async def main():
|
|
474
|
-
STX = "{stx}"
|
|
475
471
|
label = "Welcome to Neuronum"
|
|
476
472
|
|
|
477
473
|
while True:
|
|
478
474
|
data = {{
|
|
479
475
|
"message": "Hello, Neuronum!"
|
|
480
476
|
}}
|
|
481
|
-
await cell.stream(label, data
|
|
477
|
+
await cell.stream(label, data)
|
|
482
478
|
|
|
483
479
|
asyncio.run(main())
|
|
484
480
|
""")
|
|
485
481
|
|
|
486
|
-
scan_path = project_path / f"scan.py"
|
|
487
|
-
scan_path.write_text(f"""\
|
|
488
|
-
import asyncio
|
|
489
|
-
import neuronum
|
|
490
|
-
import os
|
|
491
|
-
from dotenv import load_dotenv
|
|
492
|
-
|
|
493
|
-
load_dotenv()
|
|
494
|
-
host = os.getenv("HOST")
|
|
495
|
-
password = os.getenv("PASSWORD")
|
|
496
|
-
network = os.getenv("NETWORK")
|
|
497
|
-
synapse = os.getenv("SYNAPSE")
|
|
498
|
-
|
|
499
|
-
cell = neuronum.Cell(
|
|
500
|
-
host=host,
|
|
501
|
-
password=password,
|
|
502
|
-
network=network,
|
|
503
|
-
synapse=synapse
|
|
504
|
-
)
|
|
505
|
-
|
|
506
|
-
async def main():
|
|
507
|
-
async for cp in cell.scan():
|
|
508
|
-
print(cp)
|
|
509
|
-
|
|
510
|
-
asyncio.run(main())
|
|
511
|
-
""")
|
|
512
|
-
|
|
513
482
|
click.echo(f"Neuronum Node '{nodeID}' initialized!")
|
|
514
483
|
|
|
515
484
|
|
|
516
|
-
import platform
|
|
517
|
-
|
|
518
485
|
@click.command()
|
|
519
486
|
@click.option('--d', is_flag=True, help="Start node in detached mode")
|
|
520
487
|
def start_node(d):
|
|
521
|
-
scan_type = questionary.select(
|
|
522
|
-
"Scan for Neuronum Cells and Nodes (Ensure Bluetooth is enabled)",
|
|
523
|
-
choices=["On", "Off"]
|
|
524
|
-
).ask()
|
|
525
|
-
|
|
526
488
|
click.echo("Starting Node...")
|
|
527
489
|
|
|
528
490
|
project_path = Path.cwd()
|
|
529
491
|
script_files = glob.glob("sync_*.py") + glob.glob("stream_*.py")
|
|
530
492
|
|
|
531
|
-
if scan_type == "On":
|
|
532
|
-
script_files += glob.glob("scan.py")
|
|
533
|
-
|
|
534
493
|
processes = []
|
|
535
|
-
system_name = platform.system()
|
|
494
|
+
system_name = platform.system()
|
|
536
495
|
|
|
537
496
|
for script in script_files:
|
|
538
497
|
script_path = project_path / script
|
|
539
498
|
if script_path.exists():
|
|
540
|
-
# Use pythonw on Windows, python elsewhere
|
|
541
499
|
python_cmd = "pythonw" if system_name == "Windows" else "python"
|
|
542
500
|
|
|
543
501
|
if d:
|
|
@@ -549,7 +507,7 @@ def start_node(d):
|
|
|
549
507
|
start_new_session=True
|
|
550
508
|
)
|
|
551
509
|
else:
|
|
552
|
-
process = subprocess.Popen([
|
|
510
|
+
process = subprocess.Popen(["python", str(script_path)], start_new_session=True)
|
|
553
511
|
|
|
554
512
|
processes.append(process.pid)
|
|
555
513
|
|
|
@@ -736,14 +694,12 @@ async def async_update_node():
|
|
|
736
694
|
tx = await cell.list_tx()
|
|
737
695
|
ctx = await cell.list_ctx()
|
|
738
696
|
stx = await cell.list_stx()
|
|
739
|
-
contracts = await cell.list_contracts()
|
|
740
697
|
nodes = await cell.list_nodes()
|
|
741
698
|
|
|
742
699
|
await asyncio.to_thread(Path("cells.json").write_text, json.dumps(cells, indent=4))
|
|
743
700
|
await asyncio.to_thread(Path("transmitters.json").write_text, json.dumps(tx, indent=4))
|
|
744
701
|
await asyncio.to_thread(Path("circuits.json").write_text, json.dumps(ctx, indent=4))
|
|
745
702
|
await asyncio.to_thread(Path("streams.json").write_text, json.dumps(stx, indent=4))
|
|
746
|
-
await asyncio.to_thread(Path("contracts.json").write_text, json.dumps(contracts, indent=4))
|
|
747
703
|
await asyncio.to_thread(Path("nodes.json").write_text, json.dumps(nodes, indent=4))
|
|
748
704
|
|
|
749
705
|
click.echo(f"Neuronum Node '{nodeID}' updated! Visit: {node_url}")
|
|
@@ -843,16 +799,6 @@ async def async_delete_node():
|
|
|
843
799
|
click.echo(f"Neuronum Node '{nodeID}' deleted!")
|
|
844
800
|
|
|
845
801
|
|
|
846
|
-
|
|
847
|
-
@click.command()
|
|
848
|
-
def call_cellai():
|
|
849
|
-
try:
|
|
850
|
-
from cellai import cellai
|
|
851
|
-
cellai.main()
|
|
852
|
-
except ImportError:
|
|
853
|
-
click.echo("Cellai not found. Please check the necessary dependencies.")
|
|
854
|
-
|
|
855
|
-
|
|
856
802
|
cli.add_command(create_cell)
|
|
857
803
|
cli.add_command(connect_cell)
|
|
858
804
|
cli.add_command(view_cell)
|
|
@@ -865,7 +811,6 @@ cli.add_command(connect_node)
|
|
|
865
811
|
cli.add_command(update_node)
|
|
866
812
|
cli.add_command(disconnect_node)
|
|
867
813
|
cli.add_command(delete_node)
|
|
868
|
-
cli.add_command(call_cellai)
|
|
869
814
|
|
|
870
815
|
|
|
871
816
|
if __name__ == "__main__":
|
neuronum/neuronum.py
CHANGED
|
@@ -4,7 +4,6 @@ import ssl
|
|
|
4
4
|
import websockets
|
|
5
5
|
import json
|
|
6
6
|
import asyncio
|
|
7
|
-
from bleak import BleakScanner
|
|
8
7
|
|
|
9
8
|
class Cell:
|
|
10
9
|
def __init__(self, host: str, password: str, network: str, synapse: str):
|
|
@@ -410,7 +409,6 @@ class Cell:
|
|
|
410
409
|
await writer.wait_closed()
|
|
411
410
|
|
|
412
411
|
|
|
413
|
-
|
|
414
412
|
async def sync(self, stx: Optional[str] = None) -> AsyncGenerator[str, None]:
|
|
415
413
|
full_url = f"wss://{self.network}/sync/{stx}"
|
|
416
414
|
|
|
@@ -446,177 +444,4 @@ class Cell:
|
|
|
446
444
|
print(f"An unexpected error occurred: {e}")
|
|
447
445
|
|
|
448
446
|
|
|
449
|
-
async def sign_contract(self, contractID: str):
|
|
450
|
-
full_url = f"https://{self.network}/api/sign_contract"
|
|
451
|
-
|
|
452
|
-
sign_contract_payload = {
|
|
453
|
-
"contractID": contractID,
|
|
454
|
-
"cell": self.to_dict()
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
async with aiohttp.ClientSession() as session:
|
|
458
|
-
try:
|
|
459
|
-
async with session.post(full_url, json=sign_contract_payload) as response:
|
|
460
|
-
response.raise_for_status()
|
|
461
|
-
data = await response.json()
|
|
462
|
-
return data.get("token")
|
|
463
|
-
|
|
464
|
-
except aiohttp.ClientError as e:
|
|
465
|
-
print(f"Error sending request: {e}")
|
|
466
|
-
except Exception as e:
|
|
467
|
-
print(f"Unexpected error: {e}")
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
async def validate_token(self, token: str, cp: str, contractID: str):
|
|
471
|
-
full_url = f"https://{self.network}/api/validate_token"
|
|
472
|
-
|
|
473
|
-
validate_payload = {
|
|
474
|
-
"token": token,
|
|
475
|
-
"cp": cp,
|
|
476
|
-
"contractID": contractID,
|
|
477
|
-
"cell": self.to_dict()
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
async with aiohttp.ClientSession() as session:
|
|
481
|
-
try:
|
|
482
|
-
async with session.post(full_url, json=validate_payload) as response:
|
|
483
|
-
response.raise_for_status()
|
|
484
|
-
data = await response.json()
|
|
485
|
-
return data.get("validity")
|
|
486
|
-
|
|
487
|
-
except aiohttp.ClientError as e:
|
|
488
|
-
print(f"Error sending request: {e}")
|
|
489
|
-
except Exception as e:
|
|
490
|
-
print(f"Unexpected error: {e}")
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
async def request_token(self, cp: str, contractID: str):
|
|
494
|
-
full_url = f"https://{self.network}/api/request_token"
|
|
495
|
-
|
|
496
|
-
request_token_payload = {
|
|
497
|
-
"cp": cp,
|
|
498
|
-
"contractID": contractID,
|
|
499
|
-
"cell": self.to_dict()
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
async with aiohttp.ClientSession() as session:
|
|
503
|
-
try:
|
|
504
|
-
async with session.post(full_url, json=request_token_payload) as response:
|
|
505
|
-
response.raise_for_status()
|
|
506
|
-
data = await response.json()
|
|
507
|
-
print(f"Response from Neuronum: {data}")
|
|
508
|
-
return data
|
|
509
|
-
|
|
510
|
-
except aiohttp.ClientError as e:
|
|
511
|
-
print(f"Error sending request: {e}")
|
|
512
|
-
except Exception as e:
|
|
513
|
-
print(f"Unexpected error: {e}")
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
async def present_token(self, token: str, cp: str, contractID: str):
|
|
517
|
-
full_url = f"https://{self.network}/api/present_token"
|
|
518
|
-
|
|
519
|
-
present_token_payload = {
|
|
520
|
-
"token": token,
|
|
521
|
-
"cp": cp,
|
|
522
|
-
"contractID": contractID,
|
|
523
|
-
"cell": self.to_dict()
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
async with aiohttp.ClientSession() as session:
|
|
527
|
-
try:
|
|
528
|
-
async with session.post(full_url, json=present_token_payload) as response:
|
|
529
|
-
response.raise_for_status()
|
|
530
|
-
data = await response.json()
|
|
531
|
-
print(f"Response from Neuronum: {data}")
|
|
532
|
-
return data
|
|
533
|
-
|
|
534
|
-
except aiohttp.ClientError as e:
|
|
535
|
-
print(f"Error sending request: {e}")
|
|
536
|
-
except Exception as e:
|
|
537
|
-
print(f"Unexpected error: {e}")
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
async def create_contract(self, descr: str, details: dict, partners: list):
|
|
541
|
-
full_url = f"https://{self.network}/api/create_contract"
|
|
542
|
-
|
|
543
|
-
create_contract_payload = {
|
|
544
|
-
"cell": self.to_dict(),
|
|
545
|
-
"descr": descr,
|
|
546
|
-
"details": details,
|
|
547
|
-
"partners": partners
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
async with aiohttp.ClientSession() as session:
|
|
551
|
-
try:
|
|
552
|
-
async with session.post(full_url, json=create_contract_payload) as response:
|
|
553
|
-
response.raise_for_status()
|
|
554
|
-
data = await response.json()
|
|
555
|
-
return data.get("contractID")
|
|
556
|
-
|
|
557
|
-
except aiohttp.ClientError as e:
|
|
558
|
-
print(f"Error sending request: {e}")
|
|
559
|
-
except Exception as e:
|
|
560
|
-
print(f"Unexpected error: {e}")
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
async def delete_contract(self, contractID: str):
|
|
564
|
-
full_url = f"https://{self.network}/api/delete_contract"
|
|
565
|
-
|
|
566
|
-
request_payload = {
|
|
567
|
-
"cell": self.to_dict(),
|
|
568
|
-
"contractID": contractID
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
async with aiohttp.ClientSession() as session:
|
|
572
|
-
try:
|
|
573
|
-
async with session.post(full_url, json=request_payload) as response:
|
|
574
|
-
response.raise_for_status()
|
|
575
|
-
data = await response.json()
|
|
576
|
-
print(f"Response from Neuronum: {data}")
|
|
577
|
-
return data
|
|
578
|
-
|
|
579
|
-
except aiohttp.ClientError as e:
|
|
580
|
-
print(f"Error sending request: {e}")
|
|
581
|
-
except Exception as e:
|
|
582
|
-
print(f"Unexpected error: {e}")
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
async def list_contracts(self):
|
|
586
|
-
full_url = f"https://{self.network}/api/list_contracts"
|
|
587
|
-
|
|
588
|
-
list_contracts_payload = {
|
|
589
|
-
"cell": self.to_dict()
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
async with aiohttp.ClientSession() as session:
|
|
593
|
-
try:
|
|
594
|
-
async with session.get(full_url, json=list_contracts_payload) as response:
|
|
595
|
-
response.raise_for_status()
|
|
596
|
-
data = await response.json()
|
|
597
|
-
return data.get("Contracts", [])
|
|
598
|
-
|
|
599
|
-
except aiohttp.ClientError as e:
|
|
600
|
-
print(f"Error sending request: {e}")
|
|
601
|
-
except Exception as e:
|
|
602
|
-
print(f"Unexpected error: {e}")
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
def device_found(self, device, advertisement_data):
|
|
606
|
-
if device.name and (device.name.endswith("::cell") or device.name.endswith("::node")):
|
|
607
|
-
asyncio.create_task(self.queue.put(f"{device.name} - {device.address}"))
|
|
608
|
-
|
|
609
|
-
async def scan(self):
|
|
610
|
-
print("Scanning for Neuronum Cells & Nodes")
|
|
611
|
-
|
|
612
|
-
scanner = BleakScanner(self.device_found)
|
|
613
|
-
await scanner.start()
|
|
614
|
-
|
|
615
|
-
try:
|
|
616
|
-
while True:
|
|
617
|
-
yield await self.queue.get()
|
|
618
|
-
except asyncio.CancelledError:
|
|
619
|
-
await scanner.stop()
|
|
620
|
-
|
|
621
|
-
|
|
622
447
|
__all__ = ['Cell']
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: neuronum
|
|
3
|
+
Version: 4.0.1
|
|
4
|
+
Summary: Official client library to interact with the Neuronum Network
|
|
5
|
+
Home-page: https://neuronum.net
|
|
6
|
+
Author: Neuronum Cybernetics
|
|
7
|
+
Author-email: welcome@neuronum.net
|
|
8
|
+
Project-URL: GitHub, https://github.com/neuronumcybernetics/neuronum
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Requires-Python: >=3.8
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Requires-Dist: aiohttp
|
|
16
|
+
Requires-Dist: websockets
|
|
17
|
+
Requires-Dist: click
|
|
18
|
+
Requires-Dist: questionary
|
|
19
|
+
Requires-Dist: python-dotenv
|
|
20
|
+
Requires-Dist: requests
|
|
21
|
+
Dynamic: author
|
|
22
|
+
Dynamic: author-email
|
|
23
|
+
Dynamic: classifier
|
|
24
|
+
Dynamic: description
|
|
25
|
+
Dynamic: description-content-type
|
|
26
|
+
Dynamic: home-page
|
|
27
|
+
Dynamic: license-file
|
|
28
|
+
Dynamic: project-url
|
|
29
|
+
Dynamic: requires-dist
|
|
30
|
+
Dynamic: requires-python
|
|
31
|
+
Dynamic: summary
|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+
[](https://neuronum.net) [](https://github.com/neuronumcybernetics/neuronum)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### **Getting Started Goals**
|
|
39
|
+
- Learn about Neuronum
|
|
40
|
+
- Connect to Neuronum
|
|
41
|
+
- Build on Neuronum
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### **About Neuronum**
|
|
45
|
+
Neuronum is a framework to build serverless data gateways automating the processing and distribution of data transmission, storage, and streaming.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### **Neuronum Attributes**
|
|
49
|
+
**Cell & Nodes**
|
|
50
|
+
- Cell: Account to connect and interact with Neuronum
|
|
51
|
+
- Nodes: Soft- and Hardware components hosting data gateways
|
|
52
|
+
|
|
53
|
+
**Data Gateways**
|
|
54
|
+
- Transmitters (TX): Automate data transfer in standardized formats
|
|
55
|
+
- Circuits (CTX): Store data in cloud-based key-value-label databases
|
|
56
|
+
- Streams (STX): Stream, synchronize, and control data in real time
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
#### Requirements
|
|
60
|
+
- Python >= 3.8 -> https://www.python.org/downloads/
|
|
61
|
+
- neuronum >= 4.0.0 -> https://pypi.org/project/neuronum/
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
------------------
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### **Connect to Neuronum**
|
|
68
|
+
Installation
|
|
69
|
+
```sh
|
|
70
|
+
pip install neuronum # install neuronum dependencies
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Create Cell:
|
|
74
|
+
```sh
|
|
75
|
+
neuronum create-cell # create Cell / Cell type / Cell network
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
View connected Cell:
|
|
80
|
+
```sh
|
|
81
|
+
neuronum view-cell # view Cell / output = Connected Cell: 'cell_id'"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
------------------
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
### **Build on Neuronum**
|
|
89
|
+
Initialize Node (default template):
|
|
90
|
+
```sh
|
|
91
|
+
neuronum init-node # initialize a Node with default template
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
**Node Examples:**
|
|
96
|
+
Visit: https://github.com/neuronumcybernetics/neuronum/tree/main/how_tos/nodes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
cli/main.py,sha256=g7Y-W1G7C1firXHsEnBFyqa52nSk6GVzcax_6up0Ezg,24991
|
|
3
|
+
neuronum/__init__.py,sha256=Drsm263_w3_VWgl1YsKLUr8WwVodqV3TSjqpxLjyq_M,46
|
|
4
|
+
neuronum/neuronum.py,sha256=botQ0FJIf5e00MqfUeIcD6aAchys9vSsQ3ymj8YzGMc,15223
|
|
5
|
+
neuronum-4.0.1.dist-info/licenses/LICENSE,sha256=UiZjNHiCyRP6WoZfbYQh9cv4JW96wIofKXmzBJrYSUk,1125
|
|
6
|
+
neuronum-4.0.1.dist-info/METADATA,sha256=SVe3ktDGVnjOpjl4PXi0QtIFOgW84Mr0TzfDJpivwsY,2725
|
|
7
|
+
neuronum-4.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
8
|
+
neuronum-4.0.1.dist-info/entry_points.txt,sha256=XKYBcRNxGeJpZZkDPsa8HA_RaJ7Km_R_JaUq5T9Nk2U,42
|
|
9
|
+
neuronum-4.0.1.dist-info/top_level.txt,sha256=ru8Fr84cHm6oHr_DcJ8-uaq3RTiuCRFIr6AC8V0zPu4,13
|
|
10
|
+
neuronum-4.0.1.dist-info/RECORD,,
|
cellai/__init__.py
DELETED
|
File without changes
|
cellai/cellai.py
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
def main():
|
|
2
|
-
print("Hello, it's your task assistant Cellai")
|
|
3
|
-
print("I'm still in development, but my creators are happy to share updates.")
|
|
4
|
-
print("Feel free to reach out to them at <welcome@neuronum.net> for more details.")
|
|
5
|
-
|
|
6
|
-
if __name__ == "__main__":
|
|
7
|
-
main()
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: neuronum
|
|
3
|
-
Version: 3.0.3
|
|
4
|
-
Summary: Official client library to interact with the Neuronum Network
|
|
5
|
-
Home-page: https://neuronum.net
|
|
6
|
-
Author: Neuronum Cybernetics
|
|
7
|
-
Author-email: welcome@neuronum.net
|
|
8
|
-
Project-URL: GitHub, https://github.com/neuronumcybernetics/neuronum
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
-
Classifier: Operating System :: OS Independent
|
|
12
|
-
Requires-Python: >=3.8
|
|
13
|
-
Description-Content-Type: text/markdown
|
|
14
|
-
License-File: LICENSE
|
|
15
|
-
Requires-Dist: aiohttp
|
|
16
|
-
Requires-Dist: websockets
|
|
17
|
-
Requires-Dist: click
|
|
18
|
-
Requires-Dist: questionary
|
|
19
|
-
Requires-Dist: python-dotenv
|
|
20
|
-
Requires-Dist: bleak
|
|
21
|
-
Requires-Dist: requests
|
|
22
|
-
Dynamic: author
|
|
23
|
-
Dynamic: author-email
|
|
24
|
-
Dynamic: classifier
|
|
25
|
-
Dynamic: description
|
|
26
|
-
Dynamic: description-content-type
|
|
27
|
-
Dynamic: home-page
|
|
28
|
-
Dynamic: license-file
|
|
29
|
-
Dynamic: project-url
|
|
30
|
-
Dynamic: requires-dist
|
|
31
|
-
Dynamic: requires-python
|
|
32
|
-
Dynamic: summary
|
|
33
|
-
|
|
34
|
-

|
|
35
|
-
|
|
36
|
-
[](https://neuronum.net) [](https://github.com/neuronumcybernetics/neuronum)
|
|
37
|
-
|
|
38
|
-
A Getting Started into the Neuronum Network: Build, deploy and automate serverless data infrastructures for an interconnected world
|
|
39
|
-
|
|
40
|
-
### **What's New in neuronum 3.0.3**
|
|
41
|
-
- Added CLI feature in `neuronum start-node`: use --d flag to start your Node in "detached" mode
|
|
42
|
-
|
|
43
|
-
### **New Feature Set**
|
|
44
|
-
- **Cell/Cell-CLI**: Create and manage your Neuronum Cell, a unique identity for interacting with the Network, directly from the command line.
|
|
45
|
-
- **Nodes/Node-CLI**: Setup and manage Neuronum Nodes, the software and hardware components that power the Network, via the command line.
|
|
46
|
-
- **Transmitters (TX)**: Automate economic data transfer using predefined templates for standardized data exchange.
|
|
47
|
-
- **Circuits (CTX)**: Store, manage, and retrieve structured data with Circuits, a cloud-based Key-Value-Label database.
|
|
48
|
-
- **Streams (STX)**: Stream, synchronize, and control data in real time, enabling dynamic and responsive data flows.
|
|
49
|
-
- **Contracts/Tokens**: Automate service exchange and authorization, ensuring secure interactions between Cells and Nodes.
|
|
50
|
-
- **Scan**: Discover Cells and Nodes via BLE-based scanning, powered by Bleak, for seamless network integration.
|
|
51
|
-
- **Cellai**: A local AI assistant currently in development (version 0.0.1). While still evolving, Cellai is designed to automate communication between Cells and Nodes, optimizing intelligent data flow and network interactions in future releases.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
## Getting Started Goals
|
|
55
|
-
- Create a Cell to start interacting with the Network
|
|
56
|
-
- Setup a Node that streams and syncs the message: Hello, Neuronum!
|
|
57
|
-
- Connect your Node to the Neuronum Network
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
### Requirements
|
|
61
|
-
- Python >= 3.8 -> https://www.python.org/downloads/
|
|
62
|
-
- neuronum >= 3.0.0 -> https://pypi.org/project/neuronum/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
### Installation
|
|
66
|
-
Install the Neuronum library:
|
|
67
|
-
```sh
|
|
68
|
-
$ pip install neuronum # install the neuronum dependencies
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Neuronum Cell
|
|
72
|
-
Create your Cell:
|
|
73
|
-
```sh
|
|
74
|
-
$ neuronum create-cell # create Cell / select network and type
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Connect your Cell:
|
|
78
|
-
```sh
|
|
79
|
-
$ neuronum connect-cell # connect Cell
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
View connected Cell:
|
|
83
|
-
```sh
|
|
84
|
-
$ neuronum view-cell # view Cell ID / output = Connected Cell: 'your_cell_id'"
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
### Neuronum Node
|
|
88
|
-
Initialize your Node:
|
|
89
|
-
```sh
|
|
90
|
-
$ neuronum init-node # initialize a Node with default template
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
cd into Node Folder:
|
|
94
|
-
```sh
|
|
95
|
-
$ cd node_nodeID # change directory
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Start your Node:
|
|
99
|
-
```sh
|
|
100
|
-
$ neuronum start-node # start Node / scan = Off / output = "Hello, Neuronum!"
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Stop your Node:
|
|
104
|
-
```sh
|
|
105
|
-
$ neuronum stop-node # stop Node
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
Connect your Node:
|
|
109
|
-
```sh
|
|
110
|
-
$ neuronum connect-node # connect your Node / Choose Node Type = private / Node description = Test Node
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Update your Node:
|
|
114
|
-
```sh
|
|
115
|
-
$ neuronum update-node # update your Node
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Disconnect your Node:
|
|
119
|
-
```sh
|
|
120
|
-
$ neuronum disconnect-node # disconnect your Node
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Delete your Node:
|
|
124
|
-
```sh
|
|
125
|
-
$ neuronum delete-node # delete your Node
|
|
126
|
-
```
|
neuronum-3.0.3.dist-info/RECORD
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
cellai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
cellai/cellai.py,sha256=g5oBz-Xx6T4-JWzUs-TJ4y9nHtDmA_IpXh_188OqAZA,281
|
|
3
|
-
cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
cli/main.py,sha256=ZN1M8O-BHhm0qQmz1y2N2QFH1xCqlfzsIbwkBaI8q38,26423
|
|
5
|
-
neuronum/__init__.py,sha256=Drsm263_w3_VWgl1YsKLUr8WwVodqV3TSjqpxLjyq_M,46
|
|
6
|
-
neuronum/neuronum.py,sha256=VUwdF3ynOtZHTASnKzSaHG5GWWfG-oAXxdcGDftbuFE,21412
|
|
7
|
-
neuronum-3.0.3.dist-info/licenses/LICENSE,sha256=UiZjNHiCyRP6WoZfbYQh9cv4JW96wIofKXmzBJrYSUk,1125
|
|
8
|
-
neuronum-3.0.3.dist-info/METADATA,sha256=_TaOsjz0Z6PhSVaNSVW16c6aZ--72DwO5wMZbxVoVb4,4287
|
|
9
|
-
neuronum-3.0.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
10
|
-
neuronum-3.0.3.dist-info/entry_points.txt,sha256=XKYBcRNxGeJpZZkDPsa8HA_RaJ7Km_R_JaUq5T9Nk2U,42
|
|
11
|
-
neuronum-3.0.3.dist-info/top_level.txt,sha256=gqN5tyGnBKMPSzvWQONO4rpTf4gQPMi77O3KAKx88LQ,20
|
|
12
|
-
neuronum-3.0.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|