ara-cli 0.1.9.86__py3-none-any.whl → 0.1.9.89__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.
- ara_cli/ara_config.py +69 -114
- ara_cli/prompt_handler.py +2 -5
- ara_cli/version.py +1 -1
- {ara_cli-0.1.9.86.dist-info → ara_cli-0.1.9.89.dist-info}/METADATA +1 -1
- {ara_cli-0.1.9.86.dist-info → ara_cli-0.1.9.89.dist-info}/RECORD +10 -9
- tests/test_ara_config.py +174 -281
- tests/test_prompt_handler.py +306 -0
- {ara_cli-0.1.9.86.dist-info → ara_cli-0.1.9.89.dist-info}/WHEEL +0 -0
- {ara_cli-0.1.9.86.dist-info → ara_cli-0.1.9.89.dist-info}/entry_points.txt +0 -0
- {ara_cli-0.1.9.86.dist-info → ara_cli-0.1.9.89.dist-info}/top_level.txt +0 -0
ara_cli/ara_config.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from typing import List, Dict, Optional, Any
|
|
2
|
-
from pydantic import BaseModel, ValidationError, Field,
|
|
2
|
+
from pydantic import BaseModel, ValidationError, Field, model_validator
|
|
3
3
|
import json
|
|
4
4
|
import os
|
|
5
5
|
from os.path import exists, dirname
|
|
@@ -14,23 +14,12 @@ class LLMConfigItem(BaseModel):
|
|
|
14
14
|
model: str
|
|
15
15
|
temperature: float = Field(ge=0.0, le=1.0)
|
|
16
16
|
max_tokens: Optional[int] = None
|
|
17
|
-
|
|
18
|
-
@field_validator('temperature')
|
|
19
|
-
@classmethod
|
|
20
|
-
def validate_temperature(cls, v: float, info) -> float:
|
|
21
|
-
if not 0.0 <= v <= 1.0:
|
|
22
|
-
print(f"Warning: Temperature is outside the 0.0 to 1.0 range")
|
|
23
|
-
# Return a valid default
|
|
24
|
-
return 0.8
|
|
25
|
-
return v
|
|
26
|
-
|
|
27
|
-
class ExtCodeDirItem(BaseModel):
|
|
28
|
-
source_dir: str
|
|
17
|
+
max_completion_tokens: Optional[int] = None
|
|
29
18
|
|
|
30
19
|
class ARAconfig(BaseModel):
|
|
31
|
-
ext_code_dirs: List[
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
ext_code_dirs: List[Dict[str, str]] = Field(default_factory=lambda: [
|
|
21
|
+
{"source_dir": "./src"},
|
|
22
|
+
{"source_dir": "./tests"}
|
|
34
23
|
])
|
|
35
24
|
glossary_dir: str = "./glossary"
|
|
36
25
|
doc_dir: str = "./docs"
|
|
@@ -54,71 +43,71 @@ class ARAconfig(BaseModel):
|
|
|
54
43
|
"*.jpeg",
|
|
55
44
|
])
|
|
56
45
|
llm_config: Dict[str, LLMConfigItem] = Field(default_factory=lambda: {
|
|
46
|
+
"gpt-5": LLMConfigItem(
|
|
47
|
+
provider="openai",
|
|
48
|
+
model="openai/gpt-5",
|
|
49
|
+
temperature=1,
|
|
50
|
+
max_completion_tokens=16000
|
|
51
|
+
),
|
|
57
52
|
"gpt-4o": LLMConfigItem(
|
|
58
53
|
provider="openai",
|
|
59
54
|
model="openai/gpt-4o",
|
|
60
55
|
temperature=0.8,
|
|
61
|
-
max_tokens=
|
|
56
|
+
max_tokens=16000
|
|
62
57
|
),
|
|
63
58
|
"gpt-4.1": LLMConfigItem(
|
|
64
59
|
provider="openai",
|
|
65
60
|
model="openai/gpt-4.1",
|
|
66
61
|
temperature=0.8,
|
|
67
|
-
max_tokens=
|
|
62
|
+
max_tokens=16000
|
|
68
63
|
),
|
|
69
64
|
"o3-mini": LLMConfigItem(
|
|
70
65
|
provider="openai",
|
|
71
66
|
model="openai/o3-mini",
|
|
72
67
|
temperature=1.0,
|
|
73
|
-
max_tokens=
|
|
68
|
+
max_tokens=8000
|
|
74
69
|
),
|
|
75
70
|
"opus-4": LLMConfigItem(
|
|
76
71
|
provider="anthropic",
|
|
77
72
|
model="anthropic/claude-opus-4-20250514",
|
|
78
|
-
temperature=0.
|
|
73
|
+
temperature=0.5,
|
|
79
74
|
max_tokens=32000
|
|
80
75
|
),
|
|
81
76
|
"sonnet-4": LLMConfigItem(
|
|
82
77
|
provider="anthropic",
|
|
83
78
|
model="anthropic/claude-sonnet-4-20250514",
|
|
84
|
-
temperature=0.
|
|
85
|
-
max_tokens=
|
|
79
|
+
temperature=0.5,
|
|
80
|
+
max_tokens=32000
|
|
86
81
|
),
|
|
87
82
|
"together-ai-llama-2": LLMConfigItem(
|
|
88
83
|
provider="together_ai",
|
|
89
84
|
model="together_ai/togethercomputer/llama-2-70b",
|
|
90
85
|
temperature=0.8,
|
|
91
|
-
max_tokens=
|
|
86
|
+
max_tokens=4000
|
|
92
87
|
),
|
|
93
88
|
"groq-llama-3": LLMConfigItem(
|
|
94
89
|
provider="groq",
|
|
95
90
|
model="groq/llama3-70b-8192",
|
|
96
91
|
temperature=0.8,
|
|
97
|
-
max_tokens=
|
|
92
|
+
max_tokens=4000
|
|
98
93
|
)
|
|
99
94
|
})
|
|
100
|
-
default_llm: Optional[str] = "gpt-
|
|
101
|
-
|
|
102
|
-
model_config = {
|
|
103
|
-
"extra": "forbid" # This will help identify unrecognized keys
|
|
104
|
-
}
|
|
95
|
+
default_llm: Optional[str] = "gpt-5"
|
|
105
96
|
|
|
106
97
|
@model_validator(mode='after')
|
|
107
98
|
def check_critical_fields(self) -> 'ARAconfig':
|
|
108
|
-
"""Check for empty critical fields and use defaults if needed"""
|
|
99
|
+
"""Check for empty critical fields and use defaults if needed."""
|
|
109
100
|
critical_fields = {
|
|
110
|
-
'ext_code_dirs': [
|
|
101
|
+
'ext_code_dirs': [{"source_dir": "./src"}, {"source_dir": "./tests"}],
|
|
111
102
|
'local_ara_templates_dir': "./ara/.araconfig/templates/",
|
|
112
103
|
'local_prompt_templates_dir': "./ara/.araconfig",
|
|
113
104
|
'glossary_dir': "./glossary"
|
|
114
105
|
}
|
|
115
|
-
|
|
106
|
+
|
|
116
107
|
for field, default_value in critical_fields.items():
|
|
117
108
|
current_value = getattr(self, field)
|
|
118
|
-
if
|
|
119
|
-
(
|
|
120
|
-
(isinstance(current_value, str) and current_value.strip() == "")):
|
|
121
|
-
print(f"Warning: Value for '{field}' is missing or empty.")
|
|
109
|
+
if not current_value:
|
|
110
|
+
print(f"Warning: Value for '{field}' is missing or empty. Using default.")
|
|
122
111
|
setattr(self, field, default_value)
|
|
123
112
|
|
|
124
113
|
return self
|
|
@@ -126,109 +115,80 @@ class ARAconfig(BaseModel):
|
|
|
126
115
|
# Function to ensure the necessary directories exist
|
|
127
116
|
@lru_cache(maxsize=None)
|
|
128
117
|
def ensure_directory_exists(directory: str):
|
|
118
|
+
"""Creates a directory if it doesn't exist."""
|
|
129
119
|
if not exists(directory):
|
|
130
120
|
os.makedirs(directory)
|
|
131
121
|
print(f"New directory created at {directory}")
|
|
132
122
|
return directory
|
|
133
123
|
|
|
134
|
-
def handle_unrecognized_keys(data: dict
|
|
135
|
-
"""
|
|
124
|
+
def handle_unrecognized_keys(data: dict) -> dict:
|
|
125
|
+
"""Removes unrecognized keys from the data and warns the user."""
|
|
126
|
+
known_fields = set(ARAconfig.model_fields.keys())
|
|
136
127
|
cleaned_data = {}
|
|
137
128
|
for key, value in data.items():
|
|
138
129
|
if key not in known_fields:
|
|
139
|
-
print(f"Warning: {key}
|
|
130
|
+
print(f"Warning: Unrecognized configuration key '{key}' will be ignored.")
|
|
140
131
|
else:
|
|
141
132
|
cleaned_data[key] = value
|
|
142
133
|
return cleaned_data
|
|
143
134
|
|
|
144
|
-
def fix_llm_temperatures(data: dict) -> dict:
|
|
145
|
-
"""Fix invalid temperatures in LLM configurations"""
|
|
146
|
-
if 'llm_config' in data:
|
|
147
|
-
for model_key, model_config in data['llm_config'].items():
|
|
148
|
-
if isinstance(model_config, dict) and 'temperature' in model_config:
|
|
149
|
-
temp = model_config['temperature']
|
|
150
|
-
if not 0.0 <= temp <= 1.0:
|
|
151
|
-
print(f"Warning: Temperature for model '{model_key}' is outside the 0.0 to 1.0 range")
|
|
152
|
-
model_config['temperature'] = 0.8
|
|
153
|
-
return data
|
|
154
|
-
|
|
155
|
-
def validate_and_fix_config_data(filepath: str) -> dict:
|
|
156
|
-
"""Load, validate, and fix configuration data"""
|
|
157
|
-
try:
|
|
158
|
-
with open(filepath, "r", encoding="utf-8") as file:
|
|
159
|
-
data = json.load(file)
|
|
160
|
-
|
|
161
|
-
# Get known fields from the ARAconfig model
|
|
162
|
-
known_fields = set(ARAconfig.model_fields.keys())
|
|
163
|
-
|
|
164
|
-
# Handle unrecognized keys
|
|
165
|
-
data = handle_unrecognized_keys(data, known_fields)
|
|
166
|
-
|
|
167
|
-
# Fix LLM temperatures before validation
|
|
168
|
-
data = fix_llm_temperatures(data)
|
|
169
|
-
|
|
170
|
-
return data
|
|
171
|
-
except json.JSONDecodeError as e:
|
|
172
|
-
print(f"Error: Invalid JSON in configuration file: {e}")
|
|
173
|
-
print("Creating new configuration with defaults...")
|
|
174
|
-
return {}
|
|
175
|
-
except Exception as e:
|
|
176
|
-
print(f"Error reading configuration file: {e}")
|
|
177
|
-
return {}
|
|
178
|
-
|
|
179
135
|
# Function to read the JSON file and return an ARAconfig model
|
|
180
136
|
@lru_cache(maxsize=1)
|
|
181
137
|
def read_data(filepath: str) -> ARAconfig:
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
138
|
+
"""
|
|
139
|
+
Reads, validates, and repairs the configuration file.
|
|
140
|
+
If the file doesn't exist, it creates a default one.
|
|
141
|
+
If the file is invalid, it corrects only the broken parts.
|
|
142
|
+
"""
|
|
143
|
+
ensure_directory_exists(dirname(filepath))
|
|
185
144
|
|
|
186
145
|
if not exists(filepath):
|
|
187
|
-
|
|
146
|
+
print(f"Configuration file not found. Creating a default one at '{filepath}'.")
|
|
188
147
|
default_config = ARAconfig()
|
|
189
148
|
save_data(filepath, default_config)
|
|
190
|
-
print(
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
149
|
+
print("Please review the default configuration and re-run your command.")
|
|
150
|
+
sys.exit(0)
|
|
151
|
+
|
|
152
|
+
try:
|
|
153
|
+
with open(filepath, "r", encoding="utf-8") as file:
|
|
154
|
+
data = json.load(file)
|
|
155
|
+
except json.JSONDecodeError as e:
|
|
156
|
+
print(f"Error: Invalid JSON in configuration file: {e}")
|
|
157
|
+
print("Creating a new configuration with defaults...")
|
|
158
|
+
default_config = ARAconfig()
|
|
159
|
+
save_data(filepath, default_config)
|
|
160
|
+
return default_config
|
|
161
|
+
|
|
162
|
+
data = handle_unrecognized_keys(data)
|
|
195
163
|
|
|
196
|
-
# Validate and load the existing configuration
|
|
197
|
-
data = validate_and_fix_config_data(filepath)
|
|
198
|
-
|
|
199
164
|
try:
|
|
200
|
-
# Try to create the config with the loaded data
|
|
201
165
|
config = ARAconfig(**data)
|
|
202
|
-
|
|
203
|
-
# Save the potentially fixed configuration back
|
|
204
166
|
save_data(filepath, config)
|
|
205
|
-
|
|
206
167
|
return config
|
|
207
168
|
except ValidationError as e:
|
|
208
|
-
print(
|
|
209
|
-
print("
|
|
169
|
+
print("--- Configuration Error Detected ---")
|
|
170
|
+
print("Some settings in your configuration file are invalid. Attempting to fix them.")
|
|
210
171
|
|
|
211
|
-
|
|
212
|
-
|
|
172
|
+
corrected_data = data.copy()
|
|
173
|
+
defaults = ARAconfig().model_dump()
|
|
213
174
|
|
|
214
|
-
|
|
215
|
-
for field_name, field_value in data.items():
|
|
216
|
-
if field_name in ARAconfig.model_fields:
|
|
217
|
-
try:
|
|
218
|
-
# Attempt to set the field value
|
|
219
|
-
setattr(default_config, field_name, field_value)
|
|
220
|
-
except:
|
|
221
|
-
# If it fails, keep the default
|
|
222
|
-
pass
|
|
175
|
+
error_fields = {err['loc'][0] for err in e.errors() if err['loc']}
|
|
223
176
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
177
|
+
for field_name in error_fields:
|
|
178
|
+
print(f"-> Field '{field_name}' is invalid and will be reverted to its default value.")
|
|
179
|
+
corrected_data[field_name] = defaults.get(field_name)
|
|
180
|
+
|
|
181
|
+
print("--- End of Error Report ---")
|
|
182
|
+
|
|
183
|
+
final_config = ARAconfig(**corrected_data)
|
|
184
|
+
save_data(filepath, final_config)
|
|
185
|
+
print(f"Configuration has been corrected and saved to '{filepath}'.")
|
|
227
186
|
|
|
228
|
-
return
|
|
187
|
+
return final_config
|
|
229
188
|
|
|
230
189
|
# Function to save the modified configuration back to the JSON file
|
|
231
190
|
def save_data(filepath: str, config: ARAconfig):
|
|
191
|
+
"""Saves the Pydantic config model to a JSON file."""
|
|
232
192
|
with open(filepath, "w", encoding="utf-8") as file:
|
|
233
193
|
json.dump(config.model_dump(), file, indent=4)
|
|
234
194
|
|
|
@@ -237,18 +197,13 @@ class ConfigManager:
|
|
|
237
197
|
_config_instance = None
|
|
238
198
|
|
|
239
199
|
@classmethod
|
|
240
|
-
def get_config(cls, filepath=DEFAULT_CONFIG_LOCATION):
|
|
200
|
+
def get_config(cls, filepath=DEFAULT_CONFIG_LOCATION) -> ARAconfig:
|
|
241
201
|
if cls._config_instance is None:
|
|
242
|
-
config_dir = dirname(filepath)
|
|
243
|
-
|
|
244
|
-
if not exists(config_dir):
|
|
245
|
-
makedirs(config_dir)
|
|
246
|
-
|
|
247
202
|
cls._config_instance = read_data(filepath)
|
|
248
203
|
return cls._config_instance
|
|
249
204
|
|
|
250
205
|
@classmethod
|
|
251
206
|
def reset(cls):
|
|
252
|
-
"""Reset the configuration instance (useful for testing)"""
|
|
207
|
+
"""Reset the configuration instance (useful for testing)."""
|
|
253
208
|
cls._config_instance = None
|
|
254
209
|
read_data.cache_clear()
|
ara_cli/prompt_handler.py
CHANGED
|
@@ -15,8 +15,6 @@ import glob
|
|
|
15
15
|
import logging
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
18
|
class LLMSingleton:
|
|
21
19
|
_instance = None
|
|
22
20
|
_model = None
|
|
@@ -27,8 +25,7 @@ class LLMSingleton:
|
|
|
27
25
|
|
|
28
26
|
if not selected_config:
|
|
29
27
|
raise ValueError(f"No configuration found for the model: {model_id}")
|
|
30
|
-
|
|
31
|
-
selected_config = LLMConfigItem(**selected_config)
|
|
28
|
+
|
|
32
29
|
LLMSingleton._model = model_id
|
|
33
30
|
|
|
34
31
|
# Typesafe for None values inside the config.
|
|
@@ -495,7 +492,7 @@ def generate_config_prompt_template_file(prompt_data_path, config_prompt_templat
|
|
|
495
492
|
def generate_config_prompt_givens_file(prompt_data_path, config_prompt_givens_name, artefact_to_mark=None):
|
|
496
493
|
config_prompt_givens_path = os.path.join(prompt_data_path, config_prompt_givens_name)
|
|
497
494
|
config = ConfigManager.get_config()
|
|
498
|
-
dir_list = ["ara"] + [ext
|
|
495
|
+
dir_list = ["ara"] + [ext['source_dir'] for ext in config.ext_code_dirs] + [config.doc_dir] + [config.glossary_dir]
|
|
499
496
|
|
|
500
497
|
print(f"used {dir_list} for prompt givens file listing")
|
|
501
498
|
generate_markdown_listing(dir_list, config.ara_prompt_given_list_includes, config_prompt_givens_path)
|
ara_cli/version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# version.py
|
|
2
|
-
__version__ = "0.1.9.
|
|
2
|
+
__version__ = "0.1.9.89" # 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.
|
|
3
|
+
Version: 0.1.9.89
|
|
4
4
|
Summary: Powerful, open source command-line tool for managing, structuring and automating software development artifacts in line with Business-Driven Development (BDD) and AI-assisted processes
|
|
5
5
|
Description-Content-Type: text/markdown
|
|
6
6
|
Requires-Dist: litellm
|
|
@@ -2,7 +2,7 @@ ara_cli/__init__.py,sha256=0zl7IegxTid26EBGLav_fXZ4CCIV3H5TfAoFQiOHjvg,148
|
|
|
2
2
|
ara_cli/__main__.py,sha256=J5DCDLRZ6UcpYwM1-NkjaLo4PTetcSj2dB4HrrftkUw,2064
|
|
3
3
|
ara_cli/ara_command_action.py,sha256=_LHE2V5hbJxN7ccYiptuPktRfbTnXmQEt_D_FxDBlBY,22456
|
|
4
4
|
ara_cli/ara_command_parser.py,sha256=I-e9W-QwTIMKMzlHycSlCWCyBFQfiFYvGre1XsDbrFI,20573
|
|
5
|
-
ara_cli/ara_config.py,sha256=
|
|
5
|
+
ara_cli/ara_config.py,sha256=w7GkDNy2Tx75LFZBu8J2KWAUMpk4F5jzuMhSjmvn948,7206
|
|
6
6
|
ara_cli/artefact_autofix.py,sha256=WVTiIR-jo4YKmmz4eS3qTFvl45W1YKwAk1XSuz9QX10,20015
|
|
7
7
|
ara_cli/artefact_creator.py,sha256=0Ory6cB-Ahkw-BDNb8QHnTbp_OHGABdkb9bhwcEdcIc,6063
|
|
8
8
|
ara_cli/artefact_deleter.py,sha256=Co4wwCH3yW8H9NrOq7_2p5571EeHr0TsfE-H8KqoOfY,1900
|
|
@@ -25,13 +25,13 @@ ara_cli/list_filter.py,sha256=qKGwwQsrWe7L5FbdxEbBYD1bbbi8c-RMypjXqXvLbgs,5291
|
|
|
25
25
|
ara_cli/output_suppressor.py,sha256=nwiHaQLwabOjMoJOeUESBnZszGMxrQZfJ3N2OvahX7Y,389
|
|
26
26
|
ara_cli/prompt_chat.py,sha256=kd_OINDQFit6jN04bb7mzgY259JBbRaTaNp9F-webkc,1346
|
|
27
27
|
ara_cli/prompt_extractor.py,sha256=6xLGd4ZJHDKkamEUQcdRbKM3ilBtxBjp0X2o8wrvHb0,7732
|
|
28
|
-
ara_cli/prompt_handler.py,sha256=
|
|
28
|
+
ara_cli/prompt_handler.py,sha256=5FoVCNmmzrS4hjHL4qKteQt2A5MIycoZStkJrVL5l_4,20136
|
|
29
29
|
ara_cli/prompt_rag.py,sha256=ydlhe4CUqz0jdzlY7jBbpKaf_5fjMrAZKnriKea3ZAg,7485
|
|
30
30
|
ara_cli/run_file_lister.py,sha256=XbrrDTJXp1LFGx9Lv91SNsEHZPP-PyEMBF_P4btjbDA,2360
|
|
31
31
|
ara_cli/tag_extractor.py,sha256=TGdaQOVnjy25R0zDsAifB67C5oom0Fwo24s0_fr5A_I,3151
|
|
32
32
|
ara_cli/template_manager.py,sha256=YwrN6AYPpl6ZrW8BVQpVXx8yTRf-oNpJUIKeg4NAggs,6606
|
|
33
33
|
ara_cli/update_config_prompt.py,sha256=Oy9vNTw6UhDohyTEfSKkqE5ifEMPlmWNYkKHgUrK_pY,4607
|
|
34
|
-
ara_cli/version.py,sha256=
|
|
34
|
+
ara_cli/version.py,sha256=NaGz6YoHedIfREfmsLD-XITUWBN2mNZImEJSC6EQf9g,146
|
|
35
35
|
ara_cli/artefact_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
36
|
ara_cli/artefact_models/artefact_load.py,sha256=IXzWxP-Q_j_oDGMno0m-OuXCQ7Vd5c_NctshGr4ROBw,621
|
|
37
37
|
ara_cli/artefact_models/artefact_mapping.py,sha256=8aD0spBjkJ8toMAmFawc6UTUxB6-tEEViZXv2I-r88Q,1874
|
|
@@ -134,7 +134,7 @@ ara_cli/templates/specification_breakdown_files/template.technology.exploration.
|
|
|
134
134
|
ara_cli/templates/specification_breakdown_files/template.technology.md,sha256=bySiksz-8xtq0Nnj4svqe2MgUftWrVkbK9AcrDUE3KY,952
|
|
135
135
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
136
136
|
tests/test_ara_command_action.py,sha256=JTLqXM9BSMlU33OQgrk_sZnoowFJZKZAx8q-st-wa34,25821
|
|
137
|
-
tests/test_ara_config.py,sha256=
|
|
137
|
+
tests/test_ara_config.py,sha256=H5GwDbab0GMSa6IbHdruzmbsHy5Ia0xX0uteJdfZ9Rg,14277
|
|
138
138
|
tests/test_artefact_autofix.py,sha256=pApZ-N0dW8Ujt-cNLbgvd4bhiIIK8oXb-saLf6QlA-8,25022
|
|
139
139
|
tests/test_artefact_fuzzy_search.py,sha256=5Sh3_l9QK8-WHn6JpGPU1b6h4QEnl2JoMq1Tdp2cj1U,1261
|
|
140
140
|
tests/test_artefact_link_updater.py,sha256=biqbEp2jCOz8giv72hu2P2hDfeJfJ9OrVGdAv5d9cK4,2191
|
|
@@ -149,11 +149,12 @@ tests/test_file_classifier.py,sha256=kLWPiePu3F5mkVuI_lK_2QlLh2kXD_Mt2K8KZZ1fAnA
|
|
|
149
149
|
tests/test_file_creator.py,sha256=D3G7MbgE0m8JmZihxnTryxLco6iZdbV--2CGc0L20FM,2109
|
|
150
150
|
tests/test_file_lister.py,sha256=Q9HwhKKx540EPzTmfzOCnvtAgON0aMmpJE2eOe1J3EA,4324
|
|
151
151
|
tests/test_list_filter.py,sha256=fJA3d_SdaOAUkE7jn68MOVS0THXGghy1fye_64Zvo1U,7964
|
|
152
|
+
tests/test_prompt_handler.py,sha256=GJbKeipXAwKs-IpHlzaFBxB9_G3FlHwTpCGqfBNfSy8,13338
|
|
152
153
|
tests/test_tag_extractor.py,sha256=nSiAYlTKZ7TLAOtcJpwK5zTWHhFYU0tI5xKnivLc1dU,2712
|
|
153
154
|
tests/test_template_manager.py,sha256=q-LMHRG4rHkD6ON6YW4cpZxUx9hul6Or8wVVRC2kb-8,4099
|
|
154
155
|
tests/test_update_config_prompt.py,sha256=xsqj1WTn4BsG5Q2t-sNPfu7EoMURFcS-hfb5VSXUnJc,6765
|
|
155
|
-
ara_cli-0.1.9.
|
|
156
|
-
ara_cli-0.1.9.
|
|
157
|
-
ara_cli-0.1.9.
|
|
158
|
-
ara_cli-0.1.9.
|
|
159
|
-
ara_cli-0.1.9.
|
|
156
|
+
ara_cli-0.1.9.89.dist-info/METADATA,sha256=f0NXWsKYiDAZ1GCsswX9Y2bPbvztjI4LSOFx7zmatio,6739
|
|
157
|
+
ara_cli-0.1.9.89.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
158
|
+
ara_cli-0.1.9.89.dist-info/entry_points.txt,sha256=v4h7MzysTgSIDYfEo3oj4Kz_8lzsRa3hq-KJHEcLVX8,45
|
|
159
|
+
ara_cli-0.1.9.89.dist-info/top_level.txt,sha256=WM4cLHT5DYUaWzLtRj-gu3yVNFpGQ6lLRI3FMmC-38I,14
|
|
160
|
+
ara_cli-0.1.9.89.dist-info/RECORD,,
|