logdetective 2.2.1__py3-none-any.whl → 2.4.0__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.
- logdetective/extractors.py +3 -0
- logdetective/server/gitlab.py +12 -5
- logdetective/server/models.py +1 -0
- logdetective/server/templates/base_response.html.j2 +59 -0
- logdetective/server/templates/gitlab_full_comment.md.j2 +52 -51
- logdetective/server/templates/gitlab_short_comment.md.j2 +46 -43
- {logdetective-2.2.1.dist-info → logdetective-2.4.0.dist-info}/METADATA +14 -15
- {logdetective-2.2.1.dist-info → logdetective-2.4.0.dist-info}/RECORD +11 -10
- {logdetective-2.2.1.dist-info → logdetective-2.4.0.dist-info}/WHEEL +1 -1
- {logdetective-2.2.1.dist-info → logdetective-2.4.0.dist-info}/entry_points.txt +0 -0
- {logdetective-2.2.1.dist-info → logdetective-2.4.0.dist-info/licenses}/LICENSE +0 -0
logdetective/extractors.py
CHANGED
logdetective/server/gitlab.py
CHANGED
|
@@ -11,9 +11,13 @@ import gitlab.v4
|
|
|
11
11
|
import gitlab.v4.objects
|
|
12
12
|
import jinja2
|
|
13
13
|
import aiohttp
|
|
14
|
+
import backoff
|
|
14
15
|
|
|
15
16
|
from logdetective.server.config import SERVER_CONFIG, LOG
|
|
16
|
-
from logdetective.server.exceptions import
|
|
17
|
+
from logdetective.server.exceptions import (
|
|
18
|
+
LogsTooLargeError,
|
|
19
|
+
LogDetectiveConnectionError,
|
|
20
|
+
)
|
|
17
21
|
from logdetective.server.llm import perform_staged_analysis
|
|
18
22
|
from logdetective.server.metric import add_new_metrics, update_metrics
|
|
19
23
|
from logdetective.server.models import (
|
|
@@ -29,6 +33,7 @@ from logdetective.server.database.models import (
|
|
|
29
33
|
GitlabMergeRequestJobs,
|
|
30
34
|
)
|
|
31
35
|
from logdetective.server.compressors import RemoteLogCompressor
|
|
36
|
+
from logdetective.server.utils import connection_error_giveup
|
|
32
37
|
|
|
33
38
|
MR_REGEX = re.compile(r"refs/merge-requests/(\d+)/.*$")
|
|
34
39
|
FAILURE_LOG_REGEX = re.compile(r"(\w*\.log)")
|
|
@@ -91,8 +96,8 @@ async def process_gitlab_job_event(
|
|
|
91
96
|
log_url, preprocessed_log = await retrieve_and_preprocess_koji_logs(
|
|
92
97
|
gitlab_cfg, job
|
|
93
98
|
)
|
|
94
|
-
except LogsTooLargeError:
|
|
95
|
-
LOG.error("Could not retrieve logs
|
|
99
|
+
except (LogsTooLargeError, LogDetectiveConnectionError) as ex:
|
|
100
|
+
LOG.error("Could not retrieve logs due to %s", ex)
|
|
96
101
|
raise
|
|
97
102
|
|
|
98
103
|
# Submit log to Log Detective and await the results.
|
|
@@ -151,6 +156,9 @@ def is_eligible_package(project_name: str):
|
|
|
151
156
|
return True
|
|
152
157
|
|
|
153
158
|
|
|
159
|
+
@backoff.on_exception(
|
|
160
|
+
backoff.expo, ConnectionResetError, max_time=60, on_giveup=connection_error_giveup
|
|
161
|
+
)
|
|
154
162
|
async def retrieve_and_preprocess_koji_logs(
|
|
155
163
|
gitlab_cfg: GitLabInstanceConfig,
|
|
156
164
|
job: gitlab.v4.objects.ProjectJob,
|
|
@@ -256,8 +264,7 @@ async def retrieve_and_preprocess_koji_logs(
|
|
|
256
264
|
LOG.debug("Failed architecture: %s", failed_arch)
|
|
257
265
|
|
|
258
266
|
log_path = failed_arches[failed_arch].as_posix()
|
|
259
|
-
|
|
260
|
-
log_url = f"{gitlab_cfg.api_path}/projects/{job.project_id}/jobs/{job.id}/artifacts/{log_path}" # pylint: disable=line-too-long
|
|
267
|
+
log_url = f"{gitlab_cfg.url}/{gitlab_cfg.api_path}/projects/{job.project_id}/jobs/{job.id}/artifacts/{log_path}" # pylint: disable=line-too-long
|
|
261
268
|
LOG.debug("Returning contents of %s%s", gitlab_cfg.url, log_url)
|
|
262
269
|
|
|
263
270
|
# Return the log as a file-like object with .read() function
|
logdetective/server/models.py
CHANGED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<b>Log Detective report
|
|
2
|
+
{% if project %}for {{ project }}{% endif %}
|
|
3
|
+
</b>
|
|
4
|
+
<p>
|
|
5
|
+
Analysis:
|
|
6
|
+
<br>
|
|
7
|
+
{{ explanation }}
|
|
8
|
+
<br>
|
|
9
|
+
<details>
|
|
10
|
+
<summary>Analysis details</summary>
|
|
11
|
+
<ul>
|
|
12
|
+
{% for snippet in snippets %}
|
|
13
|
+
<li>
|
|
14
|
+
<b>Line {{ snippet.line_number }}:</b> <code>{{ snippet.text }}</code>
|
|
15
|
+
{{ snippet.explanation.text }}
|
|
16
|
+
</li>
|
|
17
|
+
{% endfor %}
|
|
18
|
+
</ul>
|
|
19
|
+
</details>
|
|
20
|
+
</p>
|
|
21
|
+
<br>
|
|
22
|
+
<details>
|
|
23
|
+
<summary>Help</summary>
|
|
24
|
+
<p>
|
|
25
|
+
Log Detective analyses logs using template mining algorithm and LLMs.
|
|
26
|
+
Providing overview of the primary issue, while highlighting potentially important log lines.
|
|
27
|
+
</p>
|
|
28
|
+
<p>
|
|
29
|
+
Log Detective may offer potential solution to problem.
|
|
30
|
+
However, it is designed to do so only when sufficiently confident in the response.
|
|
31
|
+
<br>
|
|
32
|
+
Even so, as with any LLM based AI system, recommendations of Log Detective must be taken with caution.
|
|
33
|
+
Before acting on any recommendations of Log Detective, consider following:
|
|
34
|
+
</p>
|
|
35
|
+
<ul>
|
|
36
|
+
<li>
|
|
37
|
+
<b>Do you understand how does the proposed solution work? And why should it solve your problem?</b>
|
|
38
|
+
</li>
|
|
39
|
+
<li>Did Log Detective work with sufficient information to make this suggestion?</li>
|
|
40
|
+
<li>Are the suggested actions safe in the context of your work?</li>
|
|
41
|
+
<li>Do results of snippet analysis align with results of final analysis?</li>
|
|
42
|
+
<li>Are there any potentially adverse outcomes from implementing proposed solution?</li>
|
|
43
|
+
</ul>
|
|
44
|
+
</details>
|
|
45
|
+
<br>
|
|
46
|
+
{% render_contacts %}
|
|
47
|
+
<details>
|
|
48
|
+
<summary>Contacts</summary>
|
|
49
|
+
<p>Don't hesitate to reach out with your questions or suggestions.</p>
|
|
50
|
+
<ul>
|
|
51
|
+
<li>
|
|
52
|
+
<a href="https://github.com/fedora-copr/logdetective">Source</a>
|
|
53
|
+
</li>
|
|
54
|
+
<li>
|
|
55
|
+
<a href="https://github.com/fedora-copr/logdetective/issues">Issue tracker</a>
|
|
56
|
+
</li>
|
|
57
|
+
</ul>
|
|
58
|
+
</details>
|
|
59
|
+
{% endif %}
|
|
@@ -1,68 +1,69 @@
|
|
|
1
|
-
The package {{ package }}
|
|
2
|
-
|
|
1
|
+
The package {{ package }} build has experienced an issue.
|
|
3
2
|
Please know that the explanation was provided by AI and may be incorrect.
|
|
4
3
|
{% if certainty > 0 %}
|
|
5
|
-
In this case, we are {{ "%.2f" | format(certainty) }}% certain of the response {{ emoji_face }}.
|
|
4
|
+
In this case, we are {{ "%.2f" | format(certainty) }}% certain of the response {{ emoji_face }}.
|
|
6
5
|
{% endif %}
|
|
7
|
-
|
|
8
|
-
{{ explanation }}
|
|
9
|
-
|
|
10
|
-
<details>
|
|
6
|
+
<b>Snippets:</b>
|
|
11
7
|
<ul>
|
|
12
|
-
{% for snippet in snippets %}
|
|
13
|
-
<li>
|
|
14
|
-
<b>Line {{ snippet.line_number }}:</b> <code>{{ snippet.text }}</code>
|
|
15
|
-
{{ snippet.explanation.text }}
|
|
16
|
-
</li>
|
|
17
|
-
{% endfor %}
|
|
8
|
+
{% for snippet in snippets %}
|
|
9
|
+
<li>
|
|
10
|
+
<b>Line {{ snippet.line_number }}:</b> <code>{{ snippet.text }}</code>
|
|
11
|
+
{{ snippet.explanation.text }}
|
|
12
|
+
</li>
|
|
13
|
+
{% endfor %}
|
|
18
14
|
</ul>
|
|
15
|
+
<details>
|
|
16
|
+
<summary>Description</summary>
|
|
17
|
+
{{ explanation }}
|
|
19
18
|
</details>
|
|
20
|
-
|
|
21
19
|
<details>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
Log Detective analyzed the following logs files to provide an explanation:
|
|
25
|
-
</p>
|
|
26
|
-
|
|
27
|
-
<ul>
|
|
28
|
-
<li><a href="{{ log_url }}">{{ log_url }}</a></li>
|
|
29
|
-
</ul>
|
|
30
|
-
|
|
31
|
-
<p>
|
|
32
|
-
Additional logs are available from:
|
|
20
|
+
<summary>Logs</summary>
|
|
21
|
+
<p>Log Detective analyzed the following logs files to provide an explanation:</p>
|
|
33
22
|
<ul>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
23
|
+
<li>
|
|
24
|
+
<a href="{{ log_url }}">{{ log_url }}</a>
|
|
25
|
+
</li>
|
|
26
|
+
</ul>
|
|
27
|
+
<p>
|
|
28
|
+
Additional logs are available from:
|
|
29
|
+
<ul>
|
|
30
|
+
<li>
|
|
31
|
+
<a href="{{ artifacts_url }}">artifacts.zip</a>
|
|
32
|
+
</li>
|
|
33
|
+
</ul>
|
|
34
|
+
</p>
|
|
35
|
+
<p>
|
|
36
|
+
Please know that these log files are automatically removed after some
|
|
37
|
+
time, so you might need a backup.
|
|
38
|
+
</p>
|
|
42
39
|
</details>
|
|
43
|
-
|
|
44
40
|
<details>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
41
|
+
<summary>Help</summary>
|
|
42
|
+
<p>Don't hesitate to reach out.</p>
|
|
43
|
+
<ul>
|
|
44
|
+
<li>
|
|
45
|
+
<a href="https://github.com/fedora-copr/logdetective">Upstream</a>
|
|
46
|
+
</li>
|
|
47
|
+
<li>
|
|
48
|
+
<a href="https://github.com/fedora-copr/logdetective/issues">Issue tracker</a>
|
|
49
|
+
</li>
|
|
50
|
+
<li>
|
|
51
|
+
<a href="https://redhat.enterprise.slack.com/archives/C06DWNVKKDE">Slack</a>
|
|
52
|
+
</li>
|
|
53
|
+
<li>
|
|
54
|
+
<a href="https://log-detective.com/documentation">Documentation</a>
|
|
55
|
+
</li>
|
|
56
|
+
</ul>
|
|
54
57
|
</details>
|
|
55
|
-
|
|
56
|
-
|
|
57
58
|
---
|
|
58
59
|
This comment was created by [Log Detective][log-detective].
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
Was the provided feedback accurate and helpful?
|
|
61
|
+
<br>
|
|
62
|
+
Please vote with :thumbsup:
|
|
63
|
+
or :thumbsdown: to help us improve.
|
|
64
|
+
<br>
|
|
63
65
|
<i>If this Log Detective report contains harmful content, please use the
|
|
64
|
-
[Gitlab reporting feature for harmful content](https://docs.gitlab.com/user/report_abuse/)
|
|
66
|
+
[Gitlab reporting feature for harmful content](https://docs.gitlab.com/user/report_abuse/)
|
|
65
67
|
and contact the [Log Detective developers](https://github.com/fedora-copr/logdetective/issues).</i>
|
|
66
|
-
|
|
67
68
|
[log-detective]: https://log-detective.com/
|
|
68
69
|
[contact]: https://github.com/fedora-copr
|
|
@@ -1,57 +1,60 @@
|
|
|
1
|
-
The package {{ package }}
|
|
2
|
-
|
|
1
|
+
The package {{ package }} build has experienced an issue.
|
|
3
2
|
Please know that the explanation was provided by AI and may be incorrect.
|
|
4
3
|
{% if certainty > 0 %}
|
|
5
|
-
In this case, we are {{ "%.2f" | format(certainty) }}% certain of the response {{ emoji_face }}.
|
|
4
|
+
In this case, we are {{ "%.2f" | format(certainty) }}% certain of the response {{ emoji_face }}.
|
|
6
5
|
{% endif %}
|
|
7
|
-
|
|
8
|
-
{{ explanation }}
|
|
9
|
-
|
|
10
6
|
<details>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<li><a href="{{ log_url }}">{{ log_url }}</a></li>
|
|
18
|
-
</ul>
|
|
19
|
-
|
|
20
|
-
<p>
|
|
21
|
-
Additional logs are available from:
|
|
7
|
+
<summary>Description</summary>
|
|
8
|
+
{{ explanation }}
|
|
9
|
+
</details>
|
|
10
|
+
<details>
|
|
11
|
+
<summary>Logs</summary>
|
|
12
|
+
<p>Log Detective analyzed the following logs files to provide an explanation:</p>
|
|
22
13
|
<ul>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
14
|
+
<li>
|
|
15
|
+
<a href="{{ log_url }}">{{ log_url }}</a>
|
|
16
|
+
</li>
|
|
17
|
+
</ul>
|
|
18
|
+
<p>
|
|
19
|
+
Additional logs are available from:
|
|
20
|
+
<ul>
|
|
21
|
+
<li>
|
|
22
|
+
<a href="{{ artifacts_url }}">artifacts.zip</a>
|
|
23
|
+
</li>
|
|
24
|
+
</ul>
|
|
25
|
+
</p>
|
|
26
|
+
<p>
|
|
27
|
+
Please know that these log files are automatically removed after some
|
|
28
|
+
time, so you might need a backup.
|
|
29
|
+
</p>
|
|
31
30
|
</details>
|
|
32
|
-
|
|
33
31
|
<details>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
<summary>Help</summary>
|
|
33
|
+
<p>Don't hesitate to reach out.</p>
|
|
34
|
+
<ul>
|
|
35
|
+
<li>
|
|
36
|
+
<a href="https://github.com/fedora-copr/logdetective">Upstream</a>
|
|
37
|
+
</li>
|
|
38
|
+
<li>
|
|
39
|
+
<a href="https://github.com/fedora-copr/logdetective/issues">Issue tracker</a>
|
|
40
|
+
</li>
|
|
41
|
+
<li>
|
|
42
|
+
<a href="https://redhat.enterprise.slack.com/archives/C06DWNVKKDE">Slack</a>
|
|
43
|
+
</li>
|
|
44
|
+
<li>
|
|
45
|
+
<a href="https://log-detective.com/documentation">Documentation</a>
|
|
46
|
+
</li>
|
|
47
|
+
</ul>
|
|
43
48
|
</details>
|
|
44
|
-
|
|
45
|
-
|
|
46
49
|
---
|
|
47
50
|
This comment was created by [Log Detective][log-detective].
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
Was the provided feedback accurate and helpful?
|
|
52
|
+
<br>
|
|
53
|
+
Please vote with :thumbsup:
|
|
54
|
+
or :thumbsdown: to help us improve.
|
|
55
|
+
<br>
|
|
52
56
|
<i>If this Log Detective report contains harmful content, please use the
|
|
53
|
-
[Gitlab reporting feature for harmful content](https://docs.gitlab.com/user/report_abuse/)
|
|
57
|
+
[Gitlab reporting feature for harmful content](https://docs.gitlab.com/user/report_abuse/)
|
|
54
58
|
and contact the [Log Detective developers](https://github.com/fedora-copr/logdetective/issues).</i>
|
|
55
|
-
|
|
56
59
|
[log-detective]: https://log-detective.com/
|
|
57
60
|
[contact]: https://github.com/fedora-copr
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: logdetective
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: Log using LLM AI to search for build/test failures and provide ideas for fixing these.
|
|
5
5
|
License: Apache-2.0
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Author: Jiri Podivin
|
|
7
8
|
Author-email: jpodivin@gmail.com
|
|
8
9
|
Requires-Python: >=3.11,<4.0
|
|
@@ -15,6 +16,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
15
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
20
|
Classifier: Topic :: Internet :: Log Analysis
|
|
19
21
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
20
22
|
Classifier: Topic :: Software Development :: Debuggers
|
|
@@ -93,12 +95,13 @@ Usage
|
|
|
93
95
|
-----
|
|
94
96
|
|
|
95
97
|
To analyze a log file, run the script with the following command line arguments:
|
|
96
|
-
- `
|
|
97
|
-
- `--model` (optional, default: "Mistral-7B-Instruct-v0.
|
|
98
|
+
- `file` (required): The path or URL of the log file to be analyzed.
|
|
99
|
+
- `--model` (optional, default: "Mistral-7B-Instruct-v0.3-GGUF"): The path or Hugging space name of the language model for analysis. For models from Hugging Face, write them as `namespace/repo_name`. As we are using LLama.cpp we want this to be in the `gguf` format. If the model is already on your machine it will skip the download.
|
|
100
|
+
- `--filename_suffix` (optional, default "Q4_K.gguf"): You can specify which suffix of the file to use. This option is applied when specifying model using the Hugging Face repository.
|
|
98
101
|
- `--summarizer` DISABLED: LLM summarization option was removed. Argument is kept for backward compatibility only.(optional, default: "drain"): Choose between LLM and Drain template miner as the log summarizer. You can also provide the path to an existing language model file instead of using a URL.
|
|
99
102
|
- `--n_lines` DISABLED: LLM summarization option was removed. Argument is kept for backward compatibility only. (optional, default: 8): The number of lines per chunk for LLM analysis. This only makes sense when you are summarizing with LLM.
|
|
100
|
-
- `--n_clusters` (optional, default 8): Number of clusters for Drain to organize log chunks into. This only makes sense when you are summarizing with Drain
|
|
101
|
-
- `--skip_snippets` Path to patterns for skipping snippets.
|
|
103
|
+
- `--n_clusters` (optional, default 8): Number of clusters for Drain to organize log chunks into. This only makes sense when you are summarizing with Drain.
|
|
104
|
+
- `--skip_snippets` Path to patterns for skipping snippets (in YAML).
|
|
102
105
|
|
|
103
106
|
Example usage:
|
|
104
107
|
|
|
@@ -108,14 +111,10 @@ Or if the log file is stored locally:
|
|
|
108
111
|
|
|
109
112
|
logdetective ./data/logs.txt
|
|
110
113
|
|
|
111
|
-
|
|
114
|
+
Examples of using different models. Note the use of `--filename_suffix` (or `-F`) option, useful for models that were quantized:
|
|
112
115
|
|
|
113
|
-
logdetective https://example.com/logs.txt --model
|
|
114
|
-
logdetective https://
|
|
115
|
-
|
|
116
|
-
Example of different suffix (useful for models that were quantized)
|
|
117
|
-
|
|
118
|
-
logdetective https://kojipkgs.fedoraproject.org//work/tasks/3367/131313367/build.log --model 'fedora-copr/granite-3.2-8b-instruct-GGUF' -F Q4_K.gguf
|
|
116
|
+
logdetective https://example.com/logs.txt --model QuantFactory/Meta-Llama-3-8B-Instruct-GGUF --filename_suffix Q5_K_S.gguf
|
|
117
|
+
logdetective https://kojipkgs.fedoraproject.org//work/tasks/3367/131313367/build.log --model 'fedora-copr/granite-3.2-8b-instruct-GGUF' -F Q4_K_M.gguf
|
|
119
118
|
|
|
120
119
|
Example of altered prompts:
|
|
121
120
|
|
|
@@ -124,9 +123,9 @@ Example of altered prompts:
|
|
|
124
123
|
logdetective https://kojipkgs.fedoraproject.org//work/tasks/3367/131313367/build.log --prompts ~/my-prompts.yml
|
|
125
124
|
|
|
126
125
|
|
|
127
|
-
Note that streaming with some models (notably Meta-Llama-3
|
|
126
|
+
Note that streaming with some models (notably Meta-Llama-3) is broken and can be worked around by `no-stream` option:
|
|
128
127
|
|
|
129
|
-
logdetective https://example.com/logs.txt --model QuantFactory/Meta-Llama-3-8B-Instruct-GGUF --no-stream
|
|
128
|
+
logdetective https://example.com/logs.txt --model QuantFactory/Meta-Llama-3-8B-Instruct-GGUF --filename_suffix Q5_K_M.gguf --no-stream
|
|
130
129
|
|
|
131
130
|
|
|
132
131
|
Real Example
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
logdetective/__init__.py,sha256=VqRngDcuFT7JWms8Qc_MsOvajoXVOKPr-S1kqY3Pqhc,59
|
|
2
2
|
logdetective/constants.py,sha256=aCwrkBrDdS_kbNESK-Z-ewg--DSzodV2OMgwEq3UE38,2456
|
|
3
3
|
logdetective/drain3.ini,sha256=ni91eCT1TwTznZwcqWoOVMQcGEnWhEDNCoTPF7cfGfY,1360
|
|
4
|
-
logdetective/extractors.py,sha256=
|
|
4
|
+
logdetective/extractors.py,sha256=vT-je4NkDgSj9rRtSeLpqBU52gIUnnVgJPHFbVihpCw,5993
|
|
5
5
|
logdetective/logdetective.py,sha256=Ck7TL3YvdQG8zniudM8bM51LfTyVW6Ea3BarTjzjWHo,6606
|
|
6
6
|
logdetective/models.py,sha256=uczmQtWFgSp_ZGssngdTM4qzPF1o64dCy0469GoSbjQ,2937
|
|
7
7
|
logdetective/prompts-summary-first.yml,sha256=3Zfp4NNOfaFYq5xBlBjeQa5PdjYfS4v17OtJqQ-DRpU,821
|
|
@@ -20,20 +20,21 @@ logdetective/server/database/models/merge_request_jobs.py,sha256=q4reSC7YnEfWBPp
|
|
|
20
20
|
logdetective/server/database/models/metrics.py,sha256=_UCaizcl9w4iX54EWvk5VvXeLcg2UfnQgXg4br3OLko,14214
|
|
21
21
|
logdetective/server/emoji.py,sha256=hV4O0yfL0l1a3kWLImvBsY4AJQauKs7okYOGBEtYVz0,4795
|
|
22
22
|
logdetective/server/exceptions.py,sha256=piV7wVKc-rw_pHrThbZbUjtmjuO5qUbjVNFwjdfcP3Q,864
|
|
23
|
-
logdetective/server/gitlab.py,sha256=
|
|
23
|
+
logdetective/server/gitlab.py,sha256=hPQICeYK1B_1BS56GIExQgEhcdS5Y6IgBCkk-eXtnDY,16708
|
|
24
24
|
logdetective/server/koji.py,sha256=LG1pRiKUFvYFRKzgQoUG3pUHfcEwMoaMNjUSMKw_pBA,5640
|
|
25
25
|
logdetective/server/llm.py,sha256=bmA6LsV80OdO60q4WLoKuehuVDEYq-HhBAYcZeLfrv8,10150
|
|
26
26
|
logdetective/server/metric.py,sha256=QrrX1FmMa7sc57av0P9UFOiCIFYVLs1opOWV3ObYo0s,4086
|
|
27
|
-
logdetective/server/models.py,sha256=
|
|
27
|
+
logdetective/server/models.py,sha256=jUzQUszMqgOeOrH1V2ORtejGrD1Nw1sX05bsbAyFvV4,20830
|
|
28
28
|
logdetective/server/plot.py,sha256=C98U9prGoPkp8_t4v2dovdZuwOhSbxXSeB_K9Q2r3NE,14607
|
|
29
29
|
logdetective/server/server.py,sha256=s1QtD6FYsQX7BaVi783v7sqCEk4ccqlBJHFKUQlGgWM,24684
|
|
30
|
-
logdetective/server/templates/
|
|
31
|
-
logdetective/server/templates/
|
|
30
|
+
logdetective/server/templates/base_response.html.j2,sha256=BJGGV_Xb0Lnue8kq32oG9lI5CQDf9vce7HMYsP-Pvb4,2040
|
|
31
|
+
logdetective/server/templates/gitlab_full_comment.md.j2,sha256=qcDowH7bSD1NmoCVIvR4AG61xQbuVpHQ9CGj9L-RwpM,2232
|
|
32
|
+
logdetective/server/templates/gitlab_short_comment.md.j2,sha256=UpQxIgOuOO8BBF__kzFl0XlCuYmcyfN2yMz6vd4PQ2Q,2000
|
|
32
33
|
logdetective/server/utils.py,sha256=7ub-Nz7LUP_idwi2_nEC4FBuY9otSBUVy9nw86-sjYc,3861
|
|
33
34
|
logdetective/skip_snippets.yml,sha256=reGlhPPCo06nNUJWiC2LY-OJOoPdcyOB7QBTSMeh0eg,487
|
|
34
35
|
logdetective/utils.py,sha256=9EyHKGNxtS1ObSepL-T3M43rKIxQJkFDA5yllLbS5Bs,9178
|
|
35
|
-
logdetective-2.
|
|
36
|
-
logdetective-2.
|
|
37
|
-
logdetective-2.
|
|
38
|
-
logdetective-2.
|
|
39
|
-
logdetective-2.
|
|
36
|
+
logdetective-2.4.0.dist-info/METADATA,sha256=WjXnQeIgrvCKSHpNDPs5UuBQYEJfQn-3eGCyIOcgVCk,21645
|
|
37
|
+
logdetective-2.4.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
38
|
+
logdetective-2.4.0.dist-info/entry_points.txt,sha256=3K_vXja6PmcA8sNdUi63WdImeiNhVZcEGPTaoJmltfA,63
|
|
39
|
+
logdetective-2.4.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
40
|
+
logdetective-2.4.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|