methodology-framework 0.3.2__tar.gz → 0.3.3__tar.gz
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.
- {methodology_framework-0.3.2/src/methodology_framework.egg-info → methodology_framework-0.3.3}/PKG-INFO +1 -1
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/pyproject.toml +1 -1
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/jira_discovery.py +13 -5
- {methodology_framework-0.3.2 → methodology_framework-0.3.3/src/methodology_framework.egg-info}/PKG-INFO +1 -1
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/tests/test_jira_discovery.py +6 -2
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/LICENSE +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/README.md +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/setup.cfg +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/__init__.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/__main__.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/bootstrap_jira.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/build_playbook.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/jira_shapes/__init__.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/jira_shapes/automation_rules.yaml +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/jira_shapes/custom_fields.yaml +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/jira_shapes/workflow.yaml +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/playbooks/bindings/meth.yaml +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/playbooks/bindings/scrum.yaml +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/playbooks/scrum-router.body.md +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/populate_acus.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/register_playbook_with_devin.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/specs/devin-story-format.md +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/sync_stories_to_jira.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/templates/github_workflows/populate-story-acus-caller.yml +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/templates/story.md +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework.egg-info/SOURCES.txt +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework.egg-info/dependency_links.txt +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework.egg-info/requires.txt +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework.egg-info/top_level.txt +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/tests/test_bootstrap_jira.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/tests/test_build_playbook.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/tests/test_populate_acus.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/tests/test_register_playbook_with_devin.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/tests/test_sync_stories_to_jira.py +0 -0
- {methodology_framework-0.3.2 → methodology_framework-0.3.3}/tests/test_workflows.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "methodology-framework"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.3"
|
|
8
8
|
description = "Portable process tooling for agent-driven delivery — scripts, playbooks, templates, and specs."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -283,17 +283,25 @@ def discover_issue_types(
|
|
|
283
283
|
base_url: str,
|
|
284
284
|
project_key: str,
|
|
285
285
|
) -> dict[str, str]:
|
|
286
|
-
"""Discover issue type name→ID map
|
|
286
|
+
"""Discover issue type name→ID map for a specific project.
|
|
287
|
+
|
|
288
|
+
Uses GET /rest/api/3/project/{key} which returns the project object
|
|
289
|
+
with its project-scoped ``issueTypes`` array — each project has its
|
|
290
|
+
own per-project issue type IDs, so the global ``/issuetype`` endpoint
|
|
291
|
+
is unsafe (it returns types across all projects and dict-overwrite
|
|
292
|
+
picks the wrong project's ID when names collide).
|
|
287
293
|
|
|
288
294
|
Returns mapping from issue type name to ID string.
|
|
289
|
-
Raises DiscoveryError if "Story" or "Sub-task" is missing
|
|
295
|
+
Raises DiscoveryError if "Story" or "Sub-task" is missing from the
|
|
296
|
+
project's issue type list.
|
|
290
297
|
"""
|
|
291
|
-
resp = session.get(f"{base_url}/rest/api/3/
|
|
298
|
+
resp = session.get(f"{base_url}/rest/api/3/project/{project_key}")
|
|
292
299
|
resp.raise_for_status()
|
|
293
|
-
|
|
300
|
+
project_data: dict[str, Any] = resp.json()
|
|
301
|
+
project_issue_types: list[dict[str, Any]] = project_data.get("issueTypes", [])
|
|
294
302
|
|
|
295
303
|
name_to_id: dict[str, str] = {}
|
|
296
|
-
for it in
|
|
304
|
+
for it in project_issue_types:
|
|
297
305
|
name_to_id[it["name"]] = it["id"]
|
|
298
306
|
|
|
299
307
|
for required_name in (ISSUE_TYPE_NAME_STORY, ISSUE_TYPE_NAME_SUBTASK):
|
|
@@ -111,8 +111,12 @@ def _mock_session(
|
|
|
111
111
|
resp.json.return_value = statuses or STATUSES_RESPONSE
|
|
112
112
|
elif url.endswith("/issueLinkType"):
|
|
113
113
|
resp.json.return_value = link_types or LINK_TYPES_RESPONSE
|
|
114
|
-
elif
|
|
115
|
-
|
|
114
|
+
elif "/project/" in url:
|
|
115
|
+
# Project endpoint returns the project object with embedded issueTypes.
|
|
116
|
+
# (v0.3.3 switched discover_issue_types from the global /issuetype
|
|
117
|
+
# endpoint to the project-scoped /project/{key} endpoint to fix
|
|
118
|
+
# cross-project ID collisions.)
|
|
119
|
+
resp.json.return_value = {"issueTypes": issue_types or ISSUE_TYPES_RESPONSE}
|
|
116
120
|
return resp
|
|
117
121
|
|
|
118
122
|
session.get = _get
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/__init__.py
RENAMED
|
File without changes
|
{methodology_framework-0.3.2 → methodology_framework-0.3.3}/src/methodology_framework/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{methodology_framework-0.3.2 → methodology_framework-0.3.3}/tests/test_sync_stories_to_jira.py
RENAMED
|
File without changes
|
|
File without changes
|