patchrail 0.1.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.
Files changed (47) hide show
  1. patchrail/__init__.py +7 -0
  2. patchrail/__main__.py +7 -0
  3. patchrail/ci/__init__.py +7 -0
  4. patchrail/ci/classify.py +888 -0
  5. patchrail/cli.py +8566 -0
  6. patchrail/funded_issues/__init__.py +138 -0
  7. patchrail/funded_issues/algora_board.py +240 -0
  8. patchrail/funded_issues/blocklist.py +112 -0
  9. patchrail/funded_issues/discovery.py +4091 -0
  10. patchrail/funded_issues/importers.py +316 -0
  11. patchrail/funded_issues/source_noise.py +349 -0
  12. patchrail/funded_issues/store.py +459 -0
  13. patchrail/queue/__init__.py +75 -0
  14. patchrail/queue/server.py +273 -0
  15. patchrail/queue/status.py +756 -0
  16. patchrail/queue/store.py +600 -0
  17. patchrail/reviewer_quick_check.py +650 -0
  18. patchrail/schemas/__init__.py +1 -0
  19. patchrail/schemas/application-dossier.v1.schema.json +305 -0
  20. patchrail/schemas/ci-benchmark.v1.schema.json +174 -0
  21. patchrail/schemas/ci-fixture-check.v1.schema.json +122 -0
  22. patchrail/schemas/ci-pilot-metrics.v1.schema.json +164 -0
  23. patchrail/schemas/ci-pilot-summary.v1.schema.json +146 -0
  24. patchrail/schemas/ci-result.v1.schema.json +133 -0
  25. patchrail/schemas/funded-issues-client-report.v1.schema.json +524 -0
  26. patchrail/schemas/funded-issues-recheck-queue.v1.schema.json +333 -0
  27. patchrail/schemas/funded-issues-recheck-summary.v1.schema.json +136 -0
  28. patchrail/schemas/funded-issues-report.v1.schema.json +836 -0
  29. patchrail/schemas/funded-issues-shortlist.v1.schema.json +953 -0
  30. patchrail/schemas/funded-issues-store-status.v1.schema.json +96 -0
  31. patchrail/schemas/funded-issues-store.v1.schema.json +117 -0
  32. patchrail/schemas/queue-audit-event.v1.schema.json +44 -0
  33. patchrail/schemas/queue-audit-summary.v1.schema.json +169 -0
  34. patchrail/schemas/queue-gate-report.v1.schema.json +158 -0
  35. patchrail/schemas/queue-policy-resolution.v1.schema.json +188 -0
  36. patchrail/schemas/queue-policy-scan.v1.schema.json +175 -0
  37. patchrail/schemas/queue-proposal.v1.schema.json +61 -0
  38. patchrail/schemas/queue-review.v1.schema.json +218 -0
  39. patchrail/schemas/queue-status.v1.schema.json +179 -0
  40. patchrail/schemas/queue-work-item.v1.schema.json +64 -0
  41. patchrail/schemas/reviewer-quick-check-artifacts.v1.schema.json +104 -0
  42. patchrail/web_metrics.py +649 -0
  43. patchrail-0.1.0.dist-info/METADATA +279 -0
  44. patchrail-0.1.0.dist-info/RECORD +47 -0
  45. patchrail-0.1.0.dist-info/WHEEL +4 -0
  46. patchrail-0.1.0.dist-info/entry_points.txt +2 -0
  47. patchrail-0.1.0.dist-info/licenses/LICENSE +202 -0
@@ -0,0 +1,305 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://patchrail.dev/schemas/application-dossier.v1.schema.json",
4
+ "title": "PatchRail Application Dossier",
5
+ "description": "Local Codex for Open Source application dossier emitted by patchrail evidence application-dossier --format json. The dossier is a draft artifact and never submits an external form.",
6
+ "type": "object",
7
+ "required": [
8
+ "schema_version",
9
+ "patchrail_version",
10
+ "repository",
11
+ "generated_from",
12
+ "status",
13
+ "application_gate",
14
+ "signals",
15
+ "upstream_contributions",
16
+ "evidence_commands",
17
+ "evidence_pages",
18
+ "reviewer_quick_checks",
19
+ "roadmap_status",
20
+ "safe_local_work_while_blocked",
21
+ "submission_policy",
22
+ "safety"
23
+ ],
24
+ "properties": {
25
+ "schema_version": {
26
+ "const": "patchrail.application_dossier.v1"
27
+ },
28
+ "patchrail_version": {
29
+ "type": "string",
30
+ "minLength": 1
31
+ },
32
+ "repository": {
33
+ "const": "patchrail/patchrail"
34
+ },
35
+ "generated_from": {
36
+ "const": "local_checkout"
37
+ },
38
+ "status": {
39
+ "enum": ["draft_only_do_not_submit", "ready_for_maintainer_review"]
40
+ },
41
+ "application_gate": {
42
+ "type": "object",
43
+ "required": ["status", "decision", "blockers", "blocked_dependencies"],
44
+ "properties": {
45
+ "status": {
46
+ "enum": ["not_ready", "ready_to_apply"]
47
+ },
48
+ "decision": {
49
+ "enum": ["do_not_apply_yet", "ready_for_maintainer_tap"]
50
+ },
51
+ "blockers": {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "string",
55
+ "minLength": 1
56
+ }
57
+ },
58
+ "blocked_dependencies": {
59
+ "type": "array",
60
+ "items": {
61
+ "type": "object",
62
+ "required": [
63
+ "blocker",
64
+ "owner",
65
+ "required_evidence",
66
+ "safe_local_alternative"
67
+ ],
68
+ "properties": {
69
+ "blocker": {
70
+ "type": "string",
71
+ "minLength": 1
72
+ },
73
+ "owner": {
74
+ "type": "string",
75
+ "minLength": 1
76
+ },
77
+ "required_evidence": {
78
+ "type": "string",
79
+ "minLength": 1
80
+ },
81
+ "safe_local_alternative": {
82
+ "type": "string",
83
+ "minLength": 1
84
+ }
85
+ },
86
+ "additionalProperties": false
87
+ }
88
+ }
89
+ },
90
+ "additionalProperties": false
91
+ },
92
+ "signals": {
93
+ "type": "object",
94
+ "required": [
95
+ "ci_fixtures",
96
+ "ci_benchmark_failed",
97
+ "public_release_count",
98
+ "public_external_adopters",
99
+ "pilot_summary_count",
100
+ "owned_repo_issue_pr_cycles",
101
+ "focused_maintainer_prs",
102
+ "upstream_contribution_count",
103
+ "merged_upstream_contribution_count",
104
+ "open_upstream_pr_count"
105
+ ],
106
+ "properties": {
107
+ "ci_fixtures": {
108
+ "type": "integer",
109
+ "minimum": 0
110
+ },
111
+ "ci_benchmark_failed": {
112
+ "type": "integer",
113
+ "minimum": 0
114
+ },
115
+ "public_release_count": {
116
+ "type": "integer",
117
+ "minimum": 0
118
+ },
119
+ "public_external_adopters": {
120
+ "type": "integer",
121
+ "minimum": 0
122
+ },
123
+ "pilot_summary_count": {
124
+ "type": "integer",
125
+ "minimum": 0
126
+ },
127
+ "owned_repo_issue_pr_cycles": {
128
+ "type": "integer",
129
+ "minimum": 0
130
+ },
131
+ "focused_maintainer_prs": {
132
+ "type": "integer",
133
+ "minimum": 0
134
+ },
135
+ "upstream_contribution_count": {
136
+ "type": "integer",
137
+ "minimum": 0
138
+ },
139
+ "merged_upstream_contribution_count": {
140
+ "type": "integer",
141
+ "minimum": 0
142
+ },
143
+ "open_upstream_pr_count": {
144
+ "type": "integer",
145
+ "minimum": 0
146
+ }
147
+ },
148
+ "additionalProperties": false
149
+ },
150
+ "upstream_contributions": {
151
+ "type": "array",
152
+ "items": {
153
+ "type": "object",
154
+ "required": ["project", "url", "status", "evidence"],
155
+ "properties": {
156
+ "project": {
157
+ "type": "string",
158
+ "minLength": 1
159
+ },
160
+ "url": {
161
+ "type": "string",
162
+ "pattern": "^https://github\\.com/"
163
+ },
164
+ "status": {
165
+ "type": "string",
166
+ "minLength": 1
167
+ },
168
+ "evidence": {
169
+ "type": "string",
170
+ "minLength": 1
171
+ }
172
+ },
173
+ "additionalProperties": false
174
+ }
175
+ },
176
+ "evidence_commands": {
177
+ "type": "array",
178
+ "minItems": 1,
179
+ "items": {
180
+ "type": "string",
181
+ "minLength": 1
182
+ }
183
+ },
184
+ "evidence_pages": {
185
+ "type": "array",
186
+ "minItems": 1,
187
+ "items": {
188
+ "type": "string",
189
+ "minLength": 1
190
+ }
191
+ },
192
+ "reviewer_quick_checks": {
193
+ "type": "array",
194
+ "minItems": 1,
195
+ "items": {
196
+ "type": "object",
197
+ "required": [
198
+ "name",
199
+ "command",
200
+ "expected",
201
+ "network_required",
202
+ "write_action_required"
203
+ ],
204
+ "properties": {
205
+ "name": {
206
+ "type": "string",
207
+ "minLength": 1
208
+ },
209
+ "command": {
210
+ "type": "string",
211
+ "minLength": 1
212
+ },
213
+ "expected": {
214
+ "type": "string",
215
+ "minLength": 1
216
+ },
217
+ "network_required": {
218
+ "type": "boolean"
219
+ },
220
+ "write_action_required": {
221
+ "const": false
222
+ }
223
+ },
224
+ "additionalProperties": false
225
+ }
226
+ },
227
+ "roadmap_status": {
228
+ "type": "string",
229
+ "minLength": 1
230
+ },
231
+ "safe_local_work_while_blocked": {
232
+ "type": "array",
233
+ "minItems": 1,
234
+ "items": {
235
+ "type": "string",
236
+ "minLength": 1
237
+ }
238
+ },
239
+ "submission_policy": {
240
+ "type": "object",
241
+ "required": [
242
+ "maintainer_tap_required",
243
+ "agent_may_submit",
244
+ "form_submission_allowed_by_gate",
245
+ "no_placeholder_metrics",
246
+ "no_money_goal"
247
+ ],
248
+ "properties": {
249
+ "maintainer_tap_required": {
250
+ "const": true
251
+ },
252
+ "agent_may_submit": {
253
+ "const": false
254
+ },
255
+ "form_submission_allowed_by_gate": {
256
+ "type": "boolean"
257
+ },
258
+ "no_placeholder_metrics": {
259
+ "const": true
260
+ },
261
+ "no_money_goal": {
262
+ "const": true
263
+ }
264
+ },
265
+ "additionalProperties": false
266
+ },
267
+ "safety": {
268
+ "type": "object",
269
+ "required": [
270
+ "local_first",
271
+ "network_required",
272
+ "github_write_permission_required",
273
+ "external_model_required",
274
+ "billing_required",
275
+ "third_party_write_actions_allowed",
276
+ "application_form_write_action"
277
+ ],
278
+ "properties": {
279
+ "local_first": {
280
+ "const": true
281
+ },
282
+ "network_required": {
283
+ "const": false
284
+ },
285
+ "github_write_permission_required": {
286
+ "const": false
287
+ },
288
+ "external_model_required": {
289
+ "const": false
290
+ },
291
+ "billing_required": {
292
+ "const": false
293
+ },
294
+ "third_party_write_actions_allowed": {
295
+ "const": false
296
+ },
297
+ "application_form_write_action": {
298
+ "const": true
299
+ }
300
+ },
301
+ "additionalProperties": false
302
+ }
303
+ },
304
+ "additionalProperties": false
305
+ }
@@ -0,0 +1,174 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://patchrail.dev/schemas/ci-benchmark.v1.schema.json",
4
+ "title": "PatchRail CI Benchmark",
5
+ "description": "Aggregate fixture benchmark emitted by patchrail ci benchmark --format json.",
6
+ "type": "object",
7
+ "required": [
8
+ "schema_version",
9
+ "root",
10
+ "total_cases",
11
+ "passed",
12
+ "failed",
13
+ "accuracy",
14
+ "class_summary",
15
+ "coverage_gate",
16
+ "requirements"
17
+ ],
18
+ "properties": {
19
+ "schema_version": {
20
+ "const": "patchrail.ci_benchmark.v1"
21
+ },
22
+ "root": {
23
+ "type": "string",
24
+ "minLength": 1
25
+ },
26
+ "total_cases": {
27
+ "type": "integer",
28
+ "minimum": 0
29
+ },
30
+ "passed": {
31
+ "type": "integer",
32
+ "minimum": 0
33
+ },
34
+ "failed": {
35
+ "type": "integer",
36
+ "minimum": 0
37
+ },
38
+ "accuracy": {
39
+ "type": "object",
40
+ "required": ["top_1"],
41
+ "properties": {
42
+ "top_1": {
43
+ "type": "number",
44
+ "minimum": 0,
45
+ "maximum": 1
46
+ }
47
+ },
48
+ "additionalProperties": true
49
+ },
50
+ "class_summary": {
51
+ "type": "object",
52
+ "additionalProperties": {
53
+ "type": "object",
54
+ "required": ["total_cases", "passed", "failed"],
55
+ "properties": {
56
+ "total_cases": {
57
+ "type": "integer",
58
+ "minimum": 0
59
+ },
60
+ "passed": {
61
+ "type": "integer",
62
+ "minimum": 0
63
+ },
64
+ "failed": {
65
+ "type": "integer",
66
+ "minimum": 0
67
+ }
68
+ },
69
+ "additionalProperties": false
70
+ }
71
+ },
72
+ "coverage_gate": {
73
+ "type": "object",
74
+ "required": ["min_cases_per_class", "passed", "failures"],
75
+ "properties": {
76
+ "min_cases_per_class": {
77
+ "type": "integer",
78
+ "minimum": 0
79
+ },
80
+ "passed": {
81
+ "type": "boolean"
82
+ },
83
+ "failures": {
84
+ "type": "array",
85
+ "items": {
86
+ "type": "object",
87
+ "required": ["failure_class", "total_cases", "minimum_cases"],
88
+ "properties": {
89
+ "failure_class": {
90
+ "type": "string",
91
+ "minLength": 1
92
+ },
93
+ "total_cases": {
94
+ "type": "integer",
95
+ "minimum": 0
96
+ },
97
+ "minimum_cases": {
98
+ "type": "integer",
99
+ "minimum": 0
100
+ }
101
+ },
102
+ "additionalProperties": false
103
+ }
104
+ }
105
+ },
106
+ "additionalProperties": false
107
+ },
108
+ "cases": {
109
+ "type": "array",
110
+ "items": {
111
+ "type": "object",
112
+ "required": [
113
+ "log",
114
+ "expected_failure_class",
115
+ "actual_failure_class",
116
+ "expected_minimum_confidence",
117
+ "actual_confidence",
118
+ "passed",
119
+ "mismatches"
120
+ ],
121
+ "properties": {
122
+ "log": {
123
+ "type": "string",
124
+ "minLength": 1
125
+ },
126
+ "expected_failure_class": {
127
+ "type": ["string", "null"]
128
+ },
129
+ "actual_failure_class": {
130
+ "type": "string",
131
+ "minLength": 1
132
+ },
133
+ "expected_minimum_confidence": {
134
+ "type": ["number", "null"],
135
+ "minimum": 0,
136
+ "maximum": 1
137
+ },
138
+ "actual_confidence": {
139
+ "type": "number",
140
+ "minimum": 0,
141
+ "maximum": 1
142
+ },
143
+ "passed": {
144
+ "type": "boolean"
145
+ },
146
+ "mismatches": {
147
+ "type": "array",
148
+ "items": {
149
+ "type": "string"
150
+ }
151
+ }
152
+ },
153
+ "additionalProperties": false
154
+ }
155
+ },
156
+ "requirements": {
157
+ "type": "object",
158
+ "required": ["billing_required", "external_model_required", "network_required"],
159
+ "properties": {
160
+ "billing_required": {
161
+ "const": false
162
+ },
163
+ "external_model_required": {
164
+ "const": false
165
+ },
166
+ "network_required": {
167
+ "const": false
168
+ }
169
+ },
170
+ "additionalProperties": false
171
+ }
172
+ },
173
+ "additionalProperties": true
174
+ }
@@ -0,0 +1,122 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://patchrail.dev/schemas/ci-fixture-check.v1.schema.json",
4
+ "title": "PatchRail CI Fixture Check",
5
+ "description": "Fixture hygiene report emitted by patchrail ci fixture-check --format json.",
6
+ "type": "object",
7
+ "required": [
8
+ "schema_version",
9
+ "root",
10
+ "total_cases",
11
+ "passed",
12
+ "failed",
13
+ "cases",
14
+ "requirements"
15
+ ],
16
+ "properties": {
17
+ "schema_version": {
18
+ "const": "patchrail.ci_fixture_check.v1"
19
+ },
20
+ "root": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "total_cases": {
25
+ "type": "integer",
26
+ "minimum": 0
27
+ },
28
+ "passed": {
29
+ "type": "integer",
30
+ "minimum": 0
31
+ },
32
+ "failed": {
33
+ "type": "integer",
34
+ "minimum": 0
35
+ },
36
+ "cases": {
37
+ "type": "array",
38
+ "items": {
39
+ "type": "object",
40
+ "required": [
41
+ "log",
42
+ "expected_file",
43
+ "expected_failure_class",
44
+ "actual_failure_class",
45
+ "expected_minimum_confidence",
46
+ "actual_confidence",
47
+ "redactions",
48
+ "passed",
49
+ "issues"
50
+ ],
51
+ "properties": {
52
+ "log": {
53
+ "type": "string",
54
+ "minLength": 1
55
+ },
56
+ "expected_file": {
57
+ "type": ["string", "null"]
58
+ },
59
+ "expected_failure_class": {
60
+ "type": ["string", "null"]
61
+ },
62
+ "actual_failure_class": {
63
+ "type": "string",
64
+ "minLength": 1
65
+ },
66
+ "expected_minimum_confidence": {
67
+ "type": ["number", "null"],
68
+ "minimum": 0,
69
+ "maximum": 1
70
+ },
71
+ "actual_confidence": {
72
+ "type": "number",
73
+ "minimum": 0,
74
+ "maximum": 1
75
+ },
76
+ "redactions": {
77
+ "type": "object",
78
+ "additionalProperties": {
79
+ "type": "integer",
80
+ "minimum": 1
81
+ }
82
+ },
83
+ "passed": {
84
+ "type": "boolean"
85
+ },
86
+ "issues": {
87
+ "type": "array",
88
+ "items": {
89
+ "type": "string"
90
+ }
91
+ }
92
+ },
93
+ "additionalProperties": false
94
+ }
95
+ },
96
+ "requirements": {
97
+ "type": "object",
98
+ "required": [
99
+ "billing_required",
100
+ "external_model_required",
101
+ "network_required",
102
+ "github_write_permission_required"
103
+ ],
104
+ "properties": {
105
+ "billing_required": {
106
+ "const": false
107
+ },
108
+ "external_model_required": {
109
+ "const": false
110
+ },
111
+ "network_required": {
112
+ "const": false
113
+ },
114
+ "github_write_permission_required": {
115
+ "const": false
116
+ }
117
+ },
118
+ "additionalProperties": false
119
+ }
120
+ },
121
+ "additionalProperties": true
122
+ }