ttnn-visualizer 0.41.0__py3-none-any.whl → 0.43.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.
Files changed (39) hide show
  1. ttnn_visualizer/__init__.py +0 -1
  2. ttnn_visualizer/app.py +15 -4
  3. ttnn_visualizer/csv_queries.py +150 -40
  4. ttnn_visualizer/decorators.py +42 -16
  5. ttnn_visualizer/exceptions.py +45 -1
  6. ttnn_visualizer/file_uploads.py +1 -0
  7. ttnn_visualizer/instances.py +42 -15
  8. ttnn_visualizer/models.py +12 -7
  9. ttnn_visualizer/queries.py +3 -109
  10. ttnn_visualizer/remote_sqlite_setup.py +104 -19
  11. ttnn_visualizer/requirements.txt +2 -3
  12. ttnn_visualizer/serializers.py +1 -0
  13. ttnn_visualizer/settings.py +9 -5
  14. ttnn_visualizer/sftp_operations.py +657 -220
  15. ttnn_visualizer/sockets.py +9 -3
  16. ttnn_visualizer/static/assets/{allPaths-4_pFqSAW.js → allPaths-BQN_j7ek.js} +1 -1
  17. ttnn_visualizer/static/assets/{allPathsLoader-CpLPTLlt.js → allPathsLoader-BvkkQ77q.js} +2 -2
  18. ttnn_visualizer/static/assets/index-B-fsa5Ru.js +1 -0
  19. ttnn_visualizer/static/assets/{index-DFVwehlj.js → index-Bng0kcmi.js} +214 -214
  20. ttnn_visualizer/static/assets/{index-C1rJBrMl.css → index-C-t6jBt9.css} +1 -1
  21. ttnn_visualizer/static/assets/index-DLOviMB1.js +1 -0
  22. ttnn_visualizer/static/assets/{splitPathsBySizeLoader-D-RvsTqO.js → splitPathsBySizeLoader-Cl0NRdfL.js} +1 -1
  23. ttnn_visualizer/static/index.html +2 -2
  24. ttnn_visualizer/tests/__init__.py +0 -1
  25. ttnn_visualizer/tests/test_queries.py +0 -69
  26. ttnn_visualizer/tests/test_serializers.py +2 -2
  27. ttnn_visualizer/utils.py +7 -3
  28. ttnn_visualizer/views.py +315 -52
  29. {ttnn_visualizer-0.41.0.dist-info → ttnn_visualizer-0.43.0.dist-info}/LICENSE +0 -1
  30. {ttnn_visualizer-0.41.0.dist-info → ttnn_visualizer-0.43.0.dist-info}/METADATA +6 -3
  31. ttnn_visualizer-0.43.0.dist-info/RECORD +45 -0
  32. ttnn_visualizer/ssh_client.py +0 -85
  33. ttnn_visualizer/static/assets/index-BKzgFDAn.js +0 -1
  34. ttnn_visualizer/static/assets/index-BvSuWPlB.js +0 -1
  35. ttnn_visualizer-0.41.0.dist-info/RECORD +0 -46
  36. {ttnn_visualizer-0.41.0.dist-info → ttnn_visualizer-0.43.0.dist-info}/LICENSE_understanding.txt +0 -0
  37. {ttnn_visualizer-0.41.0.dist-info → ttnn_visualizer-0.43.0.dist-info}/WHEEL +0 -0
  38. {ttnn_visualizer-0.41.0.dist-info → ttnn_visualizer-0.43.0.dist-info}/entry_points.txt +0 -0
  39. {ttnn_visualizer-0.41.0.dist-info → ttnn_visualizer-0.43.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,45 @@
1
+ ttnn_visualizer/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5upDx0,93
2
+ ttnn_visualizer/app.py,sha256=RZrW-Vbqi-ZN6CzCW9GrolVaA8nKBkaX2ULcdKhDiZI,7282
3
+ ttnn_visualizer/csv_queries.py,sha256=v3iew4_TVsus_3bt5vCaHBMcOw4W3QZa4L46AZx6MdY,26662
4
+ ttnn_visualizer/decorators.py,sha256=hOFfAWgsQlqwstJmni63s5o5ga-TuxuhVNW3jvRxMEo,5849
5
+ ttnn_visualizer/enums.py,sha256=SEIqp1tlc_zw2vQ8nHH9YTaV0m3Cb8fjn_goqz5wurE,203
6
+ ttnn_visualizer/exceptions.py,sha256=iXx1EmodousLr2y-PKpwYcxV_qJKVcvvjPMn4V-9M0w,2124
7
+ ttnn_visualizer/extensions.py,sha256=AW2aujcvayePfrwovVcsXIUkCFe_k2T4Vk3OblZd4Bk,380
8
+ ttnn_visualizer/file_uploads.py,sha256=kfjk6dxUZOIlHriF3bth7FWvCmCoXaCvQSIDjfsGgKQ,5012
9
+ ttnn_visualizer/instances.py,sha256=pVlTWfq4aLPk2Toh53nfuTkmDrnBV5HPCmXKNo-yK84,11575
10
+ ttnn_visualizer/models.py,sha256=Gd2GmfBmYcwXl7HgDt2NdvGxpdb20t85JRKLqwmZ77A,7852
11
+ ttnn_visualizer/queries.py,sha256=MB57Ci3gyXn9jdXdR6KaMBHoHYt5jgdk3wP7jSDGWFA,9891
12
+ ttnn_visualizer/remote_sqlite_setup.py,sha256=Rv6VZUABXn5-ysPA9urLnfdmAcduT0OnBducZpIpxHU,5959
13
+ ttnn_visualizer/requirements.txt,sha256=l0HA8Gt9tLpuiBBavPP6KziCN1z33-q8JB8lomaa4hU,353
14
+ ttnn_visualizer/serializers.py,sha256=LmjHIrFg8BLx1JKVFh9Nd_TcA7nyy1MwY2BOGnX1MKw,8029
15
+ ttnn_visualizer/settings.py,sha256=Gy854sLhZBe-ahStymUiWG-X3C8JVdJUP8YUQ8iAcHQ,4607
16
+ ttnn_visualizer/sftp_operations.py,sha256=mIbeuo1fGO-Ipgcu0PlrnONvqBWcIqGQHfzedWAfU5E,32587
17
+ ttnn_visualizer/sockets.py,sha256=kJvd6dAQL4XhJ7kCqfgz6RqZmdDlQaBHcaawe1b6APY,3708
18
+ ttnn_visualizer/utils.py,sha256=CLNarkx1olUIL3owMgbOICTIHlqcVwbWKO3ZoXkJO74,6224
19
+ ttnn_visualizer/views.py,sha256=rkNCkjCmF3RWU40qlZPYRBF-LWO5qQTFSn4mntZx1YM,49392
20
+ ttnn_visualizer/bin/docker-entrypoint-web,sha256=uuv6aubpMCfOcuvDBxwBDITE8PN39teuwyJ2zA5KWuw,413
21
+ ttnn_visualizer/bin/pip3-install,sha256=nbSRT4GfJQIQ9KTNO3j-6b5WM4lrx9XA4GBlAURRMws,502
22
+ ttnn_visualizer/static/index.html,sha256=q-PyP3UHids9LgIA68gaKiPolgi9ENLEAZZshzNlVwU,1135
23
+ ttnn_visualizer/static/assets/allPaths-BQN_j7ek.js,sha256=2Gxw0xHwpwg1U724PFLqGlUkhCt8nj5Ug5QN2kfuYbE,309
24
+ ttnn_visualizer/static/assets/allPathsLoader-BvkkQ77q.js,sha256=pCkIJpl9CWONYrMvh2HgkLfyM97aeL1VolHsHpY3vtA,550
25
+ ttnn_visualizer/static/assets/index-B-fsa5Ru.js,sha256=IonL7d7ppdDr-_FRJZQPWI4HHFTiygYvZGVlUxHY9R8,294235
26
+ ttnn_visualizer/static/assets/index-Bng0kcmi.js,sha256=-1maa2zxiVOSnr0fZ_Jn9Ar2bDZKPQ6ajWvYX7wWTkI,7784223
27
+ ttnn_visualizer/static/assets/index-C-t6jBt9.css,sha256=ngV1lzCeoUs0nCQwylTY7QccuQpYEWDOQhBubspU8Pk,623810
28
+ ttnn_visualizer/static/assets/index-DLOviMB1.js,sha256=sI0W1vvwqvIwKP2_jglrwOhej3n5rJD72-d4ZhlUHqM,285612
29
+ ttnn_visualizer/static/assets/site-BTBrvHC5.webmanifest,sha256=Uy_XmnGuYFVf-OZuma2NvgEPdrCrevb3HZvaxSIHoA0,456
30
+ ttnn_visualizer/static/assets/splitPathsBySizeLoader-Cl0NRdfL.js,sha256=n8ok4d76dE0iokaoEjFp1Ntr8ZxRJrWTOPpftJ4lzDc,472
31
+ ttnn_visualizer/static/favicon/android-chrome-192x192.png,sha256=BZWA09Zxaa3fXbaeS6nhWo2e-DUSjm9ElzNQ_xTB5XU,6220
32
+ ttnn_visualizer/static/favicon/android-chrome-512x512.png,sha256=HBiJSZyguB3o8fMJuqIGcpeBy_9JOdImme3wD02UYCw,62626
33
+ ttnn_visualizer/static/favicon/favicon-32x32.png,sha256=Zw201qUsczQv1UvoQvJf5smQ2ss10xaTeWxmQNYCGtY,480
34
+ ttnn_visualizer/static/favicon/favicon.svg,sha256=wDPY3VrekJ_DE1TnJ2vUy602K3S4Xe9TgrdZ7jXK9c8,633
35
+ ttnn_visualizer/static/sample-data/cluster-desc.yaml,sha256=LMxOmsRUXtVVU5ogzYkXUozB3dg2IzqIRJQpV_O5qMU,29618
36
+ ttnn_visualizer/tests/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5upDx0,93
37
+ ttnn_visualizer/tests/test_queries.py,sha256=D0wO_aQOLkcOSuiOEPgnIt_0zoQX53k2CDD3U9oPiFM,13881
38
+ ttnn_visualizer/tests/test_serializers.py,sha256=EOvhXD1x-5kG9fOdbWqnh3NetSbHJS_AE_aJjIlw-O4,18492
39
+ ttnn_visualizer-0.43.0.dist-info/LICENSE,sha256=-Y7CZK1-MxZZ7l0Rb414S0SZ9tdCby-bMGl_LmFFicM,14806
40
+ ttnn_visualizer-0.43.0.dist-info/LICENSE_understanding.txt,sha256=pymi-yb_RvYM9p2ZA4iSNsImcvhDBBxlGuJCY9dTq7M,233
41
+ ttnn_visualizer-0.43.0.dist-info/METADATA,sha256=B-9Is2if03hpxGMWp0b8Li_jYhzTnquruNsRyzZmTSo,7508
42
+ ttnn_visualizer-0.43.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
43
+ ttnn_visualizer-0.43.0.dist-info/entry_points.txt,sha256=QpuUpkmQ_mEHJTMqOBdU0MH2Z4WF_9iFsGACeyyAO1E,61
44
+ ttnn_visualizer-0.43.0.dist-info/top_level.txt,sha256=M1EGkvDOuIfbhDbcUdz2-TSdmCtDoQ2Uyag9k5JLDSY,16
45
+ ttnn_visualizer-0.43.0.dist-info/RECORD,,
@@ -1,85 +0,0 @@
1
- # SPDX-License-Identifier: Apache-2.0
2
- #
3
- # SPDX-FileCopyrightText: © 2025 Tenstorrent AI ULC
4
-
5
- import paramiko
6
- import os
7
- from pathlib import Path
8
- from paramiko.agent import Agent
9
- from paramiko.ssh_exception import SSHException
10
-
11
- from ttnn_visualizer.decorators import remote_exception_handler
12
- from ttnn_visualizer.models import RemoteConnection
13
- import logging
14
-
15
- logger = logging.getLogger(__name__)
16
-
17
-
18
- def initialize_ssh_client():
19
- ssh = paramiko.SSHClient()
20
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
21
- ssh.load_system_host_keys()
22
- return ssh
23
-
24
-
25
- def get_connection_args(remote_connection: RemoteConnection) -> dict:
26
- use_agent = os.getenv("USE_SSH_AGENT", "true").lower() == "true"
27
- ssh_config_path = Path(os.getenv("SSH_CONFIG_PATH", "~/.ssh/config")).expanduser()
28
-
29
- if use_agent:
30
- agent = Agent()
31
- keys = agent.get_keys()
32
- if not keys:
33
- logger.error("No keys found in agent")
34
- raise SSHException("No keys found")
35
- return {"look_for_keys": True}
36
-
37
- config = paramiko.SSHConfig.from_path(ssh_config_path).lookup(
38
- remote_connection.host
39
- )
40
- if not config:
41
- raise SSHException(f"Host not found in SSH config {remote_connection.host}")
42
-
43
- return {"key_filename": config["identityfile"].pop(), "look_for_keys": False} # type: ignore
44
-
45
-
46
- @remote_exception_handler
47
- def get_client(remote_connection: RemoteConnection) -> paramiko.SSHClient:
48
- ssh = initialize_ssh_client()
49
- connection_args = get_connection_args(remote_connection)
50
-
51
- ssh.connect(
52
- remote_connection.host,
53
- port=remote_connection.port,
54
- username=remote_connection.username,
55
- **connection_args,
56
- )
57
- return ssh
58
-
59
-
60
- def check_permissions(client, directory):
61
- """Check if write and delete permissions are available in the remote directory."""
62
- test_file = Path(directory) / "test_permission_file.txt"
63
- touch_command = f"touch {test_file}"
64
- remove_command = f"rm {test_file}"
65
-
66
- stdin, stdout, stderr = client.exec_command(touch_command)
67
- error = stderr.read().decode().strip()
68
- if error:
69
- raise Exception(f"No permission to create files in {directory}: {error}")
70
-
71
- stdin, stdout, stderr = client.exec_command(remove_command)
72
- error = stderr.read().decode().strip()
73
- if error:
74
- raise Exception(f"No permission to delete files in {directory}: {error}")
75
-
76
- return True
77
-
78
-
79
- def check_gzip_exists(client):
80
- """Check if gzip and tar exist on the remote server."""
81
- stdin, stdout, stderr = client.exec_command("which gzip && which tar")
82
- result = stdout.read().decode().strip()
83
- if not result:
84
- return False
85
- return True