Skip to content

Commit 84ee9ef

Browse files
authored
Merge pull request #870 from opsmill/wvd-20260316-prep-release-1.19
prepare release v1.19.0
2 parents 2f0ce37 + fe5fe71 commit 84ee9ef

149 files changed

Lines changed: 12745 additions & 2389 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/file-filters.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ markdown_all: &markdown_all
3636

3737
infrahub_reference_generated: &infrahub_reference_generated
3838
- "docs/docs/infrahubctl/*.mdx"
39-
- "docs/docs/python-sdk/reference/config.mdx"
39+
- "docs/docs/python-sdk/reference/*.mdx"
40+
- "docs/docs/python-sdk/sdk_ref/**/*.mdx"
4041

4142
documentation_all:
4243
- *development_files

.github/workflows/ci.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ jobs:
108108
- name: "Linting: markdownlint"
109109
uses: DavidAnson/markdownlint-cli2-action@v22
110110
with:
111-
config: .markdownlint.yaml
111+
config: docs/.markdownlint.yaml
112112
globs: |
113113
**/*.{md,mdx}
114114
!changelog/*.md
@@ -176,7 +176,7 @@ jobs:
176176
uses: actions/setup-node@v5
177177
with:
178178
node-version: 20
179-
cache: 'npm'
179+
cache: "npm"
180180
cache-dependency-path: docs/package-lock.json
181181
- name: "Install dependencies"
182182
run: npm install
@@ -207,6 +207,15 @@ jobs:
207207
uses: "actions/checkout@v6"
208208
with:
209209
submodules: true
210+
- name: Install NodeJS
211+
uses: actions/setup-node@v5
212+
with:
213+
node-version: 20
214+
cache: "npm"
215+
cache-dependency-path: docs/package-lock.json
216+
- name: "Install npm dependencies"
217+
run: npm install
218+
working-directory: ./docs
210219
- name: Set up Python
211220
uses: actions/setup-python@v6
212221
with:
@@ -217,9 +226,11 @@ jobs:
217226
version: "${{ needs.prepare-environment.outputs.UV_VERSION }}"
218227
- name: Install dependencies
219228
run: uv sync --all-groups --all-extras
229+
- name: Docs unit tests
230+
run: npx --no-install vitest run
231+
working-directory: ./docs
220232
- name: Validate generated documentation
221233
run: uv run invoke docs-validate
222-
223234
validate-documentation-style:
224235
if: |
225236
always() && !cancelled() &&
@@ -236,6 +247,7 @@ jobs:
236247

237248
# The official GitHub Action for Vale doesn't work, installing manually instead:
238249
# https://github.com/errata-ai/vale-action/issues/103
250+
# cf -> https://github.com/nf-core/website/pull/3509
239251
- name: Download Vale
240252
run: |
241253
curl -sL "https://github.com/errata-ai/vale/releases/download/v${VALE_VERSION}/vale_${VALE_VERSION}_Linux_64-bit.tar.gz" -o vale.tar.gz

.github/workflows/sync-docs.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ on:
88
- stable
99
paths:
1010
- 'docs/docs/**'
11-
- 'docs/sidebars-infrahubctl.ts'
12-
- 'docs/sidebars-python-sdk.ts'
11+
- 'docs/sidebars/sidebars-infrahubctl.ts'
12+
- 'docs/sidebars/sidebars-python-sdk.ts'
13+
- 'docs/sidebars/sidebar-utils.ts'
1314

1415
jobs:
1516
sync:
@@ -33,8 +34,9 @@ jobs:
3334
rm -f target-repo/docs/sidebars-python-sdk.ts
3435
rm -f target-repo/docs/sidebars-infrahubctl.ts
3536
cp -r source-repo/docs/docs/* target-repo/docs/docs-python-sdk/
36-
cp source-repo/docs/sidebars-infrahubctl.ts target-repo/docs/
37-
cp source-repo/docs/sidebars-python-sdk.ts target-repo/docs/
37+
cp source-repo/docs/sidebars/sidebars-infrahubctl.ts target-repo/docs/
38+
cp source-repo/docs/sidebars/sidebars-python-sdk.ts target-repo/docs/
39+
cp source-repo/docs/sidebars/sidebar-utils.ts target-repo/docs/
3840
cd target-repo
3941
git config user.name github-actions
4042
git config user.email github-actions@github.com

.vale.ini

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,10 @@ BasedOnStyles =
2323

2424
[*]
2525
BasedOnStyles = Infrahub
26+
27+
# Generated API reference docs: use GeneratedRef spelling (allows snake_case)
28+
# instead of global Infrahub spelling. Must be last to override [*].
29+
[docs/docs/python-sdk/sdk_ref/**/*.mdx]
30+
BasedOnStyles = Infrahub, GeneratedRef
31+
Infrahub.spelling = NO
32+
BlockIgnores = (?s) *((import.*?\n)|(```.*?```\n))
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
extends: spelling
3+
message: "Did you really mean '%s'?"
4+
level: error
5+
filters:
6+
- '[pP]y.*\b'
7+
- '\bimport_.*\b' # Ignore variables starting with 'import_'
8+
- '\w+__value' # Skip Infrahub filters in documentation (name__value)
9+
- '\b\w+_\w+\b' # Ignore snake_case identifiers in generated API reference docs
10+
ignore: spelling-exceptions.txt

.vale/styles/Infrahub/sentence-case.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ exceptions:
5252
- Jinja
5353
- Jinja2
5454
- JWT
55+
- MDX
5556
- Namespace
5657
- NATS
5758
- Node

.vale/styles/Infrahub/spelling.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ message: "Did you really mean '%s'?"
44
level: error
55
filters:
66
- '[pP]y.*\b'
7-
- '\bimport_.*\b' # New filter to ignore variables starting with 'import_'
8-
- '\w+__value' # New filter to skip Infrahub filters in documentation (name__value)
7+
- '\bimport_.*\b' # Ignore variables starting with 'import_'
8+
- '\w+__value' # Skip Infrahub filters in documentation (name__value)
99
ignore: spelling-exceptions.txt

.vale/styles/spelling-exceptions.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Alibaba
33
Ansible
44
append_git_suffix
55
APIs
6+
Args
67
artifact_definitions
78
artifact_name
89
async
@@ -78,6 +79,7 @@ kbps
7879
Keycloak
7980
Loopbacks
8081
markdownlint
82+
MDX
8183
max_count
8284
memgraph
8385
menu_placement

AGENTS.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ Infrahub Python SDK - async/sync client for Infrahub infrastructure management.
77
```bash
88
uv sync --all-groups --all-extras # Install all deps
99
uv run invoke format # Format code
10-
uv run invoke lint # All linters (code + yamllint + documentation)
10+
uv run invoke lint # Full pipeline: ruff, yamllint, ty, mypy, markdownlint, vale
1111
uv run invoke lint-code # All linters for Python code
12+
uv run invoke docs-generate # Generate all docs (CLI + SDK)
13+
uv run invoke docs-validate # Check generated docs match committed version
1214
uv run pytest tests/unit/ # Unit tests
1315
uv run pytest tests/integration/ # Integration tests
1416
```
@@ -54,7 +56,7 @@ Key rules:
5456
**Always**
5557

5658
- Run `uv run invoke format lint-code` before committing Python code
57-
- Run `uv run invoke generate-sdk generate-infrahubctl` after changing CLI commands or SDK config
59+
- Run `uv run invoke docs-generate` after creating, modifying or deleting CLI commands, SDK config, or Python docstrings
5860
- Run markdownlint before committing markdown changes
5961
- Follow async/sync dual pattern for new features
6062
- Use type hints on all function signatures

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
1010
This project uses [*towncrier*](https://towncrier.readthedocs.io/) and the changes for the upcoming release can be found in <https://github.com/opsmill/infrahub/tree/develop/infrahub/python_sdk/changelog/>.
1111

1212
<!-- towncrier release notes start -->
13+
14+
## [1.19.0](https://github.com/opsmill/infrahub-sdk-python/tree/v1.19.0) - 2026-03-16
15+
16+
### Added
17+
18+
- Added support for FileObject nodes with file upload and download capabilities. New methods `upload_from_path(path)` and `upload_from_bytes(content, name)` allow setting file content before saving, while `download_file(dest)` enables downloading files to memory or streaming to disk for large files. ([#ihs193](https://github.com/opsmill/infrahub-sdk-python/issues/ihs193))
19+
- Python SDK API documentation is now generated directly from the docstrings of the classes, functions, and methods contained in the code. ([#201](https://github.com/opsmill/infrahub-sdk-python/issues/201))
20+
- Added a 'py.typed' file to the project. This is to enable type checking when the Infrahub SDK is imported from other projects. The addition of this file could cause new typing issues in external projects until all typing issues have been resolved. Adding it to the project now to better highlight remaining issues.
21+
22+
### Changed
23+
24+
- Updated branch report command to use node metadata for proposed change creator information instead of the deprecated relationship-based approach. Requires Infrahub 1.7 or above.
25+
26+
### Fixed
27+
28+
- Allow SDK tracking feature to continue after encountering delete errors due to impacted nodes having already been deleted by cascade delete. ([#265](https://github.com/opsmill/infrahub-sdk-python/issues/265))
29+
- Fixed Python SDK query generation regarding from_pool generated attribute value ([#497](https://github.com/opsmill/infrahub-sdk-python/issues/497))
30+
1331
## [1.18.1](https://github.com/opsmill/infrahub-sdk-python/tree/v1.18.1) - 2026-01-08
1432

1533
### Fixed

0 commit comments

Comments
 (0)