glpi-python-client 0.6.4__tar.gz → 0.6.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/CHANGELOG.md +23 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/PKG-INFO +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/user_guide.rst +19 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/__init__.py +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/content/conversion.py +59 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/management/_document.py +14 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/pyproject.toml +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-asset-workflow/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-client-setup/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-contract-workflow/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-document-workflow/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-knowledge-base/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-plugin-fields/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-reporting-and-context/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-team-members/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-ticket-timeline/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-ticket-workflow/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-user-location-provisioning/SKILL.md +1 -1
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/.gitignore +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/.pre-commit-config.yaml +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/.readthedocs.yaml +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/CONTRIBUTING.md +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/LICENSE +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/README.md +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/_static/.gitkeep +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/api_reference.rst +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/conf.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/development.md +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/development_rtd.rst +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/index.rst +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/installation.rst +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/publishing.md +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/publishing_rtd.rst +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/docs/sponsoring.rst +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/_concurrency.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/_testing.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/auth/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/auth/_v1_session.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/auth/auth.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/_base_client.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/administration/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/administration/_entity.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/administration/_user.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assets/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assets/_computer.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assistance/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assistance/_team.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assistance/_ticket.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assistance/timeline/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assistance/timeline/_document.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assistance/timeline/_followup.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assistance/timeline/_solution.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/assistance/timeline/_task.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/dropdowns/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/dropdowns/_contract_type.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/dropdowns/_location.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/knowledgebase/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/knowledgebase/_article.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/knowledgebase/_category.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/knowledgebase/_comment.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/knowledgebase/_revision.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/management/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/management/_contract.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/management/_document.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/plugins/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/api/plugins/_fields.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/client.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/commons/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/commons/_config.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/commons/_constants.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/commons/_filters.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/commons/_http.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/commons/_payloads.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/commons/_transport.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/custom/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/custom/_statistics.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/custom/_ticket_context.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_errors.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/_concurrency.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/_testing.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/auth/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/auth/_v1_session.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/auth/auth.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/_base_client.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/administration/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/administration/_entity.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/administration/_user.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assets/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assets/_computer.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assistance/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assistance/_team.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assistance/_ticket.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assistance/timeline/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assistance/timeline/_document.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assistance/timeline/_followup.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assistance/timeline/_solution.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/assistance/timeline/_task.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/dropdowns/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/dropdowns/_contract_type.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/dropdowns/_location.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/knowledgebase/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/knowledgebase/_article.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/knowledgebase/_category.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/knowledgebase/_comment.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/knowledgebase/_revision.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/management/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/management/_contract.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/management/_document.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/plugins/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/api/plugins/_fields.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/client.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/commons/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/commons/_config.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/commons/_constants.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/commons/_filters.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/commons/_http.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/commons/_payloads.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/commons/_transport.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/custom/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/custom/_statistics.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/custom/_ticket_context.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/content/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/_base.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/_common.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/_content.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/administration/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/administration/_entity.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/administration/_user.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assets/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assets/_computer.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assets/_contract_item.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assistance/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assistance/_team.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assistance/_ticket.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assistance/timeline/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assistance/timeline/_document.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assistance/timeline/_followup.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assistance/timeline/_solution.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/assistance/timeline/_task.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/dropdowns/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/dropdowns/_contract_type.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/dropdowns/_location.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/enums.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/knowledgebase/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/knowledgebase/_article.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/knowledgebase/_category.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/knowledgebase/_comment.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/knowledgebase/_revision.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/management/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/management/_contract.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/management/_contract_cost.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/management/_document_item.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/plugins/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/plugins/_fields.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/custom_schema/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/custom_schema/_ticket_context.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/py.typed +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/rsql.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/testing/__init__.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/testing/fixtures.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/testing/utils.py +0 -0
- {glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/README.md +0 -0
|
@@ -4,6 +4,29 @@ All notable changes to this project are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
6
6
|
|
|
7
|
+
## 0.6.5 — 2026-10-14
|
|
8
|
+
|
|
9
|
+
A patch release that lets a caller find the Document behind an image GLPI left
|
|
10
|
+
as a raw `data:` URI. GLPI may keep a large pasted image in the stored body as
|
|
11
|
+
`<img id="..." src="data:image/png;base64,...">` instead of rewriting it into
|
|
12
|
+
a document link, while still creating its Document, whose tag equals the
|
|
13
|
+
image's `id`. Existing methods are unchanged.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **`Link.image_id`**, a new last field of the `Link` the `rewrite_link`
|
|
18
|
+
callback receives: for an `<img>`, the value of its `id` attribute (trimmed;
|
|
19
|
+
`None` when absent or blank); always `None` for a link.
|
|
20
|
+
- **`GlpiContentConverter.data_image_ids(html)`** returns, in document order
|
|
21
|
+
and without duplicates, the `id` of every `<img>` whose `src` is a `data:`
|
|
22
|
+
URI, so a caller can tell whether it needs to read any Document at all. It
|
|
23
|
+
does not decode the base64, and leaves out an image inside `<pre>`, `<code>`,
|
|
24
|
+
`<kbd>` or `<samp>`, which the reader never offers to `rewrite_link`.
|
|
25
|
+
- **`GetDocument.tag`**, a read-only property: the Document's tag from
|
|
26
|
+
`extra_payload`, or `None` when absent or not a non-empty string. GLPI sets a
|
|
27
|
+
tag on the Documents it creates from an upload or an editor paste, images or
|
|
28
|
+
not.
|
|
29
|
+
|
|
7
30
|
## 0.6.4 — 2026-10-12
|
|
8
31
|
|
|
9
32
|
A patch release that reads the documents GLPI links to a followup. GLPI's
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: glpi-python-client
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.5
|
|
4
4
|
Summary: A typed Python client for GLPI ITSM APIs.
|
|
5
5
|
Project-URL: Homepage, https://github.com/baraline/glpi_python_client
|
|
6
6
|
Project-URL: Documentation, https://glpi-python-client.readthedocs.io/en/latest/
|
|
@@ -2007,6 +2007,25 @@ other type raises ``TypeError``. It is not called for a value passed through
|
|
|
2007
2007
|
as Markdown (``plain_text_is_markdown=True``), nor for a body read as its text.
|
|
2008
2008
|
``easyvista-python-client`` 0.4.3 carries the same hook.
|
|
2009
2009
|
|
|
2010
|
+
GLPI does not always rewrite a pasted image into a document link. A large one
|
|
2011
|
+
can stay in the stored body as ``<img id="tag-1" src="data:image/png;base64,...">``
|
|
2012
|
+
while GLPI still creates its Document, whose tag is the image's ``id``. For
|
|
2013
|
+
such an image ``Link.image_id`` is that ``id`` and ``href`` is the data URI;
|
|
2014
|
+
``GlpiContentConverter.data_image_ids(html)`` lists those ids without
|
|
2015
|
+
converting, so a caller reads Documents only when a body needs it. A
|
|
2016
|
+
:class:`~glpi_python_client.models.GetDocument` exposes its tag as ``tag``:
|
|
2017
|
+
|
|
2018
|
+
.. code-block:: python
|
|
2019
|
+
|
|
2020
|
+
ids = GlpiContentConverter.data_image_ids(body)
|
|
2021
|
+
if ids:
|
|
2022
|
+
by_tag = {d.tag: d for d in documents if d.tag}
|
|
2023
|
+
matched = [by_tag[i] for i in ids if i in by_tag]
|
|
2024
|
+
|
|
2025
|
+
The ``id`` is body text, and anyone who can write the body can forge it. Match
|
|
2026
|
+
it only against Documents the caller already trusts, such as the same
|
|
2027
|
+
ticket's own, never against every Document the instance holds.
|
|
2028
|
+
|
|
2010
2029
|
It is not a sanitiser
|
|
2011
2030
|
^^^^^^^^^^^^^^^^^^^^^
|
|
2012
2031
|
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/content/conversion.py
RENAMED
|
@@ -179,6 +179,30 @@ def _plain_text_html(text: str) -> str:
|
|
|
179
179
|
return "<p>" + "<br>".join(lines) + "</p>"
|
|
180
180
|
|
|
181
181
|
|
|
182
|
+
#: What a browser strips from the front of a URL, and drops from inside one.
|
|
183
|
+
_URL_LEADING = "".join(chr(c) for c in range(0x21))
|
|
184
|
+
_URL_INNER = str.maketrans("", "", "\t\r\n")
|
|
185
|
+
|
|
186
|
+
#: The elements inside which the reader writes no image, so offers none.
|
|
187
|
+
_UNFORMATTED = ("pre", "code", "kbd", "samp")
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def _is_data_uri(src: str) -> bool:
|
|
191
|
+
"""Whether a browser reads ``src`` as a ``data:`` URI.
|
|
192
|
+
|
|
193
|
+
The scheme is case-insensitive, leading C0 controls and spaces are
|
|
194
|
+
stripped, and tabs and line breaks are dropped wherever they are.
|
|
195
|
+
"""
|
|
196
|
+
|
|
197
|
+
return src.lstrip(_URL_LEADING).translate(_URL_INNER).casefold().startswith("data:")
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def _image_id(el: Tag) -> str | None:
|
|
201
|
+
"""The trimmed ``id`` of an element, or ``None`` when it has none."""
|
|
202
|
+
|
|
203
|
+
return str(el.get("id") or "").strip() or None
|
|
204
|
+
|
|
205
|
+
|
|
182
206
|
def _soup(html: str) -> BeautifulSoup:
|
|
183
207
|
"""Parse ``html`` and drop what a browser does not display."""
|
|
184
208
|
|
|
@@ -402,6 +426,12 @@ class Link:
|
|
|
402
426
|
enclosing_href : str or None
|
|
403
427
|
For an ``<img>`` inside a link, that link's ``href``; ``None``
|
|
404
428
|
otherwise. The image is read before the link around it.
|
|
429
|
+
image_id : str or None
|
|
430
|
+
For an ``<img>``, the value of its ``id`` attribute, trimmed, or
|
|
431
|
+
``None`` when it has none or the element is a link. GLPI sets it to
|
|
432
|
+
the tag of the Document it created for an image it has not rewritten
|
|
433
|
+
into a document link, and that Document carries the same value as its
|
|
434
|
+
tag, so a caller can find it.
|
|
405
435
|
"""
|
|
406
436
|
|
|
407
437
|
href: str
|
|
@@ -410,6 +440,7 @@ class Link:
|
|
|
410
440
|
image: bool = False
|
|
411
441
|
document_id: int | None = None
|
|
412
442
|
enclosing_href: str | None = None
|
|
443
|
+
image_id: str | None = None
|
|
413
444
|
|
|
414
445
|
|
|
415
446
|
#: A ``rewrite_link`` callback: called with each link and image a read meets,
|
|
@@ -664,6 +695,7 @@ class _Converter(MarkdownConverter):
|
|
|
664
695
|
enclosing_href=(
|
|
665
696
|
None if around is None else str(around.get("href") or "")
|
|
666
697
|
),
|
|
698
|
+
image_id=_image_id(el),
|
|
667
699
|
)
|
|
668
700
|
)
|
|
669
701
|
if isinstance(answer, str):
|
|
@@ -1021,6 +1053,33 @@ class GlpiContentConverter:
|
|
|
1021
1053
|
document_id = int(values[0])
|
|
1022
1054
|
return document_id if document_id > 0 else None
|
|
1023
1055
|
|
|
1056
|
+
@staticmethod
|
|
1057
|
+
def data_image_ids(html: str) -> tuple[str, ...]:
|
|
1058
|
+
"""Return the ``id`` of every image a body keeps as a ``data:`` URI.
|
|
1059
|
+
|
|
1060
|
+
Each ``<img>`` whose ``src`` a browser reads as a ``data:`` URI and
|
|
1061
|
+
that has a non-empty ``id`` contributes it, in document order and
|
|
1062
|
+
without repeats. The base64 is not decoded. An image inside ``<pre>``,
|
|
1063
|
+
``<code>``, ``<kbd>`` or ``<samp>`` is left out: the reader shows it
|
|
1064
|
+
as no image, so it never offers it to ``rewrite_link`` either.
|
|
1065
|
+
|
|
1066
|
+
GLPI sets a tag on the Documents it creates from an upload or an
|
|
1067
|
+
editor paste, images or not. For an image it has not rewritten into a
|
|
1068
|
+
document link, that tag is the ``id`` of the ``<img>``
|
|
1069
|
+
(:attr:`Link.image_id`, :attr:`GetDocument.tag`). A caller calls this
|
|
1070
|
+
first, to decide whether it needs to read any Document at all.
|
|
1071
|
+
"""
|
|
1072
|
+
|
|
1073
|
+
if "<" not in html:
|
|
1074
|
+
return ()
|
|
1075
|
+
ids = (
|
|
1076
|
+
_image_id(img)
|
|
1077
|
+
for img in _soup(html).find_all("img")
|
|
1078
|
+
if _is_data_uri(str(img.get("src") or ""))
|
|
1079
|
+
and img.find_parent(_UNFORMATTED) is None
|
|
1080
|
+
)
|
|
1081
|
+
return tuple(dict.fromkeys(i for i in ids if i is not None))
|
|
1082
|
+
|
|
1024
1083
|
@staticmethod
|
|
1025
1084
|
def document_image(
|
|
1026
1085
|
document_id: int,
|
|
@@ -61,6 +61,20 @@ class GetDocument(GlpiModel):
|
|
|
61
61
|
mime: str | None = None
|
|
62
62
|
sha1sum: str | None = None
|
|
63
63
|
|
|
64
|
+
@property
|
|
65
|
+
def tag(self) -> str | None:
|
|
66
|
+
"""The tag GLPI gave the Document, or ``None``.
|
|
67
|
+
|
|
68
|
+
GLPI sets a tag on the Documents it creates from an upload or an
|
|
69
|
+
editor paste, images or not. For an image it has not rewritten into
|
|
70
|
+
a document link, it is the ``id`` of the ``<img>`` left in the body
|
|
71
|
+
(see ``GlpiContentConverter.data_image_ids``). Read from
|
|
72
|
+
``extra_payload``; ``None`` when absent, empty or not a string.
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
value = self.extra_payload.get("tag")
|
|
76
|
+
return value if isinstance(value, str) and value else None
|
|
77
|
+
|
|
64
78
|
|
|
65
79
|
class PostDocument(GlpiModel):
|
|
66
80
|
"""Request body for ``POST /Management/Document``.
|
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
compatibility: "Requires Python 3.11+, glpi-python-client, network access to the GLPI v2 API, and credentials allowed to read or write assets."
|
|
6
6
|
metadata:
|
|
7
7
|
package: glpi-python-client
|
|
8
|
-
version: "0.6.
|
|
8
|
+
version: "0.6.5"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# GLPI Asset Workflow
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-contract-workflow/SKILL.md
RENAMED
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
compatibility: "Requires Python 3.11+, glpi-python-client, network access to the GLPI v2 API, and credentials allowed to read or write contracts."
|
|
6
6
|
metadata:
|
|
7
7
|
package: glpi-python-client
|
|
8
|
-
version: "0.6.
|
|
8
|
+
version: "0.6.5"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# GLPI Contract Workflow
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-document-workflow/SKILL.md
RENAMED
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
compatibility: "Requires Python 3.11+, glpi-python-client, network access to the GLPI v2 API, and v1 credentials configured on the client for binary uploads."
|
|
6
6
|
metadata:
|
|
7
7
|
package: glpi-python-client
|
|
8
|
-
version: "0.6.
|
|
8
|
+
version: "0.6.5"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# GLPI Document Workflow
|
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
compatibility: "Requires Python 3.11+, glpi-python-client, network access to the GLPI v2 API, and — for category writes only — a legacy v1 session (v1_base_url + v1_user_token)."
|
|
6
6
|
metadata:
|
|
7
7
|
package: glpi-python-client
|
|
8
|
-
version: "0.6.
|
|
8
|
+
version: "0.6.5"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# GLPI Knowledge Base
|
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
compatibility: "Requires Python 3.11+, glpi-python-client, the GLPI Fields plugin installed server-side, and a legacy v1 session (v1_base_url + v1_user_token) — every method in this family goes over the v1 API."
|
|
6
6
|
metadata:
|
|
7
7
|
package: glpi-python-client
|
|
8
|
-
version: "0.6.
|
|
8
|
+
version: "0.6.5"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# GLPI Plugin Fields
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/skills/glpi-reporting-and-context/SKILL.md
RENAMED
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
compatibility: "Requires Python 3.11+, glpi-python-client, network access to the GLPI v2 API, and credentials allowed to read tickets, tasks, users, entities, and timeline records."
|
|
6
6
|
metadata:
|
|
7
7
|
package: glpi-python-client
|
|
8
|
-
version: "0.6.
|
|
8
|
+
version: "0.6.5"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# GLPI Reporting And Context
|
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
compatibility: "Requires Python 3.11+, glpi-python-client, network access to the GLPI v2 API, and credentials allowed to manage ticket teams."
|
|
6
6
|
metadata:
|
|
7
7
|
package: glpi-python-client
|
|
8
|
-
version: "0.6.
|
|
8
|
+
version: "0.6.5"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# GLPI Team Members
|
|
@@ -5,7 +5,7 @@ license: MIT
|
|
|
5
5
|
compatibility: "Requires Python 3.11+, glpi-python-client, network access to the GLPI v2 API, and credentials allowed to read or write users, locations, and entities."
|
|
6
6
|
metadata:
|
|
7
7
|
package: glpi-python-client
|
|
8
|
-
version: "0.6.
|
|
8
|
+
version: "0.6.5"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# GLPI User, Location, And Entity Provisioning
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/_concurrency.py
RENAMED
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/auth/__init__.py
RENAMED
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/auth/_v1_session.py
RENAMED
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/auth/auth.py
RENAMED
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_async/clients/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/_concurrency.py
RENAMED
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/auth/__init__.py
RENAMED
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/auth/_v1_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/_sync/clients/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/content/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/models/api_schema/enums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/testing/__init__.py
RENAMED
|
File without changes
|
{glpi_python_client-0.6.4 → glpi_python_client-0.6.5}/glpi_python_client/testing/fixtures.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|