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

ara_cli/artefact_scan.py CHANGED
@@ -2,13 +2,21 @@ from textwrap import indent
2
2
  import os
3
3
 
4
4
 
5
- def check_file(file_path, artefact_class):
5
+ def check_file(file_path, artefact_class, classified_artefact_info=None):
6
6
  from pydantic import ValidationError
7
+ from ara_cli.artefact_fuzzy_search import extract_artefact_names_of_classifier
8
+ from ara_cli.file_classifier import FileClassifier
9
+
7
10
  try:
8
11
  with open(file_path, "r", encoding="utf-8") as f:
9
12
  content = f.read()
10
13
  except OSError as e:
11
14
  return False, f"File error: {e}"
15
+
16
+ if not classified_artefact_info:
17
+ file_classifier = FileClassifier(os)
18
+ classified_artefact_info = file_classifier.classify_files()
19
+
12
20
  try:
13
21
  artefact_instance = artefact_class.deserialize(content)
14
22
 
@@ -19,6 +27,23 @@ def check_file(file_path, artefact_class):
19
27
  reason = (f"Filename-Title Mismatch: The file name '{file_name_without_ext}' "
20
28
  f"does not match the artefact title '{artefact_instance.title}'.")
21
29
  return False, reason
30
+
31
+ # Check contribution reference validity
32
+ contribution = artefact_instance.contribution
33
+ if contribution and contribution.artefact_name and contribution.classifier:
34
+
35
+ # Find all artefact names of the referenced classifier
36
+ all_artefact_names = extract_artefact_names_of_classifier(
37
+ classified_files=classified_artefact_info,
38
+ classifier=contribution.classifier
39
+ )
40
+
41
+ # Check if the referenced artefact exists
42
+ if contribution.artefact_name not in all_artefact_names:
43
+ reason = (f"Invalid Contribution Reference: The contribution references "
44
+ f"'{contribution.classifier}' artefact '{contribution.artefact_name}' "
45
+ f"which does not exist.")
46
+ return False, reason
22
47
 
23
48
  return True, None
24
49
  except (ValidationError, ValueError, AssertionError) as e:
@@ -37,7 +62,7 @@ def find_invalid_files(classified_artefact_info, classifier):
37
62
  continue
38
63
  if ".data" in artefact_info["file_path"]:
39
64
  continue
40
- is_valid, reason = check_file(artefact_info["file_path"], artefact_class)
65
+ is_valid, reason = check_file(artefact_info["file_path"], artefact_class, classified_artefact_info)
41
66
  if not is_valid:
42
67
  invalid_files.append((artefact_info["file_path"], reason))
43
68
  return invalid_files
@@ -1,6 +1,6 @@
1
1
  from ara_cli.classifier import Classifier
2
2
  from ara_cli.artefact_models.artefact_model import Artefact
3
- from ara_cli.artefact_fuzzy_search import find_closest_name_match
3
+ from ara_cli.artefact_fuzzy_search import find_closest_name_matches
4
4
  from functools import lru_cache
5
5
  from typing import Optional
6
6
  import textwrap
@@ -17,7 +17,7 @@ class FileClassifier:
17
17
  info["title"] for info in classified_artefacts.get(classifier, [])]
18
18
  if name in all_artefact_names:
19
19
  return name
20
- return find_closest_name_match(name, all_artefact_names)
20
+ return find_closest_name_matches(name, all_artefact_names)
21
21
 
22
22
  @lru_cache(maxsize=None)
23
23
  def read_file_content(self, file_path):
ara_cli/prompt_handler.py CHANGED
@@ -3,7 +3,7 @@ import litellm
3
3
  from ara_cli.classifier import Classifier
4
4
  from ara_cli.artefact_creator import ArtefactCreator
5
5
  from ara_cli.template_manager import TemplatePathManager
6
- from ara_cli.ara_config import ConfigManager
6
+ from ara_cli.ara_config import ConfigManager, LLMConfigItem
7
7
  from ara_cli.file_lister import generate_markdown_listing
8
8
  from os.path import exists, join
9
9
  import os
@@ -20,15 +20,15 @@ class LLMSingleton:
20
20
 
21
21
  def __init__(self, model_id):
22
22
  config = ConfigManager().get_config()
23
- llm_config = config.llm_config
24
- selected_config = llm_config[str(model_id)]
23
+ selected_config = config.llm_config.get(str(model_id))
25
24
 
26
25
  if not selected_config:
27
26
  raise ValueError(f"No configuration found for the model: {model_id}")
28
27
 
29
28
  LLMSingleton._model = model_id
30
-
31
- self.config_parameters = selected_config
29
+
30
+ # Typesafe for None values inside the config.
31
+ self.config_parameters = selected_config.model_dump(exclude_none=True)
32
32
 
33
33
  LLMSingleton._instance = self
34
34
 
@@ -74,15 +74,14 @@ def read_string_from_file(path):
74
74
  def send_prompt(prompt):
75
75
  chat = LLMSingleton.get_instance()
76
76
 
77
- # remove provider from config parameters
78
77
  config_parameters = chat.config_parameters.copy()
79
- del config_parameters["provider"]
78
+ if "provider" in config_parameters:
79
+ del config_parameters["provider"]
80
80
 
81
81
  completion = litellm.completion(
82
82
  **config_parameters,
83
83
  messages=prompt,
84
- stream=True,
85
- max_tokens=32768
84
+ stream=True
86
85
  )
87
86
  for chunk in completion:
88
87
  yield chunk
@@ -95,7 +94,7 @@ def append_headings(classifier, param, heading_name):
95
94
 
96
95
  # Check if the file exists, and if not, create an empty file
97
96
  if not os.path.exists(artefact_data_path):
98
- with open(artefact_data_path, 'w') as file:
97
+ with open(artefact_data_path, 'w', encoding='utf-8') as file:
99
98
  file.write("")
100
99
 
101
100
  content = read_string_from_file(artefact_data_path)
@@ -127,7 +126,7 @@ def prompt_data_directory_creation(classifier, parameter):
127
126
 
128
127
 
129
128
  def get_file_content(path):
130
- with open(path, 'r') as file:
129
+ with open(path, 'r', encoding='utf-8') as file:
131
130
  return file.read()
132
131
 
133
132
 
@@ -161,7 +160,7 @@ def load_selected_prompt_templates(classifier, parameter):
161
160
  print("WARNING: config.prompt_templates.md does not exist.")
162
161
  return
163
162
 
164
- with open(config_file_path, 'r') as config_file:
163
+ with open(config_file_path, 'r', encoding='utf-8') as config_file:
165
164
  content = config_file.read()
166
165
 
167
166
  global_base_template_path = TemplatePathManager.get_template_base_path()
@@ -253,7 +252,7 @@ def extract_and_load_markdown_files(md_prompt_file_path):
253
252
  """
254
253
  header_stack = []
255
254
  path_accumulator = []
256
- with open(md_prompt_file_path, 'r') as file:
255
+ with open(md_prompt_file_path, 'r', encoding='utf-8') as file:
257
256
  for line in file:
258
257
  if line.strip().startswith('#'):
259
258
  level = line.count('#')
@@ -322,7 +321,7 @@ def get_partial_file_content(file_name, line_ranges):
322
321
  lines_to_read.extend(range(start, end + 1))
323
322
 
324
323
  partial_content = []
325
- with open(file_name, 'r') as file:
324
+ with open(file_name, 'r', encoding='utf-8') as file:
326
325
  for i, line in enumerate(file, 1):
327
326
  if i in lines_to_read:
328
327
  partial_content.append(line)
@@ -372,7 +371,7 @@ def create_and_send_custom_prompt(classifier, parameter):
372
371
  extensions = [".rules.md", ".prompt_givens.md", ".intention.md", ".commands.md"]
373
372
  combined_content_markdown, image_data_list = collect_file_content_by_extension(prompt_data_path, extensions)
374
373
 
375
- with open(prompt_file_path_markdown, 'w') as file:
374
+ with open(prompt_file_path_markdown, 'w', encoding='utf-8') as file:
376
375
  file.write(combined_content_markdown)
377
376
 
378
377
  prompt = read_string_from_file(prompt_file_path_markdown)
@@ -390,7 +389,7 @@ def create_and_send_custom_prompt(classifier, parameter):
390
389
  append_headings(classifier, parameter, "result")
391
390
 
392
391
  artefact_data_path = f"ara/{sub_directory}/{parameter}.data/{classifier}.prompt_log.md"
393
- with open(artefact_data_path, 'a') as file:
392
+ with open(artefact_data_path, 'a', encoding='utf-8') as file:
394
393
  for chunk in send_prompt(message_list):
395
394
  chunk_content = chunk.choices[0].delta.content
396
395
  if not chunk_content:
@@ -424,7 +423,7 @@ def generate_config_prompt_givens_file(prompt_data_path, config_prompt_givens_na
424
423
  print(f"artefact {artefact_to_mark} marked in related config.prompt_givens.md per default")
425
424
 
426
425
  # Read the generated file content
427
- with open(config_prompt_givens_path, 'r') as file:
426
+ with open(config_prompt_givens_path, 'r', encoding='utf-8') as file:
428
427
  markdown_listing = file.readlines()
429
428
 
430
429
  updated_listing = []
@@ -435,5 +434,5 @@ def generate_config_prompt_givens_file(prompt_data_path, config_prompt_givens_na
435
434
  updated_listing.append(line)
436
435
 
437
436
  # Write the updated listing back to the file
438
- with open(config_prompt_givens_path, 'w') as file:
439
- file.write("".join(updated_listing))
437
+ with open(config_prompt_givens_path, 'w', encoding='utf-8') as file:
438
+ file.write("".join(updated_listing))
ara_cli/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # version.py
2
- __version__ = "0.1.9.68" # fith parameter like .0 for local install test purposes only. official numbers should be 4 digit numbers
2
+ __version__ = "0.1.9.70" # fith parameter like .0 for local install test purposes only. official numbers should be 4 digit numbers
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ara_cli
3
- Version: 0.1.9.68
3
+ Version: 0.1.9.70
4
4
  Requires-Dist: litellm
5
5
  Requires-Dist: llama-index
6
6
  Requires-Dist: llama-index-llms-openai
@@ -1,37 +1,37 @@
1
1
  ara_cli/__init__.py,sha256=0zl7IegxTid26EBGLav_fXZ4CCIV3H5TfAoFQiOHjvg,148
2
2
  ara_cli/__main__.py,sha256=Z6XYWRLceIoZPvfC-X9EXouSZdtFOOe84kKVWJGA4r4,1861
3
- ara_cli/ara_command_action.py,sha256=dD97IeH7x5udKC_APk5TbuVXPiyU2XSBV2uqy52nQ9A,21625
3
+ ara_cli/ara_command_action.py,sha256=aq074NT63xsuyIJgGnM0htp7kpyolaLwtauXjQEPljA,21852
4
4
  ara_cli/ara_command_parser.py,sha256=v8LUdkBSI2771gI53PdrxtD8YVjhk-7E8vgTEsTGnRM,17952
5
- ara_cli/ara_config.py,sha256=gOeaFR5Bkxk1EbN7qvJuHeaLICgy7irCREOIQD6_98M,3832
6
- ara_cli/artefact_autofix.py,sha256=-7XHl7j5O1kwWeBeIybnA4CI8v6SlXRNkV1KQ9nSWLQ,6817
5
+ ara_cli/ara_config.py,sha256=EBVxVXJauWNmLVSDeTdNvncO0z1avR3hN9mkJhPmaU0,4183
6
+ ara_cli/artefact_autofix.py,sha256=F4Vp-SI6YI0rKeVswOlg23OemH7w4CEJ9-ChcqIpn4U,14866
7
7
  ara_cli/artefact_creator.py,sha256=tUNCNvfFYMheyF_viyrQhm2-43AkbHFoQaHui9ntvws,6002
8
8
  ara_cli/artefact_deleter.py,sha256=Co4wwCH3yW8H9NrOq7_2p5571EeHr0TsfE-H8KqoOfY,1900
9
- ara_cli/artefact_fuzzy_search.py,sha256=BBDe-IP75sWZjG6nTNFtVljjL01JlQUy5ccJBZ6Trow,2429
9
+ ara_cli/artefact_fuzzy_search.py,sha256=iBlDqjZf-_D3VUjFf7ZwkiQbpQDcwRndIU7aG_sRTgE,2668
10
10
  ara_cli/artefact_link_updater.py,sha256=itMS_Z64jE8bBly9WA01z8PqkBeNW6ntTO7ryMeCTRg,3703
11
11
  ara_cli/artefact_lister.py,sha256=jhk4n4eqp7hDIq07q43QzS7-36BM3OfZ4EABxCeOGcw,4764
12
- ara_cli/artefact_reader.py,sha256=_RqBY1f1DWH2DThXETYuHeTB2ip0wgYuGvHYI_D6EJ4,8062
12
+ ara_cli/artefact_reader.py,sha256=zVR3DZ4z6vjKPQnFZVbPS75MkluaoLkz0lWmg_hXxTY,8136
13
13
  ara_cli/artefact_renamer.py,sha256=loIn1DF9kVnjhH7wP1v5qUvt3s0uKeWXuQPrHXenQGE,4025
14
- ara_cli/artefact_scan.py,sha256=J3aCAOltVr1oS6Lwnv51gtZC_G8faORGTccFY3kkBX4,2368
14
+ ara_cli/artefact_scan.py,sha256=ZB5mZkFto3K5xg_nZsQekWz5Ly7X0WyHnBsvPL3sC6I,3599
15
15
  ara_cli/chat.py,sha256=7xTtPEDk052_wmIzoti7GavEJ1vpRxe5c084WQ1C7dg,28617
16
16
  ara_cli/classifier.py,sha256=zWskj7rBYdqYBGjksBm46iTgVU5IIf2PZsJr4qeiwVU,1878
17
17
  ara_cli/codefusionretriever.py,sha256=fCHgXdIBRzkVAnapX-KI2NQ44XbrrF4tEQmn5J6clUI,1980
18
18
  ara_cli/codehierachieretriever.py,sha256=Xd3EgEWWhkSf1TmTWtf8X5_YvyE_4B66nRrqarwSiTU,1182
19
19
  ara_cli/commandline_completer.py,sha256=b00Dqb5n7SecpxYIDLxAfYhp8X6e3c8a5qYz6ko0i3E,1192
20
20
  ara_cli/directory_navigator.py,sha256=6QbSAjJrJ5a6Lutol9J4HFgVDMiAQ672ny9TATrh04U,3318
21
- ara_cli/file_classifier.py,sha256=JsY7Y_D8WL-fiWz57zwzttg6SEajxWVxpDkFG_149-Q,3967
21
+ ara_cli/file_classifier.py,sha256=26MPVCaZlQkRDa62FoQ6ZqawOiaNgspUvcFOF93bHzo,3971
22
22
  ara_cli/file_lister.py,sha256=VFpUmHU1d6sQvJWSeuFqkZZ0Ci3ZYCUtAUfvgWypaYU,2314
23
23
  ara_cli/filename_validator.py,sha256=Aw9PL8d5-Ymhp3EY6lDrUBk3cudaNqo1Uw5RzPpI1jA,118
24
24
  ara_cli/list_filter.py,sha256=Not17hIngI37gZsLtIKxopB-BmyWoOGlBzSqBwh-Zpc,5273
25
25
  ara_cli/output_suppressor.py,sha256=ZByUwLH2DxOb-eJ31KQbtIziBKdykoyxvwxZ0tSammA,371
26
26
  ara_cli/prompt_chat.py,sha256=kd_OINDQFit6jN04bb7mzgY259JBbRaTaNp9F-webkc,1346
27
27
  ara_cli/prompt_extractor.py,sha256=a8LwPj6U8sG_v3SqDXQyPvDZQds4kHnYSO8eGissYJA,7503
28
- ara_cli/prompt_handler.py,sha256=qHq2COt6rIby3tO49IXOt-CLnOlNTgCTFkAUjxrfaTc,17459
28
+ ara_cli/prompt_handler.py,sha256=ukYWR_AMDd8nfGkeUKyYQ8PO_-PfO8x9tV1kNcNWOT4,17672
29
29
  ara_cli/prompt_rag.py,sha256=vmlt4-rSboWibwgO_KUF79TK99YXT5KXjmbD9FeWdZY,7449
30
30
  ara_cli/run_file_lister.py,sha256=XbrrDTJXp1LFGx9Lv91SNsEHZPP-PyEMBF_P4btjbDA,2360
31
31
  ara_cli/tag_extractor.py,sha256=4krQyvmLR2ffhe7N7lWC7QjaxXcb90HaQdmjnBiD8ak,2523
32
32
  ara_cli/template_manager.py,sha256=YXPj2jGNDb-diIHFEK_vGJ-ZucodnXSGAPofKTnOofI,6633
33
33
  ara_cli/update_config_prompt.py,sha256=PZgNIN3dTw6p80GyX8Sp5apkAhSoykwnkEbHo3IOkUo,4571
34
- ara_cli/version.py,sha256=qsRulH7BZ8x-z1VK67VqaUHu1vUfJ7cgIUVvWmlyke4,146
34
+ ara_cli/version.py,sha256=_1Hbcx99RFW-ZzwbZEWia-OGS77hOyexYcSKcpQKm_Y,146
35
35
  ara_cli/artefact_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  ara_cli/artefact_models/artefact_load.py,sha256=dNcwZDW2Dk0bts9YnPZ0ESmWD2NbsLIvl4Z-qQeGmTQ,401
37
37
  ara_cli/artefact_models/artefact_mapping.py,sha256=8aD0spBjkJ8toMAmFawc6UTUxB6-tEEViZXv2I-r88Q,1874
@@ -41,7 +41,7 @@ ara_cli/artefact_models/businessgoal_artefact_model.py,sha256=jqYFMXjWle0YW9RvcF
41
41
  ara_cli/artefact_models/capability_artefact_model.py,sha256=SZqHx4O2mj4urn77Stnj4_Jxtlq3-LgBBU9SMkByppI,3079
42
42
  ara_cli/artefact_models/epic_artefact_model.py,sha256=IadQWs6SWNcLgwvtOQWmYDyV9xLr3WwAsx-YMFan5fA,5765
43
43
  ara_cli/artefact_models/example_artefact_model.py,sha256=UXrKbaPotg1jwcrVSdCeo-XH4tTD_-U1e3giaBn5_xg,1384
44
- ara_cli/artefact_models/feature_artefact_model.py,sha256=BeLsq9ZinzIDwss8nurIbxJZQ2qPgyRKRHrRlrl-zHA,15583
44
+ ara_cli/artefact_models/feature_artefact_model.py,sha256=JvgBKsiI1Y5Cs_0Ygn6lttJIjCpEC9XyZieDExUnsvg,18386
45
45
  ara_cli/artefact_models/issue_artefact_model.py,sha256=v6CpKnkqiUh6Wch2kkEmyyW49c8ysdy1qz8l1Ft9uJA,2552
46
46
  ara_cli/artefact_models/keyfeature_artefact_model.py,sha256=a3MyAiePN9n_GTN6QkTvamdsaorwVUff6w-9CdRZSlo,4243
47
47
  ara_cli/artefact_models/serialize_helper.py,sha256=0XCruO70-fyfLfTn7pnt8NrSQe79eYNUAjuQaV8K6_8,586
@@ -132,27 +132,27 @@ ara_cli/templates/specification_breakdown_files/template.step.md,sha256=nzDRl9Xo
132
132
  ara_cli/templates/specification_breakdown_files/template.technology.exploration.md,sha256=zQyiJcmbUfXdte-5uZwZUpT6ey0zwfZ00P4VwI97jQk,2274
133
133
  ara_cli/templates/specification_breakdown_files/template.technology.md,sha256=bySiksz-8xtq0Nnj4svqe2MgUftWrVkbK9AcrDUE3KY,952
134
134
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
- tests/test_ara_autofix.py,sha256=EFVzhVTNPDRVxpoK0CY6OAM88EjZTRXh-uxFGS1AVWk,10695
136
135
  tests/test_ara_command_action.py,sha256=Y5MrG6VjXgebliKfdFaCaS8i3GoZCGSLpj3AWCbL5Lk,25695
137
136
  tests/test_ara_config.py,sha256=1LWby_iSestTIIqK-1clggL8kmbGGbtlYfsxAHaMMF8,2232
137
+ tests/test_artefact_autofix.py,sha256=0Y6z5EXTEDUbZb-xxWNhaVUKnhxVVS3w2YZWTvyvoZs,12103
138
138
  tests/test_artefact_fuzzy_search.py,sha256=5Sh3_l9QK8-WHn6JpGPU1b6h4QEnl2JoMq1Tdp2cj1U,1261
139
139
  tests/test_artefact_link_updater.py,sha256=gN5KFF1uY7OoBh8Mr5jWpqXp02YCU5OSIpSU76Rm4Gs,2137
140
140
  tests/test_artefact_lister.py,sha256=VCEOCgDgnAOeUUgIoGAbWgz60hf9UT-tdHg18LGfB34,22656
141
141
  tests/test_artefact_reader.py,sha256=660K-d8ed-j8hulsUB_7baPD2-hhbg9TffUR5yVc4Uo,927
142
142
  tests/test_artefact_renamer.py,sha256=N9JnnKBEJChTYEdltHoiDnn5UCNQUPj9H9YqOvLzbH0,3458
143
- tests/test_artefact_scan.py,sha256=7w4wqCj8VEwk676JiSqh0FCAOT-kFq624u2JDrhzpuw,5860
143
+ tests/test_artefact_scan.py,sha256=R-L3JDWV1xH9fneGJoyDEjy2lvKpJLBck5ISTF2MmNs,7476
144
144
  tests/test_chat.py,sha256=-00mni6Kik_RO8BGUpWqaL4S0wt2MbUBi5jD06dSHJM,47538
145
145
  tests/test_classifier.py,sha256=grYGPksydNdPsaEBQxYHZTuTdcJWz7VQtikCKA6BNaQ,1920
146
146
  tests/test_directory_navigator.py,sha256=7G0MVrBbtBvbrFUpL0zb_9EkEWi1dulWuHsrQxMJxDY,140
147
- tests/test_file_classifier.py,sha256=hbGp0-_A_LgQ0pGv1jWDEIyCgvDyfChcvvVfbxjNY2U,10938
147
+ tests/test_file_classifier.py,sha256=kLWPiePu3F5mkVuI_lK_2QlLh2kXD_Mt2K8KZZ1fAnA,10940
148
148
  tests/test_file_creator.py,sha256=D3G7MbgE0m8JmZihxnTryxLco6iZdbV--2CGc0L20FM,2109
149
149
  tests/test_file_lister.py,sha256=f6B_vIv-wAulKH2ZGgNg4SG79XqGGbfwoIvZlbEnYyM,4306
150
150
  tests/test_list_filter.py,sha256=gSRKirTtFuhRS3QlFHqWl89WvCvAdVEnFsCWTYmgB2o,7928
151
151
  tests/test_tag_extractor.py,sha256=nSiAYlTKZ7TLAOtcJpwK5zTWHhFYU0tI5xKnivLc1dU,2712
152
152
  tests/test_template_manager.py,sha256=q-LMHRG4rHkD6ON6YW4cpZxUx9hul6Or8wVVRC2kb-8,4099
153
153
  tests/test_update_config_prompt.py,sha256=vSsLvc18HZdVjVM93qXWVbJt752xTLL6VGjSVCrPufk,6729
154
- ara_cli-0.1.9.68.dist-info/METADATA,sha256=3k2Jl8M-AkkRS7sc_8YQWmNfHCxhVtdRAT1bdKYVxvk,415
155
- ara_cli-0.1.9.68.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
156
- ara_cli-0.1.9.68.dist-info/entry_points.txt,sha256=v4h7MzysTgSIDYfEo3oj4Kz_8lzsRa3hq-KJHEcLVX8,45
157
- ara_cli-0.1.9.68.dist-info/top_level.txt,sha256=WM4cLHT5DYUaWzLtRj-gu3yVNFpGQ6lLRI3FMmC-38I,14
158
- ara_cli-0.1.9.68.dist-info/RECORD,,
154
+ ara_cli-0.1.9.70.dist-info/METADATA,sha256=im6yqXsHO5Nxn5Jhckz1n16ZUWxDqGiQcDsYLi3xJoA,415
155
+ ara_cli-0.1.9.70.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
156
+ ara_cli-0.1.9.70.dist-info/entry_points.txt,sha256=v4h7MzysTgSIDYfEo3oj4Kz_8lzsRa3hq-KJHEcLVX8,45
157
+ ara_cli-0.1.9.70.dist-info/top_level.txt,sha256=WM4cLHT5DYUaWzLtRj-gu3yVNFpGQ6lLRI3FMmC-38I,14
158
+ ara_cli-0.1.9.70.dist-info/RECORD,,