pal-found-cli 0.1.2__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.
- pal_found_cli-0.1.2/.env.example +56 -0
- pal_found_cli-0.1.2/.github/workflows/ci.yml +140 -0
- pal_found_cli-0.1.2/.github/workflows/publish.yml +116 -0
- pal_found_cli-0.1.2/.gitignore +32 -0
- pal_found_cli-0.1.2/PKG-INFO +74 -0
- pal_found_cli-0.1.2/README.md +57 -0
- pal_found_cli-0.1.2/conda.recipe/meta.yaml +50 -0
- pal_found_cli-0.1.2/pyproject.toml +136 -0
- pal_found_cli-0.1.2/setup.cfg +4 -0
- pal_found_cli-0.1.2/src/pal_found_cli/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/_version.py +24 -0
- pal_found_cli-0.1.2/src/pal_found_cli/admin/__init__.py +2 -0
- pal_found_cli-0.1.2/src/pal_found_cli/admin/scripts/__init__.py +2 -0
- pal_found_cli-0.1.2/src/pal_found_cli/admin/scripts/pal_found_admin_cli.py +600 -0
- pal_found_cli-0.1.2/src/pal_found_cli/aip_agents/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/aip_agents/metadata-allow-list.md +20 -0
- pal_found_cli-0.1.2/src/pal_found_cli/aip_agents/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/aip_agents/scripts/pal_found_aip_agents_cli.py +704 -0
- pal_found_cli-0.1.2/src/pal_found_cli/audit/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/audit/metadata-allow-list.md +4 -0
- pal_found_cli-0.1.2/src/pal_found_cli/audit/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/audit/scripts/pal_found_audit_cli.py +387 -0
- pal_found_cli-0.1.2/src/pal_found_cli/checkpoints/__init__.py +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/checkpoints/metadata-allow-list.md +7 -0
- pal_found_cli-0.1.2/src/pal_found_cli/checkpoints/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/checkpoints/scripts/pal_found_checkpoints_cli.py +527 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/__init__.py +56 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/access_control_guard.py +591 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/async_client_factory.py +161 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/auth_provider.py +82 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/binary_download_handler.py +288 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/config_loader.py +388 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/error_serializer.py +412 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/log_setup.py +241 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/metadata-allow-list.md +169 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/output_formatter.py +267 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/pagination_helper.py +212 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/retry.py +617 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/sdk_error_utils.py +112 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/session_manager.py +461 -0
- pal_found_cli-0.1.2/src/pal_found_cli/common/tracing_provider.py +107 -0
- pal_found_cli-0.1.2/src/pal_found_cli/connectivity/__init__.py +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/connectivity/metadata-allow-list.md +24 -0
- pal_found_cli-0.1.2/src/pal_found_cli/connectivity/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/connectivity/scripts/pal_found_connectivity_cli.py +720 -0
- pal_found_cli-0.1.2/src/pal_found_cli/data_health/__init__.py +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/data_health/metadata-allow-list.md +10 -0
- pal_found_cli-0.1.2/src/pal_found_cli/data_health/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/data_health/scripts/pal_found_data_health_cli.py +458 -0
- pal_found_cli-0.1.2/src/pal_found_cli/datasets/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/datasets/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/datasets/scripts/pal_found_datasets_cli.py +732 -0
- pal_found_cli-0.1.2/src/pal_found_cli/filesystem/__init__.py +2 -0
- pal_found_cli-0.1.2/src/pal_found_cli/filesystem/scripts/__init__.py +2 -0
- pal_found_cli-0.1.2/src/pal_found_cli/filesystem/scripts/pal_found_filesystem_cli.py +659 -0
- pal_found_cli-0.1.2/src/pal_found_cli/functions/__init__.py +2 -0
- pal_found_cli-0.1.2/src/pal_found_cli/functions/scripts/__init__.py +2 -0
- pal_found_cli-0.1.2/src/pal_found_cli/functions/scripts/pal_found_functions_cli.py +389 -0
- pal_found_cli-0.1.2/src/pal_found_cli/language_models/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/language_models/metadata-allow-list.md +6 -0
- pal_found_cli-0.1.2/src/pal_found_cli/language_models/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/language_models/scripts/pal_found_language_models_cli.py +342 -0
- pal_found_cli-0.1.2/src/pal_found_cli/media_sets/__init__.py +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/media_sets/metadata-allow-list.md +23 -0
- pal_found_cli-0.1.2/src/pal_found_cli/media_sets/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/media_sets/scripts/pal_found_media_sets_cli.py +642 -0
- pal_found_cli-0.1.2/src/pal_found_cli/models/__init__.py +5 -0
- pal_found_cli-0.1.2/src/pal_found_cli/models/metadata-allow-list.md +27 -0
- pal_found_cli-0.1.2/src/pal_found_cli/models/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/models/scripts/pal_found_models_cli.py +714 -0
- pal_found_cli-0.1.2/src/pal_found_cli/ontologies/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/ontologies/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/ontologies/scripts/pal_found_ontologies_cli.py +1225 -0
- pal_found_cli-0.1.2/src/pal_found_cli/orchestration/__init__.py +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/orchestration/metadata-allow-list.md +24 -0
- pal_found_cli-0.1.2/src/pal_found_cli/orchestration/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/orchestration/scripts/pal_found_orchestration_cli.py +640 -0
- pal_found_cli-0.1.2/src/pal_found_cli/sql_queries/__init__.py +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/sql_queries/metadata-allow-list.md +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/sql_queries/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/sql_queries/scripts/pal_found_sql_queries_cli.py +514 -0
- pal_found_cli-0.1.2/src/pal_found_cli/streams/__init__.py +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/streams/metadata-allow-list.md +19 -0
- pal_found_cli-0.1.2/src/pal_found_cli/streams/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/streams/scripts/pal_found_streams_cli.py +615 -0
- pal_found_cli-0.1.2/src/pal_found_cli/third_party_applications/__init__.py +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/third_party_applications/metadata-allow-list.md +13 -0
- pal_found_cli-0.1.2/src/pal_found_cli/third_party_applications/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/third_party_applications/scripts/pal_found_third_party_applications_cli.py +547 -0
- pal_found_cli-0.1.2/src/pal_found_cli/widgets/__init__.py +9 -0
- pal_found_cli-0.1.2/src/pal_found_cli/widgets/metadata-allow-list.md +12 -0
- pal_found_cli-0.1.2/src/pal_found_cli/widgets/scripts/__init__.py +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli/widgets/scripts/pal_found_widgets_cli.py +571 -0
- pal_found_cli-0.1.2/src/pal_found_cli.egg-info/PKG-INFO +74 -0
- pal_found_cli-0.1.2/src/pal_found_cli.egg-info/SOURCES.txt +140 -0
- pal_found_cli-0.1.2/src/pal_found_cli.egg-info/dependency_links.txt +1 -0
- pal_found_cli-0.1.2/src/pal_found_cli.egg-info/entry_points.txt +19 -0
- pal_found_cli-0.1.2/src/pal_found_cli.egg-info/requires.txt +11 -0
- pal_found_cli-0.1.2/src/pal_found_cli.egg-info/scm_file_list.json +135 -0
- pal_found_cli-0.1.2/src/pal_found_cli.egg-info/scm_version.json +8 -0
- pal_found_cli-0.1.2/src/pal_found_cli.egg-info/top_level.txt +1 -0
- pal_found_cli-0.1.2/tests/__init__.py +0 -0
- pal_found_cli-0.1.2/tests/test_access_control_guard.py +829 -0
- pal_found_cli-0.1.2/tests/test_admin_console_wrapper.py +68 -0
- pal_found_cli-0.1.2/tests/test_aip_agents_console_wrapper.py +16 -0
- pal_found_cli-0.1.2/tests/test_audit_console_wrapper.py +280 -0
- pal_found_cli-0.1.2/tests/test_binary_download.py +281 -0
- pal_found_cli-0.1.2/tests/test_checkpoints_console_wrapper.py +34 -0
- pal_found_cli-0.1.2/tests/test_data_health_console_wrapper.py +34 -0
- pal_found_cli-0.1.2/tests/test_datasets_console_wrapper.py +30 -0
- pal_found_cli-0.1.2/tests/test_exec_common_components.py +643 -0
- pal_found_cli-0.1.2/tests/test_exec_retry_error_output_log.py +989 -0
- pal_found_cli-0.1.2/tests/test_filesystem_console_wrapper.py +70 -0
- pal_found_cli-0.1.2/tests/test_functions_console_wrapper.py +71 -0
- pal_found_cli-0.1.2/tests/test_language_models_console_wrapper.py +16 -0
- pal_found_cli-0.1.2/tests/test_ontologies_console_wrapper.py +70 -0
- pal_found_cli-0.1.2/tests/test_pagination_helper.py +310 -0
- pal_found_cli-0.1.2/tests/test_pal_found_admin_cli.py +478 -0
- pal_found_cli-0.1.2/tests/test_pal_found_aip_agents_cli.py +514 -0
- pal_found_cli-0.1.2/tests/test_pal_found_audit_cli.py +1218 -0
- pal_found_cli-0.1.2/tests/test_pal_found_checkpoints_cli.py +666 -0
- pal_found_cli-0.1.2/tests/test_pal_found_connectivity_cli.py +1248 -0
- pal_found_cli-0.1.2/tests/test_pal_found_data_health_cli.py +810 -0
- pal_found_cli-0.1.2/tests/test_pal_found_filesystem_cli.py +441 -0
- pal_found_cli-0.1.2/tests/test_pal_found_functions_cli.py +334 -0
- pal_found_cli-0.1.2/tests/test_pal_found_language_models_cli.py +366 -0
- pal_found_cli-0.1.2/tests/test_pal_found_media_sets_cli.py +976 -0
- pal_found_cli-0.1.2/tests/test_pal_found_models_cli.py +1066 -0
- pal_found_cli-0.1.2/tests/test_pal_found_orchestration_cli.py +847 -0
- pal_found_cli-0.1.2/tests/test_pal_found_sql_queries_cli.py +678 -0
- pal_found_cli-0.1.2/tests/test_pal_found_streams_cli.py +961 -0
- pal_found_cli-0.1.2/tests/test_pal_found_third_party_applications_cli.py +950 -0
- pal_found_cli-0.1.2/tests/test_pal_found_widgets_cli.py +951 -0
- pal_found_cli-0.1.2/tests/test_release_artifacts.py +33 -0
- pal_found_cli-0.1.2/tests/test_rename_migration.py +51 -0
- pal_found_cli-0.1.2/tests/test_repository_hygiene.py +54 -0
- pal_found_cli-0.1.2/tests/test_session_manager.py +249 -0
- pal_found_cli-0.1.2/tests/test_third_party_applications_console_wrapper.py +36 -0
- pal_found_cli-0.1.2/tests/test_tracing_provider.py +242 -0
- pal_found_cli-0.1.2/tests/test_widgets_console_wrapper.py +37 -0
- pal_found_cli-0.1.2/tests/unit_test_common_components.py +1128 -0
- pal_found_cli-0.1.2/tests/unit_test_retry_error_output_log.py +1844 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Foundry CLI Environment Configuration
|
|
2
|
+
# Copy this file to .env and fill in actual values.
|
|
3
|
+
# DO NOT commit .env to version control.
|
|
4
|
+
|
|
5
|
+
# Required: Authentication
|
|
6
|
+
# Your Foundry API token (personal or service account)
|
|
7
|
+
FOUNDRY_TOKEN=your_foundry_api_token_here
|
|
8
|
+
|
|
9
|
+
# Required: Target Foundry instance hostname
|
|
10
|
+
# E.g., https://foundry.example.com
|
|
11
|
+
FOUNDRY_HOSTNAME=your_foundry_hostname_here
|
|
12
|
+
|
|
13
|
+
# Optional: Explicit .env file override (ADR-006)
|
|
14
|
+
# If set, loads from this exact path; no fallback to git root.
|
|
15
|
+
# FOUNDRY_AGENTIC_CLI_ENV_FILE=/path/to/.env
|
|
16
|
+
|
|
17
|
+
# Optional: Request timeout in seconds (default: 30, ADR-002; valid range 1-3600)
|
|
18
|
+
# FOUNDRY_AGENTIC_CLI_TIMEOUT_S=30
|
|
19
|
+
|
|
20
|
+
# Optional: Output format auto-selection (json | toon | auto)
|
|
21
|
+
# FOUNDRY_AGENTIC_CLI_DEFAULT_FORMAT=auto
|
|
22
|
+
|
|
23
|
+
# Optional: Global read-only access guard (true | false)
|
|
24
|
+
# FOUNDRY_AGENTIC_CLI_READONLY=false
|
|
25
|
+
|
|
26
|
+
# Optional: Global metadata-only output guard (true | false)
|
|
27
|
+
# FOUNDRY_AGENTIC_CLI_METADATA_ONLY=false
|
|
28
|
+
|
|
29
|
+
# Optional: Attribution propagation
|
|
30
|
+
# FOUNDRY_AGENTIC_CLI_ENABLE_ATTRIBUTION=false
|
|
31
|
+
# FOUNDRY_AGENTIC_CLI_ATTRIBUTION_RIDS=rid-a,rid-b
|
|
32
|
+
|
|
33
|
+
# Optional: B3 tracing propagation
|
|
34
|
+
# FOUNDRY_AGENTIC_CLI_ENABLE_TRACING=false
|
|
35
|
+
|
|
36
|
+
# Optional: Structured logging level for stderr (ADR-005)
|
|
37
|
+
# FOUNDRY_AGENTIC_CLI_LOG_LEVEL=WARNING
|
|
38
|
+
|
|
39
|
+
# Optional: Retry configuration (ADR-002, implemented in pal_found_cli.common.retry)
|
|
40
|
+
# FOUNDRY_AGENTIC_CLI_RETRY_MAX_ATTEMPTS=4
|
|
41
|
+
# FOUNDRY_AGENTIC_CLI_RETRY_INITIAL_DELAY_MS=500
|
|
42
|
+
# FOUNDRY_AGENTIC_CLI_RETRY_MAX_DELAY_MS=30000
|
|
43
|
+
# FOUNDRY_AGENTIC_CLI_RETRY_MULTIPLIER=2.0
|
|
44
|
+
# FOUNDRY_AGENTIC_CLI_RETRY_JITTER=true
|
|
45
|
+
|
|
46
|
+
# Optional: Pagination defaults
|
|
47
|
+
# FOUNDRY_AGENTIC_CLI_DEFAULT_PAGE_SIZE=100
|
|
48
|
+
# FOUNDRY_AGENTIC_CLI_MAX_BATCH_PAGES=40
|
|
49
|
+
|
|
50
|
+
# Optional: Binary download and session storage (DEV-STORY-004)
|
|
51
|
+
# FOUNDRY_AGENTIC_CLI_MAX_DOWNLOAD_BYTES=1572864
|
|
52
|
+
# FOUNDRY_AGENTIC_CLI_DOWNLOAD_PATH=.foundry-data/downloads
|
|
53
|
+
# FOUNDRY_AGENTIC_CLI_SESSION_PATH=.foundry-data/sessions
|
|
54
|
+
|
|
55
|
+
# Optional: Error envelope tracebacks (set false in production to reduce path leakage)
|
|
56
|
+
# FOUNDRY_INCLUDE_TRACEBACK=false
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, develop]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
lint:
|
|
14
|
+
name: Lint (Ruff)
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout
|
|
18
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
19
|
+
|
|
20
|
+
- name: Set up Python
|
|
21
|
+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.11"
|
|
24
|
+
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: |
|
|
27
|
+
python -m pip install --upgrade pip setuptools wheel
|
|
28
|
+
pip install -e ".[dev]"
|
|
29
|
+
|
|
30
|
+
- name: Run ruff linter
|
|
31
|
+
run: ruff check src/ tests/
|
|
32
|
+
|
|
33
|
+
type-check:
|
|
34
|
+
name: Type Check (mypy)
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
needs: lint
|
|
37
|
+
steps:
|
|
38
|
+
- name: Checkout
|
|
39
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
40
|
+
|
|
41
|
+
- name: Set up Python
|
|
42
|
+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
|
43
|
+
with:
|
|
44
|
+
python-version: "3.11"
|
|
45
|
+
|
|
46
|
+
- name: Install dependencies
|
|
47
|
+
run: |
|
|
48
|
+
python -m pip install --upgrade pip setuptools wheel
|
|
49
|
+
pip install -e ".[dev]"
|
|
50
|
+
|
|
51
|
+
- name: Run mypy
|
|
52
|
+
run: mypy src/
|
|
53
|
+
|
|
54
|
+
test:
|
|
55
|
+
name: Test (Python ${{ matrix.python-version }} on ${{ matrix.os }})
|
|
56
|
+
runs-on: ${{ matrix.os }}
|
|
57
|
+
needs: type-check
|
|
58
|
+
strategy:
|
|
59
|
+
fail-fast: false
|
|
60
|
+
matrix:
|
|
61
|
+
os: [ubuntu-latest, windows-latest]
|
|
62
|
+
python-version: ["3.11", "3.12"]
|
|
63
|
+
steps:
|
|
64
|
+
- name: Checkout
|
|
65
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
66
|
+
|
|
67
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
68
|
+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
|
69
|
+
with:
|
|
70
|
+
python-version: ${{ matrix.python-version }}
|
|
71
|
+
|
|
72
|
+
- name: Install dependencies
|
|
73
|
+
run: |
|
|
74
|
+
python -m pip install --upgrade pip setuptools wheel
|
|
75
|
+
pip install -e ".[dev]"
|
|
76
|
+
|
|
77
|
+
- name: Run pytest with coverage
|
|
78
|
+
run: |
|
|
79
|
+
pytest tests/ --cov=pal_found_cli --cov-report=term-missing --cov-report=xml -v
|
|
80
|
+
|
|
81
|
+
- name: Upload coverage to codecov
|
|
82
|
+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
|
|
83
|
+
uses: codecov/codecov-action@c23a129e932ebdcb56ca1565c68c6abdbf173769 # v5.0.0
|
|
84
|
+
with:
|
|
85
|
+
files: coverage.xml
|
|
86
|
+
fail_ci_if_error: false
|
|
87
|
+
verbose: true
|
|
88
|
+
|
|
89
|
+
security-scan:
|
|
90
|
+
name: Security Scan
|
|
91
|
+
runs-on: ubuntu-latest
|
|
92
|
+
needs: test
|
|
93
|
+
steps:
|
|
94
|
+
- name: Checkout
|
|
95
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
96
|
+
|
|
97
|
+
- name: Set up Python
|
|
98
|
+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
|
99
|
+
with:
|
|
100
|
+
python-version: "3.11"
|
|
101
|
+
|
|
102
|
+
- name: Install dependencies
|
|
103
|
+
run: |
|
|
104
|
+
python -m pip install --upgrade pip setuptools wheel
|
|
105
|
+
pip install -e ".[dev]"
|
|
106
|
+
pip install bandit safety
|
|
107
|
+
|
|
108
|
+
- name: Run bandit SAST (fail on HIGH severity)
|
|
109
|
+
# --severity-level high: report issues with HIGH severity or higher
|
|
110
|
+
# Removed `|| true` so HIGH severity findings break the build per
|
|
111
|
+
# DevOps standard (OWASP DevSecOps: fail on HIGH+ severity findings).
|
|
112
|
+
# LOW/MEDIUM findings are reported but non-blocking.
|
|
113
|
+
run: bandit -r src/ --severity-level high
|
|
114
|
+
|
|
115
|
+
- name: Run safety dependency scan
|
|
116
|
+
run: safety check --full-report
|
|
117
|
+
|
|
118
|
+
build:
|
|
119
|
+
name: Build Package
|
|
120
|
+
runs-on: ubuntu-latest
|
|
121
|
+
needs: security-scan
|
|
122
|
+
steps:
|
|
123
|
+
- name: Checkout
|
|
124
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
125
|
+
|
|
126
|
+
- name: Set up Python
|
|
127
|
+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
|
128
|
+
with:
|
|
129
|
+
python-version: "3.11"
|
|
130
|
+
|
|
131
|
+
- name: Install build tools
|
|
132
|
+
run: python -m pip install --upgrade pip setuptools wheel build
|
|
133
|
+
|
|
134
|
+
- name: Build package
|
|
135
|
+
run: python -m build
|
|
136
|
+
|
|
137
|
+
- name: Check package metadata
|
|
138
|
+
run: |
|
|
139
|
+
python -m pip install --upgrade twine
|
|
140
|
+
twine check dist/*
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
release:
|
|
14
|
+
name: Build, stage, verify, and publish
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
environment: release
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout
|
|
19
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
20
|
+
with:
|
|
21
|
+
# Full history + tags so setuptools-scm resolves the release tag at
|
|
22
|
+
# HEAD (v0.1.2 -> 0.1.2). Without this the default shallow checkout
|
|
23
|
+
# misses the tag and guess-next-dev derives 0.1.3.dev0, which breaks
|
|
24
|
+
# the "Verify staged release" step that installs pal_found_cli==0.1.2.
|
|
25
|
+
fetch-depth: 0
|
|
26
|
+
|
|
27
|
+
- name: Set up Python
|
|
28
|
+
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
|
|
29
|
+
with:
|
|
30
|
+
python-version: "3.11"
|
|
31
|
+
|
|
32
|
+
- name: Install build tools
|
|
33
|
+
run: python -m pip install --upgrade build twine
|
|
34
|
+
|
|
35
|
+
- name: Build package
|
|
36
|
+
run: python -m build
|
|
37
|
+
|
|
38
|
+
- name: Check package metadata
|
|
39
|
+
run: twine check dist/*
|
|
40
|
+
|
|
41
|
+
- name: Publish to Test PyPI
|
|
42
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
43
|
+
with:
|
|
44
|
+
repository-url: https://test.pypi.org/legacy/
|
|
45
|
+
# The staging publish must NOT generate attestations. With the default
|
|
46
|
+
# (attestations: true) the action writes *.publish.attestation files into
|
|
47
|
+
# dist/, and the subsequent production publish step then fails with "already
|
|
48
|
+
# have publish attestations". Attestations bind to one index/OIDC exchange,
|
|
49
|
+
# so generate them only on the final production publish below.
|
|
50
|
+
attestations: false
|
|
51
|
+
# The same tag can legitimately be re-pushed (e.g. to re-run a failed
|
|
52
|
+
# production step); Test PyPI already holds the identical 0.1.2 filenames
|
|
53
|
+
# from the first staging, so a plain re-upload returns 400 "File already
|
|
54
|
+
# exists". Skip files that are already staged and let the verify step
|
|
55
|
+
# re-confirm them. The production step keeps skip-existing=false: a file
|
|
56
|
+
# that already exists on production must fail loudly, not be masked.
|
|
57
|
+
skip-existing: true
|
|
58
|
+
|
|
59
|
+
- name: Verify staged release in clean environment
|
|
60
|
+
env:
|
|
61
|
+
RELEASE_VERSION: ${{ github.ref_name }}
|
|
62
|
+
run: |
|
|
63
|
+
python -m venv .release-venv
|
|
64
|
+
. .release-venv/bin/activate
|
|
65
|
+
python -m pip install --upgrade pip
|
|
66
|
+
python -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ "pal_found_cli==${RELEASE_VERSION#v}"
|
|
67
|
+
pal-found-datasets --help
|
|
68
|
+
|
|
69
|
+
- name: Publish verified release to PyPI
|
|
70
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
71
|
+
|
|
72
|
+
conda:
|
|
73
|
+
name: Build and optionally publish conda package
|
|
74
|
+
runs-on: ubuntu-latest
|
|
75
|
+
steps:
|
|
76
|
+
- name: Checkout
|
|
77
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
78
|
+
with:
|
|
79
|
+
fetch-depth: 0
|
|
80
|
+
|
|
81
|
+
- name: Set up Miniconda
|
|
82
|
+
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3
|
|
83
|
+
with:
|
|
84
|
+
activate-environment: release
|
|
85
|
+
python-version: "3.11"
|
|
86
|
+
auto-activate-base: false
|
|
87
|
+
|
|
88
|
+
- name: Build conda package
|
|
89
|
+
shell: bash -el {0}
|
|
90
|
+
env:
|
|
91
|
+
GIT_TAG: ${{ github.ref_name }}
|
|
92
|
+
run: |
|
|
93
|
+
# setup-miniconda does not configure channels by default; without them
|
|
94
|
+
# conda-build fails with "NoChannelsConfiguredError" when resolving host
|
|
95
|
+
# dependencies (setuptools, pip, setuptools-scm, python, wheel).
|
|
96
|
+
conda config --add channels conda-forge
|
|
97
|
+
conda config --add channels defaults
|
|
98
|
+
conda install --yes conda-build
|
|
99
|
+
# Use the standalone conda-build binary instead of `conda build`.
|
|
100
|
+
# On some conda versions the `build` subcommand is not registered from
|
|
101
|
+
# the conda-build plugin in a non-base activated environment, which made
|
|
102
|
+
# `conda build` fail with "invalid choice: 'build'". The conda-build binary
|
|
103
|
+
# is always installed by the package and is version independent.
|
|
104
|
+
conda-build conda.recipe --output-folder conda-channel
|
|
105
|
+
|
|
106
|
+
- name: Publish conda package when channel permission exists
|
|
107
|
+
shell: bash -el {0}
|
|
108
|
+
env:
|
|
109
|
+
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
|
|
110
|
+
run: |
|
|
111
|
+
if [[ -z "$ANACONDA_API_TOKEN" ]]; then
|
|
112
|
+
echo "ANACONDA_API_TOKEN is not configured; build evidence retained, upload skipped."
|
|
113
|
+
exit 0
|
|
114
|
+
fi
|
|
115
|
+
conda install --yes anaconda-client
|
|
116
|
+
anaconda -t "$ANACONDA_API_TOKEN" upload --user t-jet conda-channel/*/*.conda --force
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Python build and test artifacts
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
build/
|
|
6
|
+
dist/
|
|
7
|
+
.coverage
|
|
8
|
+
coverage.xml
|
|
9
|
+
htmlcov/
|
|
10
|
+
.pytest_cache/
|
|
11
|
+
.mypy_cache/
|
|
12
|
+
.ruff_cache/
|
|
13
|
+
|
|
14
|
+
# setuptools-scm generated version file (tracked file causes dirty-state
|
|
15
|
+
# version bumps; see setuptools-scm issue #468)
|
|
16
|
+
src/pal_found_cli/_version.py
|
|
17
|
+
|
|
18
|
+
# Local environments and secrets
|
|
19
|
+
.venv/
|
|
20
|
+
.env
|
|
21
|
+
.env.*
|
|
22
|
+
!.env.example
|
|
23
|
+
!.env.template
|
|
24
|
+
*.pem
|
|
25
|
+
*.key
|
|
26
|
+
*.p12
|
|
27
|
+
*.pfx
|
|
28
|
+
|
|
29
|
+
# Local tooling
|
|
30
|
+
.ept/
|
|
31
|
+
.vscode/
|
|
32
|
+
.idea/
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pal_found_cli
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: Foundry CLI - 33 operations across 5 resource clients
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: foundry-platform-sdk>=1.0.0
|
|
8
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
9
|
+
Requires-Dist: requests>=2.31.0
|
|
10
|
+
Provides-Extra: dev
|
|
11
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
12
|
+
Requires-Dist: pytest-asyncio>=0.24; extra == "dev"
|
|
13
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
14
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
15
|
+
Requires-Dist: ruff>=0.4.0; extra == "dev"
|
|
16
|
+
Requires-Dist: bandit>=1.7.0; extra == "dev"
|
|
17
|
+
|
|
18
|
+
# Palantir Foundry CLI
|
|
19
|
+
|
|
20
|
+
Palantir Foundry CLI provides command-line access to Foundry resource operations with shared configuration, authentication, retry handling, access-control guards, and structured output helpers.
|
|
21
|
+
|
|
22
|
+
## Package
|
|
23
|
+
|
|
24
|
+
- Python support: 3.11 and 3.12.
|
|
25
|
+
- Distribution: `pal_found_cli`.
|
|
26
|
+
- Public commands use the `pal-found-` prefix, for example `pal-found-datasets`.
|
|
27
|
+
- Runtime dependencies: `foundry-platform-sdk>=1.0.0` and `python-dotenv>=1.0.0`.
|
|
28
|
+
- PyPI long description source: this `README.md`.
|
|
29
|
+
|
|
30
|
+
## Install and use
|
|
31
|
+
|
|
32
|
+
Install the latest verified release from PyPI:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
python -m pip install pal_found_cli
|
|
36
|
+
pal-found-datasets --help
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Upgrade an existing installation with `python -m pip install --upgrade pal_found_cli`.
|
|
40
|
+
Each release is built from a `vX.Y.Z` tag, staged on Test PyPI, installed into a
|
|
41
|
+
clean environment, and smoke-checked before PyPI publication.
|
|
42
|
+
|
|
43
|
+
The conda recipe uses the same tag-derived version. After a channel release,
|
|
44
|
+
install with `conda install -c t-jet pal_found_cli`.
|
|
45
|
+
|
|
46
|
+
This repository contains the installable CLI. The project is split into three
|
|
47
|
+
independently versioned repositories:
|
|
48
|
+
|
|
49
|
+
- [design and documentation](https://github.com/t-jet/pal_found_cli)
|
|
50
|
+
- [CLI tool](https://github.com/t-jet/pal_found_cli_tool)
|
|
51
|
+
- [skills](https://github.com/t-jet/pal_found_cli_skills)
|
|
52
|
+
|
|
53
|
+
Repository-split and rename design records live in the
|
|
54
|
+
[design repository](https://github.com/t-jet/pal_found_cli).
|
|
55
|
+
|
|
56
|
+
## Development
|
|
57
|
+
|
|
58
|
+
Install the project with development dependencies:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
python -m pip install -e ".[dev]"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Run the main validation commands:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
ruff check src tests
|
|
68
|
+
mypy src
|
|
69
|
+
pytest tests --cov=pal_found_cli --cov-report=term-missing --cov-report=xml
|
|
70
|
+
python -m build
|
|
71
|
+
twine check dist/*
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The repository coverage gate is 80% branch coverage.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Palantir Foundry CLI
|
|
2
|
+
|
|
3
|
+
Palantir Foundry CLI provides command-line access to Foundry resource operations with shared configuration, authentication, retry handling, access-control guards, and structured output helpers.
|
|
4
|
+
|
|
5
|
+
## Package
|
|
6
|
+
|
|
7
|
+
- Python support: 3.11 and 3.12.
|
|
8
|
+
- Distribution: `pal_found_cli`.
|
|
9
|
+
- Public commands use the `pal-found-` prefix, for example `pal-found-datasets`.
|
|
10
|
+
- Runtime dependencies: `foundry-platform-sdk>=1.0.0` and `python-dotenv>=1.0.0`.
|
|
11
|
+
- PyPI long description source: this `README.md`.
|
|
12
|
+
|
|
13
|
+
## Install and use
|
|
14
|
+
|
|
15
|
+
Install the latest verified release from PyPI:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
python -m pip install pal_found_cli
|
|
19
|
+
pal-found-datasets --help
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Upgrade an existing installation with `python -m pip install --upgrade pal_found_cli`.
|
|
23
|
+
Each release is built from a `vX.Y.Z` tag, staged on Test PyPI, installed into a
|
|
24
|
+
clean environment, and smoke-checked before PyPI publication.
|
|
25
|
+
|
|
26
|
+
The conda recipe uses the same tag-derived version. After a channel release,
|
|
27
|
+
install with `conda install -c t-jet pal_found_cli`.
|
|
28
|
+
|
|
29
|
+
This repository contains the installable CLI. The project is split into three
|
|
30
|
+
independently versioned repositories:
|
|
31
|
+
|
|
32
|
+
- [design and documentation](https://github.com/t-jet/pal_found_cli)
|
|
33
|
+
- [CLI tool](https://github.com/t-jet/pal_found_cli_tool)
|
|
34
|
+
- [skills](https://github.com/t-jet/pal_found_cli_skills)
|
|
35
|
+
|
|
36
|
+
Repository-split and rename design records live in the
|
|
37
|
+
[design repository](https://github.com/t-jet/pal_found_cli).
|
|
38
|
+
|
|
39
|
+
## Development
|
|
40
|
+
|
|
41
|
+
Install the project with development dependencies:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
python -m pip install -e ".[dev]"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Run the main validation commands:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
ruff check src tests
|
|
51
|
+
mypy src
|
|
52
|
+
pytest tests --cov=pal_found_cli --cov-report=term-missing --cov-report=xml
|
|
53
|
+
python -m build
|
|
54
|
+
twine check dist/*
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The repository coverage gate is 80% branch coverage.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{% set version = environ.get('GIT_TAG', '0.1.0').lstrip('v') %}
|
|
2
|
+
|
|
3
|
+
package:
|
|
4
|
+
name: pal_found_cli
|
|
5
|
+
version: {{ version }}
|
|
6
|
+
|
|
7
|
+
source:
|
|
8
|
+
path: ..
|
|
9
|
+
|
|
10
|
+
build:
|
|
11
|
+
number: 0
|
|
12
|
+
noarch: python
|
|
13
|
+
entry_points:
|
|
14
|
+
- pal-found-datasets = pal_found_cli.datasets.scripts.pal_found_datasets_cli:main
|
|
15
|
+
- pal-found-filesystem = pal_found_cli.filesystem.scripts.pal_found_filesystem_cli:console_main
|
|
16
|
+
- pal-found-functions = pal_found_cli.functions.scripts.pal_found_functions_cli:console_main
|
|
17
|
+
- pal-found-ontologies = pal_found_cli.ontologies.scripts.pal_found_ontologies_cli:console_main
|
|
18
|
+
- pal-found-admin = pal_found_cli.admin.scripts.pal_found_admin_cli:console_main
|
|
19
|
+
- pal-found-audit = pal_found_cli.audit.scripts.pal_found_audit_cli:console_main
|
|
20
|
+
- pal-found-aip-agents = pal_found_cli.aip_agents.scripts.pal_found_aip_agents_cli:console_main
|
|
21
|
+
- pal-found-language-models = pal_found_cli.language_models.scripts.pal_found_language_models_cli:console_main
|
|
22
|
+
- pal-found-models = pal_found_cli.models.scripts.pal_found_models_cli:console_main
|
|
23
|
+
- pal-found-orchestration = pal_found_cli.orchestration.scripts.pal_found_orchestration_cli:console_main
|
|
24
|
+
- pal-found-sql-queries = pal_found_cli.sql_queries.scripts.pal_found_sql_queries_cli:console_main
|
|
25
|
+
- pal-found-streams = pal_found_cli.streams.scripts.pal_found_streams_cli:console_main
|
|
26
|
+
- pal-found-connectivity = pal_found_cli.connectivity.scripts.pal_found_connectivity_cli:console_main
|
|
27
|
+
- pal-found-media-sets = pal_found_cli.media_sets.scripts.pal_found_media_sets_cli:console_main
|
|
28
|
+
- pal-found-checkpoints = pal_found_cli.checkpoints.scripts.pal_found_checkpoints_cli:console_main
|
|
29
|
+
- pal-found-data-health = pal_found_cli.data_health.scripts.pal_found_data_health_cli:console_main
|
|
30
|
+
- pal-found-third-party-applications = pal_found_cli.third_party_applications.scripts.pal_found_third_party_applications_cli:console_main
|
|
31
|
+
- pal-found-widgets = pal_found_cli.widgets.scripts.pal_found_widgets_cli:console_main
|
|
32
|
+
script: {{ PYTHON }} -m pip install . --no-deps --no-build-isolation
|
|
33
|
+
|
|
34
|
+
requirements:
|
|
35
|
+
host:
|
|
36
|
+
- python >=3.11
|
|
37
|
+
- pip
|
|
38
|
+
- setuptools >=68
|
|
39
|
+
- setuptools-scm >=8
|
|
40
|
+
- wheel
|
|
41
|
+
run:
|
|
42
|
+
- python >=3.11
|
|
43
|
+
- foundry-platform-sdk >=1.0
|
|
44
|
+
- python-dotenv >=1.0
|
|
45
|
+
- requests >=2.31
|
|
46
|
+
|
|
47
|
+
about:
|
|
48
|
+
home: https://github.com/t-jet/pal_found_cli_tool
|
|
49
|
+
license: MIT
|
|
50
|
+
summary: Command-line access to Palantir Foundry resource operations
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "setuptools-scm>=8.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "pal_found_cli"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Foundry CLI - 33 operations across 5 resource clients"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
dependencies = [
|
|
12
|
+
"foundry-platform-sdk>=1.0.0",
|
|
13
|
+
"python-dotenv>=1.0.0",
|
|
14
|
+
"requests>=2.31.0",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[project.optional-dependencies]
|
|
18
|
+
dev = [
|
|
19
|
+
"pytest>=8.0",
|
|
20
|
+
"pytest-asyncio>=0.24",
|
|
21
|
+
"pytest-cov>=5.0",
|
|
22
|
+
"mypy>=1.0",
|
|
23
|
+
"ruff>=0.4.0",
|
|
24
|
+
"bandit>=1.7.0",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
[project.scripts]
|
|
28
|
+
# The pal-found-* names are the public interface.
|
|
29
|
+
pal-found-datasets = "pal_found_cli.datasets.scripts.pal_found_datasets_cli:main"
|
|
30
|
+
pal-found-filesystem = "pal_found_cli.filesystem.scripts.pal_found_filesystem_cli:console_main"
|
|
31
|
+
pal-found-functions = "pal_found_cli.functions.scripts.pal_found_functions_cli:console_main"
|
|
32
|
+
pal-found-ontologies = "pal_found_cli.ontologies.scripts.pal_found_ontologies_cli:console_main"
|
|
33
|
+
pal-found-admin = "pal_found_cli.admin.scripts.pal_found_admin_cli:console_main"
|
|
34
|
+
pal-found-audit = "pal_found_cli.audit.scripts.pal_found_audit_cli:console_main"
|
|
35
|
+
pal-found-aip-agents = "pal_found_cli.aip_agents.scripts.pal_found_aip_agents_cli:console_main"
|
|
36
|
+
pal-found-language-models = "pal_found_cli.language_models.scripts.pal_found_language_models_cli:console_main"
|
|
37
|
+
pal-found-models = "pal_found_cli.models.scripts.pal_found_models_cli:console_main"
|
|
38
|
+
pal-found-orchestration = "pal_found_cli.orchestration.scripts.pal_found_orchestration_cli:console_main"
|
|
39
|
+
pal-found-sql-queries = "pal_found_cli.sql_queries.scripts.pal_found_sql_queries_cli:console_main"
|
|
40
|
+
pal-found-streams = "pal_found_cli.streams.scripts.pal_found_streams_cli:console_main"
|
|
41
|
+
pal-found-connectivity = "pal_found_cli.connectivity.scripts.pal_found_connectivity_cli:console_main"
|
|
42
|
+
pal-found-media-sets = "pal_found_cli.media_sets.scripts.pal_found_media_sets_cli:console_main"
|
|
43
|
+
pal-found-checkpoints = "pal_found_cli.checkpoints.scripts.pal_found_checkpoints_cli:console_main"
|
|
44
|
+
pal-found-data-health = "pal_found_cli.data_health.scripts.pal_found_data_health_cli:console_main"
|
|
45
|
+
pal-found-third-party-applications = "pal_found_cli.third_party_applications.scripts.pal_found_third_party_applications_cli:console_main"
|
|
46
|
+
pal-found-widgets = "pal_found_cli.widgets.scripts.pal_found_widgets_cli:console_main"
|
|
47
|
+
|
|
48
|
+
[tool.setuptools.packages.find]
|
|
49
|
+
where = ["src"]
|
|
50
|
+
namespaces = false
|
|
51
|
+
|
|
52
|
+
[tool.setuptools_scm]
|
|
53
|
+
fallback_version = "0.1.0"
|
|
54
|
+
version_file = "src/pal_found_cli/_version.py"
|
|
55
|
+
# Releases are tagged vX.Y.Z (the publish workflow only fires on v* tags). Restrict
|
|
56
|
+
# setuptools-scm to v-prefixed tags so that co-located non-release tags (e.g. the
|
|
57
|
+
# qa-verify-20260929 tag sharing a commit with v0.1.2) cannot shadow the release
|
|
58
|
+
# version. Without this the build parsed that date tag as the version (20260929)
|
|
59
|
+
# instead of 0.1.2 and erroneously staged/published the date version.
|
|
60
|
+
tag.strict = true
|
|
61
|
+
tag.prefix = "v"
|
|
62
|
+
|
|
63
|
+
[tool.setuptools.package-data]
|
|
64
|
+
"pal_found_cli.common" = ["metadata-allow-list.md"]
|
|
65
|
+
"pal_found_cli.audit" = ["metadata-allow-list.md"]
|
|
66
|
+
"pal_found_cli.aip_agents" = ["metadata-allow-list.md"]
|
|
67
|
+
"pal_found_cli.language_models" = ["metadata-allow-list.md"]
|
|
68
|
+
"pal_found_cli.models" = ["metadata-allow-list.md"]
|
|
69
|
+
"pal_found_cli.orchestration" = ["metadata-allow-list.md"]
|
|
70
|
+
"pal_found_cli.sql_queries" = ["metadata-allow-list.md"]
|
|
71
|
+
"pal_found_cli.streams" = ["metadata-allow-list.md"]
|
|
72
|
+
"pal_found_cli.connectivity" = ["metadata-allow-list.md"]
|
|
73
|
+
"pal_found_cli.media_sets" = ["metadata-allow-list.md"]
|
|
74
|
+
"pal_found_cli.checkpoints" = ["metadata-allow-list.md"]
|
|
75
|
+
"pal_found_cli.data_health" = ["metadata-allow-list.md"]
|
|
76
|
+
"pal_found_cli.third_party_applications" = ["metadata-allow-list.md"]
|
|
77
|
+
"pal_found_cli.widgets" = ["metadata-allow-list.md"]
|
|
78
|
+
|
|
79
|
+
[tool.pytest.ini_options]
|
|
80
|
+
testpaths = ["tests"]
|
|
81
|
+
asyncio_mode = "auto"
|
|
82
|
+
|
|
83
|
+
[tool.mypy]
|
|
84
|
+
python_version = "3.11"
|
|
85
|
+
mypy_path = "src"
|
|
86
|
+
check_untyped_defs = true
|
|
87
|
+
warn_return_any = true
|
|
88
|
+
warn_unused_configs = true
|
|
89
|
+
|
|
90
|
+
[tool.ruff.lint]
|
|
91
|
+
select = ["E", "F"]
|
|
92
|
+
ignore = ["E501"]
|
|
93
|
+
|
|
94
|
+
[tool.ruff.lint.per-file-ignores]
|
|
95
|
+
"src/pal_found_cli/ontologies/scripts/*.py" = ["E402"]
|
|
96
|
+
"src/pal_found_cli/filesystem/scripts/*.py" = ["E402"]
|
|
97
|
+
"src/pal_found_cli/functions/scripts/*.py" = ["E402"]
|
|
98
|
+
"src/pal_found_cli/admin/scripts/*.py" = ["E402"]
|
|
99
|
+
"src/pal_found_cli/audit/scripts/*.py" = ["E402"]
|
|
100
|
+
"src/pal_found_cli/aip_agents/scripts/*.py" = ["E402"]
|
|
101
|
+
"src/pal_found_cli/language_models/scripts/*.py" = ["E402"]
|
|
102
|
+
"src/pal_found_cli/models/scripts/*.py" = ["E402"]
|
|
103
|
+
"src/pal_found_cli/orchestration/scripts/*.py" = ["E402"]
|
|
104
|
+
"src/pal_found_cli/sql_queries/scripts/*.py" = ["E402"]
|
|
105
|
+
"src/pal_found_cli/streams/scripts/*.py" = ["E402"]
|
|
106
|
+
"src/pal_found_cli/connectivity/scripts/*.py" = ["E402"]
|
|
107
|
+
"src/pal_found_cli/media_sets/scripts/*.py" = ["E402"]
|
|
108
|
+
"src/pal_found_cli/checkpoints/scripts/*.py" = ["E402"]
|
|
109
|
+
"src/pal_found_cli/data_health/scripts/*.py" = ["E402"]
|
|
110
|
+
"src/pal_found_cli/third_party_applications/scripts/*.py" = ["E402"]
|
|
111
|
+
"src/pal_found_cli/widgets/scripts/*.py" = ["E402"]
|
|
112
|
+
"tests/*.py" = ["E402", "E741", "F401", "F841"]
|
|
113
|
+
|
|
114
|
+
[tool.coverage.run]
|
|
115
|
+
source = ["pal_found_cli"]
|
|
116
|
+
branch = true
|
|
117
|
+
omit = [
|
|
118
|
+
"tests/*",
|
|
119
|
+
"**/__pycache__/*",
|
|
120
|
+
"src/pal_found_cli/datasets/scripts/pal_found_datasets_cli.py",
|
|
121
|
+
"src/pal_found_cli/filesystem/scripts/pal_found_filesystem_cli.py",
|
|
122
|
+
"src/pal_found_cli/ontologies/scripts/pal_found_ontologies_cli.py",
|
|
123
|
+
"src/pal_found_cli/audit/scripts/pal_found_audit_cli.py",
|
|
124
|
+
]
|
|
125
|
+
|
|
126
|
+
[tool.coverage.report]
|
|
127
|
+
show_missing = true
|
|
128
|
+
fail_under = 80
|
|
129
|
+
exclude_lines = [
|
|
130
|
+
"pragma: no cover",
|
|
131
|
+
"if TYPE_CHECKING:",
|
|
132
|
+
"def __repr__",
|
|
133
|
+
]
|
|
134
|
+
|
|
135
|
+
[tool.coverage.xml]
|
|
136
|
+
output = "coverage.xml"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Foundry CLI — Agentic toolset for Palantir Foundry API v2."""
|