github-agent 2.4.6__py3-none-any.whl → 2.4.8__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.
- github_agent/__init__.py +1 -1
- github_agent/mcp_server.py +1 -1
- github_agent/ontology/github.ttl +5 -27
- github_agent/ontology/ingest_sources.json +24 -0
- {github_agent-2.4.6.dist-info → github_agent-2.4.8.dist-info}/METADATA +2 -2
- {github_agent-2.4.6.dist-info → github_agent-2.4.8.dist-info}/RECORD +13 -10
- tests/test_cq_paths.py +50 -0
- tests/test_ingest_sources.py +34 -0
- tests/test_ontology_parent_link.py +1 -7
- {github_agent-2.4.6.dist-info → github_agent-2.4.8.dist-info}/WHEEL +0 -0
- {github_agent-2.4.6.dist-info → github_agent-2.4.8.dist-info}/entry_points.txt +0 -0
- {github_agent-2.4.6.dist-info → github_agent-2.4.8.dist-info}/licenses/LICENSE +0 -0
- {github_agent-2.4.6.dist-info → github_agent-2.4.8.dist-info}/top_level.txt +0 -0
github_agent/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "2.4.
|
|
1
|
+
__version__ = "2.4.8"
|
github_agent/mcp_server.py
CHANGED
github_agent/ontology/github.ttl
CHANGED
|
@@ -13,36 +13,18 @@
|
|
|
13
13
|
# github_branches / github_commits / github_actions / github_orgs). The shared
|
|
14
14
|
# :Person / :Document classes (users, release notes) are REUSED, never redefined.
|
|
15
15
|
|
|
16
|
+
# Shared concepts owned by the epistemic-graph ontology and referenced here, never redeclared:
|
|
17
|
+
# Repository, PullRequest, Release, Branch, Commit, PipelineRun. Only the GitHub-specific subclasses and properties are declared in this pack.
|
|
18
|
+
|
|
16
19
|
:Organization a owl:Class ;
|
|
17
20
|
rdfs:label "Organization" ;
|
|
18
21
|
rdfs:comment "A GitHub organization that owns repositories and members (github_orgs)." .
|
|
19
22
|
|
|
20
|
-
:Repository a owl:Class ;
|
|
21
|
-
rdfs:subClassOf :SoftwareProject ;
|
|
22
|
-
rdfs:label "Repository" ;
|
|
23
|
-
rdfs:comment "A GitHub repository / codebase (github_repos)." .
|
|
24
|
-
|
|
25
|
-
:PullRequest a owl:Class ;
|
|
26
|
-
rdfs:label "Pull Request" ;
|
|
27
|
-
rdfs:comment "A proposed change under review, from a head to a base branch (github_pulls)." .
|
|
28
|
-
|
|
29
23
|
:Issue a owl:Class ;
|
|
30
24
|
rdfs:subClassOf :WorkItem ;
|
|
31
25
|
rdfs:label "Issue" ;
|
|
32
26
|
rdfs:comment "A tracked work item, bug, or discussion in a repository (github_issues)." .
|
|
33
27
|
|
|
34
|
-
:Release a owl:Class ;
|
|
35
|
-
rdfs:label "Release" ;
|
|
36
|
-
rdfs:comment "A tagged, published repository release with release notes (github_releases)." .
|
|
37
|
-
|
|
38
|
-
:Branch a owl:Class ;
|
|
39
|
-
rdfs:label "Branch" ;
|
|
40
|
-
rdfs:comment "A named git branch within a repository (github_branches)." .
|
|
41
|
-
|
|
42
|
-
:Commit a owl:Class ;
|
|
43
|
-
rdfs:label "Commit" ;
|
|
44
|
-
rdfs:comment "A git commit recorded in a repository (github_commits)." .
|
|
45
|
-
|
|
46
28
|
:Workflow a owl:Class ;
|
|
47
29
|
rdfs:label "Workflow" ;
|
|
48
30
|
rdfs:comment "A GitHub Actions CI/CD workflow definition (github_actions)." .
|
|
@@ -52,13 +34,8 @@
|
|
|
52
34
|
rdfs:label "Workflow Run" ;
|
|
53
35
|
rdfs:comment "A single execution of a GitHub Actions workflow for a ref/commit (github_actions)." .
|
|
54
36
|
|
|
55
|
-
:PipelineRun a owl:Class ;
|
|
56
|
-
rdfs:label "Pipeline Run" ;
|
|
57
|
-
rdfs:comment """A single CI/CD execution for a ref/commit (github_actions workflow run).
|
|
58
|
-
Shares its class name with the twin gitlab-api producer so GitHub Actions and GitLab
|
|
59
|
-
CI/CD unify under one node shape in the knowledge graph.""" .
|
|
60
|
-
|
|
61
37
|
:CheckRun a owl:Class ;
|
|
38
|
+
rdfs:subClassOf :PipelineRun ;
|
|
62
39
|
rdfs:label "Check Run" ;
|
|
63
40
|
rdfs:comment """A single job/check within a PipelineRun (github_actions workflow-run job or
|
|
64
41
|
GitHub Checks-API check run). Shares its class name with the twin gitlab-api producer.""" .
|
|
@@ -140,6 +117,7 @@
|
|
|
140
117
|
:state a owl:DatatypeProperty ;
|
|
141
118
|
rdfs:label "state" ;
|
|
142
119
|
rdfs:comment "Lifecycle state (open, closed, merged)." ;
|
|
120
|
+
rdfs:domain [ a owl:Class ; owl:unionOf ( :Issue :PullRequest ) ] ;
|
|
143
121
|
rdfs:range xsd:string .
|
|
144
122
|
|
|
145
123
|
:number a owl:DatatypeProperty ;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"connector": "github-mcp",
|
|
3
|
+
"sources": [
|
|
4
|
+
{
|
|
5
|
+
"source_id": "issues",
|
|
6
|
+
"record_type": "Issue",
|
|
7
|
+
"tools": [
|
|
8
|
+
"github_search_issues"
|
|
9
|
+
],
|
|
10
|
+
"records_path": "data.items",
|
|
11
|
+
"id_field": "id",
|
|
12
|
+
"title_field": "title",
|
|
13
|
+
"text_field": "body",
|
|
14
|
+
"cursor_field": "updated_at",
|
|
15
|
+
"incremental": false,
|
|
16
|
+
"arguments": {
|
|
17
|
+
"q": "is:issue is:open involves:@me",
|
|
18
|
+
"per_page": 50,
|
|
19
|
+
"max_pages": 1
|
|
20
|
+
},
|
|
21
|
+
"description": "Open GitHub issues involving the authenticated user (first 50)."
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: github-agent
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.8
|
|
4
4
|
Summary: GitHub Agent for MCP
|
|
5
5
|
Author-email: Project Maintainers <maintainers@users.noreply.github.com>
|
|
6
6
|
License: MIT
|
|
@@ -44,7 +44,7 @@ Dynamic: license-file
|
|
|
44
44
|

|
|
45
45
|

|
|
46
46
|
|
|
47
|
-
*Version: 2.4.
|
|
47
|
+
*Version: 2.4.8*
|
|
48
48
|
|
|
49
49
|
> **Documentation** — Installation, deployment, and usage across the MCP, API, and
|
|
50
50
|
> [official documentation](https://knuckles-team.github.io/github-agent/).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
github_agent/__init__.py,sha256=
|
|
1
|
+
github_agent/__init__.py,sha256=glMuOQomGqPeJvn8UHzLa83MujqjNX2vpagybeMit4A,22
|
|
2
2
|
github_agent/__main__.py,sha256=O4Xg__fMvKfUsA6m61pLV56jlYY6EORiLhgDLlp0vJ8,92
|
|
3
3
|
github_agent/api_client.py,sha256=O69YfkXBKyVd59EC8szaMlw3_ZxwEEvsLSvhWlfYnvk,1581
|
|
4
4
|
github_agent/auth.py,sha256=isNd6DYbl_syB_wIbC399d_-157jqH1jqJfDmBn8h-0,4671
|
|
@@ -8,7 +8,7 @@ github_agent/github_input_models.py,sha256=yqqPGHb206th736MZvbnxq9F1JRsBUBODNeNV
|
|
|
8
8
|
github_agent/github_response_models.py,sha256=mllSt0frBgzklUtfuHywJ2Ald3m99So948Xikt3H2Tc,8859
|
|
9
9
|
github_agent/kg_ingest.py,sha256=iH_NKpd8a6GtNxfZTp8Oah8VZkcXjI74KDf8P9NbtjA,17978
|
|
10
10
|
github_agent/mcp_config.json,sha256=2OOXrwO1sDLyHQqpZwhvDHizPIe3by6YmK4KFE333gI,23
|
|
11
|
-
github_agent/mcp_server.py,sha256=
|
|
11
|
+
github_agent/mcp_server.py,sha256=XZEV8zYUZAJk34_rtFHTKnWMGqwbYRHgd3ZMuAM59dI,126620
|
|
12
12
|
github_agent/api/__init__.py,sha256=ntaEPqk-dsAV3HyyDLc2hYpc9nTTyG5CKI-SVDDjc24,27
|
|
13
13
|
github_agent/api/api_client_base.py,sha256=tMXKrZIXg6aQ6OK4kNKBDcNc8BrM0Vml_66SwA5ZgEw,7485
|
|
14
14
|
github_agent/api/api_client_branches.py,sha256=bCmqGUWQ27GFTGxcFkQ7D-ZEltKp6APVsk_Fw9wzdjY,3940
|
|
@@ -42,7 +42,8 @@ github_agent/mcp/mcp_repo.py,sha256=ny5GdawCFZxlbjpOc3ttnn-NIs9QDQLAxRdAWEWLUdc,
|
|
|
42
42
|
github_agent/mcp/mcp_search.py,sha256=3ZBGNKkVu5oBXgN9MBWd-ve4NDCzcwP9sY22bp4hqKs,2963
|
|
43
43
|
github_agent/ontology/__init__.py,sha256=-qc7ZPSgdaCLrD1AH_7TFXWikEpSH9rVmBciCC9gtCY,552
|
|
44
44
|
github_agent/ontology/certification.json,sha256=nUT_C-AtTjtb4bDAs3cDT2vlk7kK_8RPFfbyIWXCMw0,1664
|
|
45
|
-
github_agent/ontology/github.ttl,sha256=
|
|
45
|
+
github_agent/ontology/github.ttl,sha256=v5lzPQkPBvjuzXYdg1rMHcsARExIsTdkshebvfnhyp8,8573
|
|
46
|
+
github_agent/ontology/ingest_sources.json,sha256=70glHq2q8MEQCxD22r2VPyz_7mubibf1iygCf-sSdMs,572
|
|
46
47
|
github_agent/ontology/fixtures/records.json,sha256=EvW1Swrph3DyefmeE2eI0GM0AEKp1v9LrAwiqIbS3Hs,543
|
|
47
48
|
github_agent/ontology/mappings/source.yaml,sha256=f_ejdVD4JaYf5tD5UpIG9O_icnQx4yuKuVo5oyvc7UM,533
|
|
48
49
|
github_agent/ontology/migrations/manifest.json,sha256=rfFgIlAt0DHdMDpSq656Bnfs4RNeHgXCHbokya5Rk1w,118
|
|
@@ -92,7 +93,7 @@ github_agent/skills/github-triage-resolver/WORKFLOW.md,sha256=orvcRmaV-qb_JKoGSw
|
|
|
92
93
|
github_agent/skills/github-triage-resolver/references/resolution-rules.md,sha256=lGPvfLCSHpNIeh2rKWcH2k_2lla3ovgBxzwvtMmyQ-0,4133
|
|
93
94
|
github_agent/skills/github-triage-resolver/scripts/classify_safe.py,sha256=8BhcDF9Q8rjJIEVOmdyO-dO-eHBjW7T-bzaYC16uY5I,9556
|
|
94
95
|
github_agent/skills/github-triage-resolver/scripts/gh_write.py,sha256=SL5oA1A3lFRLepNri4CzEcuEsg9D5WKJ1000fCRKBEM,4125
|
|
95
|
-
github_agent-2.4.
|
|
96
|
+
github_agent-2.4.8.dist-info/licenses/LICENSE,sha256=5ALbh4fIALWVsUhO7q1nFT1bQb-CL9sWKf7p3GgLEG8,1070
|
|
96
97
|
scripts/security_sanitizer.py,sha256=gE65xtYMGx43oYUnK0kozBm73Hx97mCdrQUM7GGzIbk,9449
|
|
97
98
|
scripts/verify_api_integration.py,sha256=3AK8HKW52o1yxCDaEUtXngnh7CjYw6NiG9Eb3EIoXNE,10256
|
|
98
99
|
tests/conftest.py,sha256=kgpOLUp_q8IZaI6Xd7F1tbFuio81-_l5Gd4jaGiMrnY,3636
|
|
@@ -101,6 +102,7 @@ tests/test_api_client_endpoints.py,sha256=Hbw0vssQU5Up-KvJmUDLDCP4t2u8pU-xPfWAhF
|
|
|
101
102
|
tests/test_api_validation.py,sha256=CRZq7kfc1U8CLZJRTGusBhTN2Tlfc1FIeDqIm895XoI,3301
|
|
102
103
|
tests/test_auth_client_edge_cases.py,sha256=QjQAtjd7vDDsSSvIZuUXbd9Z58te8Xp9giPFmwJTBsA,6470
|
|
103
104
|
tests/test_comment_crud.py,sha256=mHA0scds_0W0oND-VI0QMvNaYarYkHjiXd4H9-9d5kE,27341
|
|
105
|
+
tests/test_cq_paths.py,sha256=f4pf4NcI_SFL_7EVkK93ZMaF7W-0vQ9CTxGE9FS6Wkk,1524
|
|
104
106
|
tests/test_default_content_surfaces.py,sha256=UQdDIHHd-X4lvsj2ti2QnNwtsQAayL7b003dQ8UXqMo,1403
|
|
105
107
|
tests/test_fleet_name.py,sha256=qCLzYTPuiaS3y0I0NLuMRloXlf_o0sue0aVH-Sn-tYQ,1893
|
|
106
108
|
tests/test_github_agent_api_brute_force_coverage.py,sha256=5jWW6oVU7cmXL2sS3OZ-3gbYGhyjlYPIWqH2rsdF2fw,7347
|
|
@@ -108,12 +110,13 @@ tests/test_github_agent_brute_force_coverage.py,sha256=Z_voXtChOYRqaNEmNzMfzvwQM
|
|
|
108
110
|
tests/test_github_gql.py,sha256=M55X5V2orZ1kVek16s1zaMJIUb6FhlfbC8k0cKkD07Y,2709
|
|
109
111
|
tests/test_github_http.py,sha256=uuSMrot71Kj8WQf-QyazO4rWzpWSucRTQ1tt5wRvC_E,9563
|
|
110
112
|
tests/test_hardening.py,sha256=sdlKmtk7B5yncc-r1LuFgoJfro6wNlCqY0xI73IVC4M,3710
|
|
113
|
+
tests/test_ingest_sources.py,sha256=hzY7vDW5Q1P-Qc_X6PAFAnXik_0BIP1DrNLVPhe_9DQ,1391
|
|
111
114
|
tests/test_init_dynamics.py,sha256=fPE_4M-bONKiqvtWLn12A0q18CUlzQhdx1UoXYkbbPk,1839
|
|
112
115
|
tests/test_kg_ingest.py,sha256=TeHjWz74LiuSxpI7N6HHrdj0H1mRsJHceQDNYvre4To,9462
|
|
113
116
|
tests/test_mcp_coverage.py,sha256=W_7fbCWoFd4mDwKvah2DmQRcy0fD7tI4ykFTne69tNM,43550
|
|
114
117
|
tests/test_mcp_package_dispatch.py,sha256=mzrC-jGl3DlrQx9z5uIxy1m0x9qsxfMo6eJImx844WY,22993
|
|
115
118
|
tests/test_model_fields.py,sha256=GvVFFedjdL0KBl328-NZ0SM6olv7muiglsMh0Vd59As,3388
|
|
116
|
-
tests/test_ontology_parent_link.py,sha256
|
|
119
|
+
tests/test_ontology_parent_link.py,sha256=-NrJYBVmYF9OswmRXDgvSYDhqGVZcDfQenxKUilUSsw,4210
|
|
117
120
|
tests/test_org_crud.py,sha256=7WMb8eCWSsl_rCILBmsJ4OFnmwtb_GXmebf51O8xsxI,19938
|
|
118
121
|
tests/test_pages.py,sha256=CGlxgPVrhvPnnXuFZwzF4VqsV4ygBDY8w8Cqr6KqJmI,18726
|
|
119
122
|
tests/test_repo_secrets_characterization.py,sha256=-9NkJlROsKIYKcNEZpVYy7tkJg-lB0_8We1RvOW1EaY,6043
|
|
@@ -125,8 +128,8 @@ tests/test_skill_org_remediation_classify_fix_risk.py,sha256=0Y8289lhxtJ3pxYUHzO
|
|
|
125
128
|
tests/test_skill_pr_review_sweep_summarize_prs.py,sha256=NrNaucQvM7K-k1WBcOBKtTGjxJbW16VgTHbC7dSsjm4,3821
|
|
126
129
|
tests/test_skill_triage_resolver_classify_safe.py,sha256=B-aDeVmsKTsxYO8TwMEx-cmpVSmZdlKXw5993Da2ubc,9489
|
|
127
130
|
tests/test_startup.py,sha256=Ix_g69k0tsZbY0-Vkeh8ADWojUdbYwTwwmnM4_hVuCc,1245
|
|
128
|
-
github_agent-2.4.
|
|
129
|
-
github_agent-2.4.
|
|
130
|
-
github_agent-2.4.
|
|
131
|
-
github_agent-2.4.
|
|
132
|
-
github_agent-2.4.
|
|
131
|
+
github_agent-2.4.8.dist-info/METADATA,sha256=uAvn9bQvqFs6_Ma0RpcJHxA-HIq4rvhXUpkDIp61gNk,34508
|
|
132
|
+
github_agent-2.4.8.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
|
|
133
|
+
github_agent-2.4.8.dist-info/entry_points.txt,sha256=Wi6GhziOqmJl-22qTYkjfVuIHEHKRrBvyyloc7NqV80,367
|
|
134
|
+
github_agent-2.4.8.dist-info/top_level.txt,sha256=53Ecr8n7o_EMIqZClc11PBU07uQIggYZOk5WnvBbeOQ,50
|
|
135
|
+
github_agent-2.4.8.dist-info/RECORD,,
|
tests/test_cq_paths.py
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Competency-question paths of the GitHub pack (CONN-GITHUB-AGENT-CONNECTOR-CONTENT-R004)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
import yaml
|
|
10
|
+
|
|
11
|
+
import github_agent
|
|
12
|
+
|
|
13
|
+
pytestmark = pytest.mark.spec("CONN-GITHUB-AGENT-CONNECTOR-CONTENT-R004")
|
|
14
|
+
|
|
15
|
+
PACKAGE = Path(github_agent.__file__).parent
|
|
16
|
+
TTL = (PACKAGE / "ontology" / "github.ttl").read_text("utf-8")
|
|
17
|
+
# Concepts the epistemic-graph ontology owns: referenced, never declared here.
|
|
18
|
+
SHARED = ("Repository", "PullRequest", "Release", "Branch", "Commit", "PipelineRun")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _block(name: str) -> str:
|
|
22
|
+
match = re.search(rf"^:{name} a [^\n]*\n(?:[^\n]+\n)*", TTL, flags=re.M)
|
|
23
|
+
assert match, name
|
|
24
|
+
return match.group(0)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@pytest.mark.parametrize("name", SHARED)
|
|
28
|
+
def test_shared_concepts_are_not_redeclared(name: str) -> None:
|
|
29
|
+
assert not re.search(rf"^:{name} a owl:Class", TTL, flags=re.M), name
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_state_is_declared_on_the_issue_type() -> None:
|
|
33
|
+
block = _block("state")
|
|
34
|
+
assert re.search(r"rdfs:domain \[ a owl:Class ; owl:unionOf \( :Issue ", block)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_check_run_extends_pipeline_run() -> None:
|
|
38
|
+
assert "rdfs:subClassOf :PipelineRun" in _block("CheckRun")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def test_no_mapping_has_a_null_ontology_class() -> None:
|
|
42
|
+
manifest = yaml.safe_load(
|
|
43
|
+
(PACKAGE.parent / "connector_manifest.yml").read_text("utf-8")
|
|
44
|
+
)
|
|
45
|
+
unmapped = [
|
|
46
|
+
name
|
|
47
|
+
for name, mapping in manifest["schema_mappings"].items()
|
|
48
|
+
if not mapping["ontology_class"]
|
|
49
|
+
]
|
|
50
|
+
assert unmapped == []
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""The packaged ingestible-source declaration (CONN-GITHUB-AGENT-CONNECTOR-CONTENT-R003)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
import yaml
|
|
9
|
+
from agent_connector_sdk.ingest.sources import load_ingest_sources
|
|
10
|
+
from agent_connector_sdk.mcp.method_tools import operation_annotations, operation_verb
|
|
11
|
+
from agent_connector_sdk.mcp.tool_surface import operation_prefix
|
|
12
|
+
|
|
13
|
+
import github_agent
|
|
14
|
+
from github_agent.api_client import Api
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@pytest.mark.spec("CONN-GITHUB-AGENT-CONNECTOR-CONTENT-R003")
|
|
18
|
+
def test_declares_ingestible_sources() -> None:
|
|
19
|
+
package_root = Path(github_agent.__file__).parent
|
|
20
|
+
declaration = load_ingest_sources(package_root)
|
|
21
|
+
assert declaration is not None
|
|
22
|
+
assert declaration.connector == "github-mcp"
|
|
23
|
+
source = declaration.source("issues")
|
|
24
|
+
assert source is not None and source.record_type == "Issue"
|
|
25
|
+
prefix = operation_prefix("github-agent")
|
|
26
|
+
assert source.tools == (f"{prefix}_search_issues",)
|
|
27
|
+
# The engine admits a record only under the pack mapping of its type.
|
|
28
|
+
manifest = yaml.safe_load(
|
|
29
|
+
(package_root.parent / "connector_manifest.yml").read_text("utf-8")
|
|
30
|
+
)
|
|
31
|
+
assert source.record_type in manifest["schema_mappings"]
|
|
32
|
+
method = getattr(Api, "search_issues")
|
|
33
|
+
annotations = operation_annotations("search_issues", operation_verb(method))
|
|
34
|
+
assert annotations.read_only_hint is True
|
|
@@ -32,13 +32,7 @@ PARENT_CLASSES = frozenset(
|
|
|
32
32
|
)
|
|
33
33
|
# Classes for which the parent ontology has no fitting class yet. Each is a candidate for a new
|
|
34
34
|
# parent class (see the orphan mapping report); a class leaves this set when it gains a parent.
|
|
35
|
-
PENDING_NEW_PARENT: frozenset[str] = frozenset(
|
|
36
|
-
(
|
|
37
|
-
"http://knuckles.team/kg#Branch",
|
|
38
|
-
"http://knuckles.team/kg#CheckRun",
|
|
39
|
-
"http://knuckles.team/kg#Release",
|
|
40
|
-
)
|
|
41
|
-
)
|
|
35
|
+
PENDING_NEW_PARENT: frozenset[str] = frozenset()
|
|
42
36
|
|
|
43
37
|
_STRING = re.compile(r'"""(?:.|\n)*?"""|"(?:[^"\\\n]|\\.)*"')
|
|
44
38
|
_IRI = re.compile(r"<([^<>\s]*)>")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|