codemie-test-harness 0.1.170__py3-none-any.whl → 0.1.172__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 codemie-test-harness might be problematic. Click here for more details.
- codemie_test_harness/tests/assistant/test_assistants.py +82 -0
- codemie_test_harness/tests/llm/assistants/test_lite_llm.py +8 -1
- codemie_test_harness/tests/test_data/assistant_test_data.py +840 -0
- codemie_test_harness/tests/test_data/files/test_extended.docx +0 -0
- codemie_test_harness/tests/test_data/files/test_extended.xlsx +0 -0
- codemie_test_harness/tests/utils/credentials_manager.py +16 -0
- {codemie_test_harness-0.1.170.dist-info → codemie_test_harness-0.1.172.dist-info}/METADATA +2 -2
- {codemie_test_harness-0.1.170.dist-info → codemie_test_harness-0.1.172.dist-info}/RECORD +10 -8
- {codemie_test_harness-0.1.170.dist-info → codemie_test_harness-0.1.172.dist-info}/WHEEL +0 -0
- {codemie_test_harness-0.1.170.dist-info → codemie_test_harness-0.1.172.dist-info}/entry_points.txt +0 -0
|
@@ -14,6 +14,10 @@ from codemie_sdk.models.assistant import (
|
|
|
14
14
|
ChatRole,
|
|
15
15
|
)
|
|
16
16
|
from codemie_test_harness.tests import TEST_USER, PROJECT, LANGFUSE_TRACES_ENABLED
|
|
17
|
+
from codemie_test_harness.tests.test_data.assistant_test_data import (
|
|
18
|
+
EXCEL_TOOL_TEST_DATA,
|
|
19
|
+
DOCX_TOOL_TEST_DATA,
|
|
20
|
+
)
|
|
17
21
|
from codemie_test_harness.tests.test_data.file_test_data import (
|
|
18
22
|
files_with_different_types_test_data,
|
|
19
23
|
file_test_data,
|
|
@@ -390,3 +394,81 @@ def test_create_assistant_and_prompt_with_multiple_files(
|
|
|
390
394
|
assistant, prompt, conversation_id=conversation_id
|
|
391
395
|
)
|
|
392
396
|
similarity_check.check_similarity(response, RESPONSE_FOR_TWO_FILES_UPLOADED)
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
@pytest.mark.assistant
|
|
400
|
+
@pytest.mark.file
|
|
401
|
+
@pytest.mark.regression
|
|
402
|
+
@pytest.mark.smoke
|
|
403
|
+
@pytest.mark.parametrize("prompt,expected_response", EXCEL_TOOL_TEST_DATA)
|
|
404
|
+
def test_excel_tool_extended_functionality(
|
|
405
|
+
assistant_utils, assistant, similarity_check, prompt, expected_response
|
|
406
|
+
):
|
|
407
|
+
"""
|
|
408
|
+
Test extended Excel tool functionality with various scenarios.
|
|
409
|
+
|
|
410
|
+
This test covers:
|
|
411
|
+
- Data extraction from visible sheets only
|
|
412
|
+
- All data including hidden sheets
|
|
413
|
+
- Sheet name listing functionality
|
|
414
|
+
- File statistics and structure analysis
|
|
415
|
+
- Single sheet extraction by index and name
|
|
416
|
+
- Data cleaning and normalization
|
|
417
|
+
- Hidden sheet visibility control
|
|
418
|
+
- Column structure and data type analysis
|
|
419
|
+
- Tabular structure normalization
|
|
420
|
+
- Multi-sheet comprehensive analysis
|
|
421
|
+
|
|
422
|
+
"""
|
|
423
|
+
assistant_instance = assistant()
|
|
424
|
+
|
|
425
|
+
uploaded_file = assistant_utils.upload_file_to_chat(
|
|
426
|
+
FILES_PATH / "test_extended.xlsx"
|
|
427
|
+
)
|
|
428
|
+
file_url = uploaded_file.get("file_url")
|
|
429
|
+
|
|
430
|
+
# Send the prompt with the uploaded file
|
|
431
|
+
response = assistant_utils.ask_assistant(
|
|
432
|
+
assistant_instance, prompt, file_urls=[file_url]
|
|
433
|
+
)
|
|
434
|
+
|
|
435
|
+
similarity_check.check_similarity(response, expected_response)
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
@pytest.mark.assistant
|
|
439
|
+
@pytest.mark.file
|
|
440
|
+
@pytest.mark.regression
|
|
441
|
+
@pytest.mark.smoke
|
|
442
|
+
@pytest.mark.parametrize("prompt,expected_response", DOCX_TOOL_TEST_DATA)
|
|
443
|
+
def test_docx_tool_extended_functionality(
|
|
444
|
+
assistant_utils, assistant, similarity_check, prompt, expected_response
|
|
445
|
+
):
|
|
446
|
+
"""
|
|
447
|
+
Test extended Docx tool functionality with various scenarios.
|
|
448
|
+
|
|
449
|
+
This test covers:
|
|
450
|
+
- Extract plain text using 'text' query
|
|
451
|
+
- Extract text with metadata using 'text_with_metadata' query
|
|
452
|
+
- Extract document structure using 'structure_only' query
|
|
453
|
+
- Extract tables using 'table_extraction' query
|
|
454
|
+
- Generate summary using 'summary' query
|
|
455
|
+
- Perform analysis with custom instructions using 'analyze' query
|
|
456
|
+
- Process specific pages '1-3' using pages parameter
|
|
457
|
+
- Process specific pages '1,5,10' using pages parameter
|
|
458
|
+
- Extract images using 'image_extraction' query
|
|
459
|
+
- Extract text with OCR from images using 'text_with_images' query
|
|
460
|
+
|
|
461
|
+
"""
|
|
462
|
+
assistant_instance = assistant()
|
|
463
|
+
|
|
464
|
+
uploaded_file = assistant_utils.upload_file_to_chat(
|
|
465
|
+
FILES_PATH / "test_extended.docx"
|
|
466
|
+
)
|
|
467
|
+
file_url = uploaded_file.get("file_url")
|
|
468
|
+
|
|
469
|
+
# Send the prompt with the uploaded file
|
|
470
|
+
response = assistant_utils.ask_assistant(
|
|
471
|
+
assistant_instance, prompt, file_urls=[file_url]
|
|
472
|
+
)
|
|
473
|
+
|
|
474
|
+
similarity_check.check_similarity(response, expected_response)
|
|
@@ -7,7 +7,10 @@ from codemie_test_harness.tests.test_data.llm_test_data import MODEL_RESPONSES
|
|
|
7
7
|
from codemie_test_harness.tests.utils.credentials_manager import CredentialsManager
|
|
8
8
|
from codemie_test_harness.tests.utils.client_factory import get_client
|
|
9
9
|
from codemie_test_harness.tests.utils.constants import test_project_name
|
|
10
|
-
from codemie_test_harness.tests.utils.env_resolver import
|
|
10
|
+
from codemie_test_harness.tests.utils.env_resolver import (
|
|
11
|
+
get_environment,
|
|
12
|
+
EnvironmentResolver,
|
|
13
|
+
)
|
|
11
14
|
from codemie_test_harness.tests.utils.pytest_utils import check_mark
|
|
12
15
|
|
|
13
16
|
|
|
@@ -63,6 +66,10 @@ def pytest_generate_tests(metafunc):
|
|
|
63
66
|
@pytest.mark.assistant
|
|
64
67
|
@pytest.mark.lite_llm
|
|
65
68
|
@pytest.mark.regression
|
|
69
|
+
@pytest.mark.skipif(
|
|
70
|
+
EnvironmentResolver.is_sandbox(),
|
|
71
|
+
reason="Skipping this tests on sandbox environments",
|
|
72
|
+
)
|
|
66
73
|
def test_assistant_with_different_models_in_lite_llm(
|
|
67
74
|
llm_utils,
|
|
68
75
|
lite_llm_integration,
|
|
@@ -8,6 +8,7 @@ reusable data factories for consistent testing.
|
|
|
8
8
|
|
|
9
9
|
from dataclasses import dataclass
|
|
10
10
|
from typing import Optional, List
|
|
11
|
+
import pytest
|
|
11
12
|
|
|
12
13
|
from codemie_test_harness.tests.utils.base_utils import get_random_name
|
|
13
14
|
|
|
@@ -195,3 +196,842 @@ COMMON_ICON_URLS = {
|
|
|
195
196
|
}
|
|
196
197
|
|
|
197
198
|
ICON_URL = "https://raw.githubusercontent.com/epam-gen-ai-run/ai-run-install/main/docs/assets/ai/AQAUiTestGenerator.png"
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
EXCEL_TOOL_TEST_DATA = [
|
|
202
|
+
pytest.param(
|
|
203
|
+
"Analyze the data in test_extended.xlsx and extract information from visible sheets only",
|
|
204
|
+
"""
|
|
205
|
+
The analysis of the visible sheets in the file **test_extended.xlsx** yields the following data:
|
|
206
|
+
|
|
207
|
+
### First Sheet
|
|
208
|
+
| Column 1 | Column 2 | Column 3 |
|
|
209
|
+
| --- | --- | --- |
|
|
210
|
+
| Cars | Test | 222 |
|
|
211
|
+
| Data | Cats | 111 |
|
|
212
|
+
| | | Travellers |
|
|
213
|
+
| Tree | Forest | |
|
|
214
|
+
| Tree | Forest | |
|
|
215
|
+
| Tree | Forest | |
|
|
216
|
+
| Tree | Forest | |
|
|
217
|
+
| Bykes | Red | 877 |
|
|
218
|
+
|
|
219
|
+
### Second Sheet
|
|
220
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
221
|
+
| --- | --- | --- | --- |
|
|
222
|
+
| Cars | Test | 222 | Second |
|
|
223
|
+
| Data | Cats | 111 | Second |
|
|
224
|
+
| | | Travellers | Second |
|
|
225
|
+
| Tree | Forest | | Second |
|
|
226
|
+
| Tree | Forest | | Second |
|
|
227
|
+
| Tree | Forest | | Second |
|
|
228
|
+
| Tree | Forest | | Second |
|
|
229
|
+
| Bykes | Red | 877 | Second |
|
|
230
|
+
|
|
231
|
+
The hidden sheet data has been excluded based on the request for visible sheets only. If you need further analysis on specific data or another request, feel free to ask!
|
|
232
|
+
""",
|
|
233
|
+
id="visible_sheets_only",
|
|
234
|
+
),
|
|
235
|
+
pytest.param(
|
|
236
|
+
"Extract all data from test_extended.xlsx including hidden sheets",
|
|
237
|
+
"""
|
|
238
|
+
Here is the extracted data from the `test_extended.xlsx` file, including data from hidden sheets:
|
|
239
|
+
|
|
240
|
+
### First Sheet
|
|
241
|
+
| Column 1 | Column 2 | Column 3 |
|
|
242
|
+
| --- | --- | --- |
|
|
243
|
+
| Cars | Test | 222 |
|
|
244
|
+
| Data | Cats | 111 |
|
|
245
|
+
| | | Travellers |
|
|
246
|
+
| | | |
|
|
247
|
+
| Tree | Forest | |
|
|
248
|
+
| Tree | Forest | |
|
|
249
|
+
| Tree | Forest | |
|
|
250
|
+
| Tree | Forest | |
|
|
251
|
+
| | | |
|
|
252
|
+
| Bykes | Red | 877 |
|
|
253
|
+
|
|
254
|
+
### Second Sheet
|
|
255
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
256
|
+
| --- | --- | --- | --- |
|
|
257
|
+
| Cars | Test | 222 | Second |
|
|
258
|
+
| Data | Cats | 111 | Second |
|
|
259
|
+
| | | Travellers | Second |
|
|
260
|
+
| | | | |
|
|
261
|
+
| Tree | Forest | | Second |
|
|
262
|
+
| Tree | Forest | | Second |
|
|
263
|
+
| Tree | Forest | | Second |
|
|
264
|
+
| Tree | Forest | | Second |
|
|
265
|
+
| | | | |
|
|
266
|
+
| Bykes | Red | 877 | Second |
|
|
267
|
+
|
|
268
|
+
### Hidden Sheet
|
|
269
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
270
|
+
| --- | --- | --- | --- |
|
|
271
|
+
| Cars | Test | 222 | Hidden |
|
|
272
|
+
| Data | Cats | 111 | Hidden |
|
|
273
|
+
| | | Travellers | Hidden |
|
|
274
|
+
| | | | |
|
|
275
|
+
| Tree | Forest | | Hidden |
|
|
276
|
+
| Tree | Forest | | Hidden |
|
|
277
|
+
| Tree | Forest | | Hidden |
|
|
278
|
+
| Tree | Forest | | Hidden |
|
|
279
|
+
| | | | |
|
|
280
|
+
| Bykes | Red | 877 | Hidden |
|
|
281
|
+
""",
|
|
282
|
+
id="all_sheets_including_hidden",
|
|
283
|
+
),
|
|
284
|
+
pytest.param(
|
|
285
|
+
"List all sheet names in test_extended.xlsx",
|
|
286
|
+
"""
|
|
287
|
+
The Excel file `test_extended.xlsx` contains the following sheets:
|
|
288
|
+
|
|
289
|
+
- First sheet
|
|
290
|
+
- Second sheet
|
|
291
|
+
- Hidden sheet
|
|
292
|
+
""",
|
|
293
|
+
id="all_sheet_names",
|
|
294
|
+
),
|
|
295
|
+
pytest.param(
|
|
296
|
+
"Get only visible sheet names from test_extended.xlsx",
|
|
297
|
+
"""
|
|
298
|
+
The visible sheets in the `test_extended.xlsx` file are:
|
|
299
|
+
|
|
300
|
+
- First sheet
|
|
301
|
+
- Second sheet
|
|
302
|
+
""",
|
|
303
|
+
id="visible_sheet_names_only",
|
|
304
|
+
),
|
|
305
|
+
pytest.param(
|
|
306
|
+
"Get comprehensive statistics about test_extended.xlsx file structure",
|
|
307
|
+
"""
|
|
308
|
+
The Excel file `test_extended.xlsx` contains the following structure:
|
|
309
|
+
|
|
310
|
+
- **Total Sheets:** 3
|
|
311
|
+
|
|
312
|
+
### Sheet: First sheet
|
|
313
|
+
- **Columns:**
|
|
314
|
+
- Column 1: string, Sample Values: `Cars`, `Data`, ``, ...
|
|
315
|
+
- Column 2: string, Sample Values: `Test`, `Cats`, ``, ...
|
|
316
|
+
- Column 3: string, Sample Values: `222`, `111`, `Travellers`, ...
|
|
317
|
+
|
|
318
|
+
### Sheet: Second sheet
|
|
319
|
+
- **Columns:**
|
|
320
|
+
- Column 1: string, Sample Values: `Cars`, `Data`, ``, ...
|
|
321
|
+
- Column 2: string, Sample Values: `Test`, `Cats`, ``, ...
|
|
322
|
+
- Column 3: string, Sample Values: `222`, `111`, `Travellers`, ...
|
|
323
|
+
- Column 4: string, Sample Values: `Second`
|
|
324
|
+
|
|
325
|
+
### Sheet: Hidden sheet
|
|
326
|
+
- **Columns:**
|
|
327
|
+
- Column 1: string, Sample Values: `Cars`, `Data`, ``, ...
|
|
328
|
+
- Column 2: string, Sample Values: `Test`, `Cats`, ``, ...
|
|
329
|
+
- Column 3: string, Sample Values: `222`, `111`, `Travellers`, ...
|
|
330
|
+
- Column 4: string, Sample Values: `Hidden`
|
|
331
|
+
|
|
332
|
+
This summary provides an overview of the column names, data types, and sample values for each sheet within the Excel file.
|
|
333
|
+
""",
|
|
334
|
+
id="file_statistics",
|
|
335
|
+
),
|
|
336
|
+
pytest.param(
|
|
337
|
+
"Extract data from the first sheet only using sheet index from test_extended.xlsx",
|
|
338
|
+
"""
|
|
339
|
+
Here is the extracted data from the first sheet of the file `test_extended.xlsx`:
|
|
340
|
+
|
|
341
|
+
| Column 1 | Column 2 | Column 3 |
|
|
342
|
+
|:---------|:---------|:-----------|
|
|
343
|
+
| Cars | Test | 222 |
|
|
344
|
+
| Data | Cats | 111 |
|
|
345
|
+
| | | Travellers |
|
|
346
|
+
| Tree | Forest | |
|
|
347
|
+
| Tree | Forest | |
|
|
348
|
+
| Tree | Forest | |
|
|
349
|
+
| Tree | Forest | |
|
|
350
|
+
| Bykes | Red | 877 |
|
|
351
|
+
""",
|
|
352
|
+
id="single_sheet_by_index",
|
|
353
|
+
),
|
|
354
|
+
pytest.param(
|
|
355
|
+
"Extract data only from 'Second sheet' in test_extended.xlsx",
|
|
356
|
+
"""
|
|
357
|
+
The data extracted from the "Second sheet" in `test_extended.xlsx` is as follows:
|
|
358
|
+
|
|
359
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
360
|
+
|----------|----------|------------|----------|
|
|
361
|
+
| Cars | Test | 222 | Second |
|
|
362
|
+
| Data | Cats | 111 | Second |
|
|
363
|
+
| | | Travellers | Second |
|
|
364
|
+
| Tree | Forest | | Second |
|
|
365
|
+
| Tree | Forest | | Second |
|
|
366
|
+
| Tree | Forest | | Second |
|
|
367
|
+
| Tree | Forest | | Second |
|
|
368
|
+
| Bykes | Red | 877 | Second |
|
|
369
|
+
""",
|
|
370
|
+
id="single_sheet_by_name",
|
|
371
|
+
),
|
|
372
|
+
pytest.param(
|
|
373
|
+
"Process test_extended.xlsx with data cleaning to remove empty rows and columns",
|
|
374
|
+
"""
|
|
375
|
+
The file `test_extended.xlsx` was processed with data cleaning to remove empty rows and columns. Here is a representation of the cleaned Excel sheets:
|
|
376
|
+
|
|
377
|
+
### First Sheet
|
|
378
|
+
| Column 1 | Column 2 | Column 3 |
|
|
379
|
+
|----------|----------|----------|
|
|
380
|
+
| Cars | Test | 222 |
|
|
381
|
+
| Data | Cats | 111 |
|
|
382
|
+
| | | Travellers|
|
|
383
|
+
| Tree | Forest | |
|
|
384
|
+
| Tree | Forest | |
|
|
385
|
+
| Tree | Forest | |
|
|
386
|
+
| Tree | Forest | |
|
|
387
|
+
| Bykes | Red | 877 |
|
|
388
|
+
|
|
389
|
+
### Second Sheet
|
|
390
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
391
|
+
|----------|----------|----------|----------|
|
|
392
|
+
| Cars | Test | 222 | Second |
|
|
393
|
+
| Data | Cats | 111 | Second |
|
|
394
|
+
| | | Travellers| Second |
|
|
395
|
+
| Tree | Forest | | Second |
|
|
396
|
+
| Tree | Forest | | Second |
|
|
397
|
+
| Tree | Forest | | Second |
|
|
398
|
+
| Tree | Forest | | Second |
|
|
399
|
+
| Bykes | Red | 877 | Second |
|
|
400
|
+
|
|
401
|
+
### Hidden Sheet
|
|
402
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
403
|
+
|----------|----------|----------|----------|
|
|
404
|
+
| Cars | Test | 222 | Hidden |
|
|
405
|
+
| Data | Cats | 111 | Hidden |
|
|
406
|
+
| | | Travellers| Hidden |
|
|
407
|
+
| Tree | Forest | | Hidden |
|
|
408
|
+
| Tree | Forest | | Hidden |
|
|
409
|
+
| Tree | Forest | | Hidden |
|
|
410
|
+
| Tree | Forest | | Hidden |
|
|
411
|
+
| Bykes | Red | 877 | Hidden |
|
|
412
|
+
|
|
413
|
+
The visible sheets have been cleaned, taking away rows and columns that were completely empty. Hidden sheets have been processed but are not visible by default.
|
|
414
|
+
""",
|
|
415
|
+
id="data_cleaning",
|
|
416
|
+
),
|
|
417
|
+
pytest.param(
|
|
418
|
+
"Analyze test_extended.xlsx with visible_only=False to include hidden sheets",
|
|
419
|
+
"""
|
|
420
|
+
The Excel file `test_extended.xlsx` contains three sheets, including a hidden one. Here's a summary of each sheet's content:
|
|
421
|
+
|
|
422
|
+
### First Sheet
|
|
423
|
+
| Column 1 | Column 2 | Column 3 |
|
|
424
|
+
| --- | --- | --- |
|
|
425
|
+
| Cars | Test | 222 |
|
|
426
|
+
| Data | Cats | 111 |
|
|
427
|
+
| | | Travellers |
|
|
428
|
+
| | | |
|
|
429
|
+
| Tree | Forest | |
|
|
430
|
+
| Tree | Forest | |
|
|
431
|
+
| Tree | Forest | |
|
|
432
|
+
| Tree | Forest | |
|
|
433
|
+
| | | |
|
|
434
|
+
| Bykes | Red | 877 |
|
|
435
|
+
|
|
436
|
+
### Second Sheet
|
|
437
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
438
|
+
| --- | --- | --- | --- |
|
|
439
|
+
| Cars | Test | 222 | Second |
|
|
440
|
+
| Data | Cats | 111 | Second |
|
|
441
|
+
| | | Travellers | Second |
|
|
442
|
+
| | | | |
|
|
443
|
+
| Tree | Forest | | Second |
|
|
444
|
+
| Tree | Forest | | Second |
|
|
445
|
+
| Tree | Forest | | Second |
|
|
446
|
+
| Tree | Forest | | Second |
|
|
447
|
+
| | | | |
|
|
448
|
+
| Bykes | Red | 877 | Second |
|
|
449
|
+
|
|
450
|
+
### Hidden Sheet
|
|
451
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
452
|
+
| --- | --- | --- | --- |
|
|
453
|
+
| Cars | Test | 222 | Hidden |
|
|
454
|
+
| Data | Cats | 111 | Hidden |
|
|
455
|
+
| | | Travellers | Hidden |
|
|
456
|
+
| | | | |
|
|
457
|
+
| Tree | Forest | | Hidden |
|
|
458
|
+
| Tree | Forest | | Hidden |
|
|
459
|
+
| Tree | Forest | | Hidden |
|
|
460
|
+
| Tree | Forest | | Hidden |
|
|
461
|
+
| | | | |
|
|
462
|
+
| Bykes | Red | 877 | Hidden |
|
|
463
|
+
|
|
464
|
+
### Observations:
|
|
465
|
+
- Each sheet has a similar structure, with `Column 1` and `Column 2` containing repeated entries.
|
|
466
|
+
- The hidden sheet appears to be similar to the second sheet but with the label 'Hidden' in `Column 4`.
|
|
467
|
+
- The first sheet doesn't have a `Column 4` like the other two sheets.
|
|
468
|
+
- There are several rows with missing values, especially in `Column 1` and `Column 2`.
|
|
469
|
+
|
|
470
|
+
Let me know if you need more in-depth analysis or specific insights from these sheets!
|
|
471
|
+
""",
|
|
472
|
+
id="hidden_sheet_visibility",
|
|
473
|
+
),
|
|
474
|
+
pytest.param(
|
|
475
|
+
"Analyze column structure and data types in test_extended.xlsx",
|
|
476
|
+
"""
|
|
477
|
+
The Excel file `test_extended.xlsx` contains a total of 3 sheets: "First sheet", "Second sheet", and a "Hidden sheet". Here's an overview of the column structure and data types for each sheet:
|
|
478
|
+
|
|
479
|
+
### Sheet: First sheet
|
|
480
|
+
- **Columns:**
|
|
481
|
+
- **Column 1**: string (Sample Values: `Cars`, `Data`, ...)
|
|
482
|
+
- **Column 2**: string (Sample Values: `Test`, `Cats`, ...)
|
|
483
|
+
- **Column 3**: string (Sample Values: `222`, `111`, `Travellers`, ...)
|
|
484
|
+
|
|
485
|
+
### Sheet: Second sheet
|
|
486
|
+
- **Columns:**
|
|
487
|
+
- **Column 1**: string (Sample Values: `Cars`, `Data`, ...)
|
|
488
|
+
- **Column 2**: string (Sample Values: `Test`, `Cats`, ...)
|
|
489
|
+
- **Column 3**: string (Sample Values: `222`, `111`, `Travellers`, ...)
|
|
490
|
+
- **Column 4**: string (Sample Value: `Second`)
|
|
491
|
+
|
|
492
|
+
### Sheet: Hidden sheet
|
|
493
|
+
- **Columns:**
|
|
494
|
+
- **Column 1**: string (Sample Values: `Cars`, `Data`, ...)
|
|
495
|
+
- **Column 2**: string (Sample Values: `Test`, `Cats`, ...)
|
|
496
|
+
- **Column 3**: string (Sample Values: `222`, `111`, `Travellers`, ...)
|
|
497
|
+
- **Column 4**: string (Sample Value: `Hidden`)
|
|
498
|
+
|
|
499
|
+
All columns across the sheets predominantly contain string data types. If you have any further questions or need additional analysis, feel free to ask!
|
|
500
|
+
""",
|
|
501
|
+
id="column_structure_analysis",
|
|
502
|
+
),
|
|
503
|
+
pytest.param(
|
|
504
|
+
"Normalize test_extended.xlsx data to standard tabular structure with markdown format",
|
|
505
|
+
"""
|
|
506
|
+
Here is the normalized content from the `test_extended.xlsx`, structured in markdown tables:
|
|
507
|
+
|
|
508
|
+
### First Sheet
|
|
509
|
+
```markdown
|
|
510
|
+
| Column 1 | Column 2 | Column 3 |
|
|
511
|
+
|----------|----------|----------|
|
|
512
|
+
| Cars | Test | 222 |
|
|
513
|
+
| Data | Cats | 111 |
|
|
514
|
+
| | | Travellers|
|
|
515
|
+
| Tree | Forest | |
|
|
516
|
+
| Tree | Forest | |
|
|
517
|
+
| Tree | Forest | |
|
|
518
|
+
| Tree | Forest | |
|
|
519
|
+
| Bykes | Red | 877 |
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
### Second Sheet
|
|
523
|
+
```markdown
|
|
524
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
525
|
+
|----------|----------|----------|----------|
|
|
526
|
+
| Cars | Test | 222 | Second |
|
|
527
|
+
| Data | Cats | 111 | Second |
|
|
528
|
+
| | | Travellers| Second |
|
|
529
|
+
| Tree | Forest | | Second |
|
|
530
|
+
| Tree | Forest | | Second |
|
|
531
|
+
| Tree | Forest | | Second |
|
|
532
|
+
| Tree | Forest | | Second |
|
|
533
|
+
| Bykes | Red | 877 | Second |
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
### Hidden Sheet
|
|
537
|
+
```markdown
|
|
538
|
+
| Column 1 | Column 2 | Column 3 | Column 4 |
|
|
539
|
+
|----------|----------|----------|----------|
|
|
540
|
+
| Cars | Test | 222 | Hidden |
|
|
541
|
+
| Data | Cats | 111 | Hidden |
|
|
542
|
+
| | | Travellers| Hidden |
|
|
543
|
+
| Tree | Forest | | Hidden |
|
|
544
|
+
| Tree | Forest | | Hidden |
|
|
545
|
+
| Tree | Forest | | Hidden |
|
|
546
|
+
| Tree | Forest | | Hidden |
|
|
547
|
+
| Bykes | Red | 877 | Hidden |
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
Each sheet has been normalized into a standard tabular markdown format.
|
|
551
|
+
""",
|
|
552
|
+
id="tabular_normalization",
|
|
553
|
+
),
|
|
554
|
+
pytest.param(
|
|
555
|
+
"Perform comprehensive analysis of all sheets in test_extended.xlsx including data summary",
|
|
556
|
+
"""
|
|
557
|
+
The file `test_extended.xlsx` contains the following information:
|
|
558
|
+
|
|
559
|
+
### Overall Summary
|
|
560
|
+
- **Total Sheets:** 3
|
|
561
|
+
|
|
562
|
+
### Detailed Sheet Information
|
|
563
|
+
|
|
564
|
+
#### 1. First Sheet
|
|
565
|
+
- **Columns:**
|
|
566
|
+
| Column Name | Data Type | Sample Values |
|
|
567
|
+
|-------------|-----------|-------------------|
|
|
568
|
+
| Column 1 | string | `Cars`, `Data`, ...|
|
|
569
|
+
| Column 2 | string | `Test`, `Cats`, ...|
|
|
570
|
+
| Column 3 | string | `222`, `111`, ... |
|
|
571
|
+
|
|
572
|
+
#### 2. Second Sheet
|
|
573
|
+
- **Columns:**
|
|
574
|
+
| Column Name | Data Type | Sample Values |
|
|
575
|
+
|-------------|-----------|-------------------|
|
|
576
|
+
| Column 1 | string | `Cars`, `Data`, ...|
|
|
577
|
+
| Column 2 | string | `Test`, `Cats`, ...|
|
|
578
|
+
| Column 3 | string | `222`, `111`, ... |
|
|
579
|
+
| Column 4 | string | `Second` |
|
|
580
|
+
|
|
581
|
+
#### 3. Hidden Sheet
|
|
582
|
+
- **Columns:**
|
|
583
|
+
| Column Name | Data Type | Sample Values |
|
|
584
|
+
|-------------|-----------|-------------------|
|
|
585
|
+
| Column 1 | string | `Cars`, `Data`, ...|
|
|
586
|
+
| Column 2 | string | `Test`, `Cats`, ...|
|
|
587
|
+
| Column 3 | string | `222`, `111`, ... |
|
|
588
|
+
| Column 4 | string | `Hidden` |
|
|
589
|
+
|
|
590
|
+
These sheets include a variety of string data across the columns with consistent format among the visible and hidden sheets.
|
|
591
|
+
""",
|
|
592
|
+
id="comprehensive_analysis",
|
|
593
|
+
),
|
|
594
|
+
]
|
|
595
|
+
|
|
596
|
+
DOCX_TOOL_TEST_DATA = [
|
|
597
|
+
pytest.param(
|
|
598
|
+
"Extract plain text and show it",
|
|
599
|
+
"""
|
|
600
|
+
Here is the extracted plain text from the document `test_extended.docx`:
|
|
601
|
+
|
|
602
|
+
---
|
|
603
|
+
|
|
604
|
+
1. **Getting Started with AI/RunTM CodeMie**
|
|
605
|
+
|
|
606
|
+
This section provides a brief description of what AI/RunTM CodeMie is and describes how to start using the AI/RunTM CodeMie tool as soon as possible.
|
|
607
|
+
|
|
608
|
+
**1.1 What is AI/RunTM CodeMie?**
|
|
609
|
+
|
|
610
|
+
AI/RunTM CodeMie is a sophisticated AI assistant tool tailored specifically for developers. AI/RunTM CodeMie is an innovative LLM-powered platform designed to help users address specific challenges and find solutions for their needs. Unlike conventional large language models (LLMs) such as ChatGPT, Bard, and Copilot, AI/RunTM CodeMie is engineered to support development processes more comprehensively. It integrates seamlessly with essential development tools including Git, Jira, Confluence, and various search engines. This integration empowers AI/RunTM CodeMie to go beyond the capabilities of a standard chatbot, enabling it to manage Jira issues, devise appropriate implementations, and generate pull requests.
|
|
611
|
+
|
|
612
|
+
AI/RunTM CodeMie leverages AI to automate coding tasks, reduce technical debt, streamline code reviews and legacy application migrations, enhance onboarding, improve information access and analysis, optimize call center operations, ensure consistent customer support, maintain data security, and analyze market sentiment, ultimately enhancing productivity and reducing costs. The development of such a powerful assistant necessitates extensive customization and fine-tuning. The following sections will delve into the intricate adjustments and configurations required to harness the full potential of AI/RunTM CodeMie.
|
|
613
|
+
|
|
614
|
+
**1.2 What Are AI/RunTM CodeMie Capabilities?**
|
|
615
|
+
|
|
616
|
+
AI/RunTM CodeMie efficiently addresses numerous tasks across varying difficulty levels. Below is an overview of AI/RunTM CodeMie’s key capabilities:
|
|
617
|
+
|
|
618
|
+
- **Comprehensive SDLC Smart Assistance and Assistants Library:** AI/RunTM CodeMie offers robust smart assistance across all phases of the SDLC process by leveraging a variety of AI assistant roles, such as Business Analyst (BA), Developer, Quality Assurance (QA), Project Manager (PM), and more. These pre-built AI assistants enhance performance and productivity, automate routine work, significantly reducing process costs and accelerating the software development cycle. The platform comes with a comprehensive library of pre-built AI assistants tailored to various roles within the SDLC to suit the diverse needs within a project.
|
|
619
|
+
|
|
620
|
+
- **Assistants Constructor:** Provides the flexibility to create personalized assistants equipped with specific tools and abilities tailored to your project's needs.
|
|
621
|
+
|
|
622
|
+
- **Indexing and Data Management:** AI/RunTM CodeMie provides options for data indexing, including the ability to monitor the current progress and status of the indexing process, perform incremental or full reindexing, and manage indexed data sources effectively. Supported data sources include Jira, Confluence, various file formats (PDF, PPT, Excel, etc.), and Git.
|
|
623
|
+
|
|
624
|
+
- **Support for Multi-Agent Workflows:** AI/RunTM аCodeMie supports multi-agent workflows, allowing multiple AI assistants to collaborate seamlessly on complex tasks and workflows. This capability covers use cases where different agents need to interact and share information to achieve a common goal, enhancing coordination and efficiency across various phases of the SDLC.
|
|
625
|
+
|
|
626
|
+
- **Ease of Use for Beginners:** Simple use cases for newcomers include code review, newcomer training, and user story creation. These require minimal setup, such as configuring your Git token for code-related tasks or your Jira token for project management tasks.
|
|
627
|
+
|
|
628
|
+
- **Extensive Library of Tools:** AI/RunTM CodeMie includes a wide array of tools to support various aspects of software development and project management:
|
|
629
|
+
- **Version Control Systems (VCS):** Tools for managing and tracking changes in the codebase, such as Git.
|
|
630
|
+
- **Codebase Tools:** Tools for code review, static code analysis, and automated code formatting.
|
|
631
|
+
- **Research Tools:** Tools to assist in gathering and organizing research data and documentation.
|
|
632
|
+
- **Cloud Tools:** Integration with major cloud providers for deployment, monitoring, and management of cloud resources.
|
|
633
|
+
- **Project Management Tool (Jira:** For project management, task tracking, and issue tracking, **Confluence:** For documentation, knowledge sharing, and collaboration.)
|
|
634
|
+
- **Open API:** Integration with various open APIs to extend functionality and connect with other services.
|
|
635
|
+
- **Notification Tools:** Tools for sending notifications and alerts via email, chat, or other communication channels.
|
|
636
|
+
- **Data Management Tools:** Tools for querying Elasticsearch indexes.
|
|
637
|
+
- **Git Access Management:** Keycloak
|
|
638
|
+
- **Plugin Open API Notification File Management Data Management Quality Assurance**
|
|
639
|
+
|
|
640
|
+
There is no priority or sequential system in place. Everything depends on the given instructions. It is possible to instruct the model to use a specific data source for a particular use case or provide a description for the data source when it is created. Data source descriptions are provided to the model so it can understand better use cases for it.
|
|
641
|
+
|
|
642
|
+
(The text continues with further details that describe how to utilize specific features and integration steps for various contexts and platforms including Keycloak, SonarQube, SQL, Telegram, Azure, and much more.)
|
|
643
|
+
|
|
644
|
+
---
|
|
645
|
+
|
|
646
|
+
Above is a portion of the extracted text. It seems this document provides an in-depth introduction and guide to using AI/RunTM CodeMie, a tool for developers, detailing its capabilities, tools, integrations, and operational instructions. Let me know if you need more specific details or further assistance!
|
|
647
|
+
""",
|
|
648
|
+
id="text",
|
|
649
|
+
),
|
|
650
|
+
pytest.param(
|
|
651
|
+
"Extract text with metadata and show it",
|
|
652
|
+
"""
|
|
653
|
+
### Extracted Text with Metadata from *test_extended.docx*
|
|
654
|
+
|
|
655
|
+
**Metadata:**
|
|
656
|
+
- **Title:** *Not Specified*
|
|
657
|
+
- **Author:** *Not Specified*
|
|
658
|
+
- **Created Date:** 2025-09-26T09:33:00+00:00
|
|
659
|
+
- **Modified Date:** 2025-09-26T09:36:00+00:00
|
|
660
|
+
- **Keywords:** *Not Specified*
|
|
661
|
+
- **Subject:** *Not Specified*
|
|
662
|
+
- **Category:** *Not Specified*
|
|
663
|
+
- **Paragraph Count:** 835
|
|
664
|
+
- **Table Count:** 2
|
|
665
|
+
- **Section Count:** 1
|
|
666
|
+
- **Word Count:** 7,434
|
|
667
|
+
|
|
668
|
+
**Extracted Text Snippet:**
|
|
669
|
+
The document primarily includes sections about AI/Run™ CodeMie, describing its capabilities, features, and integrations, as well as detailed guides for setup and utilization. Below is a brief example of the content:
|
|
670
|
+
|
|
671
|
+
---
|
|
672
|
+
#### Chapter Excerpts:
|
|
673
|
+
**1. Getting Started with AI/Run™ CodeMie**
|
|
674
|
+
- Introduction to AI/Run™ CodeMie and its functionalities.
|
|
675
|
+
- Highlights include automating coding tasks, reducing technical debt, optimizing customer support, and managing tools like Git, Jira, and Confluence.
|
|
676
|
+
|
|
677
|
+
**1.2 What Are AI/Run™ CodeMie Capabilities?**
|
|
678
|
+
- Comprehensive SDLC Smart Assistance and Assistants Library.
|
|
679
|
+
- Tools for various applications such as version control systems, cloud integration, and multi-agent workflows.
|
|
680
|
+
|
|
681
|
+
**2.9 Tool Integration Overview**
|
|
682
|
+
- Detailed steps to integrate Keycloak, SonarQube, SQL databases, Telegram, Azure, GCP, AWS, Kubernetes, and more.
|
|
683
|
+
|
|
684
|
+
**3. How to Work With Assistants**
|
|
685
|
+
- Insights into creating assistants, using templates, and customization options like workflows, tools, and specific roles.
|
|
686
|
+
|
|
687
|
+
---
|
|
688
|
+
|
|
689
|
+
If you need specific sections, tables, or a detailed breakdown, let me know!
|
|
690
|
+
""",
|
|
691
|
+
id="text_with_metadata",
|
|
692
|
+
),
|
|
693
|
+
pytest.param(
|
|
694
|
+
"Extract document structure",
|
|
695
|
+
"""
|
|
696
|
+
### Document Structure for *test_extended.docx*
|
|
697
|
+
|
|
698
|
+
#### Main Sections and Subsections:
|
|
699
|
+
|
|
700
|
+
1. **Getting Started with AI/RunTM CodeMie**
|
|
701
|
+
- **1.1 What is AI/RunTM CodeMie?**
|
|
702
|
+
- **1.2 What Are AI/RunTM CodeMie Capabilities?**
|
|
703
|
+
- **1.3 Meet the AI/Run FAQ Assistant**
|
|
704
|
+
- **1.4 Help center**
|
|
705
|
+
|
|
706
|
+
2. **Tools and Integrations Overview**
|
|
707
|
+
- **2.9 Tool Integration Overview**
|
|
708
|
+
- *2.9.1 Keycloak*
|
|
709
|
+
- *2.9.2 SonarQube*
|
|
710
|
+
- *2.9.5 SQL*
|
|
711
|
+
- *2.9.6 Telegram*
|
|
712
|
+
- *2.9.7 Azure*
|
|
713
|
+
- *2.9.8 GCP*
|
|
714
|
+
- *2.9.9 AWS*
|
|
715
|
+
- *2.9.10 Kubernetes*
|
|
716
|
+
- *2.9.11 Webhook*
|
|
717
|
+
- *2.9.12 HTML Preview*
|
|
718
|
+
- *2.9.13 Elastic*
|
|
719
|
+
|
|
720
|
+
3. **MCP Overview**
|
|
721
|
+
- **2.11 Adding an MCP Server**
|
|
722
|
+
- **2.11 Using MCP Tools in Assistants**
|
|
723
|
+
|
|
724
|
+
4. **Data Sources and Assistant Tools**
|
|
725
|
+
- **2.12 What is the difference between a Data Source and an Assistant Tool in CodeMie?**
|
|
726
|
+
- **2.12 Administrative tools overview**
|
|
727
|
+
- **2.13 Processing Pictures**
|
|
728
|
+
|
|
729
|
+
5. **How to Work With Assistants**
|
|
730
|
+
- **3.1 Assistant Templates**
|
|
731
|
+
- **3.2 Create Assistant From a Template**
|
|
732
|
+
- **3.9 Restore System Instructions**
|
|
733
|
+
|
|
734
|
+
---
|
|
735
|
+
|
|
736
|
+
Let me know if you'd like further details extracted from specific sections or explored further!
|
|
737
|
+
""",
|
|
738
|
+
id="structure_only",
|
|
739
|
+
),
|
|
740
|
+
pytest.param(
|
|
741
|
+
"Extract tables",
|
|
742
|
+
"""
|
|
743
|
+
### Extracted Tables from *test_extended.docx*
|
|
744
|
+
|
|
745
|
+
#### Table 1: Tools and Integrations Overview
|
|
746
|
+
| **Tools Name** | **Integration Required** | **Integration Name** |
|
|
747
|
+
|----------------------------------------|--------------------------|-----------------------|
|
|
748
|
+
| Project Management => Jira | Yes | Jira |
|
|
749
|
+
| Git (with operations) | Yes | Git |
|
|
750
|
+
| Project Management => Confluence | Yes | Confluence |
|
|
751
|
+
| Cloud => Kubernetes | Yes | Kubernetes |
|
|
752
|
+
| Cloud => AWS | Yes | AWS |
|
|
753
|
+
| Cloud => GCP | Yes | GCP |
|
|
754
|
+
| Access Management => Keycloak | Yes | Keycloak |
|
|
755
|
+
| Cloud => Azure | Yes | Azure |
|
|
756
|
+
| Cloud => AzureDevOps | Yes | AzureDevOps |
|
|
757
|
+
| Data Management => SQL | Yes | SQL |
|
|
758
|
+
| Notification => Email | Yes | Email |
|
|
759
|
+
| Codebase Tools => Sonar | Yes | Sonar |
|
|
760
|
+
| Research => Google Searches, Places | No | ---- |
|
|
761
|
+
| Quality Assurance => ZephyrCloud, Squad| Yes | ZephyrCloud, Squad |
|
|
762
|
+
|
|
763
|
+
> **Note**: This table lists numerous tools and integrations required, along with operations (e.g., Git, Jira, Kubernetes). Additional details (e.g., various Git operations such as branch creation, pull requests) are included in raw text.
|
|
764
|
+
|
|
765
|
+
---
|
|
766
|
+
|
|
767
|
+
#### Table 2: Assistant Overview
|
|
768
|
+
| **Name** | **Description/Integrated Tools** | **Assistant’s Tools** |
|
|
769
|
+
|-------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
|
|
770
|
+
| Epic/User Story Compose | Analyzes and generates requirements for the project. Note: Uses deprecated Jira tool. | Jira Issue Management |
|
|
771
|
+
| Release Manager Assistant | Supports release processes, generates notes, closes tickets. | Git, VCS (GitLab), Jira |
|
|
772
|
+
| Junior Python Langchain Developer | Develops tools within Langchain framework. | Git, Jira |
|
|
773
|
+
| Junior JavaScript Vue Developer | Develops high-quality, responsive web applications using Vue.js. | Git, Jira |
|
|
774
|
+
| Design to Code Developer | Translates designs into responsive web apps, optimizes performance. | VCS (GitLab), File Management |
|
|
775
|
+
| QA Checklist Assistant | Generates QA checklists. | Jira, Confluence |
|
|
776
|
+
| QA Test Case Assistant | Generates test cases based on specifications. | Jira, Confluence |
|
|
777
|
+
| Code Reviewer | Reviews Git pull requests and creates comments. | Git Tools |
|
|
778
|
+
| Cloud Assistant | Prebuilt assistant to help with cloud system interactions. | Cloud Tools (Kubernetes, AWS, GCP, Azure) |
|
|
779
|
+
| ChatGPT | Acts as a simple chatbot. | None |
|
|
780
|
+
| CSV Analyst | Analyzes CSV files. | None |
|
|
781
|
+
|
|
782
|
+
> **Note**: This table outlines assistant types, their roles, and tools integrated. Additional assistants (e.g., CodeMie, Cloud) appear in subsequent rows.
|
|
783
|
+
|
|
784
|
+
---
|
|
785
|
+
|
|
786
|
+
If you need further details or specific tables expanded, let me know!
|
|
787
|
+
""",
|
|
788
|
+
id="table_extraction",
|
|
789
|
+
),
|
|
790
|
+
pytest.param(
|
|
791
|
+
"Generate summary",
|
|
792
|
+
"""
|
|
793
|
+
### Summary of *test_extended.docx*
|
|
794
|
+
|
|
795
|
+
The document serves as a comprehensive guide to **AI/Run™ CodeMie**, an advanced AI assistant platform aimed at optimizing software development processes. It details the platform's diverse capabilities, including:
|
|
796
|
+
|
|
797
|
+
- **SDLC Assistance**: Smart tools for every phase of the Software Development Life Cycle.
|
|
798
|
+
- **Tool Integrations**: Seamless integration with platforms like Git, Jira, Confluence, AWS, GCP, Kubernetes, and SonarQube.
|
|
799
|
+
- **Data Indexing**: Simplifying data access and management.
|
|
800
|
+
- **Multi-Agent Workflows**: Facilitating efficient team collaboration.
|
|
801
|
+
|
|
802
|
+
Key topics include:
|
|
803
|
+
|
|
804
|
+
1. **Administrative Tools**:
|
|
805
|
+
- Overview of management features and functionalities.
|
|
806
|
+
- Processes for onboarding and creating assistants using templates or custom configurations.
|
|
807
|
+
|
|
808
|
+
2. **Integrations**:
|
|
809
|
+
- Detailed integration steps for platforms like AWS, Kubernetes, SQL databases, and more.
|
|
810
|
+
|
|
811
|
+
3. **Features**:
|
|
812
|
+
- MCP server integration.
|
|
813
|
+
- Automated workflows (e.g., CRON scheduling).
|
|
814
|
+
- Email notifications and FAQ support.
|
|
815
|
+
|
|
816
|
+
The document emphasizes enhancing productivity, collaboration, and streamlining development workflows for developers and teams.
|
|
817
|
+
|
|
818
|
+
Let me know if you need further details or additional analysis!
|
|
819
|
+
""",
|
|
820
|
+
id="summary",
|
|
821
|
+
),
|
|
822
|
+
pytest.param(
|
|
823
|
+
"Perform a sentiment analysis of the document to determine whether the language is positive, neutral, or negative.",
|
|
824
|
+
"""
|
|
825
|
+
### Sentiment Analysis of *test_extended.docx*
|
|
826
|
+
|
|
827
|
+
#### **Sentiment**: Positive
|
|
828
|
+
The text reflects a positive tone, emphasizing the platform's benefits, extensive integrations, and potential to enhance productivity and efficiency in software development. The language conveys enthusiasm and confidence in AI/Run™ CodeMie's role in streamlining workflows.
|
|
829
|
+
|
|
830
|
+
#### **Language**: English
|
|
831
|
+
The document is written entirely in English.
|
|
832
|
+
|
|
833
|
+
#### **Readability Score**: 6.0
|
|
834
|
+
This indicates that the document is relatively easy to read and accessible to a wide audience, likely targeting professionals familiar with software development concepts.
|
|
835
|
+
|
|
836
|
+
#### **Pages Analyzed**: All
|
|
837
|
+
The sentiment analysis covered the entire document for a comprehensive understanding.
|
|
838
|
+
|
|
839
|
+
If you need further breakdowns or alternative types of analysis, let me know!
|
|
840
|
+
""",
|
|
841
|
+
id="analyze",
|
|
842
|
+
),
|
|
843
|
+
pytest.param(
|
|
844
|
+
"Extracty text from specific pages '1-3' and show it",
|
|
845
|
+
"""
|
|
846
|
+
### Extracted Plain Text from Pages 1–3 of *test_extended.docx*
|
|
847
|
+
|
|
848
|
+
#### **1. Getting Started with AI/Run™ CodeMie**
|
|
849
|
+
This section introduces AI/Run™ CodeMie, detailing its purpose and how to immediately start using the platform.
|
|
850
|
+
|
|
851
|
+
**1.1 What Is AI/Run™ CodeMie?**
|
|
852
|
+
AI/Run™ CodeMie is an AI assistant tailored for developers, providing solutions for software challenges and integrating with tools like Git, Jira, Confluence, and search engines. Unlike traditional AI models (e.g., ChatGPT, Bard, Copilot), AI/Run™ CodeMie goes beyond basic chatbot functionalities by automating tasks, managing Jira issues, generating pull requests, reducing technical debt, and enhancing data security and productivity.
|
|
853
|
+
|
|
854
|
+
**1.2 What Are AI/Run™ CodeMie’s Capabilities?**
|
|
855
|
+
Highlights include:
|
|
856
|
+
- **SDLC Assistance**: Pre-built assistants tailored for roles such as Business Analyst, QA, Developer, and Project Manager.
|
|
857
|
+
- **Assistants Constructor**: Build customized AI assistants with specific tools for project needs.
|
|
858
|
+
- **Data Indexing**: Supports incremental data indexing from Jira, Confluence, Git, and various file formats.
|
|
859
|
+
- **Multi-Agent Workflows**: Enables collaboration among AI assistants for complex tasks.
|
|
860
|
+
|
|
861
|
+
Tools included: version control, code review, cloud deployments, project management (e.g., Jira, Confluence), notifications, and data management tools like Elasticsearch.
|
|
862
|
+
|
|
863
|
+
**1.3 Meet the AI/Run FAQ Assistant**
|
|
864
|
+
To start using AI/Run™ CodeMie:
|
|
865
|
+
- Log in via SSO.
|
|
866
|
+
- Access the FAQ assistant to start conversations and explore onboarding features.
|
|
867
|
+
|
|
868
|
+
**1.4 Help Center**
|
|
869
|
+
The Help Center provides resources for assistance, learning, and updates, including:
|
|
870
|
+
- AI Assistants for FAQ, feedback, and real-time support.
|
|
871
|
+
- User guides and video tutorials.
|
|
872
|
+
- Tracking product updates.
|
|
873
|
+
|
|
874
|
+
---
|
|
875
|
+
|
|
876
|
+
#### **2.9 Tool Integration Overview**
|
|
877
|
+
This section explains how to integrate tools with AI/Run™ CodeMie, using **Keycloak** as an example.
|
|
878
|
+
|
|
879
|
+
**Keycloak Integration Steps**:
|
|
880
|
+
1. Select the realm in Keycloak.
|
|
881
|
+
2. Create or use an existing client (e.g., admin-cli).
|
|
882
|
+
3. Configure service account roles.
|
|
883
|
+
4. Copy the client secret from credentials.
|
|
884
|
+
5. Configure Keycloak settings in AI/Run™ CodeMie:
|
|
885
|
+
- Base URL
|
|
886
|
+
- Realm
|
|
887
|
+
- Client ID
|
|
888
|
+
- Client Secret
|
|
889
|
+
|
|
890
|
+
Assistants can then be created with access to Keycloak for specific projects, enabling enhanced system integrations.
|
|
891
|
+
|
|
892
|
+
---
|
|
893
|
+
|
|
894
|
+
Let me know if you need further processing for other pages or specific sections within this extracted content!
|
|
895
|
+
""",
|
|
896
|
+
id="text_pages_1_3",
|
|
897
|
+
),
|
|
898
|
+
pytest.param(
|
|
899
|
+
"Extract text from specific pages '1,5,10' and show it",
|
|
900
|
+
"""
|
|
901
|
+
### Extracted Text from Specific Pages (1, 5, 10) of *test_extended.docx*
|
|
902
|
+
|
|
903
|
+
---
|
|
904
|
+
|
|
905
|
+
### **Page 1: Introduction to AI/Run™ CodeMie**
|
|
906
|
+
#### **1. Getting Started with AI/Run™ CodeMie**
|
|
907
|
+
This section introduces AI/Run™ CodeMie, detailing how to get started quickly.
|
|
908
|
+
|
|
909
|
+
**1.1 What is AI/Run™ CodeMie?**
|
|
910
|
+
AI/Run™ CodeMie is an AI-driven assistant designed for developers, integrating key tools like Git, Jira, Confluence, etc., to address challenges effectively. It goes beyond standard use-cases seen in tools like ChatGPT or Copilot, allowing:
|
|
911
|
+
- Jira issue tracking.
|
|
912
|
+
- Pull request generation and implementation recommendations.
|
|
913
|
+
- Legacy migration and technical debt reduction.
|
|
914
|
+
- Enhanced onboarding and productivity optimization.
|
|
915
|
+
|
|
916
|
+
AI/Run™ CodeMie offers automation on coding tasks, system integrations, and improved customer support, among other features.
|
|
917
|
+
|
|
918
|
+
**1.2 Capabilities of AI/Run™ CodeMie**
|
|
919
|
+
Key highlights include:
|
|
920
|
+
- **Comprehensive SDLC Assistance**: Pre-built assistants like QA analysts, developers, PMs, etc.
|
|
921
|
+
- **Assistants Constructor**: Build custom assistants as per project requirements.
|
|
922
|
+
- **Data Indexing**: Manage incremental or full indexing from Jira, Confluence, Git repositories, and other formats.
|
|
923
|
+
- **Multi-Agent Workflows**: Support for collaborative tasks among multiple AI agents.
|
|
924
|
+
- **Extensive Tool Library**: Includes tools for cloud deployment, project management, quality assurance, and notifications.
|
|
925
|
+
|
|
926
|
+
**1.3 Meet the FAQ Assistant**
|
|
927
|
+
Provides onboarding solutions and covers general queries, helping users adapt to the platform faster.
|
|
928
|
+
|
|
929
|
+
---
|
|
930
|
+
|
|
931
|
+
### **Page 5: Integration Examples**
|
|
932
|
+
#### **2.9.5 SQL Database**
|
|
933
|
+
AI/Run™ CodeMie integrates seamlessly with SQL databases (e.g., PostgreSQL or MySQL).
|
|
934
|
+
**Steps to Integrate SQL:**
|
|
935
|
+
1. Navigate to the “Integrations” tab.
|
|
936
|
+
2. Provide necessary credentials (e.g., database name, username, password).
|
|
937
|
+
3. Modify or create an assistant with SQL access to perform table operations or database queries.
|
|
938
|
+
|
|
939
|
+
#### **2.9.6 Telegram Messenger**
|
|
940
|
+
Since version 0.12.0, AI/Run assistants can now operate with Telegram for bot manipulation and real-time chat interactions:
|
|
941
|
+
**Steps to Set Up Telegram Bot Integration**:
|
|
942
|
+
1. Create a bot through Telegram’s BotFather.
|
|
943
|
+
2. Generate a bot token and apply it during integration setup within AI/Run™ CodeMie.
|
|
944
|
+
3. Add Telegram as a project-level integration for assistants.
|
|
945
|
+
|
|
946
|
+
---
|
|
947
|
+
|
|
948
|
+
### **Page 10: Advanced Integrations**
|
|
949
|
+
#### **Webhook Integration**
|
|
950
|
+
AI/Run™ CodeMie assistants support webhook-based triggers, facilitating automation from external systems (e.g., customer support or pull request generation).
|
|
951
|
+
**Key Steps**:
|
|
952
|
+
1. Enable webhook triggers for assistants/workflows/datasources.
|
|
953
|
+
2. Provide required credentials such as Webhook ID and Secure Access Key during integration setup.
|
|
954
|
+
|
|
955
|
+
Applications include:
|
|
956
|
+
- Trigger assistant responses as pull requests are created.
|
|
957
|
+
- Notify users through real-time workflows for Jira updates.
|
|
958
|
+
- Automate support assistants for helpdesk ticket creation.
|
|
959
|
+
|
|
960
|
+
---
|
|
961
|
+
|
|
962
|
+
Let me know if you need further assistance or more pages analyzed!
|
|
963
|
+
""",
|
|
964
|
+
id="text_pages_1_5_10",
|
|
965
|
+
),
|
|
966
|
+
pytest.param(
|
|
967
|
+
"Extract images",
|
|
968
|
+
"""
|
|
969
|
+
### Extracted Image from *test_extended.docx*
|
|
970
|
+
|
|
971
|
+
#### Image 1:
|
|
972
|
+
- **Format**: PNG
|
|
973
|
+
- **Description**: An image depicting **capability configurations**, particularly configurations related to client authentication and authorization flows.
|
|
974
|
+
- **Text Content Associated**:
|
|
975
|
+
```
|
|
976
|
+
### Capability config
|
|
977
|
+
|
|
978
|
+
**Client authentication**
|
|
979
|
+
- On
|
|
980
|
+
|
|
981
|
+
**Authorization**
|
|
982
|
+
- Off
|
|
983
|
+
|
|
984
|
+
**Authentication flow**
|
|
985
|
+
- **Standard flow** ✅
|
|
986
|
+
- **Direct access grants** ✅
|
|
987
|
+
- Implicit flow ☐
|
|
988
|
+
- **Service accounts roles** ✅
|
|
989
|
+
- OAuth 2.0 Device Authorization Grant ☐
|
|
990
|
+
- OIDC CIBA Grant ☐
|
|
991
|
+
```
|
|
992
|
+
|
|
993
|
+
The image encompasses these configurations, potentially used for documenting integration setups.
|
|
994
|
+
|
|
995
|
+
- **Position**:
|
|
996
|
+
- **Page**: 1
|
|
997
|
+
- **Coordinates**: Top-left corner
|
|
998
|
+
|
|
999
|
+
Let me know if you'd like to download the image or process additional queries!
|
|
1000
|
+
""",
|
|
1001
|
+
id="image_extraction",
|
|
1002
|
+
),
|
|
1003
|
+
pytest.param(
|
|
1004
|
+
"Extract and show the text with OCR from images",
|
|
1005
|
+
"""
|
|
1006
|
+
### Extracted Text with OCR from Images in *test_extended.docx*
|
|
1007
|
+
|
|
1008
|
+
#### **Image 1: Capability Configuration**
|
|
1009
|
+
The image contains text related to client authentication, authorization settings, and available flows. Below is the OCR-extracted text:
|
|
1010
|
+
|
|
1011
|
+
```
|
|
1012
|
+
**Capability config**
|
|
1013
|
+
|
|
1014
|
+
- **Client authentication**
|
|
1015
|
+
- 🟦 On
|
|
1016
|
+
|
|
1017
|
+
- **Authorization**
|
|
1018
|
+
- ⚪ Off
|
|
1019
|
+
|
|
1020
|
+
- **Authentication flow**
|
|
1021
|
+
- ☑️ Standard flow
|
|
1022
|
+
- ☑️ Direct access grants
|
|
1023
|
+
- ☐ Implicit flow
|
|
1024
|
+
- ☑️ Service accounts roles
|
|
1025
|
+
- ☐ OAuth 2.0 Device Authorization Grant
|
|
1026
|
+
- ☐ OIDC CIBA Grant
|
|
1027
|
+
```
|
|
1028
|
+
|
|
1029
|
+
This image primarily highlights authentication configurations, flow types, and the enabling/disabling of various features.
|
|
1030
|
+
|
|
1031
|
+
---
|
|
1032
|
+
|
|
1033
|
+
Let me know if you'd like to perform further analysis or extract more details!
|
|
1034
|
+
""",
|
|
1035
|
+
id="text_with_images",
|
|
1036
|
+
),
|
|
1037
|
+
]
|
|
Binary file
|
|
Binary file
|
|
@@ -1341,3 +1341,19 @@ class CredentialsManager:
|
|
|
1341
1341
|
if cred.key == "api_key":
|
|
1342
1342
|
cred.value = "wrong_key"
|
|
1343
1343
|
return credentials
|
|
1344
|
+
|
|
1345
|
+
@staticmethod
|
|
1346
|
+
def invalid_ado_credentials() -> List[CredentialValues]:
|
|
1347
|
+
credentials = CredentialsManager.azure_devops_credentials()
|
|
1348
|
+
for cred in credentials:
|
|
1349
|
+
if cred.key == "personal_access_token":
|
|
1350
|
+
cred.value = "wrong_token"
|
|
1351
|
+
return credentials
|
|
1352
|
+
|
|
1353
|
+
@staticmethod
|
|
1354
|
+
def invalid_git_credentials() -> List[CredentialValues]:
|
|
1355
|
+
credentials = CredentialsManager.gitlab_credentials()
|
|
1356
|
+
for cred in credentials:
|
|
1357
|
+
if cred.key == "token":
|
|
1358
|
+
cred.value = "wrong_token"
|
|
1359
|
+
return credentials
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: codemie-test-harness
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.172
|
|
4
4
|
Summary: Autotest for CodeMie backend and UI
|
|
5
5
|
Author: Anton Yeromin
|
|
6
6
|
Author-email: anton_yeromin@epam.com
|
|
@@ -13,7 +13,7 @@ Requires-Dist: aws-assume-role-lib (>=2.10.0,<3.0.0)
|
|
|
13
13
|
Requires-Dist: boto3 (>=1.39.8,<2.0.0)
|
|
14
14
|
Requires-Dist: click (>=8.1.7,<9.0.0)
|
|
15
15
|
Requires-Dist: codemie-plugins (>=0.1.123,<0.2.0)
|
|
16
|
-
Requires-Dist: codemie-sdk-python (==0.1.
|
|
16
|
+
Requires-Dist: codemie-sdk-python (==0.1.172)
|
|
17
17
|
Requires-Dist: pytest (>=8.4.1,<9.0.0)
|
|
18
18
|
Requires-Dist: pytest-playwright (>=0.7.0,<0.8.0)
|
|
19
19
|
Requires-Dist: pytest-reportportal (>=5.5.2,<6.0.0)
|
|
@@ -23,7 +23,7 @@ codemie_test_harness/tests/assistant/default_integrations/__init__.py,sha256=47D
|
|
|
23
23
|
codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool.py,sha256=FUi0r1TTG5Hh4pVQosNtSmBRNJhKN_sSfavHjAm51KQ,7554
|
|
24
24
|
codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_kit.py,sha256=l2wwk9TKDfSuGKGAJVhhwkVhL1cn74wOxPr_gdbSZDQ,7825
|
|
25
25
|
codemie_test_harness/tests/assistant/default_integrations/test_default_integrations_for_tool_with_datasource.py,sha256=K8wzK48e7V92kLt_BKsXyO_K_ud0VTUHrnvFFoIxGj8,10140
|
|
26
|
-
codemie_test_harness/tests/assistant/test_assistants.py,sha256=
|
|
26
|
+
codemie_test_harness/tests/assistant/test_assistants.py,sha256=pXif1RLZ6Zbog9ovoKptX6tzLtGlNaMdZ5m_3BnvrV8,15371
|
|
27
27
|
codemie_test_harness/tests/assistant/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
28
|
codemie_test_harness/tests/assistant/tools/access_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
29
|
codemie_test_harness/tests/assistant/tools/access_management/test_keycloak_tool.py,sha256=YKPTYO9qI72-RtkaPSONRxvusKNJ3ksVPjkD3xk7qCM,740
|
|
@@ -81,7 +81,7 @@ codemie_test_harness/tests/integrations/user/test_default_integrations.py,sha256
|
|
|
81
81
|
codemie_test_harness/tests/integrations/user/test_user_integrations.py,sha256=lGOoyGyKby1vOvXbz9de-PfhS0eUEX6vS7tg6vixtEE,8120
|
|
82
82
|
codemie_test_harness/tests/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
83
|
codemie_test_harness/tests/llm/assistants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
-
codemie_test_harness/tests/llm/assistants/test_lite_llm.py,sha256=
|
|
84
|
+
codemie_test_harness/tests/llm/assistants/test_lite_llm.py,sha256=Ya4t3t7JES7BHfSYbojwx_lNaKalZPq0rsZf257v1aM,3646
|
|
85
85
|
codemie_test_harness/tests/llm/assistants/test_llm.py,sha256=rpS-rsRqR13HPKPDeT_PvgnlSg1_KtbXTAzQpfShL8E,3531
|
|
86
86
|
codemie_test_harness/tests/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
87
|
codemie_test_harness/tests/providers/test_providers_endpoints.py,sha256=SfZVCaYcsk_mG2b9zVu7w2wOY54loQHdmRS8eK5PNo4,8120
|
|
@@ -103,7 +103,7 @@ codemie_test_harness/tests/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
|
|
|
103
103
|
codemie_test_harness/tests/test_data/ado_test_plan_tools_test_data.py,sha256=Al5u4HNfrcoj-b072uEGsqUqjKqwXLGJXKQ0QeJT3PI,5778
|
|
104
104
|
codemie_test_harness/tests/test_data/ado_wiki_tools_test_data.py,sha256=xvgEja5vE0l41sP4fE0stdFLQ0M201FWynOCEcRYufE,3188
|
|
105
105
|
codemie_test_harness/tests/test_data/ado_work_item_tools_test_data.py,sha256=MHou6QGjufyX5t1oexnq2Y4UCjlE17eeyMuIz6Ml62s,5693
|
|
106
|
-
codemie_test_harness/tests/test_data/assistant_test_data.py,sha256=
|
|
106
|
+
codemie_test_harness/tests/test_data/assistant_test_data.py,sha256=XYB0GN6_T6OSIWLDQBGFVbeFDOTxxD6kOae88VIxTPE,53505
|
|
107
107
|
codemie_test_harness/tests/test_data/cloud_tools_test_data.py,sha256=SWz-VTNcWteCvVupl2xksv4eEFkmtWMdRIqrZxjpFYk,6200
|
|
108
108
|
codemie_test_harness/tests/test_data/codebase_tools_test_data.py,sha256=xbnIlDbiZTibGekrodmhO7bOg7kilsoKSlfHAhcmyIQ,3312
|
|
109
109
|
codemie_test_harness/tests/test_data/data_management_tools_test_data.py,sha256=e5Cfqza3GUE3hRElm1bxgQO4PaN-jOiNd38OX9299Kc,2793
|
|
@@ -143,6 +143,8 @@ codemie_test_harness/tests/test_data/files/test.vtt,sha256=OTESV-myaR4TwzGddSBXE
|
|
|
143
143
|
codemie_test_harness/tests/test_data/files/test.xlsx,sha256=J1OprxIMhkoGQRhuOh8oTrbj2pa8VKlSdqp9R0ejgBI,4804
|
|
144
144
|
codemie_test_harness/tests/test_data/files/test.xml,sha256=QVn0coF-83PYoGyOZNVEZHW2oX2opIHh7aD6TwBW80s,352
|
|
145
145
|
codemie_test_harness/tests/test_data/files/test.yaml,sha256=3NDQyzwkRM5d6eCYMScNMbCqZ0JnjU1T8WcRemuqsc0,392
|
|
146
|
+
codemie_test_harness/tests/test_data/files/test_extended.docx,sha256=8TqjOxgO6ODY82DAayEqFm8D8yV6haoaKSzP-0Z5gl8,112227
|
|
147
|
+
codemie_test_harness/tests/test_data/files/test_extended.xlsx,sha256=_ZjBj1E_uEuWHWGO5x0BO0E3-kQWqSyWi9vG9n2JZpQ,10031
|
|
146
148
|
codemie_test_harness/tests/test_data/git_tools_test_data.py,sha256=7U05vLqkh5uJ0l_KJeHis549id1Of99K0jCsWOb0nXM,8485
|
|
147
149
|
codemie_test_harness/tests/test_data/google_datasource_test_data.py,sha256=fhMJVTU0udINKtBQ750c_c279NzibGiZumnIaCPLtBo,511
|
|
148
150
|
codemie_test_harness/tests/test_data/index_test_data.py,sha256=VZJC_Fmko32EHaybUwCy0mWMiwAeUAAmhRa0Xt4oTHQ,1115
|
|
@@ -236,7 +238,7 @@ codemie_test_harness/tests/utils/base_utils.py,sha256=eDUBV7kj4X-aSVOB7YKHfO9fqP
|
|
|
236
238
|
codemie_test_harness/tests/utils/client_factory.py,sha256=xGta0ZaVYzWfwJ4cu3f89KkGc_R5Bq-9lqnhr57x_2w,972
|
|
237
239
|
codemie_test_harness/tests/utils/constants.py,sha256=ZNyM5wERHFN-c8TCvBcxCdFf0As9TOpr22YvLCMHArE,1116
|
|
238
240
|
codemie_test_harness/tests/utils/conversation_utils.py,sha256=SWj6TBWOQoX5Yh6Wk63yHQFveRXgK1mpLb3PUKAa57A,648
|
|
239
|
-
codemie_test_harness/tests/utils/credentials_manager.py,sha256=
|
|
241
|
+
codemie_test_harness/tests/utils/credentials_manager.py,sha256=sqzJUekCwo56zvOOm4BdHvyHPPzvY9aI4nWp1GoLwCQ,52866
|
|
240
242
|
codemie_test_harness/tests/utils/datasource_utils.py,sha256=_jx1IrRR5rmQxXsal5z4nwX9vgupdVdgNL0vH-2nJ8A,12685
|
|
241
243
|
codemie_test_harness/tests/utils/env_resolver.py,sha256=25776Aq9oIDcDzGtfFs07lj7eldeFgmsocxeS3RUclE,4280
|
|
242
244
|
codemie_test_harness/tests/utils/env_utils.py,sha256=9tyVgxKfYqdtSoo9dRTScOZWjAUm82_65JjaKggcwCg,3999
|
|
@@ -360,7 +362,7 @@ codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/__init__.
|
|
|
360
362
|
codemie_test_harness/tests/workflow/virtual_assistant_tools/servicenow/test_workflow_with_servicenow_tools.py,sha256=vq6tucNBxiNIQSmIj_pYiiPm0lipU9X3kzeCd6xEbRM,966
|
|
361
363
|
codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
362
364
|
codemie_test_harness/tests/workflow/virtual_assistant_tools/vcs/test_workflow_with_vcs_tools.py,sha256=uD2qs361j6Egp4UumfoQ4gC24-NioXfiW0IF53N9hVA,1175
|
|
363
|
-
codemie_test_harness-0.1.
|
|
364
|
-
codemie_test_harness-0.1.
|
|
365
|
-
codemie_test_harness-0.1.
|
|
366
|
-
codemie_test_harness-0.1.
|
|
365
|
+
codemie_test_harness-0.1.172.dist-info/METADATA,sha256=ypifV-_rZmtwhVmSk_itHkr3iqgF9JxAA6Sqr890_Hs,8998
|
|
366
|
+
codemie_test_harness-0.1.172.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
|
367
|
+
codemie_test_harness-0.1.172.dist-info/entry_points.txt,sha256=n98t-EOM5M1mnMl_j2X4siyeO9zr0WD9a5LF7JyElIM,73
|
|
368
|
+
codemie_test_harness-0.1.172.dist-info/RECORD,,
|
|
File without changes
|
{codemie_test_harness-0.1.170.dist-info → codemie_test_harness-0.1.172.dist-info}/entry_points.txt
RENAMED
|
File without changes
|