ttnn-visualizer 0.51.0__py3-none-any.whl → 0.52.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.
- ttnn_visualizer/app.py +1 -0
- ttnn_visualizer/csv_queries.py +39 -4
- ttnn_visualizer/decorators.py +0 -9
- ttnn_visualizer/exceptions.py +0 -7
- ttnn_visualizer/models.py +0 -1
- ttnn_visualizer/static/assets/{allPaths-DucASGPg.js → allPaths-BoDgVavt.js} +1 -1
- ttnn_visualizer/static/assets/allPathsLoader-DaQoP_bJ.js +2 -0
- ttnn_visualizer/static/assets/{index-UWmN5XEZ.css → index-BxeIYL6g.css} +2 -2
- ttnn_visualizer/static/assets/{index-DFKuZosj.js → index-DpyzM7Uz.js} +219 -219
- ttnn_visualizer/static/assets/{splitPathsBySizeLoader-ld7TLnGh.js → splitPathsBySizeLoader-csS8C5pu.js} +1 -1
- ttnn_visualizer/static/index.html +2 -2
- ttnn_visualizer/views.py +0 -29
- {ttnn_visualizer-0.51.0.dist-info → ttnn_visualizer-0.52.0.dist-info}/METADATA +1 -1
- {ttnn_visualizer-0.51.0.dist-info → ttnn_visualizer-0.52.0.dist-info}/RECORD +19 -20
- ttnn_visualizer/remote_sqlite_setup.py +0 -100
- ttnn_visualizer/static/assets/allPathsLoader-CaG_8uEi.js +0 -2
- {ttnn_visualizer-0.51.0.dist-info → ttnn_visualizer-0.52.0.dist-info}/WHEEL +0 -0
- {ttnn_visualizer-0.51.0.dist-info → ttnn_visualizer-0.52.0.dist-info}/entry_points.txt +0 -0
- {ttnn_visualizer-0.51.0.dist-info → ttnn_visualizer-0.52.0.dist-info}/licenses/LICENSE +0 -0
- {ttnn_visualizer-0.51.0.dist-info → ttnn_visualizer-0.52.0.dist-info}/licenses/LICENSE_understanding.txt +0 -0
- {ttnn_visualizer-0.51.0.dist-info → ttnn_visualizer-0.52.0.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
|
|
1
|
-
import{p as r,I as s,_ as a}from"./index-
|
1
|
+
import{p as r,I as s,_ as a}from"./index-DpyzM7Uz.js";const n=async(o,_)=>{const i=r(o);let t;return _===s.STANDARD?t=await a(()=>import("./index-CnPrfHYh.js").then(e=>e.I),[]):t=await a(()=>import("./index-Cnc1EkDo.js").then(e=>e.I),[]),t[i]};export{n as splitPathsBySizeLoader};
|
@@ -34,8 +34,8 @@
|
|
34
34
|
/* SERVER_CONFIG */
|
35
35
|
</script>
|
36
36
|
|
37
|
-
<script type="module" crossorigin src="/static/assets/index-
|
38
|
-
<link rel="stylesheet" crossorigin href="/static/assets/index-
|
37
|
+
<script type="module" crossorigin src="/static/assets/index-DpyzM7Uz.js"></script>
|
38
|
+
<link rel="stylesheet" crossorigin href="/static/assets/index-BxeIYL6g.css">
|
39
39
|
</head>
|
40
40
|
<body>
|
41
41
|
|
ttnn_visualizer/views.py
CHANGED
@@ -43,7 +43,6 @@ from ttnn_visualizer.models import (
|
|
43
43
|
StatusMessage,
|
44
44
|
)
|
45
45
|
from ttnn_visualizer.queries import DatabaseQueries
|
46
|
-
from ttnn_visualizer.remote_sqlite_setup import get_sqlite_path
|
47
46
|
from ttnn_visualizer.serializers import (
|
48
47
|
serialize_buffer,
|
49
48
|
serialize_buffer_pages,
|
@@ -1187,34 +1186,6 @@ def sync_remote_folder():
|
|
1187
1186
|
return Response(status=e.http_status, response=e.message)
|
1188
1187
|
|
1189
1188
|
|
1190
|
-
@api.route("/remote/sqlite/detect-path", methods=["POST"])
|
1191
|
-
def detect_sqlite_path():
|
1192
|
-
connection = request.json
|
1193
|
-
connection = RemoteConnection.model_validate(connection, strict=False)
|
1194
|
-
status_message = StatusMessage(
|
1195
|
-
status=ConnectionTestStates.OK, message="Unable to Detect Path"
|
1196
|
-
)
|
1197
|
-
try:
|
1198
|
-
path = get_sqlite_path(connection=connection)
|
1199
|
-
if path:
|
1200
|
-
status_message = StatusMessage(status=ConnectionTestStates.OK, message=path)
|
1201
|
-
else:
|
1202
|
-
status_message = StatusMessage(
|
1203
|
-
status=ConnectionTestStates.OK, message="Unable to Detect Path"
|
1204
|
-
)
|
1205
|
-
except RemoteConnectionException as e:
|
1206
|
-
current_app.logger.error(f"Unable to detect SQLite3 path {str(e)}")
|
1207
|
-
status_message = StatusMessage(
|
1208
|
-
status=ConnectionTestStates.FAILED,
|
1209
|
-
message="Unable to detect SQLite3 path. See logs",
|
1210
|
-
)
|
1211
|
-
finally:
|
1212
|
-
return Response(
|
1213
|
-
orjson.dumps(status_message.model_dump()),
|
1214
|
-
mimetype="application/json",
|
1215
|
-
)
|
1216
|
-
|
1217
|
-
|
1218
1189
|
@api.route("/remote/use", methods=["POST"])
|
1219
1190
|
def use_remote_folder():
|
1220
1191
|
data = request.get_json(force=True)
|
@@ -1,32 +1,31 @@
|
|
1
1
|
ttnn_visualizer/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5upDx0,93
|
2
|
-
ttnn_visualizer/app.py,sha256=
|
3
|
-
ttnn_visualizer/csv_queries.py,sha256=
|
4
|
-
ttnn_visualizer/decorators.py,sha256=
|
2
|
+
ttnn_visualizer/app.py,sha256=7_jeAjIFhiYGxUriQ8NbztTeilKSLLzyqhM7B0i-qSU,8746
|
3
|
+
ttnn_visualizer/csv_queries.py,sha256=3SH-h1gndDycl0vyCtu6PYt13D_e1j1BsxtN3x7rMqk,16666
|
4
|
+
ttnn_visualizer/decorators.py,sha256=6xBg2J6kJrwc01fcHepLbFJoUhcEKBL410gfaR8YZuM,5383
|
5
5
|
ttnn_visualizer/enums.py,sha256=SEIqp1tlc_zw2vQ8nHH9YTaV0m3Cb8fjn_goqz5wurE,203
|
6
|
-
ttnn_visualizer/exceptions.py,sha256=
|
6
|
+
ttnn_visualizer/exceptions.py,sha256=KVZzb7YaWbq51DNMKPBcJHwG74RMYj_29WTSYOlXXeU,2096
|
7
7
|
ttnn_visualizer/extensions.py,sha256=6OIRJ8-_ccfjOaXSruRXiS29jEbxp4Pyk-0JlD8IHBQ,379
|
8
8
|
ttnn_visualizer/file_uploads.py,sha256=HFcC6TBt5I0oBkiKgM2Qw1W7hpixE8TOTACS5N-rmGE,5013
|
9
9
|
ttnn_visualizer/instances.py,sha256=XctQgQXdlwtuXWFXFletRoX1m1lGUZdiW3TwIIjY0uw,11564
|
10
|
-
ttnn_visualizer/models.py,sha256
|
10
|
+
ttnn_visualizer/models.py,sha256=-GG86m004fDS7QbKWOojYoucC1D8c84JsWaMf6OI_3Q,7811
|
11
11
|
ttnn_visualizer/pytest_plugin.py,sha256=bEG0cbqH0HUuZT5Ox9tFoexFNTyimBBPpI_jp75b54c,2629
|
12
12
|
ttnn_visualizer/queries.py,sha256=0s2zGA7CH1fbV6BWB-MhdHfWW7GhkDti4gVJyDmeCE8,9607
|
13
|
-
ttnn_visualizer/remote_sqlite_setup.py,sha256=VdJk5LfkaJo1XPC-yxy909I0AOgJF1GUjryj0Oe0O14,3498
|
14
13
|
ttnn_visualizer/serializers.py,sha256=LmjHIrFg8BLx1JKVFh9Nd_TcA7nyy1MwY2BOGnX1MKw,8029
|
15
14
|
ttnn_visualizer/settings.py,sha256=W0PCeBCGXONNfFHqI7ATCVGhKv0a02-BhwBwrB3Clag,4660
|
16
15
|
ttnn_visualizer/sftp_operations.py,sha256=9HwbPJPSO1UUQ98d5zeWAkEwR0zFPryUakcI68GqkVw,30181
|
17
16
|
ttnn_visualizer/sockets.py,sha256=_Hdne33r4FrB2tg58Vw87FWLbgQ_ikICVp4o1Mkv2mo,4789
|
18
17
|
ttnn_visualizer/ssh_client.py,sha256=-GS2_1tdlUqVoLfRS02i3_o1fQaM39UQN-jtAnPBmzQ,13511
|
19
18
|
ttnn_visualizer/utils.py,sha256=_W990vRnup9zlWJ-g_Bggyo-wDjCYF49p0nPxWNgxrE,12934
|
20
|
-
ttnn_visualizer/views.py,sha256=
|
21
|
-
ttnn_visualizer/static/index.html,sha256=
|
22
|
-
ttnn_visualizer/static/assets/allPaths-
|
23
|
-
ttnn_visualizer/static/assets/allPathsLoader-
|
19
|
+
ttnn_visualizer/views.py,sha256=djW9iuWY14ILS2oHGVntm_7UUI_F7_fvYrHyckxSP9U,46581
|
20
|
+
ttnn_visualizer/static/index.html,sha256=4xi97USq7MWl0hxTwC3A-PIn5u4xEu9kbmscjNdf3FQ,1135
|
21
|
+
ttnn_visualizer/static/assets/allPaths-BoDgVavt.js,sha256=N331SUT1hSCZaKbaEmfzROeDpyd6pyNRdgvSOqbRpq8,255
|
22
|
+
ttnn_visualizer/static/assets/allPathsLoader-DaQoP_bJ.js,sha256=UW1WKsIhGW3qR1q36SfHKSAQSW-p5fdt5muTTWW79OQ,477
|
23
|
+
ttnn_visualizer/static/assets/index-BxeIYL6g.css,sha256=4nHHCfiI-9eVTeaPVT5DecxA6FtDD_O_MlyWEfsD9AA,624402
|
24
24
|
ttnn_visualizer/static/assets/index-CnPrfHYh.js,sha256=xtrmUrKcMSwTBA7zqXJ6I_L70LzG9DkO-zbC3aWJS8g,289282
|
25
25
|
ttnn_visualizer/static/assets/index-Cnc1EkDo.js,sha256=m-gmIOT0AsJcaW0TVjRpOwSm52Dfp4ZDcrdnIS4qBHA,298140
|
26
|
-
ttnn_visualizer/static/assets/index-
|
27
|
-
ttnn_visualizer/static/assets/index-UWmN5XEZ.css,sha256=-cO_1pADB48X8MthQUaUN-3_JW-9Tx7o1onKY7xoD70,623851
|
26
|
+
ttnn_visualizer/static/assets/index-DpyzM7Uz.js,sha256=RP_Yd6nuHJuJU8ugbjj-9Adk1l94-0yJxMvuU5vjfeU,7899547
|
28
27
|
ttnn_visualizer/static/assets/site-BTBrvHC5.webmanifest,sha256=Uy_XmnGuYFVf-OZuma2NvgEPdrCrevb3HZvaxSIHoA0,456
|
29
|
-
ttnn_visualizer/static/assets/splitPathsBySizeLoader-
|
28
|
+
ttnn_visualizer/static/assets/splitPathsBySizeLoader-csS8C5pu.js,sha256=N76fzW-Vz0I9Hpvh6XrHx7Wuz9Sz_KHu1ZzuWBItWj4,281
|
30
29
|
ttnn_visualizer/static/favicon/android-chrome-192x192.png,sha256=BZWA09Zxaa3fXbaeS6nhWo2e-DUSjm9ElzNQ_xTB5XU,6220
|
31
30
|
ttnn_visualizer/static/favicon/android-chrome-512x512.png,sha256=HBiJSZyguB3o8fMJuqIGcpeBy_9JOdImme3wD02UYCw,62626
|
32
31
|
ttnn_visualizer/static/favicon/favicon-32x32.png,sha256=Zw201qUsczQv1UvoQvJf5smQ2ss10xaTeWxmQNYCGtY,480
|
@@ -35,10 +34,10 @@ ttnn_visualizer/static/sample-data/cluster-desc.yaml,sha256=LMxOmsRUXtVVU5ogzYkX
|
|
35
34
|
ttnn_visualizer/tests/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5upDx0,93
|
36
35
|
ttnn_visualizer/tests/test_queries.py,sha256=HqaDXwudZpXiigJdHkdJP8oiUc-PtHASbpLnQQpbD7A,13792
|
37
36
|
ttnn_visualizer/tests/test_serializers.py,sha256=IJekAZRBpyOr_Ffp0dqSrnhFOU_ZZ8pHma_JO0j23TQ,18762
|
38
|
-
ttnn_visualizer-0.
|
39
|
-
ttnn_visualizer-0.
|
40
|
-
ttnn_visualizer-0.
|
41
|
-
ttnn_visualizer-0.
|
42
|
-
ttnn_visualizer-0.
|
43
|
-
ttnn_visualizer-0.
|
44
|
-
ttnn_visualizer-0.
|
37
|
+
ttnn_visualizer-0.52.0.dist-info/licenses/LICENSE,sha256=bapl7NysYmv8aYSVxr5qFDya0vCqppyjkyyNJYosBdc,20044
|
38
|
+
ttnn_visualizer-0.52.0.dist-info/licenses/LICENSE_understanding.txt,sha256=pymi-yb_RvYM9p2ZA4iSNsImcvhDBBxlGuJCY9dTq7M,233
|
39
|
+
ttnn_visualizer-0.52.0.dist-info/METADATA,sha256=rEJZzvq2q0YG76azu-Lk-C4-G_ZoWwOsGQP1U7N69tU,7780
|
40
|
+
ttnn_visualizer-0.52.0.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
|
41
|
+
ttnn_visualizer-0.52.0.dist-info/entry_points.txt,sha256=QpuUpkmQ_mEHJTMqOBdU0MH2Z4WF_9iFsGACeyyAO1E,61
|
42
|
+
ttnn_visualizer-0.52.0.dist-info/top_level.txt,sha256=M1EGkvDOuIfbhDbcUdz2-TSdmCtDoQ2Uyag9k5JLDSY,16
|
43
|
+
ttnn_visualizer-0.52.0.dist-info/RECORD,,
|
@@ -1,100 +0,0 @@
|
|
1
|
-
# SPDX-License-Identifier: Apache-2.0
|
2
|
-
#
|
3
|
-
# SPDX-FileCopyrightText: © 2025 Tenstorrent AI ULC
|
4
|
-
|
5
|
-
import re
|
6
|
-
|
7
|
-
from ttnn_visualizer.decorators import remote_exception_handler
|
8
|
-
from ttnn_visualizer.enums import ConnectionTestStates
|
9
|
-
from ttnn_visualizer.exceptions import RemoteSqliteException, SSHException
|
10
|
-
from ttnn_visualizer.models import RemoteConnection
|
11
|
-
from ttnn_visualizer.ssh_client import SSHClient
|
12
|
-
|
13
|
-
MINIMUM_SQLITE_VERSION = "3.38.0"
|
14
|
-
|
15
|
-
|
16
|
-
def _execute_ssh_command(remote_connection: RemoteConnection, command: str) -> str:
|
17
|
-
"""Execute an SSH command and return the output."""
|
18
|
-
ssh_client = SSHClient(remote_connection)
|
19
|
-
try:
|
20
|
-
return ssh_client.execute_command(command, timeout=30)
|
21
|
-
except SSHException as e:
|
22
|
-
raise RemoteSqliteException(
|
23
|
-
message=str(e),
|
24
|
-
status=ConnectionTestStates.FAILED,
|
25
|
-
)
|
26
|
-
|
27
|
-
|
28
|
-
def find_sqlite_binary(connection):
|
29
|
-
"""Check if SQLite is installed on the remote machine and return its path."""
|
30
|
-
try:
|
31
|
-
output = _execute_ssh_command(connection, "which sqlite3")
|
32
|
-
binary_path = output.strip()
|
33
|
-
if binary_path:
|
34
|
-
print(f"SQLite binary found at: {binary_path}")
|
35
|
-
return binary_path
|
36
|
-
return None
|
37
|
-
except RemoteSqliteException:
|
38
|
-
# Re-raise RemoteSqliteException as-is
|
39
|
-
raise
|
40
|
-
except Exception as e:
|
41
|
-
raise RemoteSqliteException(
|
42
|
-
message=f"Error finding SQLite binary: {str(e)}",
|
43
|
-
status=ConnectionTestStates.FAILED,
|
44
|
-
)
|
45
|
-
|
46
|
-
|
47
|
-
def is_sqlite_executable(remote_connection: RemoteConnection, binary_path):
|
48
|
-
"""Check if the SQLite binary is executable by trying to run it."""
|
49
|
-
try:
|
50
|
-
output = _execute_ssh_command(remote_connection, f"{binary_path} --version")
|
51
|
-
version_output = output.strip()
|
52
|
-
|
53
|
-
version = get_sqlite_version(version_output)
|
54
|
-
if not is_version_at_least(version, MINIMUM_SQLITE_VERSION):
|
55
|
-
raise Exception(
|
56
|
-
f"SQLite version {version} is below the required minimum of {MINIMUM_SQLITE_VERSION}."
|
57
|
-
)
|
58
|
-
|
59
|
-
print(f"SQLite binary at {binary_path} is executable. Version: {version}")
|
60
|
-
return True
|
61
|
-
|
62
|
-
except RemoteSqliteException:
|
63
|
-
# Re-raise RemoteSqliteException as-is
|
64
|
-
raise
|
65
|
-
except Exception as e:
|
66
|
-
raise Exception(f"Error checking SQLite executability: {str(e)}")
|
67
|
-
|
68
|
-
|
69
|
-
def get_sqlite_version(version_output):
|
70
|
-
"""Extract and return the SQLite version number from the output."""
|
71
|
-
match = re.search(r"(\d+\.\d+\.\d+)", version_output)
|
72
|
-
if match:
|
73
|
-
return match.group(1)
|
74
|
-
else:
|
75
|
-
raise ValueError("Could not parse SQLite version from output.")
|
76
|
-
|
77
|
-
|
78
|
-
def is_version_at_least(version, minimum_version):
|
79
|
-
"""Check if the provided version is at least the minimum version."""
|
80
|
-
version_parts = [int(v) for v in version.split(".")]
|
81
|
-
minimum_parts = [int(v) for v in minimum_version.split(".")]
|
82
|
-
|
83
|
-
return version_parts >= minimum_parts
|
84
|
-
|
85
|
-
|
86
|
-
@remote_exception_handler
|
87
|
-
def check_sqlite_path(remote_connection: RemoteConnection):
|
88
|
-
try:
|
89
|
-
is_sqlite_executable(remote_connection, remote_connection.sqliteBinaryPath)
|
90
|
-
except Exception as e:
|
91
|
-
raise RemoteSqliteException(message=str(e), status=ConnectionTestStates.FAILED)
|
92
|
-
|
93
|
-
|
94
|
-
def get_sqlite_path(connection: RemoteConnection):
|
95
|
-
try:
|
96
|
-
path = find_sqlite_binary(connection)
|
97
|
-
if path:
|
98
|
-
return path
|
99
|
-
except Exception as e:
|
100
|
-
raise RemoteSqliteException(message=str(e), status=ConnectionTestStates.FAILED)
|
@@ -1,2 +0,0 @@
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/allPaths-DucASGPg.js","assets/index-CnPrfHYh.js","assets/index-Cnc1EkDo.js","assets/index-DFKuZosj.js","assets/index-UWmN5XEZ.css"])))=>i.map(i=>d[i]);
|
2
|
-
import{_ as e}from"./index-DFKuZosj.js";const s=async(t,a)=>{const{getIconPaths:o}=await e(async()=>{const{getIconPaths:r}=await import("./allPaths-DucASGPg.js");return{getIconPaths:r}},__vite__mapDeps([0,1,2,3,4]));return o(t,a)};export{s as allPathsLoader};
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|