Skip to content

Commit 784f427

Browse files
Potential pathing fix
1 parent fb193b3 commit 784f427

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed

shared/python/apimtypes.py

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,45 @@
22
Types and constants for Azure API Management automation and deployment.
33
"""
44

5+
import os
56
from enum import StrEnum
67
from dataclasses import dataclass
8+
from pathlib import Path
79
from typing import List, Optional, Any
810

911

1012
# ------------------------------
1113
# CONSTANTS
1214
# ------------------------------
1315

14-
# These paths are relative to the infrastructure and samples
15-
SHARED_XML_POLICY_BASE_PATH = '../../shared/apim-policies'
16-
DEFAULT_XML_POLICY_PATH = f'{SHARED_XML_POLICY_BASE_PATH}/default.xml'
17-
REQUIRE_PRODUCT_XML_POLICY_PATH = f'{SHARED_XML_POLICY_BASE_PATH}/require-product.xml'
18-
HELLO_WORLD_XML_POLICY_PATH = f'{SHARED_XML_POLICY_BASE_PATH}/hello-world.xml'
19-
REQUEST_HEADERS_XML_POLICY_PATH = f'{SHARED_XML_POLICY_BASE_PATH}/request-headers.xml'
20-
BACKEND_XML_POLICY_PATH = f'{SHARED_XML_POLICY_BASE_PATH}/backend.xml'
16+
def _get_project_root() -> Path:
17+
"""Get the project root directory path."""
18+
# Try to get from environment variable first (set by .env file)
19+
if 'PROJECT_ROOT' in os.environ:
20+
return Path(os.environ['PROJECT_ROOT'])
21+
22+
# Fallback: detect project root by walking up from this file
23+
current_path = Path(__file__).resolve().parent.parent.parent # Go up from shared/python/
24+
indicators = ['README.md', 'requirements.txt', 'bicepconfig.json']
25+
26+
while current_path != current_path.parent:
27+
if all((current_path / indicator).exists() for indicator in indicators):
28+
return current_path
29+
current_path = current_path.parent
30+
31+
# Ultimate fallback
32+
return Path(__file__).resolve().parent.parent.parent
33+
34+
# Get project root and construct absolute paths to policy files
35+
_PROJECT_ROOT = _get_project_root()
36+
_SHARED_XML_POLICY_BASE_PATH = _PROJECT_ROOT / 'shared' / 'apim-policies'
37+
38+
# Policy file paths (now absolute and platform-independent)
39+
DEFAULT_XML_POLICY_PATH = str(_SHARED_XML_POLICY_BASE_PATH / 'default.xml')
40+
REQUIRE_PRODUCT_XML_POLICY_PATH = str(_SHARED_XML_POLICY_BASE_PATH / 'require-product.xml')
41+
HELLO_WORLD_XML_POLICY_PATH = str(_SHARED_XML_POLICY_BASE_PATH / 'hello-world.xml')
42+
REQUEST_HEADERS_XML_POLICY_PATH = str(_SHARED_XML_POLICY_BASE_PATH / 'request-headers.xml')
43+
BACKEND_XML_POLICY_PATH = str(_SHARED_XML_POLICY_BASE_PATH / 'backend.xml')
2144

2245
SUBSCRIPTION_KEY_PARAMETER_NAME = 'api_key'
2346
SLEEP_TIME_BETWEEN_REQUESTS_MS = 50

0 commit comments

Comments
 (0)