-
Notifications
You must be signed in to change notification settings - Fork 6
prepare release v1.19.0 #870
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
78978b4
a8d2eb5
6c0bf35
d619c6f
715e28b
d6404eb
bb2f761
56b59aa
d6dc732
7cf8924
10e642b
4843e01
424e0ca
4b786ff
2c07085
ec009b3
fdebb9d
504a618
2e6c3f8
829800d
7acb4d8
95b9cf6
c340321
c29ede9
ceb7e61
8175d22
4a8818e
673fd75
a6d8d05
f9d63f2
a7e5c63
9c1a8bf
9e42f1f
0abb16d
84682b1
6983fa5
93eeff9
03fa402
62fcd75
813f3c0
652bc25
fcb0d5b
9ca9490
09707f5
2cb708d
bd716a6
161f673
bd17565
16116f7
54f3a4c
8959d12
37db419
f3ec276
23af927
0ead93b
d239d46
d64dde3
de50398
e5ecfd0
900096c
6c5a6ad
6d9e056
91ff77c
7c8ce06
7ce5078
9464c05
636de56
294d265
c486893
9b341cd
c58b476
e1ad3d7
0176b8e
d1f6584
19a6622
6f07577
471d3c0
40f559e
6d1d14a
7b83953
805b7e3
a694e59
8c8c758
1e67930
9a3eed6
47988d9
bf88b02
004fc67
809ea5e
f84bbd2
ca223c9
5d4704a
4937d1b
b391934
04fd475
dda5236
0bf611d
17edb63
b29fcbb
0b99ab7
3064a1f
b417aaf
7aeb880
e8e933b
a48fa78
5864562
df74df0
96c5051
928e723
2eaaf98
ecdacc6
cf06649
03fe2dc
9f13097
a17f18b
bc144dd
514d7d3
8abbde2
6387a79
998e3fe
d748a00
af650de
dd38027
52d475e
1c1407d
56b6e2d
bd27571
f186180
7390d88
f737549
9b30a09
4814eba
fe5fe71
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| --- | ||
| extends: spelling | ||
| message: "Did you really mean '%s'?" | ||
| level: error | ||
| filters: | ||
| - '[pP]y.*\b' | ||
| - '\bimport_.*\b' # Ignore variables starting with 'import_' | ||
| - '\w+__value' # Skip Infrahub filters in documentation (name__value) | ||
| - '\b\w+_\w+\b' # Ignore snake_case identifiers in generated API reference docs | ||
| ignore: spelling-exceptions.txt |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -52,6 +52,7 @@ exceptions: | |
| - Jinja | ||
| - Jinja2 | ||
| - JWT | ||
| - MDX | ||
| - Namespace | ||
| - NATS | ||
| - Node | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -10,6 +10,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), | |||||
| 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/>. | ||||||
|
|
||||||
| <!-- towncrier release notes start --> | ||||||
|
|
||||||
| ## [1.19.0](https://github.com/opsmill/infrahub-sdk-python/tree/v1.19.0) - 2026-03-16 | ||||||
|
|
||||||
| ### Added | ||||||
|
|
||||||
| - 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)) | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix the broken issue link in the FileObject changelog bullet. The current GitHub issue URL uses a non-numeric path ( Suggested edit-- 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))
+- 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. (Issue: ihs193)📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| - 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)) | ||||||
| - 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. | ||||||
|
|
||||||
| ### Changed | ||||||
|
|
||||||
| - 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. | ||||||
|
|
||||||
| ### Fixed | ||||||
|
|
||||||
| - 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)) | ||||||
| - Fixed Python SDK query generation regarding from_pool generated attribute value ([#497](https://github.com/opsmill/infrahub-sdk-python/issues/497)) | ||||||
|
|
||||||
| ## [1.18.1](https://github.com/opsmill/infrahub-sdk-python/tree/v1.18.1) - 2026-01-08 | ||||||
|
|
||||||
| ### Fixed | ||||||
|
|
||||||
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,92 @@ | ||
| # Session Feedback | ||
|
|
||
| Analyze this conversation and identify what documentation or context was missing, incomplete, or incorrect. The goal is to continuously improve the project's knowledge base so future conversations are more efficient. | ||
|
|
||
| ## Step 1: Session Analysis | ||
|
|
||
| Reflect on the work done in this conversation. For each area, identify friction points: | ||
|
|
||
| 1. **Exploration overhead**: What parts of the codebase did you have to discover by searching that should have been documented? (e.g., patterns, conventions, module responsibilities) | ||
| 2. **Wrong assumptions**: Did you make incorrect assumptions due to missing or misleading documentation? | ||
| 3. **Repeated patterns**: Did you discover recurring patterns or conventions that aren't documented anywhere? | ||
| 4. **Missing context**: What background knowledge would have helped you start faster? (e.g., architecture decisions, data flow, naming conventions) | ||
| 5. **Tooling gaps**: Were there commands, scripts, or workflows that you had to figure out? | ||
|
|
||
| ## Step 2: Documentation Audit | ||
|
|
||
| For each friction point identified, determine the appropriate fix. Check the existing documentation to avoid duplicating what's already there: | ||
|
|
||
| - `AGENTS.md` — Top-level project instructions and component map | ||
| - `CLAUDE.md` — Entry point referencing AGENTS.md | ||
| - `docs/AGENTS.md` — Documentation site guide | ||
| - `infrahub_sdk/ctl/AGENTS.md` — CLI development guide | ||
| - `infrahub_sdk/pytest_plugin/AGENTS.md` — Pytest plugin guide | ||
| - `tests/AGENTS.md` — Testing guide | ||
|
|
||
| Read the relevant existing files to understand what's already documented before proposing changes. | ||
|
|
||
| ## Step 3: Generate Report | ||
|
|
||
| Present the feedback as a structured report with the following sections. Only include sections that have content — skip empty sections. | ||
|
|
||
| ### Format | ||
|
|
||
| ```markdown | ||
| ## Session Feedback Report | ||
|
|
||
| ### What I Was Working On | ||
| <!-- Brief summary of the task(s) performed in this conversation --> | ||
|
|
||
| ### Documentation Gaps | ||
| <!-- Things that should be documented but aren't --> | ||
|
|
||
| For each gap: | ||
|
|
||
| - **Topic**: What's missing | ||
| - **Where**: Which file should contain this (existing file to update, or new file to create) | ||
| - **Why**: How this would have helped during this conversation | ||
| - **Suggested content**: A draft of what should be added (be specific and actionable) | ||
|
|
||
| ### Documentation Corrections | ||
| <!-- Things that are documented but wrong or misleading --> | ||
|
|
||
| For each correction: | ||
|
|
||
| - **File**: Path to the file | ||
| - **Issue**: What's wrong or misleading | ||
| - **Fix**: What it should say instead | ||
|
|
||
| ### Discovered Patterns | ||
| <!-- Conventions or patterns found in the code that aren't documented --> | ||
|
|
||
| For each pattern: | ||
|
|
||
| - **Pattern**: Description of the convention | ||
| - **Evidence**: Where in the code this pattern is used (file paths) | ||
| - **Where to document**: Which AGENTS.md or guide file should capture this | ||
|
|
||
| ### Memory Updates | ||
| <!-- Propose additions/changes to MEMORY.md for cross-session persistence --> | ||
|
|
||
| For each update: | ||
|
|
||
| - **Action**: Add / Update / Remove | ||
| - **Content**: What to write | ||
| - **Reason**: Why this is worth remembering across sessions | ||
| ``` | ||
|
|
||
| ## Step 4: Apply Changes | ||
|
|
||
| After presenting the report, ask the user which changes they want to apply. Present the options: | ||
|
|
||
| 1. **Apply all** — Create/update all proposed documentation files and memory | ||
| 2. **Cherry-pick** — Let the user select which changes to apply | ||
| 3. **None** — Just keep the report as reference, don't modify any files | ||
|
|
||
|
|
||
| For approved changes: | ||
|
|
||
| - Edit existing files when updating documentation | ||
| - Create new files only when no appropriate existing file exists | ||
| - Update `MEMORY.md` with approved memory changes | ||
| - Keep all changes minimal and focused — don't over-document | ||
|
Comment on lines
+89
to
+92
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add a trailing blank line after the final list. The last list ends at EOF without a blank line after it, which breaks the repository markdown spacing rule. As per coding guidelines: "Add blank lines before and after lists in Markdown files". 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| Run a subset of fast CI checks locally. These are lightweight validations that catch common issues before pushing. Run all steps and report a summary at the end. | ||
|
|
||
| ## Steps | ||
|
|
||
| 1. **Format** Python code: | ||
| ```bash | ||
| uv run invoke format | ||
| ``` | ||
|
|
||
| 2. **Lint** (YAML, Ruff, ty, mypy, markdownlint, vale): | ||
| ```bash | ||
| uv run invoke lint | ||
| ``` | ||
|
|
||
| 3. **Python unit tests**: | ||
| ```bash | ||
| uv run pytest tests/unit/ | ||
| ``` | ||
|
|
||
| 4. **Docs unit tests** (vitest): | ||
| ```bash | ||
| (cd docs && npx --no-install vitest run) | ||
| ``` | ||
|
|
||
| 5. **Validate generated documentation** (regenerate and check for drift): | ||
| ```bash | ||
| uv run invoke docs-validate | ||
| ``` | ||
|
|
||
| ## Instructions | ||
|
|
||
| - Run each step in order using the Bash tool. | ||
| - If a step fails, continue with the remaining steps. | ||
| - At the end, print a summary table of all steps with pass/fail status. | ||
| - Do NOT commit or push anything. | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,4 @@ | ||
| # docs/AGENTS.md | ||
| # Documentation agents | ||
|
|
||
| Docusaurus documentation following Diataxis framework. | ||
|
|
||
|
|
@@ -8,8 +8,10 @@ Docusaurus documentation following Diataxis framework. | |
| cd docs && npm install # Install deps | ||
| cd docs && npm start # Dev server at localhost:3000 | ||
| cd docs && npm run build # Build static site | ||
| uv run invoke docs # Generate auto-docs | ||
| uv run invoke docs-validate # Validate docs are current | ||
| cd docs && npm test # Run sidebar utility tests | ||
| uv run invoke docs # Build documentation website | ||
| uv run invoke docs-generate # Regenerate all docs (infrahubctl CLI + Python SDK) | ||
| uv run invoke docs-validate # Check that generated docs match committed files | ||
| ``` | ||
|
|
||
| ## Structure | ||
|
|
@@ -23,13 +25,21 @@ docs/docs/ | |
| └── infrahubctl/ # CLI docs (auto-generated) | ||
| ``` | ||
|
|
||
| ## Adding Documentation | ||
| ## Sidebars | ||
|
|
||
| Sidebar navigation is dynamic: `sidebars-*.ts` files read the filesystem at build time via utility functions in `sidebar-utils.ts`. | ||
|
|
||
| - **infrahubctl**: all `.mdx` files are discovered automatically and sorted alphabetically. | ||
| - **python-sdk**: guides, topics, and reference sections preserve a defined display order; new files are appended alphabetically at the end. | ||
|
|
||
| No manual sidebar update is needed when adding a new `.mdx` file. However, to control the display order of a new page, add its doc ID to the ordered list in the corresponding `sidebars-*.ts` file. | ||
|
Comment on lines
+32
to
+35
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Insert a blank line after the sidebar bullet list. The paragraph starting at Line 35 should be separated from the list by a blank line. ✏️ Suggested fix - **infrahubctl**: all `.mdx` files are discovered automatically and sorted alphabetically.
- **python-sdk**: guides, topics, and reference sections preserve a defined display order; new files are appended alphabetically at the end.
+
No manual sidebar update is needed when adding a new `.mdx` file. However, to control the display order of a new page, add its doc ID to the ordered list in the corresponding `sidebars-*.ts` file.As per coding guidelines "Add blank lines before and after lists in Markdown files". 🤖 Prompt for AI Agents |
||
|
|
||
| ## Adding documentation | ||
|
|
||
| 1. Create MDX file in appropriate directory | ||
| 2. Add frontmatter with `title` | ||
| 3. Update `sidebars-*.ts` for navigation | ||
|
|
||
| ## MDX Pattern | ||
| ## MDX pattern | ||
|
|
||
| Use Tabs for async/sync examples, callouts for notes: | ||
|
|
||
|
|
@@ -52,9 +62,11 @@ Use callouts for important notes. | |
| ✅ **Always** | ||
|
|
||
| - Include both async/sync examples using Tabs | ||
| - Run `uv run invoke docs-validate` after code changes | ||
| - Run `uv run invoke docs-validate` after code changes to verify generated docs are up to date | ||
|
|
||
| 🚫 **Never** | ||
|
|
||
| - Edit `docs/infrahubctl/*.mdx` directly (regenerate with `uv run invoke generate-infrahubctl`) | ||
| - Edit `docs/python-sdk/reference/config.mdx` directly (regenerate with `uv run invoke generate-sdk`) | ||
| - Edit `docs/infrahubctl/*.mdx` directly (regenerate with `uv run invoke docs-generate`) | ||
| - Edit `docs/python-sdk/reference/config.mdx` directly (regenerate with `uv run invoke docs-generate`) | ||
| - Edit `docs/python-sdk/reference/templating.mdx` directly (regenerate with `uv run invoke docs-generate`) | ||
| - Edit `docs/python-sdk/sdk_ref/**/*.mdx` directly (regenerate with `uv run invoke docs-generate`) | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Keep
docs-validatein the required workflow.Line 59 now calls out
docs-generate, but it drops the follow-up validation step the repo expects after code changes. Please mentionuv run invoke docs-validatehere as well so the “Always” checklist matches the documented docs workflow.Suggested wording
Based on learnings,
Run uv run invoke docs-validate after making code changes to verify documentation is current.📝 Committable suggestion
🤖 Prompt for AI Agents