stub files and type containers for proxmoxer
Project description
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file proxmoxer_stubs-0.3.2.tar.gz.
File metadata
- Download URL: proxmoxer_stubs-0.3.2.tar.gz
- Upload date:
- Size: 270.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a11893488a992d00f59d5b72be5f8c99bdc8646f67de2aeae47856c41ce22459
|
|
| MD5 |
3b1b928f8416a316abc189390f3ffd39
|
|
| BLAKE2b-256 |
56f9103e227b81dae0c1dc3f969d40a2a34a42921b20553ad8df0a883562a033
|
File details
Details for the file proxmoxer_stubs-0.3.2-py3-none-any.whl.
File metadata
- Download URL: proxmoxer_stubs-0.3.2-py3-none-any.whl
- Upload date:
- Size: 291.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2bb1471a14c582f5d4fed6dbf5565cc15bcfe20b062c8b8984f6f1565d74c1b3
|
|
| MD5 |
dc38cacd5de7993671be5b2111579fda
|
|
| BLAKE2b-256 |
bbc8dbb852d793fdfbcaba14ed963909faf21e137def94a1eb5ab68b54ecc84d
|