mas-cli 13.16.0__py3-none-any.whl → 13.17.2__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 mas-cli might be problematic. Click here for more details.

mas/cli/update/app.py CHANGED
@@ -242,13 +242,13 @@ class UpdateApp(BaseApp):
242
242
  self.printH1("Select IBM Maximo Operator Catalog Version")
243
243
  self.printDescription([
244
244
  "Select MAS Catalog",
245
- " 1) Apr 03 2025 Update (MAS 9.0.10, 8.11.21, & 8.10.24)",
246
- " 2) Mar 06 2025 Update (MAS 9.0.9, 8.11.20, & 8.10.23)",
247
- " 3) Feb 06 2025 Update (MAS 9.0.8, 8.11.19, & 8.10.22)",
245
+ " 1) Jun 05 2025 Update (MAS 9.1.0, 9.0.12, 8.11.21, & 8.10.26)",
246
+ " 2) May 01 2025 Update (MAS 9.0.11, 8.11.22, & 8.10.25)",
247
+ " 3) Apr 03 2025 Update (MAS 9.0.10, 8.11.21, & 8.10.24)",
248
248
  ])
249
249
 
250
250
  catalogOptions = [
251
- "v9-250403-amd64", "v9-250306-amd64", "v9-250206-amd64",
251
+ "v9-250624-amd64", "v9-250501-amd64", "v9-250403-amd64",
252
252
  ]
253
253
  self.promptForListSelect("Select catalog version", catalogOptions, "mas_catalog_version", default=1)
254
254
 
@@ -362,6 +362,8 @@ class UpdateApp(BaseApp):
362
362
  "v9-250206-amd64": "7.0.12",
363
363
  "v9-250306-amd64": "7.0.12",
364
364
  "v9-250403-amd64": "7.0.12",
365
+ "v9-250501-amd64": "7.0.12",
366
+ "v9-250624-amd64": "7.0.12",
365
367
  }
366
368
  catalogVersion = self.getParam('mas_catalog_version')
367
369
  if catalogVersion in mongoVersions:
@@ -375,6 +377,7 @@ class UpdateApp(BaseApp):
375
377
  currentMongoVersionMajor = currentMongoVersion.split(".")[0]
376
378
 
377
379
  if targetMongoVersionMajor > currentMongoVersionMajor:
380
+ self.setParam("mongodb_action", "install")
378
381
  # Let users know that Mongo will be upgraded if existing MongoDb major.minor version
379
382
  # is lower than the target major version
380
383
  # We don't show this message for normal updates, e.g. 5.0.1 to 5.0.2
@@ -399,7 +402,7 @@ class UpdateApp(BaseApp):
399
402
  self.showMongoDependencyUpdateNotice(currentMongoVersion, targetMongoVersion)
400
403
  self.fatalError(f"Existing MongoDB Community Edition installation at version {currentMongoVersion} cannot be downgraded to version {targetMongoVersion}")
401
404
  else:
402
- h.stop_and_persist(symbol=self.successIcon, text=f"MongoDb CE is aleady installed at version {targetMongoVersion}")
405
+ h.stop_and_persist(symbol=self.successIcon, text=f"MongoDb CE is already installed at version {targetMongoVersion}")
403
406
  else:
404
407
  # There's no MongoDb instance installed in the cluster, so nothing to do
405
408
  h.stop_and_persist(symbol=self.successIcon, text="No MongoDb CE instances found")
@@ -494,7 +497,9 @@ class UpdateApp(BaseApp):
494
497
  "v9-250109-amd64": "5.0.0",
495
498
  "v9-250206-amd64": "5.0.0",
496
499
  "v9-250306-amd64": "5.0.0",
497
- "v9-250403-amd64": "5.0.0"
500
+ "v9-250403-amd64": "5.0.0",
501
+ "v9-250501-amd64": "5.0.0",
502
+ "v9-250624-amd64": "5.1.3",
498
503
  }
499
504
 
500
505
  with Halo(text='Checking for IBM Cloud Pak for Data', spinner=self.spinner) as h:
mas/cli/upgrade/app.py CHANGED
@@ -20,15 +20,16 @@ from halo import Halo
20
20
  from ..cli import BaseApp
21
21
  from ..validators import InstanceIDValidator
22
22
  from .argParser import upgradeArgParser
23
+ from .settings import UpgradeSettingsMixin
23
24
 
24
25
  from mas.devops.ocp import createNamespace
25
- from mas.devops.mas import listMasInstances, getMasChannel
26
+ from mas.devops.mas import listMasInstances, getMasChannel, getWorkspaceId, verifyAppInstance
26
27
  from mas.devops.tekton import installOpenShiftPipelines, updateTektonDefinitions, launchUpgradePipeline
27
28
 
28
29
  logger = logging.getLogger(__name__)
29
30
 
30
31
 
31
- class UpgradeApp(BaseApp):
32
+ class UpgradeApp(BaseApp, UpgradeSettingsMixin):
32
33
  def upgrade(self, argv):
33
34
  """
34
35
  Upgrade MAS instance
@@ -38,6 +39,7 @@ class UpgradeApp(BaseApp):
38
39
  self.noConfirm = args.no_confirm
39
40
  self.skipPreCheck = args.skip_pre_check
40
41
  self.licenseAccepted = args.accept_license
42
+ self.devMode = args.dev_mode
41
43
 
42
44
  if instanceId is None:
43
45
  self.printH1("Set Target OpenShift Cluster")
@@ -45,6 +47,8 @@ class UpgradeApp(BaseApp):
45
47
  self.connect()
46
48
  else:
47
49
  logger.debug("MAS instance ID is set, so we assume already connected to the desired OCP")
50
+ # Need to lookup target architecture because configDb2 will try to access self.architecture
51
+ self.lookupTargetArchitecture()
48
52
 
49
53
  if self.dynamicClient is None:
50
54
  print_formatted_text(HTML("<Red>Error: The Kubernetes dynamic Client is not available. See log file for details</Red>"))
@@ -71,16 +75,21 @@ class UpgradeApp(BaseApp):
71
75
 
72
76
  currentChannel = getMasChannel(self.dynamicClient, instanceId)
73
77
  if currentChannel is not None:
74
- if currentChannel not in self.upgrade_path:
75
- self.fatalError(f"No upgrade available, {instanceId} is are already on the latest release {currentChannel}")
76
- nextChannel = self.upgrade_path[currentChannel]
78
+ if self.devMode:
79
+ # This is mainly used for the scenario where Manage Foundation would be installed, because core-upgrade does not use the value of nextChannel,
80
+ # it uses a compatibility_matrix object in ansible-devops to determine the next channel, so nextChannel is only informative for core upgrade purposes
81
+ nextChannel = prompt(HTML('<Yellow>Custom channel</Yellow> '))
82
+ else:
83
+ if currentChannel not in self.upgrade_path:
84
+ self.fatalError(f"No upgrade available, {instanceId} is are already on the latest release {currentChannel}")
85
+ nextChannel = self.upgrade_path[currentChannel]
77
86
  else:
78
87
  # We still allow the upgrade to proceed even though we can't detect the MAS instance. The upgrade may be being
79
88
  # queued up to run after install for instance
80
89
  currentChannel = "Unknown"
81
90
  nextChannel = "Unknown"
82
91
 
83
- if not self.licenseAccepted:
92
+ if not self.licenseAccepted and not self.devMode:
84
93
  self.printH1("License Terms")
85
94
  self.printDescription([
86
95
  "To continue with the upgrade, you must accept the license terms:",
@@ -93,6 +102,31 @@ class UpgradeApp(BaseApp):
93
102
  if not self.yesOrNo("Do you accept the license terms"):
94
103
  exit(1)
95
104
 
105
+ # The only scenario where Manage Foundation needs to be installed during an upgrade is from 9.0.x to 9.1.x (if Manage was not already installed in 9.0.x).
106
+ self.setParam("should_install_manage_foundation", "false")
107
+ if nextChannel.startswith("9.1") and not verifyAppInstance(self.dynamicClient, instanceId, "manage"):
108
+ self.manageAppName = "Manage foundation"
109
+ self.showAdvancedOptions = False
110
+ self.installIoT = False
111
+ self.installFacilities = False
112
+ self.installManage = True
113
+ self.isManageFoundation = True
114
+ self.printDescription([f"{self.manageAppName} installs the following capabilities: User, Security groups, Application configurator and Mobile configurator."])
115
+ self.printH1("Configure IBM Container Registry")
116
+ self.promptForString("IBM entitlement key", "ibm_entitlement_key", isPassword=True)
117
+ if self.devMode:
118
+ self.promptForString("Artifactory username", "artifactory_username")
119
+ self.promptForString("Artifactory token", "artifactory_token", isPassword=True)
120
+ self.setParam("should_install_manage_foundation", "true")
121
+ self.setParam("is_full_manage", "false")
122
+ self.setParam("mas_appws_components", "")
123
+ self.setParam("mas_app_settings_aio_flag", "false")
124
+ self.setParam("mas_app_channel_manage", nextChannel)
125
+ self.setParam("mas_workspace_id", getWorkspaceId(self.dynamicClient, instanceId))
126
+ # It has been decided that we don't need to ask for any specific Manage Settings
127
+ # self.manageSettings()
128
+ self.configDb2(silentMode=True)
129
+
96
130
  self.printH1("Review Settings")
97
131
  print_formatted_text(HTML(f"<LightSlateGrey>Instance ID ..................... {instanceId}</LightSlateGrey>"))
98
132
  print_formatted_text(HTML(f"<LightSlateGrey>Current MAS Channel ............. {currentChannel}</LightSlateGrey>"))
@@ -101,7 +135,7 @@ class UpgradeApp(BaseApp):
101
135
 
102
136
  if not self.noConfirm:
103
137
  print()
104
- continueWithUpgrade = self.yesOrNo("Proceed with these settings?")
138
+ continueWithUpgrade = self.yesOrNo("Proceed with these settings")
105
139
 
106
140
  if self.noConfirm or continueWithUpgrade:
107
141
  self.createTektonFileWithDigest()
@@ -122,7 +156,7 @@ class UpgradeApp(BaseApp):
122
156
  h.stop_and_persist(symbol=self.successIcon, text=f"Latest Tekton definitions are installed (v{self.version})")
123
157
 
124
158
  with Halo(text='Submitting PipelineRun for {instanceId} upgrade', spinner=self.spinner) as h:
125
- pipelineURL = launchUpgradePipeline(self.dynamicClient, instanceId, self.skipPreCheck)
159
+ pipelineURL = launchUpgradePipeline(self.dynamicClient, instanceId, self.skipPreCheck, params=self.params)
126
160
  if pipelineURL is not None:
127
161
  h.stop_and_persist(symbol=self.successIcon, text=f"PipelineRun for {instanceId} upgrade submitted")
128
162
  print_formatted_text(HTML(f"\nView progress:\n <Cyan><u>{pipelineURL}</u></Cyan>\n"))
@@ -53,6 +53,13 @@ otherArgGroup.add_argument(
53
53
  default=False,
54
54
  help="Accept all license terms without prompting"
55
55
  )
56
+ otherArgGroup.add_argument(
57
+ "--dev-mode",
58
+ required=False,
59
+ action="store_true",
60
+ default=False,
61
+ help="Configure upgrade for development mode",
62
+ )
56
63
  otherArgGroup.add_argument(
57
64
  '-h', "--help",
58
65
  action='help',
@@ -0,0 +1,19 @@
1
+ # *****************************************************************************
2
+ # Copyright (c) 2025 IBM Corporation and other Contributors.
3
+ #
4
+ # All rights reserved. This program and the accompanying materials
5
+ # are made available under the terms of the Eclipse Public License v1.0
6
+ # which accompanies this distribution, and is available at
7
+ # http://www.eclipse.org/legal/epl-v10.html
8
+ #
9
+ # *****************************************************************************
10
+
11
+ from ...install.settings.db2Settings import Db2SettingsMixin
12
+ from ...install.settings.manageSettings import ManageSettingsMixin
13
+
14
+
15
+ class UpgradeSettingsMixin(Db2SettingsMixin, ManageSettingsMixin):
16
+ """
17
+ This class collects all the Mixins providing interactive prompts for mas-upgrade
18
+ """
19
+ pass
mas/cli/validators.py CHANGED
@@ -10,6 +10,7 @@
10
10
 
11
11
  from re import match
12
12
  from os import path
13
+ from json import loads, JSONDecodeError
13
14
 
14
15
  # Use of the openshift client rather than the kubernetes client allows us access to "apply"
15
16
  from openshift import dynamic
@@ -136,3 +137,15 @@ class OptimizerInstallPlanValidator(Validator):
136
137
  response = document.text
137
138
  if response not in ["full", "limited"]:
138
139
  raise ValidationError(message='Enter a valid response: full, limited', cursor_position=len(response))
140
+
141
+
142
+ class JsonValidator(Validator):
143
+ def validate(self, document):
144
+ """
145
+ Validate that a response is a valid JSON
146
+ """
147
+ inputJson = document.text
148
+ try:
149
+ loads(inputJson)
150
+ except JSONDecodeError:
151
+ raise (ValidationError(message='Enter a valid JSON', cursor_position=len(inputJson)))
@@ -15,6 +15,7 @@ from sys import argv
15
15
 
16
16
  from mas.cli import __version__ as VERSION
17
17
  from mas.cli.install.app import InstallApp
18
+ from mas.cli.aiservice.install.app import AiServiceInstallApp
18
19
  from mas.cli.update.app import UpdateApp
19
20
  from mas.cli.upgrade.app import UpgradeApp
20
21
  from mas.cli.uninstall.app import UninstallApp
@@ -54,6 +55,9 @@ if __name__ == '__main__':
54
55
  if function == "install":
55
56
  app = InstallApp()
56
57
  app.install(argv[2:])
58
+ elif function == "aiservice-install":
59
+ app = AiServiceInstallApp()
60
+ app.install(argv[2:])
57
61
  elif function == "uninstall":
58
62
  app = UninstallApp()
59
63
  app.uninstall(argv[2:])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mas-cli
3
- Version: 13.16.0
3
+ Version: 13.17.2
4
4
  Summary: Python Admin CLI for Maximo Application Suite
5
5
  Home-page: https://github.com/ibm-mas/cli
6
6
  Author: David Parker
@@ -1,23 +1,30 @@
1
- mas/cli/__init__.py,sha256=9g6s4A7Nu9c-_4qU7kt_Zs7VAWqO8w9LPcwKijOesqE,527
2
- mas/cli/cli.py,sha256=wc6ZAADsbDLwt24lOjeKW-2wzRTWx_4yZag92ohZmfQ,18175
1
+ mas/cli/__init__.py,sha256=MwCsrvfWOPI1baw1rAEjYTFTvENdUJeQKDaU_mjBra8,527
2
+ mas/cli/cli.py,sha256=3EjnBhknIrxEdlxw9wRnte_bGLKPkjQKhn8oAhYdYgg,18933
3
3
  mas/cli/displayMixins.py,sha256=e3lAx1DIOwsriDcNI0M2JyP1jeLOZKvId6sPrvWLyqs,5984
4
- mas/cli/gencfg.py,sha256=p38Ss_ooiNHOZTJT8l0YxDaEaPwD4ZXgxEbW-S9YLNY,3311
5
- mas/cli/validators.py,sha256=vi1pFA8QtqMhqtGk1NlkkNDUrlFCi53kS5wJqFGDgOU,5108
4
+ mas/cli/gencfg.py,sha256=kgbYihOcqGADK8XnrfcEoBawaY1qSGKuVNW1unACOnU,4433
5
+ mas/cli/validators.py,sha256=2mLqBfoFU4D3A84ma9namjpnPKR3a0XySSGXa_b7pWg,5495
6
+ mas/cli/aiservice/install/__init__.py,sha256=Af-TjB2oIy3bM-Rt3YNeJ_2ndsZZU7azqFkT5um7XQY,515
7
+ mas/cli/aiservice/install/app.py,sha256=zK9K4wx4kADrCQMeIVaDWDZ46_8h3o1-_hbEDH6rZt0,41423
8
+ mas/cli/aiservice/install/argBuilder.py,sha256=gavbxaLPfYVXwjjTs6o-dpP-_0YrL1Kg8XIxAjWT5oU,15584
9
+ mas/cli/aiservice/install/argParser.py,sha256=ilwn58CoZxUs54guscEiFD-loTB2iUgL4w18kz3MqA4,21441
10
+ mas/cli/aiservice/install/params.py,sha256=923Q-T-3VJqr7QZCvFUVu8syKVnMfy604al7xk9UtNY,3491
11
+ mas/cli/aiservice/install/summarizer.py,sha256=E7bxTnOz6wSgce_KBq2AmQSLpWeMwSjWhED-2gEtTnY,11405
6
12
  mas/cli/install/__init__.py,sha256=v0WJlcdrSycWGT5ofFjRDV3jTZ8AqVCz1AGxok4Khtc,508
7
- mas/cli/install/app.py,sha256=cKS1AbzOB-d1yDAsv_ypMaQDOMTE81TaCTCgjWEyRYo,61315
8
- mas/cli/install/argBuilder.py,sha256=NKVk7ADbN7SRzJVvLlRKUiJQfDc0xWbhFIwOfAdYRSs,24977
9
- mas/cli/install/argParser.py,sha256=59Wa3ch2IsuwcJiibgkttCX_0WTtFOl30l0nznbL9dQ,35632
10
- mas/cli/install/catalogs.py,sha256=4Mgv_nUHuT5lwoPbiJdkn58_k1RvGxmlueJLMrnJNak,751
11
- mas/cli/install/params.py,sha256=i4btI6qDQ9QBjojsZcJj4A5k1qsguMvdfDBerj52YWc,5050
12
- mas/cli/install/summarizer.py,sha256=XUrhivOBNNb_rqbdhIofTaBznKgfkH--7i-GPQlx-fU,21777
13
+ mas/cli/install/app.py,sha256=Op2reTxi9okJF0xUM04InADWtEg-d20mhc3sNY7zHtI,69019
14
+ mas/cli/install/argBuilder.py,sha256=v_rnUYnmY4q4xw8HQJ2L07NtA84ZZcJLpL9jVvR-Kb4,28380
15
+ mas/cli/install/argParser.py,sha256=PjqadJxQKaIryld3YuwmN_VuSoHJBILwLRWbnCfOtlM,35161
16
+ mas/cli/install/catalogs.py,sha256=p9WFQSA6vcQNiOrlAGCmr5e5IwHJTL0D9QU-e1wco6E,804
17
+ mas/cli/install/params.py,sha256=vzaqivQ7odTxI45wZmrelA73cnaPu4fomBpDNwhYp40,5650
18
+ mas/cli/install/summarizer.py,sha256=7uBwOWWT9Zxhwbl3chZvC8a3n_qt8IVUU-6ZkGfIJAc,22045
13
19
  mas/cli/install/settings/__init__.py,sha256=RdyBSh-rM0wkuvILVzJ1gxjOtLuQ1mF6QbEL0MyiKIY,1034
14
- mas/cli/install/settings/additionalConfigs.py,sha256=u9DTwGZkPLIGfbNrz6yXsBi39EZgk2bwJuDUrNm_Nio,10008
15
- mas/cli/install/settings/db2Settings.py,sha256=-RTejDTgvnA-bbEnPWXO4imjy0IMfAlW6J71UyNUsZc,13278
20
+ mas/cli/install/settings/additionalConfigs.py,sha256=hFN7OIiPmmAoo8h_5JiMLtW9r30zK1mMKuPqPpFf1mc,10187
21
+ mas/cli/install/settings/db2Settings.py,sha256=zFw1wiZTGFLdUsQUKY0l5dWne4ZXQhKuksSO0Q_86AM,16825
16
22
  mas/cli/install/settings/kafkaSettings.py,sha256=r1uK-IApqB9IQiSNt_8sP0wa4FPJcXU_qnadhElEOuI,7241
17
- mas/cli/install/settings/manageSettings.py,sha256=whoAT3B-qQjLD6SaS_9OEmmIvbSXbcI9m-wCDyu4alI,17853
18
- mas/cli/install/settings/mongodbSettings.py,sha256=UVt8vMLNpgyewlcymSystIhICnHsd0uoM9qpgezVjGg,2567
23
+ mas/cli/install/settings/manageSettings.py,sha256=TZIdAY_xUc751i-Vs6cXhVI3ul4MCnLdtpP9khLZpeI,16109
24
+ mas/cli/install/settings/mongodbSettings.py,sha256=aZdQHpeMwLVznrJWAkJsZu2Ok9t4Dkra2RGa_uKJHaY,2604
19
25
  mas/cli/install/settings/turbonomicSettings.py,sha256=ul4eWf53b1NCzJTFsEPX6DWM23YUlWILYBygplqXYlU,1631
20
- mas/cli/templates/ibm-mas-tekton.yaml,sha256=qVMypPiF2hH9ygpZZcRWcrU5wRE7kpZ8Qb3tXC9qZSg,877610
26
+ mas/cli/templates/facilities-configs.yml.j2,sha256=Er4UwxUl1Y3rtjIPMExVM8EXNcbesMusgLcRV050B1s,774
27
+ mas/cli/templates/ibm-mas-tekton.yaml,sha256=Gs_ckPyzMFY1ezX7vKb_klbsk4V_p1yZCmOCLJVG9ug,1108213
21
28
  mas/cli/templates/jdbccfg.yml.j2,sha256=cANbwkUkKEPQp-P3_BB_Llbt94457Ciagah2hOdySIM,1644
22
29
  mas/cli/templates/suite_mongocfg.yml.j2,sha256=WrgJUfGyvfaRIHjY5VR_zLZ5irTpV5khKNq76ejIxKU,1606
23
30
  mas/cli/templates/pod-templates/best-effort/ibm-data-dictionary-assetdatadictionary.yml,sha256=8VG_FDFcEjWNaAOZTcS58Pe0tWOXC10SJLloNqzEMC8,757
@@ -94,13 +101,14 @@ mas/cli/uninstall/__init__.py,sha256=v0WJlcdrSycWGT5ofFjRDV3jTZ8AqVCz1AGxok4Khtc
94
101
  mas/cli/uninstall/app.py,sha256=uPJy3z-1Yt66MSFdZz1Qh8MjA97ZrQmjSgTx-Gqua9I,10047
95
102
  mas/cli/uninstall/argParser.py,sha256=VVG4myUvFOtg98L6HAzpgGg7s5c-vub_UMZPGuNQko4,3452
96
103
  mas/cli/update/__init__.py,sha256=v0WJlcdrSycWGT5ofFjRDV3jTZ8AqVCz1AGxok4Khtc,508
97
- mas/cli/update/app.py,sha256=ts6VLgDXz8pB17LbdoEl4y9i19IcBfb2ndYp7X9SIE0,39001
104
+ mas/cli/update/app.py,sha256=tp8bGy-vJMch1HOFgGNlntqKkYD1Tyozjq2Kx_FH7Z8,39265
98
105
  mas/cli/update/argParser.py,sha256=oOIXzB_rsI2p3og_5X5SFt_g7LURyEdLxZeiGCKq1nU,4711
99
106
  mas/cli/upgrade/__init__.py,sha256=v0WJlcdrSycWGT5ofFjRDV3jTZ8AqVCz1AGxok4Khtc,508
100
- mas/cli/upgrade/app.py,sha256=EuEZayc0nw9kA6Hz8M9Mv7uk0hgmspJSZCYhNEfCECk,6428
101
- mas/cli/upgrade/argParser.py,sha256=pqzNDSHy6l13JunHWQLyOI-NFnDGDoVJ_HM07FLYJSc,2033
102
- mas_cli-13.16.0.data/scripts/mas-cli,sha256=BbibIX0psLEOZdcNaFcO4mJvStD0pKLAe-p-NwVTrBs,3439
103
- mas_cli-13.16.0.dist-info/METADATA,sha256=yBgVDvDeOg7EoJqFmvKkQ-3pcv9Y4LSHxK2Xxm0C0lc,2259
104
- mas_cli-13.16.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
105
- mas_cli-13.16.0.dist-info/top_level.txt,sha256=_Hlsp7pvMvyV14LFg-vk1hULq30j61EILnnxMFIhhc8,4
106
- mas_cli-13.16.0.dist-info/RECORD,,
107
+ mas/cli/upgrade/app.py,sha256=3Z7oVrQGJPrV5dZjXZuBGT78vODPDLXnHnfD27pxNDs,8926
108
+ mas/cli/upgrade/argParser.py,sha256=5JxAcbwKjFKCKnbucCxg7Xacdhjphb9nRORfsgB1h_0,2196
109
+ mas/cli/upgrade/settings/__init__.py,sha256=QI2CUsj-NXBU1qrPOsOk4MbeWnfNq0UOF3rYYc_1l2A,775
110
+ mas_cli-13.17.2.data/scripts/mas-cli,sha256=ijL4Ecg_2fRtdrQ8Mk28qsi6o3O6KRIAUM8BUry5cPs,3621
111
+ mas_cli-13.17.2.dist-info/METADATA,sha256=qhUNCOb87Mg5BNAfVoX2SRXIziMWSToPeNyj_G3CSsE,2259
112
+ mas_cli-13.17.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
113
+ mas_cli-13.17.2.dist-info/top_level.txt,sha256=_Hlsp7pvMvyV14LFg-vk1hULq30j61EILnnxMFIhhc8,4
114
+ mas_cli-13.17.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5