summaryrefslogtreecommitdiff
path: root/README.md
AgeCommit message (Collapse)Author
2026-05-19docs: cross-reference packer-vyos as related projectdocs/related-projectsRoberto Bertó
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.
2026-05-19tests: add live VyOS e2e harness on ProxmoxRoberto Bertó
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.
2026-05-19build: tighten runtime deps and lower Python floor to 3.11Roberto Bertó
- 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.
2026-05-19docs: split examples into read-only basic and guarded smokeRoberto Bertó
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.
2026-05-19docs: correct README and example to match actual APIRoberto Bertó
- 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
2026-05-19chore: trim root, move examples, drop committed uv.lockRoberto Bertó
- 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
2026-05-19docs: prepare v0.4.0 releaseRoberto Bertó
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).
2024-08-27Update README.mdRoberto Bertó
added link to pypy https://pypi.org/project/pyvyos/
2024-03-10rename to pyvyosRoberto Bertó
2023-12-14Update README.mdRoberto Bertó
improved markdown
2023-12-14Update README.mdRoberto Bertó
improved documentation with better names and .env example
2023-12-13Update README.mdRoberto Bertó
fixed path error in docs
2023-12-13read the docs in readme.mdRoberto Berto
2023-12-13version 0.2.0 with all api and testsRoberto Berto
2023-11-21Update README.md formattingRoberto Bertó
2023-11-21pypi example and README.mdRoberto Berto
2023-11-20Initial commitRoberto Bertó