<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pyvyos.git/README.md, branch dependabot/github_actions/actions/setup-python-6.3.0</title>
<subtitle>Python SDK for interacting with VyOS API (mirror of https://github.com/vyos-contrib/pyvyos.git)
</subtitle>
<id>https://git.amelek.net/vyos-contrib/pyvyos.git/atom?h=dependabot%2Fgithub_actions%2Factions%2Fsetup-python-6.3.0</id>
<link rel='self' href='https://git.amelek.net/vyos-contrib/pyvyos.git/atom?h=dependabot%2Fgithub_actions%2Factions%2Fsetup-python-6.3.0'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/'/>
<updated>2026-05-19T07:01:10+00:00</updated>
<entry>
<title>docs: cross-reference packer-vyos as related project</title>
<updated>2026-05-19T07:01:10+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>463349+robertoberto@users.noreply.github.com</email>
</author>
<published>2026-05-19T07:01:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=6786e67c809450926ef4f5a4c54afdb4c11e73a5'/>
<id>urn:sha1:6786e67c809450926ef4f5a4c54afdb4c11e73a5</id>
<content type='text'>
Add a "Related projects" section in the main README pointing to
vyos-contrib/packer-vyos, the Packer-based image builder that
produces ready-to-deploy VyOS images. The two projects are
complementary: packer-vyos builds the appliance, pyvyos drives it.

Also mention packer-vyos in tests/pve/README.md as an alternative
to the interactive install in phase 1 of the e2e harness — without
making the harness depend on it.

This commit is documentation only. It does not change pyvyos
behaviour, payloads, or public API.
</content>
</entry>
<entry>
<title>tests: add live VyOS e2e harness on Proxmox</title>
<updated>2026-05-19T06:05:43+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>463349+robertoberto@users.noreply.github.com</email>
</author>
<published>2026-05-19T06:05:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=bfcaffe9c55b687038eab337a718ea0a43f5e668'/>
<id>urn:sha1:bfcaffe9c55b687038eab337a718ea0a43f5e668</id>
<content type='text'>
Adds an opt-in end-to-end harness that runs pyvyos against a real
VyOS HTTPS API on a Proxmox VE host.

  tests/pve/      shell-based VM lifecycle on a remote PVE host:
                  preflight, ensure-template (state-machine over the
                  VMID with manual-install phase 1 and cloud-init
                  phase 2), create/start/stop/destroy, run-e2e.
                  Cloud-init seed ISO is generated on the PVE host
                  itself; nothing local-side beyond ssh is required.
                  .env is gitignored; .env.example documents the
                  full set of variables.

  tests/e2e/      pytest suite that exercises the public methods
                  most likely to regress on a payload change:
                  show, retrieve_show_config, configure_set /
                  retrieve_return_values / configure_delete round
                  trip, and configure_multiple_op batch. Auto-skipped
                  unless PYVYOS_E2E=1.

The cloud-init template now sets 'service https api rest' before
the API key. Without that flag VyOS only exposes /info; the other
HTTPS routes return 404. README and tests/pve/README document the
requirement, both for cloud-init and for the manual-fallback path.

Also fixes a pre-existing footgun in pyproject.toml: the pytest-env
defaults overwrote VYDEVICE_HOSTNAME from the shell, which made
the e2e tests silently aim at the stale 192.168.56.100 fixture
host. The entries now use the 'D:' (default) prefix so live runs
can override from the environment as expected.

Validated against VyOS rolling 2026.05.18-0045: 4 e2e + 57 unit
tests pass.

This commit does not change pyvyos HTTP payloads, request handling,
or response parsing.
</content>
</entry>
<entry>
<title>build: tighten runtime deps and lower Python floor to 3.11</title>
<updated>2026-05-19T03:06:11+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>463349+robertoberto@users.noreply.github.com</email>
</author>
<published>2026-05-19T03:06:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=7aa4989061950a336287cd8b581813ccd60b1832'/>
<id>urn:sha1:7aa4989061950a336287cd8b581813ccd60b1832</id>
<content type='text'>
- requires-python: &gt;=3.13 -&gt; &gt;=3.11. The code does not use any
  3.13-only feature. typing.List/Dict/Union/Optional throughout, no
  PEP 695 generics, no Self, no match. Classifiers updated to advertise
  3.11/3.12/3.13.
- runtime dependencies: trim to requests only.
  - python-dotenv is only used by examples; move to the dev extra.
  - urllib3 is never imported by pyvyos directly; it remains available
    transitively through requests.
- pre-existing dev tooling (pytest, pytest-cov, pytest-env) untouched.
- CI: PR validation runs on a 3.11/3.12/3.13 matrix.
- README: reword the Python requirement.
- .python-version: 3.13.0 -&gt; 3.13 (CI uses the matrix).
- Wheel build verified to include pyvyos/py.typed and to declare
  Requires-Python: &gt;=3.11 with requests as the only runtime requirement.
</content>
</entry>
<entry>
<title>docs: split examples into read-only basic and guarded smoke</title>
<updated>2026-05-19T03:02:52+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>463349+robertoberto@users.noreply.github.com</email>
</author>
<published>2026-05-19T03:02:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=b2f1765d286502307ea07a62648718d0414e4f39'/>
<id>urn:sha1:b2f1765d286502307ea07a62648718d0414e4f39</id>
<content type='text'>
The previous examples/basic.py ran destructive operations (configure_set,
configure_delete, generate, reset, config_file_load) by default.  That is
not what a public 'basic' example should do.

- examples/basic.py: rewritten as a read-only example
  (retrieve_show_config, show, retrieve_return_values), uses a robust
  env-bool parser, prints response.result via a small helper, and uses
  the supported public import 'from pyvyos import ApiResponse, VyDevice'.
- examples/integration_smoke.py: renamed from the old basic.py, keeps
  the mutating operations, and refuses to run unless
  PYVYOS_ALLOW_MUTATING_EXAMPLE=1 is set.
- README: link both examples and describe what each one does.

Note: the dev/ note about a future Docker-based e2e harness is tracked
in the unreleased issue drafts; it is not part of this release.
</content>
</entry>
<entry>
<title>docs: correct README and example to match actual API</title>
<updated>2026-05-19T02:57:11+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>463349+robertoberto@users.noreply.github.com</email>
</author>
<published>2026-05-19T02:57:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=4c19d27c2cf87176dfb983ccc65f2c817ff1f650'/>
<id>urn:sha1:4c19d27c2cf87176dfb983ccc65f2c817ff1f650</id>
<content type='text'>
- configure_multiple_op uses op_path=, not path=
- ApiResponse.result is dict | list | str | None (varies per endpoint),
  not just dict | list
- VYDEVICE_VERIFY_SSL parsing accepts 1/true/yes
- describe logging accurately: log records only carry structural fields
  (no payload, no key); sanitization applies to ApiResponse.request, not
  to logs; do not claim a NullHandler is attached (none is)
- shims at 1.0.0: phrase as a decision deferred to release time
</content>
</entry>
<entry>
<title>chore: trim root, move examples, drop committed uv.lock</title>
<updated>2026-05-19T02:54:59+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>463349+robertoberto@users.noreply.github.com</email>
</author>
<published>2026-05-19T02:54:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=a2df70609a4711b4eb673f28cee3e6f72414148a'/>
<id>urn:sha1:a2df70609a4711b4eb673f28cee3e6f72414148a</id>
<content type='text'>
- delete CONTRIB.md (superseded by CONTRIBUTING.md)
- delete requirements.txt (duplicated [project].dependencies)
- delete test_quick.py (ad-hoc smoke covered by tests/test_shims.py)
- rewrite example.py as examples/basic.py using the public API
  (from pyvyos import VyDevice) and drop the RuntimeWarning suppression
- move vagrant/ to examples/vagrant/
- stop tracking uv.lock and add it to .gitignore (library, not app)
- README: link the examples/ directory
- CHANGELOG: document the moves and removals
</content>
</entry>
<entry>
<title>docs: prepare v0.4.0 release</title>
<updated>2026-05-19T02:39:01+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>463349+robertoberto@users.noreply.github.com</email>
</author>
<published>2026-05-19T02:39:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=bf4e309a698592cdb815580f97db97b268fd6668'/>
<id>urn:sha1:bf4e309a698592cdb815580f97db97b268fd6668</id>
<content type='text'>
Rewrite the README around the supported public API, add a public API
stability policy, document the deprecation timeline, and refresh the
CHANGELOG with the full 0.4.0 scope. Add a short CONTRIBUTING guide.
Apply minor pending fixes to LICENSE and .env.example. Fix a couple of
verify=False antipatterns in the docs/ pages.

README:
- Badges (PyPI version, Python versions, license, CI).
- Quick start that actually runs (no missing import, no global
  disable_warnings, correct VYDEVICE_VERIFY_SSL parse).
- Environment variable table with defaults.
- ApiResponse contract documented as a dataclass.
- Compact API overview (configure / retrieve / show / generate / reset /
  config-file / system / image).
- Public API stability section with the 0.4 -&gt; 0.5 -&gt; 0.6 -&gt; 1.0
  deprecation timeline.
- Logging section: NullHandler default, pyvyos logger, redacted key.
- VyOS compatibility note (1.4 LTS, 1.5 rolling).
- Development with uv; optional pre-commit.

CHANGELOG:
- Consolidated 0.4.0 entry covering both the architecture refactor and
  this cleanup, since 0.4.0 was tagged in git but never published.
- Explicit Added / Changed / Removed / Fixed / Compatibility / Notes
  sections.
- 0.3.0 entry annotated as 'tagged but never released to PyPI'.

CONTRIBUTING.md:
- Scope statement (thin HTTPS API wrapper).
- Pull request rules; explicit 'do not change HTTP payload in passing'.
- Development setup with uv.
- Public API stability summary.

Fixes from the previous review-fixes branch:
- LICENSE copyright now reads 'GravScale, Roberto Berto'.
- .env.example default flipped to VYDEVICE_VERIFY_SSL=true with
  field descriptions.
- docs/getting-started.md: VERIFY_SSL default to true; urllib3
  disable_warnings now passes the specific InsecureRequestWarning.
- docs/index.md: quick example uses verify=True; removed RTD link
  (RTD config was removed in this release because the build never
  worked).
</content>
</entry>
<entry>
<title>Update README.md</title>
<updated>2024-08-27T18:42:35+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>463349+robertoberto@users.noreply.github.com</email>
</author>
<published>2024-08-27T18:42:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=b50ed288205a53fc1b1610bb279f4be195cf0577'/>
<id>urn:sha1:b50ed288205a53fc1b1610bb279f4be195cf0577</id>
<content type='text'>
added link to pypy https://pypi.org/project/pyvyos/</content>
</entry>
<entry>
<title>rename to pyvyos</title>
<updated>2024-03-10T16:04:21+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>roberto.berto@gmail.com</email>
</author>
<published>2024-03-10T16:04:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=41ec3fed68fe914839096d1b175566f9914dcaa3'/>
<id>urn:sha1:41ec3fed68fe914839096d1b175566f9914dcaa3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update README.md</title>
<updated>2023-12-14T16:20:42+00:00</updated>
<author>
<name>Roberto Bertó</name>
<email>roberto.berto@gmail.com</email>
</author>
<published>2023-12-14T16:20:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos-contrib/pyvyos.git/commit/?id=067511871fc6f870aadb16be1ec108427d7881cd'/>
<id>urn:sha1:067511871fc6f870aadb16be1ec108427d7881cd</id>
<content type='text'>
improved markdown</content>
</entry>
</feed>
