meta-ads-mcp 1.0.12__tar.gz → 1.0.13__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.
Potentially problematic release.
This version of meta-ads-mcp might be problematic. Click here for more details.
- meta_ads_mcp-1.0.13/.github/workflows/publish-mcp.yml +32 -0
- meta_ads_mcp-1.0.13/.github/workflows/publish.yml +114 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/PKG-INFO +1 -1
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/__init__.py +1 -1
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/pyproject.toml +1 -1
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/server.json +2 -2
- meta_ads_mcp-1.0.12/.github/workflows/publish-mcp.yml +0 -70
- meta_ads_mcp-1.0.12/.github/workflows/publish.yml +0 -39
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/.github/workflows/test.yml +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/.gitignore +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/CUSTOM_META_APP.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/Dockerfile +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/LICENSE +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/LOCAL_INSTALLATION.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/META_API_NOTES.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/README.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/RELEASE.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/STREAMABLE_HTTP_SETUP.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/examples/README.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/examples/example_http_client.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/future_improvements.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/images/meta-ads-example.png +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_auth.sh +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/__main__.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/__init__.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/accounts.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/ads.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/ads_library.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/adsets.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/api.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/auth.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/authentication.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/budget_schedules.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/callback_server.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/campaigns.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/duplication.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/http_auth_integration.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/insights.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/openai_deep_research.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/pipeboard_auth.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/reports.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/resources.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/server.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/targeting.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/meta_ads_mcp/core/utils.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/requirements.txt +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/setup.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/smithery.yaml +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/README.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/README_REGRESSION_TESTS.md +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/__init__.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/conftest.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/e2e_account_info_search_issue.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_account_info_access_fix.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_account_search.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_budget_update.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_budget_update_e2e.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_dsa_beneficiary.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_dsa_integration.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_duplication.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_duplication_regression.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_dynamic_creatives.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_estimate_audience_size.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_estimate_audience_size_e2e.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_get_account_pages.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_get_ad_creatives_fix.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_get_ad_image_quality_improvements.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_get_ad_image_regression.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_http_transport.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_insights_actions_and_values_e2e.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_insights_pagination.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_integration_openai_mcp.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_is_dynamic_creative_adset.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_mobile_app_adset_creation.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_mobile_app_adset_issue.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_openai.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_openai_mcp_deep_research.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_page_discovery.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_page_discovery_integration.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_targeting.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_targeting_search_e2e.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_update_ad_creative_id.py +0 -0
- {meta_ads_mcp-1.0.12 → meta_ads_mcp-1.0.13}/tests/test_upload_ad_image.py +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Publish to MCP Registry (manual)
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
# This workflow is kept for manual runs only. The normal release flow
|
|
5
|
+
# is handled by the consolidated release workflow.
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
publish:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
id-token: write
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout code
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Install MCP Publisher
|
|
20
|
+
run: |
|
|
21
|
+
curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
|
|
22
|
+
|
|
23
|
+
- name: Login to MCP Registry (DNS auth)
|
|
24
|
+
run: |
|
|
25
|
+
echo "${{ secrets.MCP_PRIVATE_KEY }}" > temp_key.pem
|
|
26
|
+
PRIVATE_KEY_HEX=$(openssl pkey -in temp_key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n')
|
|
27
|
+
./mcp-publisher login dns --domain pipeboard.co --private-key "$PRIVATE_KEY_HEX"
|
|
28
|
+
rm -f temp_key.pem
|
|
29
|
+
|
|
30
|
+
- name: Publish to MCP Registry
|
|
31
|
+
run: ./mcp-publisher publish
|
|
32
|
+
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
name: "Release: Test, PyPI, MCP"
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
# Allow manual triggering for testing
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test_and_build:
|
|
11
|
+
name: Test and Build (pre-release gate)
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Check out code
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Set up Python
|
|
21
|
+
uses: actions/setup-python@v5
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
|
|
25
|
+
- name: Install uv
|
|
26
|
+
uses: astral-sh/setup-uv@v5
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: |
|
|
30
|
+
uv sync --all-extras --dev
|
|
31
|
+
|
|
32
|
+
- name: Run tests
|
|
33
|
+
run: |
|
|
34
|
+
uv run pytest -q
|
|
35
|
+
|
|
36
|
+
- name: Build wheel and sdist
|
|
37
|
+
run: |
|
|
38
|
+
uv build
|
|
39
|
+
|
|
40
|
+
- name: Validate server.json against schema
|
|
41
|
+
run: |
|
|
42
|
+
uv run python - <<'PY'
|
|
43
|
+
import json, sys, urllib.request
|
|
44
|
+
from jsonschema import validate
|
|
45
|
+
from jsonschema.exceptions import ValidationError
|
|
46
|
+
server = json.load(open('server.json'))
|
|
47
|
+
schema_url = server.get('$schema')
|
|
48
|
+
with urllib.request.urlopen(schema_url) as r:
|
|
49
|
+
schema = json.load(r)
|
|
50
|
+
try:
|
|
51
|
+
validate(instance=server, schema=schema)
|
|
52
|
+
except ValidationError as e:
|
|
53
|
+
print('Schema validation failed:', e, file=sys.stderr)
|
|
54
|
+
sys.exit(1)
|
|
55
|
+
print('server.json is valid')
|
|
56
|
+
PY
|
|
57
|
+
|
|
58
|
+
publish_pypi:
|
|
59
|
+
name: Publish to PyPI
|
|
60
|
+
needs: test_and_build
|
|
61
|
+
runs-on: ubuntu-latest
|
|
62
|
+
environment: release
|
|
63
|
+
permissions:
|
|
64
|
+
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
|
65
|
+
contents: read
|
|
66
|
+
|
|
67
|
+
steps:
|
|
68
|
+
- name: Check out code
|
|
69
|
+
uses: actions/checkout@v4
|
|
70
|
+
|
|
71
|
+
- name: Set up Python
|
|
72
|
+
uses: actions/setup-python@v5
|
|
73
|
+
with:
|
|
74
|
+
python-version: "3.10"
|
|
75
|
+
|
|
76
|
+
- name: Install build dependencies
|
|
77
|
+
run: |
|
|
78
|
+
python -m pip install --upgrade pip
|
|
79
|
+
pip install build
|
|
80
|
+
|
|
81
|
+
- name: Build package
|
|
82
|
+
run: python -m build
|
|
83
|
+
|
|
84
|
+
- name: Publish to PyPI
|
|
85
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
86
|
+
with:
|
|
87
|
+
verbose: true
|
|
88
|
+
|
|
89
|
+
publish_mcp:
|
|
90
|
+
name: Publish to MCP Registry
|
|
91
|
+
needs: publish_pypi
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
permissions:
|
|
94
|
+
id-token: write
|
|
95
|
+
contents: read
|
|
96
|
+
|
|
97
|
+
steps:
|
|
98
|
+
- name: Check out code
|
|
99
|
+
uses: actions/checkout@v4
|
|
100
|
+
|
|
101
|
+
- name: Install MCP Publisher
|
|
102
|
+
run: |
|
|
103
|
+
curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
|
|
104
|
+
|
|
105
|
+
- name: Login to MCP Registry (DNS auth)
|
|
106
|
+
run: |
|
|
107
|
+
# Extract private key using official MCP publisher method
|
|
108
|
+
echo "${{ secrets.MCP_PRIVATE_KEY }}" > temp_key.pem
|
|
109
|
+
PRIVATE_KEY_HEX=$(openssl pkey -in temp_key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n')
|
|
110
|
+
./mcp-publisher login dns --domain pipeboard.co --private-key "$PRIVATE_KEY_HEX"
|
|
111
|
+
rm -f temp_key.pem
|
|
112
|
+
|
|
113
|
+
- name: Publish to MCP Registry
|
|
114
|
+
run: ./mcp-publisher publish
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meta-ads-mcp
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.13
|
|
4
4
|
Summary: Model Context Protocol (MCP) server for interacting with Meta Ads API
|
|
5
5
|
Project-URL: Homepage, https://github.com/pipeboard-co/meta-ads-mcp
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/pipeboard-co/meta-ads-mcp/issues
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-16/server.schema.json",
|
|
3
3
|
"name": "co.pipeboard/meta-ads-mcp",
|
|
4
4
|
"description": "Facebook / Meta Ads automation with AI: analyze performance, test creatives, optimize spend.",
|
|
5
|
-
"version": "1.0.
|
|
5
|
+
"version": "1.0.13",
|
|
6
6
|
"remotes": [
|
|
7
7
|
{
|
|
8
8
|
"type": "streamable-http",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
{
|
|
14
14
|
"registryType": "pypi",
|
|
15
15
|
"identifier": "meta-ads-mcp",
|
|
16
|
-
"version": "1.0.
|
|
16
|
+
"version": "1.0.13",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|
|
19
19
|
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
name: Publish to MCP Registry
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
release:
|
|
5
|
-
types: [published]
|
|
6
|
-
|
|
7
|
-
jobs:
|
|
8
|
-
publish:
|
|
9
|
-
runs-on: ubuntu-latest
|
|
10
|
-
permissions:
|
|
11
|
-
id-token: write
|
|
12
|
-
contents: read
|
|
13
|
-
|
|
14
|
-
steps:
|
|
15
|
-
- name: Checkout code
|
|
16
|
-
uses: actions/checkout@v5
|
|
17
|
-
|
|
18
|
-
- name: Set up Python
|
|
19
|
-
uses: actions/setup-python@v5
|
|
20
|
-
with:
|
|
21
|
-
python-version: "3.12"
|
|
22
|
-
|
|
23
|
-
- name: Install uv
|
|
24
|
-
uses: astral-sh/setup-uv@v5
|
|
25
|
-
|
|
26
|
-
- name: Install dependencies
|
|
27
|
-
run: |
|
|
28
|
-
uv sync --all-extras --dev
|
|
29
|
-
|
|
30
|
-
- name: Run tests
|
|
31
|
-
run: |
|
|
32
|
-
uv run pytest -q
|
|
33
|
-
|
|
34
|
-
- name: Build wheel
|
|
35
|
-
run: |
|
|
36
|
-
uv build
|
|
37
|
-
|
|
38
|
-
- name: Validate server.json against schema
|
|
39
|
-
run: |
|
|
40
|
-
uv run python - <<'PY'
|
|
41
|
-
import json, sys, urllib.request
|
|
42
|
-
from jsonschema import validate
|
|
43
|
-
from jsonschema.exceptions import ValidationError
|
|
44
|
-
server = json.load(open('server.json'))
|
|
45
|
-
schema_url = server.get('$schema')
|
|
46
|
-
with urllib.request.urlopen(schema_url) as r:
|
|
47
|
-
schema = json.load(r)
|
|
48
|
-
try:
|
|
49
|
-
validate(instance=server, schema=schema)
|
|
50
|
-
except ValidationError as e:
|
|
51
|
-
print('Schema validation failed:', e, file=sys.stderr)
|
|
52
|
-
sys.exit(1)
|
|
53
|
-
print('server.json is valid')
|
|
54
|
-
PY
|
|
55
|
-
|
|
56
|
-
- name: Install MCP Publisher
|
|
57
|
-
run: |
|
|
58
|
-
curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
|
|
59
|
-
|
|
60
|
-
- name: Login to MCP Registry (DNS auth)
|
|
61
|
-
run: |
|
|
62
|
-
# Extract private key using official MCP publisher method
|
|
63
|
-
echo "${{ secrets.MCP_PRIVATE_KEY }}" > temp_key.pem
|
|
64
|
-
PRIVATE_KEY_HEX=$(openssl pkey -in temp_key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n')
|
|
65
|
-
./mcp-publisher login dns --domain pipeboard.co --private-key "$PRIVATE_KEY_HEX"
|
|
66
|
-
rm -f temp_key.pem
|
|
67
|
-
|
|
68
|
-
- name: Publish to MCP Registry
|
|
69
|
-
run: ./mcp-publisher publish
|
|
70
|
-
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
name: Publish to PyPI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
release:
|
|
5
|
-
types: [published]
|
|
6
|
-
# Allow manual triggering for testing
|
|
7
|
-
workflow_dispatch:
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
publish:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
environment: release
|
|
13
|
-
permissions:
|
|
14
|
-
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
|
15
|
-
contents: read
|
|
16
|
-
|
|
17
|
-
steps:
|
|
18
|
-
- name: Check out code
|
|
19
|
-
uses: actions/checkout@v4
|
|
20
|
-
|
|
21
|
-
- name: Set up Python
|
|
22
|
-
uses: actions/setup-python@v5
|
|
23
|
-
with:
|
|
24
|
-
python-version: "3.10"
|
|
25
|
-
|
|
26
|
-
- name: Install build dependencies
|
|
27
|
-
run: |
|
|
28
|
-
python -m pip install --upgrade pip
|
|
29
|
-
pip install build
|
|
30
|
-
|
|
31
|
-
- name: Build package
|
|
32
|
-
run: python -m build
|
|
33
|
-
|
|
34
|
-
- name: Publish to PyPI
|
|
35
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
36
|
-
with:
|
|
37
|
-
# Using trusted publishing (no API token needed)
|
|
38
|
-
# Make sure to configure trusted publishing in PyPI project settings
|
|
39
|
-
verbose: true
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|