Skip to main content

proxmoxer-stubs

Type annotations for data obtained by proxmoxer.ProxmoxAPI calls.

Usage

Annotations only

import typing
import proxmoxer

api = proxmoxer.ProxmoxAPI()

typing.reveal_type(api.cluster.replication("some-id").get())
replication.py:6: note: Revealed type is "TypedDict('proxmoxer_types.v9.core.ProxmoxAPI.Cluster.Replication.Id._Get.TypedDict', {'comment'?: builtins.str, 'digest'?: builtins.str, 'disable'?: builtins.bool, 'guest': builtins.int, 'id': builtins.str, 'jobnum': builtins.int, 'rate'?: builtins.float, 'remove_job'?: builtins.str, 'schedule'?: builtins.str, 'source'?: builtins.str, 'target': builtins.str, 'type': builtins.str})"
Success: no issues found in 1 source file
reveal_type(proxmoxer.ProxmoxAPI().cluster.firewall.groups("foo")(42).get().get("log"))
log.py:4: note: Revealed type is "Literal['emerg'] | Literal['alert'] | Literal['crit'] | Literal['err'] | Literal['warning'] | Literal['notice'] | Literal['info'] | Literal['debug'] | Literal['nolog'] | None"
Success: no issues found in 1 source file

For a legacy REST-API:

import typing

if typing.TYPE_CHECKING:
    import proxmoxer_types.v8 as proxmoxer
else:
    import proxmoxer

api = proxmoxer.ProxmoxAPI()

typing.reveal_type(api.cluster.replication("some-id").get())
legacy.py:10: note: Revealed type is "builtins.dict[builtins.str, Any]"
Success: no issues found in 1 source file

Dependencies

  • For type checking: proxmoxer-stubs, pydantic
  • At runtime: None

Wrapper mode

Example from proxmoxer:

from proxmoxer import ProxmoxAPI

proxmox = ProxmoxAPI(
    "proxmox_host", user="admin@pam", password="secret_word", verify_ssl=False
)

for node in proxmox.nodes.get():
    for vm in proxmox.nodes(node["node"]).qemu.get():
        print(f"{vm['vmid']}. {vm['name']} => {vm['status']}")

The above works the same in wrapper mode:

from proxmoxer_types.v9 import ProxmoxAPI

proxmox = ProxmoxAPI(
    "proxmox_host", user="admin@pam", password="secret_word", verify_ssl=False
)

for node in proxmox.nodes.get():
    for vm in proxmox.nodes(node["node"]).qemu.get():
        print(f"{vm['vmid']}. {vm['name']} => {vm['status']}")

The returned objects in both above cases are built-in types, possibly nested in list or dict. Working with those may be inconvenient, as optional dict keys may not exist at all. For convenience the following is possible:

for node in proxmox.nodes.get.model():
    for vm in proxmox.nodes(node.node).qemu.get.model():
        print(f"{vm.vmid}. {vm.name} => {vm.status}")

Whenever a method(...) call - method being get, post, put, delete, set or create - returns a structure that is or contains a TypedDict-annotated dict, method.model(...) returns a pydantic.BaseModel instead.

Values of optional fields are possibly None in the model instance.

Additional dependencies

  • For type checking: proxmoxer-stubs, pydantic
  • At runtime: proxmoxer-stubs, pydantic

Caveats

proxmoxer.ProxmoxAPI has several ways of expressing the same endpoint due to its magic implementation.

>>> api.cluster.replication("some-id")
ProxmoxResource (/cluster/replication/some-id)
>>>
>>> api("cluster/replication/some-id")
ProxmoxResource (/cluster/replication/some-id)
>>>
>>> api("cluster")("replication")("some-id")
ProxmoxResource (/cluster/replication/some-id)

Only the first form will produce useful typing insights.

Parameters to get, post, put, delete, set, create are currently not individually annotated.

The API documentation is occasionally wrong or incomplete. In wrapper mode, pydantic will raise a ValidationError if the documentation is wrong.

Metadata

Release files for proxmoxer-stubs 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for proxmoxer-stubs 0.5.1
File Size Uploaded
proxmoxer_stubs-0.5.1.tar.gz 272.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for proxmoxer-stubs 0.5.1
File Interpreter ABI Platform
proxmoxer_stubs-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 564.3 kB

Release files / proxmoxer_stubs-0.5.1.tar.gz

Download URL proxmoxer_stubs-0.5.1.tar.gz
Size 272.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2f67c7d939d4b07bc2a1a6ad46e86aa44f34e8b5166c4ec1c0279948579dd16d
BLAKE2b-256 checksum
How to use checksums
3d94f85e7c7016e79a5bc71c3d37da117ea350507e4a3f86959cb17f495a7d80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / proxmoxer_stubs-0.5.1-py3-none-any.whl

Download URL proxmoxer_stubs-0.5.1-py3-none-any.whl
Size 292.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3fb65ecab2297d4bacdb0fd3f212ff503e8e8938d29dbd033e3eaf44c6e96266
BLAKE2b-256 checksum
How to use checksums
040bb73ead095465cb011086489cb692f61bf5cff49a0466bd87ca45ba494c9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page