Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
611c2b9
docs: update compatibility matrix
opsmill-bot Jul 15, 2026
4c82896
chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /docs
dependabot[bot] Jul 16, 2026
850f598
chore(deps): bump actions/setup-python from 6 to 7
dependabot[bot] Jul 20, 2026
af76f97
chore(deps): bump actions/setup-node from 5 to 7
dependabot[bot] Jul 20, 2026
a61ea92
Merge pull request #1191 from opsmill/dependabot/github_actions/stabl…
dgarros Jul 21, 2026
b9ca6da
Merge pull request #1192 from opsmill/dependabot/github_actions/stabl…
dgarros Jul 21, 2026
6f36cbd
chore(deps): bump shell-quote from 1.8.4 to 1.10.0 in /docs
dependabot[bot] Jul 21, 2026
fdb35c5
chore(deps): bump webpack-dev-server from 5.2.5 to 5.2.6 in /docs
dependabot[bot] Jul 21, 2026
202ba57
chore(deps): bump body-parser from 1.20.5 to 1.20.6 in /docs
dependabot[bot] Jul 21, 2026
dc7d047
Merge pull request #1188 from opsmill/dependabot/npm_and_yarn/docs/we…
dgarros Jul 21, 2026
7294a30
Merge pull request #1020 from opsmill/automated/update-compatibility-…
petercrocker Jul 21, 2026
bd30b91
Merge pull request #1202 from opsmill/dependabot/npm_and_yarn/docs/bo…
dgarros Jul 22, 2026
46af426
Merge pull request #1201 from opsmill/dependabot/npm_and_yarn/docs/we…
dgarros Jul 22, 2026
bf5cafe
Merge pull request #1200 from opsmill/dependabot/npm_and_yarn/docs/sh…
dgarros Jul 22, 2026
51a44cc
chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in /docs
dependabot[bot] Jul 22, 2026
f3e1a80
chore(deps): bump svgo from 3.3.3 to 3.3.4 in /docs
dependabot[bot] Jul 22, 2026
4da8b1e
Merge pull request #1204 from opsmill/dependabot/npm_and_yarn/docs/sv…
dgarros Jul 23, 2026
86f32d8
Merge pull request #1203 from opsmill/dependabot/npm_and_yarn/docs/fa…
dgarros Jul 23, 2026
9cf80cf
test: add failing test for 1209-branch-url-encoding
iddocohen Jul 24, 2026
fbf21c9
fix: percent-encode branch name in GraphQL URL path segment
iddocohen Jul 24, 2026
1b6bf67
chore: add changelog fragment for 1209
iddocohen Jul 24, 2026
ab588cd
Merge pull request #1210 from opsmill/ai-bug-pipeline-1209-branch-url…
dgarros Jul 26, 2026
b0ffa44
chore(deps): bump actions/labeler from 6.2.0 to 7.0.0
dependabot[bot] Jul 27, 2026
8022895
Prepare for release 1.22.2
ogenstad Jul 27, 2026
13f26b0
Merge pull request #1214 from opsmill/pog-version-1.22.2
ogenstad Jul 27, 2026
bc14313
chore(deps): bump postcss from 8.5.14 to 8.5.23 in /docs
dependabot[bot] Jul 27, 2026
a41fb22
docs: update compatibility matrix
opsmill-bot Jul 28, 2026
dc678b4
Merge pull request #1216 from opsmill/automated/update-compatibility-…
petercrocker Jul 28, 2026
2353f66
chore(deps-dev): bump infrahub-testcontainers from 1.10.5 to 1.10.6 (…
dependabot[bot] Aug 3, 2026
32768b9
chore(deps): bump fast-uri from 3.1.4 to 3.1.5 in /docs
dependabot[bot] Aug 5, 2026
b27e560
Merge pull request #1226 from opsmill/dependabot/npm_and_yarn/docs/fa…
saltas888 Aug 6, 2026
9e20f4a
Merge pull request #1215 from opsmill/dependabot/npm_and_yarn/docs/po…
saltas888 Aug 6, 2026
b2bb8e0
chore(deps): bump brace-expansion from 1.1.14 to 1.1.18 in /docs
dependabot[bot] Aug 6, 2026
02ab271
Merge pull request #1213 from opsmill/dependabot/github_actions/stabl…
saltas888 Aug 6, 2026
484f47b
Merge pull request #1228 from opsmill/dependabot/npm_and_yarn/docs/br…
saltas888 Aug 6, 2026
9f55264
fix: register the infrahub_integration pytest marker under its real n…
gmazoyer Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v7"
- name: Set up Python
uses: actions/setup-python@v6
uses: actions/setup-python@v7
with:
python-version: "3.12"
- name: Install UV
Expand Down Expand Up @@ -141,7 +141,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v7"
- name: "Set up Python"
uses: "actions/setup-python@v6"
uses: "actions/setup-python@v7"
with:
python-version: "3.12"
- name: "Install uv"
Expand Down Expand Up @@ -169,15 +169,15 @@ jobs:
with:
submodules: true
- name: Install NodeJS
uses: actions/setup-node@v5
uses: actions/setup-node@v7
with:
node-version: 24
cache: "npm"
cache-dependency-path: docs/package-lock.json
- name: "Install dependencies"
run: npm install
- name: Set up Python
uses: actions/setup-python@v6
uses: actions/setup-python@v7
with:
python-version: "3.12"
- name: Install UV
Expand All @@ -204,7 +204,7 @@ jobs:
with:
submodules: true
- name: Install NodeJS
uses: actions/setup-node@v5
uses: actions/setup-node@v7
with:
node-version: 24
cache: "npm"
Expand All @@ -213,7 +213,7 @@ jobs:
run: npm install
working-directory: ./docs
- name: Set up Python
uses: actions/setup-python@v6
uses: actions/setup-python@v7
with:
python-version: "3.12"
- name: Install UV
Expand Down Expand Up @@ -277,7 +277,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v7"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}
- name: Install UV
Expand Down Expand Up @@ -325,7 +325,7 @@ jobs:
- name: "Check out repository code"
uses: "actions/checkout@v7"
- name: Set up Python
uses: actions/setup-python@v6
uses: actions/setup-python@v7
with:
python-version: "3.12"
- name: "Set environment variables"
Expand Down Expand Up @@ -376,7 +376,7 @@ jobs:
# submodules: true

# - name: Set up Python
# uses: actions/setup-python@v6
# uses: actions/setup-python@v7
# with:
# python-version: "3.12"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v6.2.0
- uses: actions/labeler@v7.0.0
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
sync-labels: true
2 changes: 1 addition & 1 deletion .github/workflows/publish-pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
needs: prepare-environment
steps:
- name: "Set up Python"
uses: "actions/setup-python@v6"
uses: "actions/setup-python@v7"
with:
python-version: "3.12"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
submodules: true

- name: "Set up Python"
uses: "actions/setup-python@v6"
uses: "actions/setup-python@v7"
with:
python-version: "3.12"

Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,22 @@ This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the chang

<!-- towncrier release notes start -->

## [1.22.2](https://github.com/opsmill/infrahub-sdk-python/tree/v1.22.2) - 2026-07-27

### Added

- Added a `--dependencies` flag to `infrahubctl marketplace get`. When downloading a schema or a collection, it now also resolves and downloads the schemas they depend on, via the marketplace API. Dependencies are grouped by the collection they belong to: prerequisite collections (and, for a single schema, dependencies that are members of a collection) are placed in their own `<collection>/` directory, while dependencies that belong to no collection land in the output root. Referenced kinds the marketplace cannot resolve are reported as unresolved dependencies. A schema that already exists in the output directory is reconciled to a single file rather than duplicated across directories — kept by default, or overwritten with the new `-y`/`--yes` flag. ([#1117](https://github.com/opsmill/infrahub-sdk-python/issues/1117))
- Added `infrahubctl marketplace list`, `search`, and `show` commands for browsing schemas and collections on the Infrahub Marketplace.

### Fixed

- Branch names containing URL-significant characters (such as `#` or `/`) are now percent-encoded in the GraphQL URL, so requests against those branches resolve correctly instead of returning a 404. ([#1209](https://github.com/opsmill/infrahub-sdk-python/issues/1209))
- Fixed several cases where `InfrahubClientSync` had drifted from `InfrahubClient`: sync `branch.merge` now applies the same 120-second minimum timeout floor as the async client, and sync `create(allow_upsert=True)` now excludes the `hfid` from the mutation payload to avoid server-side upsert overhead. Also corrected an incorrect "feature not supported" message on async artifact fetch and a resource-pool error message typo.

### Housekeeping

- Replaced `markdownlint-cli2` with [rumdl](https://github.com/rvben/rumdl) for markdown linting. This removes the Node.js/npm dependency for the markdown check, speeds up linting, and consolidates the configuration into `pyproject.toml` under `[tool.rumdl]`. ([#1138](https://github.com/opsmill/infrahub-sdk-python/issues/1138))

## [1.22.1](https://github.com/opsmill/infrahub-sdk-python/tree/v1.22.1) - 2026-07-03

### Added
Expand Down
1 change: 0 additions & 1 deletion changelog/+async-sync-twin-drift.fixed.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/+marketplace-browsing.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/1117.added.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog/1138.housekeeping.md

This file was deleted.

1 change: 1 addition & 0 deletions changelog/1231.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Register the `infrahub_integration` pytest marker under its real name. It was registered as `infrahub_integraton`, so integration tests raised a `PytestUnknownMarkWarning` on every run and failed to collect under `--strict-markers`.
16 changes: 16 additions & 0 deletions docs/docs/python-sdk/reference/compatibility.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Each Infrahub release pins a specific SDK version. Using the matching SDK versio

| Infrahub | Required SDK | Release date |
| --- | --- | --- |
| 1.10.x | >= 1.22.0 | June 2026 |
| 1.9.x | >= 1.20.0 | April 2026 |
| 1.8.x | >= 1.19.0 | March 2026 |
| 1.7.x | >= 1.18.1 | January 2026 |
Expand All @@ -35,10 +36,25 @@ The table below shows the exact SDK version pinned to each Infrahub release.

| Infrahub | SDK version | Infrahub release date |
| --- | --- | --- |
| 1.10.6 | 1.22.2 | 2026-07-28 |
| 1.10.5 | 1.22.1 | 2026-07-15 |
| 1.10.4 | 1.22.1 | 2026-07-13 |
| 1.10.3 | 1.22.1 | 2026-07-08 |
| 1.10.2 | 1.22.0 | 2026-07-03 |
| 1.10.1 | 1.22.0 | 2026-07-01 |
| 1.10.0 | 1.22.0 | 2026-06-23 |
| 1.9.10 | 1.20.1 | 2026-07-07 |
| 1.9.9 | 1.20.1 | 2026-06-23 |
| 1.9.8 | 1.20.1 | 2026-06-09 |
| 1.9.7 | 1.20.1 | 2026-06-03 |
| 1.9.6 | 1.20.1 | 2026-05-20 |
| 1.9.5 | 1.20.0 | 2026-05-18 |
| 1.9.4 | 1.20.0 | 2026-05-13 |
| 1.9.3 | 1.20.0 | 2026-05-05 |
| 1.9.2 | 1.20.0 | 2026-04-30 |
| 1.9.1 | 1.20.0 | 2026-04-29 |
| 1.9.0 | 1.20.0 | 2026-04-24 |
| 1.8.7 | 1.19.0 | 2026-06-04 |
| 1.8.6 | 1.19.0 | 2026-04-21 |
| 1.8.5 | 1.19.0 | 2026-04-17 |
| 1.8.4 | 1.19.0 | 2026-04-02 |
Expand Down
16 changes: 16 additions & 0 deletions docs/docs_generation/compatibility.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ class FeatureRequirement:
# Mapping of Infrahub minor version series to minimum SDK versions.
# Auto-updated by update_compatibility.py.
VERSION_RANGES: list[VersionRange] = [
VersionRange(infrahub="1.10.x", min_sdk="1.22.0", date="June 2026"),
VersionRange(infrahub="1.9.x", min_sdk="1.20.0", date="April 2026"),
VersionRange(infrahub="1.8.x", min_sdk="1.19.0", date="March 2026"),
VersionRange(infrahub="1.7.x", min_sdk="1.18.1", date="January 2026"),
Expand All @@ -90,10 +91,25 @@ class FeatureRequirement:
# Detailed mapping of every Infrahub release to its pinned SDK version.
# Auto-updated by update_compatibility.py.
RELEASE_MAPPINGS: list[ReleaseMapping] = [
ReleaseMapping(infrahub="1.10.6", sdk="1.22.2", date="2026-07-28"),
ReleaseMapping(infrahub="1.10.5", sdk="1.22.1", date="2026-07-15"),
ReleaseMapping(infrahub="1.10.4", sdk="1.22.1", date="2026-07-13"),
ReleaseMapping(infrahub="1.10.3", sdk="1.22.1", date="2026-07-08"),
ReleaseMapping(infrahub="1.10.2", sdk="1.22.0", date="2026-07-03"),
ReleaseMapping(infrahub="1.10.1", sdk="1.22.0", date="2026-07-01"),
ReleaseMapping(infrahub="1.10.0", sdk="1.22.0", date="2026-06-23"),
ReleaseMapping(infrahub="1.9.10", sdk="1.20.1", date="2026-07-07"),
ReleaseMapping(infrahub="1.9.9", sdk="1.20.1", date="2026-06-23"),
ReleaseMapping(infrahub="1.9.8", sdk="1.20.1", date="2026-06-09"),
ReleaseMapping(infrahub="1.9.7", sdk="1.20.1", date="2026-06-03"),
ReleaseMapping(infrahub="1.9.6", sdk="1.20.1", date="2026-05-20"),
ReleaseMapping(infrahub="1.9.5", sdk="1.20.0", date="2026-05-18"),
ReleaseMapping(infrahub="1.9.4", sdk="1.20.0", date="2026-05-13"),
ReleaseMapping(infrahub="1.9.3", sdk="1.20.0", date="2026-05-05"),
ReleaseMapping(infrahub="1.9.2", sdk="1.20.0", date="2026-04-30"),
ReleaseMapping(infrahub="1.9.1", sdk="1.20.0", date="2026-04-29"),
ReleaseMapping(infrahub="1.9.0", sdk="1.20.0", date="2026-04-24"),
ReleaseMapping(infrahub="1.8.7", sdk="1.19.0", date="2026-06-04"),
ReleaseMapping(infrahub="1.8.6", sdk="1.19.0", date="2026-04-21"),
ReleaseMapping(infrahub="1.8.5", sdk="1.19.0", date="2026-04-17"),
ReleaseMapping(infrahub="1.8.4", sdk="1.19.0", date="2026-04-02"),
Expand Down
73 changes: 29 additions & 44 deletions docs/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions infrahub_sdk/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from functools import wraps
from time import sleep
from typing import TYPE_CHECKING, Any, BinaryIO, Literal, TypedDict, TypeVar, overload
from urllib.parse import urlencode
from urllib.parse import quote, urlencode

import httpx
import ujson
Expand Down Expand Up @@ -278,7 +278,7 @@ def _graphql_url(
) -> str:
url = f"{self.config.address}/graphql"
if branch_name:
url += f"/{branch_name}"
url += f"/{quote(branch_name, safe='')}"

url_params = {}
if at:
Expand Down
2 changes: 1 addition & 1 deletion infrahub_sdk/pytest_plugin/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def pytest_configure(config: pytest.Config) -> None:
config.addinivalue_line("markers", "infrahub_unit: Unit test for an Infrahub resource, works without dependencies")
config.addinivalue_line(
"markers",
"infrahub_integraton: Integation test for an Infrahub resource, depends on an Infrahub running instance",
"infrahub_integration: Integration test for an Infrahub resource, depends on an Infrahub running instance",
)
config.addinivalue_line("markers", "infrahub_check: Test related to an Infrahub Check")
config.addinivalue_line("markers", "infrahub_graphql_query: Test related to an Infrahub GraphQL query")
Expand Down
Loading
Loading