| Age | Commit message (Collapse) | Author |
|
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.
|
|
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.
|
|
- requires-python: >=3.13 -> >=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 -> 3.13 (CI uses the matrix).
- Wheel build verified to include pyvyos/py.typed and to declare
Requires-Python: >=3.11 with requests as the only runtime requirement.
|
|
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.
|
|
- 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
|
|
- 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
|
|
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 -> 0.5 -> 0.6 -> 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).
|
|
added link to pypy https://pypi.org/project/pyvyos/
|
|
|
|
improved markdown
|
|
improved documentation with better names and .env example
|
|
fixed path error in docs
|
|
|
|
|
|
|
|
|
|
|