sima-cli 0.0.33__py3-none-any.whl → 0.0.35__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.
sima_cli/__version__.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # sima_cli/__version__.py
2
- __version__ = "0.0.33"
2
+ __version__ = "0.0.35"
sima_cli/auth/login.py CHANGED
@@ -60,15 +60,15 @@ def login_internal():
60
60
 
61
61
  click.echo(f"✅ Identity token is valid")
62
62
 
63
- # Step 2: Exchange for a short-lived access token (default: 7 days)
64
- access_token, user_name = exchange_identity_token(identity_token, exchange_url, expires_in=1209600)
63
+ # Step 2: Exchange for a short-lived access token (default: 30 days)
64
+ access_token, user_name = exchange_identity_token(identity_token, exchange_url, expires_in=2592000)
65
65
 
66
66
  if not access_token:
67
67
  return click.echo("❌ Failed to acquire short-lived access token.")
68
68
 
69
69
  # Step 3: Save token to internal auth config
70
70
  set_auth_token(access_token, internal=True)
71
- click.echo(f"💾 Short-lived access token saved successfully for {user_name} (valid for 14 days).")
71
+ click.echo(f"💾 Short-lived access token saved successfully for {user_name} (valid for 30 days).")
72
72
 
73
73
 
74
74
  def _login_external():
sima_cli/cli.py CHANGED
@@ -151,7 +151,7 @@ def download(ctx, url, dest):
151
151
  default='edgeai',
152
152
  help="Optional SSH password for remote board (default is 'edgeai')."
153
153
  )
154
- @click.option("-f", "--flavor", type=click.Choice(["headless", "full"], case_sensitive=False), default="headless", show_default=True, help="firmware flavor, full image supports NVMe, GUI on Modalix DevKit.")
154
+ @click.option("-f", "--flavor", type=click.Choice(["headless", "full", "auto"], case_sensitive=False), default="auto", show_default=True, help="firmware flavor, full image supports NVMe, GUI on Modalix DevKit.")
155
155
  @click.pass_context
156
156
  def update(ctx, version_or_url, ip, yes, passwd, flavor):
157
157
  """
@@ -9,7 +9,6 @@ import tarfile
9
9
  import zipfile
10
10
  import stat
11
11
  from urllib.parse import urlparse
12
- from InquirerPy import inquirer
13
12
 
14
13
  from typing import Dict
15
14
  from tqdm import tqdm
@@ -113,6 +112,8 @@ def selectable_resource_handler(metadata):
113
112
  choices = [(f"{i.get('name','Unnamed')} ({i.get('url','')})" if i.get('url') else i.get('name','Unnamed')) for i in selectable]
114
113
  choices.append("Skip")
115
114
 
115
+ from InquirerPy import inquirer
116
+
116
117
  sel = inquirer.select(message="Select an opt-in resource to download:", choices=choices).execute()
117
118
  if sel == "Skip":
118
119
  print("✅ No selectable resource chosen.")
@@ -390,6 +391,11 @@ def _is_platform_compatible(metadata: dict) -> bool:
390
391
 
391
392
  for i, platform_entry in enumerate(platforms):
392
393
  platform_type = platform_entry.get("type")
394
+
395
+ # For SDK environment compatibility check.
396
+ if (platform_type, env_type, env_subtype) == ("palette", "sdk", "palette"):
397
+ return True
398
+
393
399
  if platform_type != env_type:
394
400
  continue
395
401
 
@@ -1,4 +1,3 @@
1
- from InquirerPy import inquirer
2
1
  import subprocess
3
2
  import os
4
3
  import re
@@ -144,6 +143,7 @@ def set_default_route(iface, ip):
144
143
  check=True
145
144
  )
146
145
  print(f"✅ Default route set via {iface} ({gateway})")
146
+
147
147
  except subprocess.CalledProcessError:
148
148
  print(f"❌ Failed to set default route via {iface}")
149
149
 
@@ -152,6 +152,10 @@ def network_menu():
152
152
  print("❌ This command only runs on the DevKit")
153
153
  return
154
154
 
155
+ from InquirerPy import inquirer
156
+
157
+ print("✅ Scanning network configuration, please wait...")
158
+
155
159
  while True:
156
160
  interfaces = get_interfaces()
157
161
  choices = ["🚪 Quit Menu"]
@@ -165,6 +169,8 @@ def network_menu():
165
169
  iface_map[label] = iface
166
170
 
167
171
  try:
172
+
173
+
168
174
  iface_choice = inquirer.fuzzy(
169
175
  message="Select Ethernet Interface:",
170
176
  choices=choices,
sima_cli/update/local.py CHANGED
@@ -86,7 +86,7 @@ def get_local_board_info() -> Tuple[str, str, bool]:
86
86
  Retrieve the local board type and build version by reading /etc/build or /etc/buildinfo.
87
87
 
88
88
  Returns:
89
- (board_type, build_version, fdt_name, full_image): Tuple of strings, or ('', '') on failure.
89
+ (board_type, build_version, devkit_name, full_image): Tuple of strings, or ('', '') on failure.
90
90
  """
91
91
  board_type = ""
92
92
  build_version = ""
@@ -107,9 +107,9 @@ def get_local_board_info() -> Tuple[str, str, bool]:
107
107
  except Exception:
108
108
  continue
109
109
 
110
- fdt_name = get_exact_devkit_type()
110
+ devkit_name = get_exact_devkit_type()
111
111
 
112
- return board_type, build_version, fdt_name, is_board_running_full_image()
112
+ return board_type, build_version, devkit_name, is_board_running_full_image()
113
113
 
114
114
 
115
115
  def get_boot_mmc(mounts_path="/proc/mounts", cmdline_path="/proc/cmdline"):
sima_cli/update/remote.py CHANGED
@@ -53,19 +53,22 @@ def _wait_for_ssh(ip: str, timeout: int = 120):
53
53
  else:
54
54
  print("\r✅ Board is online! \n")
55
55
 
56
- def get_remote_board_info(ip: str, passwd: str = DEFAULT_PASSWORD) -> Tuple[str, str, str]:
56
+
57
+ def get_remote_board_info(ip: str, passwd: str = DEFAULT_PASSWORD) -> Tuple[str, str, str, bool]:
57
58
  """
58
- Connect to the remote board and retrieve board type, build version, and fdt_name.
59
+ Connect to the remote board and retrieve board type, build version, and devkit model.
59
60
 
60
61
  Args:
61
62
  ip (str): IP address of the board.
63
+ passwd (str): SSH password.
62
64
 
63
65
  Returns:
64
- (board_type, build_version, fdt_name, full_image): Tuple of strings, or ('', '', '') on failure.
66
+ (board_type, build_version, devkit_model, full_image):
67
+ Tuple of strings + bool, or ('', '', '', False) on failure.
65
68
  """
66
69
  board_type = ""
67
70
  build_version = ""
68
- fdt_name = ""
71
+ devkit_model = ""
69
72
  full_image = False
70
73
 
71
74
  try:
@@ -77,12 +80,17 @@ def get_remote_board_info(ip: str, passwd: str = DEFAULT_PASSWORD) -> Tuple[str,
77
80
  _, stdout, _ = ssh.exec_command("cat /etc/build 2>/dev/null || cat /etc/buildinfo 2>/dev/null")
78
81
  build_output = stdout.read().decode()
79
82
 
80
- # Retrieve fdt_name from fw_printenv
81
- _, stdout, _ = ssh.exec_command("fw_printenv fdt_name 2>/dev/null")
82
- fdt_output = stdout.read().decode()
83
-
84
- # 3) NVMe presence (ensure sbin is in PATH for non-root shells)
85
- # Note: 'command -v' is POSIX; 'which' as fallback on some busybox setups.
83
+ # Retrieve model from /proc/device-tree/model
84
+ _, stdout, _ = ssh.exec_command("cat /proc/device-tree/model 2>/dev/null || echo ''")
85
+ model_output = stdout.read().decode().strip()
86
+ if model_output:
87
+ # Normalize string: remove "SiMa.ai " prefix and trailing "Board"
88
+ if model_output.startswith("SiMa.ai "):
89
+ model_output = model_output[len("SiMa.ai "):]
90
+ model_output = model_output.replace(" Board", "")
91
+ devkit_model = model_output.lower().replace(" ", "-")
92
+
93
+ # Check for NVMe tool presence (determine if full image is flashed)
86
94
  nvme_check_cmd = r'PATH="$PATH:/usr/sbin:/sbin"; command -v nvme >/dev/null 2>&1 || which nvme >/dev/null 2>&1; echo $?'
87
95
  _, stdout, _ = ssh.exec_command(nvme_check_cmd)
88
96
  nvme_rc = stdout.read().decode().strip()
@@ -90,6 +98,7 @@ def get_remote_board_info(ip: str, passwd: str = DEFAULT_PASSWORD) -> Tuple[str,
90
98
 
91
99
  ssh.close()
92
100
 
101
+ # Parse build info
93
102
  for line in build_output.splitlines():
94
103
  line = line.strip()
95
104
  if line.startswith("MACHINE"):
@@ -97,11 +106,7 @@ def get_remote_board_info(ip: str, passwd: str = DEFAULT_PASSWORD) -> Tuple[str,
97
106
  elif line.startswith("SIMA_BUILD_VERSION"):
98
107
  build_version = line.split("=", 1)[-1].strip()
99
108
 
100
- for line in fdt_output.splitlines():
101
- if line.startswith("fdt_name"):
102
- fdt_name = line.split("=", 1)[-1].strip().replace('.dtb', '')
103
-
104
- return board_type, build_version, fdt_name, full_image
109
+ return board_type, build_version, devkit_model, full_image
105
110
 
106
111
  except Exception as e:
107
112
  click.echo(f"Unable to retrieve board info with error: {e}, board may be still booting.")
@@ -7,7 +7,6 @@ import tarfile
7
7
  import gzip
8
8
  import subprocess
9
9
  import shutil
10
- from InquirerPy import inquirer
11
10
  from urllib.parse import urlparse
12
11
  from typing import List
13
12
  from sima_cli.utils.env import get_environment_type
@@ -82,6 +81,11 @@ def _confirm_flavor_switching(full_image: bool, flavor: str) -> str:
82
81
  Returns:
83
82
  str: The flavor to use ('full' or 'headless')
84
83
  """
84
+ # when the flavor is set to auto use the detected flavor instead
85
+ if flavor == 'auto':
86
+ flavor = 'full' if full_image else 'headless'
87
+ click.echo(f"✅ Automatically detected the flavor of the running image: [{flavor}], Proceeding to update")
88
+
85
89
  if (full_image and flavor != 'full') or (not full_image and flavor == 'full'):
86
90
  click.echo(f"🔄 The current image running on the board has a different flavor from what you specified ({flavor}).")
87
91
  click.echo("Please choose an option:")
@@ -113,7 +117,9 @@ def _pick_from_available_versions(board: str, version_or_url: str, internal: boo
113
117
  try:
114
118
  if len(available_versions) > 1:
115
119
  click.echo("Multiple firmware versions found matching your input:")
116
-
120
+
121
+ from InquirerPy import inquirer
122
+
117
123
  selected_version = inquirer.fuzzy(
118
124
  message="Select a version:",
119
125
  choices=available_versions,
@@ -440,7 +446,7 @@ def _update_remote(extracted_paths: List[str], ip: str, board: str, passwd: str,
440
446
 
441
447
  # Get remote board info
442
448
  click.echo("🔍 Checking remote board type and version...")
443
- remote_board, remote_version, fdt_name, full_image = get_remote_board_info(ip, passwd)
449
+ remote_board, remote_version, _, _ = get_remote_board_info(ip, passwd)
444
450
 
445
451
  if not remote_board:
446
452
  click.echo("❌ Could not determine remote board type.")
@@ -480,7 +486,7 @@ def download_image(version_or_url: str, board: str, swtype: str, internal: bool
480
486
  extracted_paths = _download_image(version_or_url, board, internal, update_type, flavor=flavor, swtype=swtype)
481
487
  return extracted_paths
482
488
 
483
- def perform_update(version_or_url: str, ip: str = None, internal: bool = False, passwd: str = "edgeai", auto_confirm: bool = False, flavor: str = 'headless'):
489
+ def perform_update(version_or_url: str, ip: str = None, internal: bool = False, passwd: str = "edgeai", auto_confirm: bool = False, flavor: str = 'auto'):
484
490
  r"""
485
491
  Update the system based on environment and input.
486
492
 
@@ -495,7 +501,7 @@ def perform_update(version_or_url: str, ip: str = None, internal: bool = False,
495
501
  internal (bool): If True, enable internal-only behaviors (e.g., Artifactory access).
496
502
  passwd (str): Password for the board user (default: "edgeai").
497
503
  auto_confirm (bool): If True, auto-confirm firmware update without prompting.
498
- flavor (str): headless or full
504
+ flavor (str): headless or full, or auto (detect the running image flavor and use it)
499
505
  """
500
506
  try:
501
507
  board = ''
@@ -504,17 +510,17 @@ def perform_update(version_or_url: str, ip: str = None, internal: bool = False,
504
510
  click.echo(f"🔧 Requested version or URL: {version_or_url}, with flavor {flavor}")
505
511
 
506
512
  if env_type == 'board':
507
- board, version, fdt_name, full_image = get_local_board_info()
513
+ board, version, devkit_name, full_image = get_local_board_info()
508
514
  else:
509
- board, version, fdt_name, full_image = get_remote_board_info(ip, passwd)
515
+ board, version, devkit_name, full_image = get_remote_board_info(ip, passwd)
510
516
 
511
517
  flavor = _confirm_flavor_switching(full_image=full_image, flavor=flavor)
512
518
 
513
519
  if board in ['davinci', 'modalix']:
514
- click.echo(f"🔧 Target board: {board} : {fdt_name}, board currently running: {version}, full_image: {full_image}")
520
+ click.echo(f"🔧 Target board: {board}, specific type: [{devkit_name}], board currently running: {version}, full_image: {full_image}")
515
521
 
516
- if flavor == 'full' and 'modalix' not in fdt_name:
517
- click.echo(f"❌ You've requested updating {fdt_name} to full image, this is only supported for the Modalix DevKit")
522
+ if flavor == 'full' and 'modalix' not in devkit_name:
523
+ click.echo(f"❌ You've requested updating {devkit_name} to full image, this is only supported for the Modalix DevKit")
518
524
  return
519
525
 
520
526
  # Davinci only supports headless build, so ignore the full flavor
sima_cli/utils/env.py CHANGED
@@ -73,44 +73,51 @@ def get_sima_board_type() -> str:
73
73
 
74
74
  def is_modalix_devkit() -> bool:
75
75
  """
76
- Determines whether the current system is a Modalix DevKit (SOM)
77
- by checking if 'fdt_name=modalix-som.dtb' is present in fw_printenv output.
76
+ Determines whether the current system is a Modalix DevKit (SoM)
77
+ by checking if "Modalix SoM" is present in /proc/device-tree/model.
78
78
 
79
79
  Returns:
80
- bool: True if running on a Modalix DevKit, False otherwise.
80
+ bool: True if running on a Modalix DevKit (SoM), False otherwise.
81
81
  """
82
- if not shutil.which("fw_printenv"):
82
+ model_path = "/proc/device-tree/model"
83
+ if not os.path.exists(model_path):
83
84
  return False
84
85
 
85
86
  try:
86
- output = subprocess.check_output(["fw_printenv"], text=True)
87
- for line in output.splitlines():
88
- if line.strip().startswith("fdt_name="):
89
- return "modalix-som.dtb" in line
90
- except subprocess.CalledProcessError:
87
+ with open(model_path, "r") as f:
88
+ line = f.readline().strip()
89
+ return "Modalix SoM" in line
90
+ except Exception:
91
91
  return False
92
-
93
- return False
92
+
94
93
 
95
94
  def get_exact_devkit_type() -> str:
96
95
  """
97
- Extracts the exact devkit type from 'fdt_name' in fw_printenv output.
96
+ Extracts the exact devkit type from /proc/device-tree/model.
97
+
98
+ Example mappings:
99
+ "SiMa.ai Modalix SoM Board" -> "modalix-som"
100
+ "SiMa.ai Modalix DVT Board" -> "modalix-dvt"
101
+ "SiMa.ai DaVinci Half-Height..." -> "davinci-half-height-half-length"
98
102
 
99
103
  Returns:
100
- str: The value of fdt_name (e.g., "modalix-som"), or an empty string if not found or unavailable.
104
+ str: Normalized devkit type (lowercase, spaces -> "-"),
105
+ or an empty string if not found or unavailable.
101
106
  """
102
- if not shutil.which("fw_printenv"):
107
+ model_path = "/proc/device-tree/model"
108
+ if not os.path.exists(model_path):
103
109
  return ""
104
110
 
105
111
  try:
106
- output = subprocess.check_output(["fw_printenv"], text=True)
107
- for line in output.splitlines():
108
- line = line.strip()
109
- if line.startswith("fdt_name="):
110
- _, value = line.split("=", 1)
111
- return value.strip().replace('.dtb','')
112
- except subprocess.CalledProcessError:
113
- return ""
112
+ with open(model_path, "r") as f:
113
+ line = f.readline().strip()
114
+ # Remove "SiMa.ai " prefix if present
115
+ if line.startswith("SiMa.ai "):
116
+ line = line[len("SiMa.ai "):]
117
+ # Remove trailing "Board"
118
+ line = line.replace(" Board", "")
119
+ # Normalize
120
+ return line.lower().replace(" ", "-")
114
121
  except Exception:
115
122
  return ""
116
123
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sima-cli
3
- Version: 0.0.33
3
+ Version: 0.0.35
4
4
  Summary: CLI tool for SiMa Developer Portal to download models, firmware, and apps.
5
5
  Home-page: https://developer.sima.ai/
6
6
  Author: SiMa.ai
@@ -1,12 +1,12 @@
1
1
  sima_cli/__init__.py,sha256=Nb2jSg9-CX1XvSc1c21U9qQ3atINxphuNkNfmR-9P3o,332
2
2
  sima_cli/__main__.py,sha256=ehzD6AZ7zGytC2gLSvaJatxeD0jJdaEvNJvwYeGsWOg,69
3
- sima_cli/__version__.py,sha256=3ahnchILqB7qDs5_EQeH5x6nIg_PgKEwGZZ5MOomFCg,49
4
- sima_cli/cli.py,sha256=uCZ-9mKBGyGtfx3p97WZkdMjXL2KJlqihfZm8VsWiqw,17220
3
+ sima_cli/__version__.py,sha256=dV_wUomyW1FHtFgcX6fG1NT7ViHhyASu0XFi6X2mgRA,49
4
+ sima_cli/cli.py,sha256=qnAQtlaM87tM8t9663NTIxxqMWIpU5--4V-v_0-gYZQ,17224
5
5
  sima_cli/app_zoo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  sima_cli/app_zoo/app.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  sima_cli/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  sima_cli/auth/basic_auth.py,sha256=ht_mVXBtxV2UGvUYwvhkPHs4cMWL5Hw2B_OFxWdKw6c,8825
9
- sima_cli/auth/login.py,sha256=yCYXWgrfbP4jSTZ3hITfxlgHkdVQVzsd8hQKpqaqCKs,3780
9
+ sima_cli/auth/login.py,sha256=nE-dSHK_husXw1XJaEcOe3I1_bnwHkLgO_BqKuQODDM,3781
10
10
  sima_cli/data/resources_internal.yaml,sha256=zlQD4cSnZK86bLtTWuvEudZTARKiuIKmB--Jv4ajL8o,200
11
11
  sima_cli/data/resources_public.yaml,sha256=U7hmUomGeQ2ULdo1BU2OQHr0PyKBamIdK9qrutDlX8o,201
12
12
  sima_cli/download/__init__.py,sha256=6y4O2FOCYFR2jdnQoVi3hRtEoZ0Gw6rydlTy1SGJ5FE,218
@@ -14,14 +14,14 @@ sima_cli/download/downloader.py,sha256=nCBrr_0WdnKTIyecwKpg1sCdfm_4PSQTRPwEbiezy
14
14
  sima_cli/install/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  sima_cli/install/hostdriver.py,sha256=kAWDLebs60mbWIyTbUxmNrChcKW1uD5r7FtWNSUVUE4,5852
16
16
  sima_cli/install/metadata_info.py,sha256=wmMqwzGfXbuilkqaxRVrFOzOtTOiONkmPCyA2oDAQpA,2168
17
- sima_cli/install/metadata_installer.py,sha256=UPXxXL5gH0iotX8WCUgEbySbYeIHE1UwsfpZvACjZQs,18928
17
+ sima_cli/install/metadata_installer.py,sha256=kWhERFYfv3hkfAkFJ5yIMu0vv4Kkav8w1DPOOQEysmc,19098
18
18
  sima_cli/install/metadata_validator.py,sha256=7954rp9vFRNnqmIMvCVTjq40kUIEbGXzfc8HmQmChe0,5221
19
19
  sima_cli/install/optiview.py,sha256=r4DYdQDTUbZVCR87hl5T21gsjZrhqpU8hWnYxKmUJ_k,4790
20
20
  sima_cli/install/palette.py,sha256=uRznoHa4Mv9ZXHp6AoqknfC3RxpYNKi9Ins756Cyifk,3930
21
21
  sima_cli/mla/meminfo.py,sha256=ndc8kQJmWGEIdvNh6iIhATGdrkqM2pbddr_eHxaPNfg,1466
22
22
  sima_cli/model_zoo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  sima_cli/model_zoo/model.py,sha256=q91Nrg62j1TqwPO8HiX4nlEFCCmzNEFcyFTBVMbJm8w,9836
24
- sima_cli/network/network.py,sha256=ToDCQBfX0bUFEWWtfS8srImK5T11MX6R4MBQFM80faY,7617
24
+ sima_cli/network/network.py,sha256=kXYI2oxgeIg7LoGt2VKF9JlK8DIfQT87A9-x-D6uHCA,7714
25
25
  sima_cli/sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  sima_cli/sdk/syscheck.py,sha256=h9zCULW67y4i2hqiGc-hc1ucBDShA5FAe9NxwBGq-fM,4575
27
27
  sima_cli/serial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -32,21 +32,21 @@ sima_cli/update/__init__.py,sha256=0P-z-rSaev40IhfJXytK3AFWv2_sdQU4Ry6ei2sEus0,6
32
32
  sima_cli/update/bmaptool.py,sha256=KrhUGShBwY4Wzz50QiuMYAxxPgEy1nz5C68G-0a4qF4,4988
33
33
  sima_cli/update/bootimg.py,sha256=OA_GyZwI8dbU3kaucKmoxAZbnnSnjXeOkU6yuDPji1k,13632
34
34
  sima_cli/update/cleanlog.py,sha256=-V6eDl3MdsvDmCfkKUJTqkXJ_WnLJE01uxS7z96b15g,909
35
- sima_cli/update/local.py,sha256=yOMvOu9nrODEzYZBrxUpdmlfqmkahkDk9nAEuG4RyAg,5588
35
+ sima_cli/update/local.py,sha256=z3oRk6JH-zbCdoS3JpgeW_ZB4kolG7nPhLC55A2yssk,5597
36
36
  sima_cli/update/netboot.py,sha256=hsJQLq4HVwFFkaWjA54VZdkMGDhO0RmylciS78qAfrM,19663
37
37
  sima_cli/update/query.py,sha256=6RgvQfQT1_EtBGcibvVcz003dRKOq17NaGgL2mhaBbY,4891
38
- sima_cli/update/remote.py,sha256=dAMIGpHqpf7VBps9JPe4hfHD_qyi1tG6ZW8E_qXQQiQ,14446
39
- sima_cli/update/updater.py,sha256=UEWcV3wZbikNaTMk1nWFGiciBwUZtdX94reZWn22plk,24213
38
+ sima_cli/update/remote.py,sha256=wC4MSBQVxmibxtPBchAzFMhZYcRjxTiLlPSzVI0en4o,14690
39
+ sima_cli/update/updater.py,sha256=NPd32OzM_356Nm1bEDDNh7faubW_VSOk12J4I6Yc2SQ,24580
40
40
  sima_cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
41
  sima_cli/utils/artifactory.py,sha256=6YyVpzVm8ATy7NEwT9nkWx-wptkXrvG7Wl_zDT6jmLs,2390
42
42
  sima_cli/utils/config.py,sha256=wE-cPQqY_gOqaP8t01xsRHD9tBUGk9MgBUm2GYYxI3E,1616
43
43
  sima_cli/utils/config_loader.py,sha256=7I5we1yiCai18j9R9jvhfUzAmT3OjAqVK35XSLuUw8c,2005
44
44
  sima_cli/utils/disk.py,sha256=66Kr631yhc_ny19up2aijfycWfD35AeLQOJgUsuH2hY,446
45
- sima_cli/utils/env.py,sha256=IP5HrH0lE7RMSiBeXcEt5GCLMT5p-QQroG-uGzl5XFU,8181
45
+ sima_cli/utils/env.py,sha256=LtV8S1kCkOpi-7Gj4rhidQRN13x_NDKy4W_LxujheeI,8400
46
46
  sima_cli/utils/net.py,sha256=WVntA4CqipkNrrkA4tBVRadJft_pMcGYh4Re5xk3rqo,971
47
47
  sima_cli/utils/network.py,sha256=UvqxbqbWUczGFyO-t1SybG7Q-x9kjUVRNIn_D6APzy8,1252
48
48
  sima_cli/utils/pkg_update_check.py,sha256=IAV_NAOsBDL_lYNYMRYfdZWuVq-rJ_zzHjJJZ7UQaoc,3274
49
- sima_cli-0.0.33.dist-info/licenses/LICENSE,sha256=a260OFuV4SsMZ6sQCkoYbtws_4o2deFtbnT9kg7Rfd4,1082
49
+ sima_cli-0.0.35.dist-info/licenses/LICENSE,sha256=a260OFuV4SsMZ6sQCkoYbtws_4o2deFtbnT9kg7Rfd4,1082
50
50
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  tests/test_app_zoo.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  tests/test_auth.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -55,8 +55,8 @@ tests/test_download.py,sha256=t87DwxlHs26_ws9rpcHGwr_OrcRPd3hz6Zmm0vRee2U,4465
55
55
  tests/test_firmware.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  tests/test_model_zoo.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  tests/test_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
- sima_cli-0.0.33.dist-info/METADATA,sha256=sB-Dp9MaVUhAwlWCum4LvSNdyFdUZJmoqgCa88qH8Ug,3705
59
- sima_cli-0.0.33.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
60
- sima_cli-0.0.33.dist-info/entry_points.txt,sha256=xRYrDq1nCs6R8wEdB3c1kKuimxEjWJkHuCzArQPT0Xk,47
61
- sima_cli-0.0.33.dist-info/top_level.txt,sha256=FtrbAUdHNohtEPteOblArxQNwoX9_t8qJQd59fagDlc,15
62
- sima_cli-0.0.33.dist-info/RECORD,,
58
+ sima_cli-0.0.35.dist-info/METADATA,sha256=wT-QS9rbFlezkg5M_CmGhmMmHhxZ4XqPVovYiLJLSRw,3705
59
+ sima_cli-0.0.35.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
60
+ sima_cli-0.0.35.dist-info/entry_points.txt,sha256=xRYrDq1nCs6R8wEdB3c1kKuimxEjWJkHuCzArQPT0Xk,47
61
+ sima_cli-0.0.35.dist-info/top_level.txt,sha256=FtrbAUdHNohtEPteOblArxQNwoX9_t8qJQd59fagDlc,15
62
+ sima_cli-0.0.35.dist-info/RECORD,,