mreg-cli 1.11.0__tar.gz → 1.12.0__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.
Files changed (110) hide show
  1. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/CHANGELOG.md +7 -0
  2. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/CLAUDE.md +0 -14
  3. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/PKG-INFO +2 -2
  4. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/ci/docker-compose.yml +1 -1
  5. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/ci/testsuite-result.json +427 -361
  6. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/_version.py +3 -3
  7. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/cli.py +2 -2
  8. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/help.py +4 -12
  9. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/host_submodules/core.py +2 -2
  10. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/policy.py +3 -3
  11. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/exceptions.py +22 -57
  12. mreg_cli-1.12.0/mreg_cli/output/history.py +57 -0
  13. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/output/policy.py +1 -1
  14. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/utilities/api.py +1 -3
  15. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli.egg-info/PKG-INFO +2 -2
  16. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli.egg-info/requires.txt +1 -1
  17. mreg_cli-1.12.0/mreg_cli.egg-info/scm_version.json +8 -0
  18. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/pyproject.toml +1 -1
  19. mreg_cli-1.12.0/tests/test_exceptions.py +291 -0
  20. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/uv.lock +4 -4
  21. mreg_cli-1.11.0/mreg_cli/output/history.py +0 -106
  22. mreg_cli-1.11.0/mreg_cli.egg-info/scm_version.json +0 -8
  23. mreg_cli-1.11.0/tests/test_exceptions.py +0 -164
  24. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/.github/workflows/publish.yml +0 -0
  25. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/.github/workflows/test.yml +0 -0
  26. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/.gitignore +0 -0
  27. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/.markdownlint.json +0 -0
  28. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/AUTHORS +0 -0
  29. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/CONTRIBUTING +0 -0
  30. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/LICENSE +0 -0
  31. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/README.md +0 -0
  32. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/ci/Dockerfile +0 -0
  33. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/ci/diff.py +0 -0
  34. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/ci/run_testsuite_and_record_V2.sh +0 -0
  35. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/ci/testsuite +0 -0
  36. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/data/mreg-cli.conf +0 -0
  37. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/__about__.py +0 -0
  38. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/__init__.py +0 -0
  39. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/__main__.py +0 -0
  40. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/choices.py +0 -0
  41. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/client.py +0 -0
  42. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/__init__.py +0 -0
  43. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/base.py +0 -0
  44. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/cache.py +0 -0
  45. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/dhcp.py +0 -0
  46. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/group.py +0 -0
  47. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/host.py +0 -0
  48. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/host_submodules/__init__.py +0 -0
  49. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/host_submodules/a_aaaa.py +0 -0
  50. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/host_submodules/bacnet.py +0 -0
  51. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/host_submodules/cname.py +0 -0
  52. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/host_submodules/rr.py +0 -0
  53. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/label.py +0 -0
  54. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/logging.py +0 -0
  55. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/network.py +0 -0
  56. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/permission.py +0 -0
  57. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/recording.py +0 -0
  58. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/registry.py +0 -0
  59. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/root.py +0 -0
  60. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/commands/zone.py +0 -0
  61. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/config.py +0 -0
  62. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/dirs.py +0 -0
  63. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/errorbuilder.py +0 -0
  64. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/help_formatter.py +0 -0
  65. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/log.py +0 -0
  66. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/main.py +0 -0
  67. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/output/__init__.py +0 -0
  68. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/output/base.py +0 -0
  69. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/output/cache.py +0 -0
  70. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/output/group.py +0 -0
  71. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/output/host.py +0 -0
  72. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/output/meta.py +0 -0
  73. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/output/network.py +0 -0
  74. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/output/zone.py +0 -0
  75. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/outputmanager.py +0 -0
  76. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/prompt.py +0 -0
  77. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/py.typed +0 -0
  78. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/tags.txt +0 -0
  79. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/tokenfile.py +0 -0
  80. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/types.py +0 -0
  81. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/utilities/__init__.py +0 -0
  82. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/utilities/fs.py +0 -0
  83. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/utilities/shared.py +0 -0
  84. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli/utilities/validators.py +0 -0
  85. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli.egg-info/SOURCES.txt +0 -0
  86. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli.egg-info/dependency_links.txt +0 -0
  87. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli.egg-info/entry_points.txt +0 -0
  88. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli.egg-info/scm_file_list.json +0 -0
  89. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/mreg_cli.egg-info/top_level.txt +0 -0
  90. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/run.py +0 -0
  91. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/setup.cfg +0 -0
  92. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/__init__.py +0 -0
  93. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/api/__init__.py +0 -0
  94. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/api/test_client.py +0 -0
  95. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/commands/__init__.py +0 -0
  96. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/commands/test_host.py +0 -0
  97. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/commands/test_network.py +0 -0
  98. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/commands/test_rr.py +0 -0
  99. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/conftest.py +0 -0
  100. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/test_config.py +0 -0
  101. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/test_errorbuilder.py +0 -0
  102. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/test_log.py +0 -0
  103. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/test_outputmanager.py +0 -0
  104. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/test_prompt.py +0 -0
  105. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/test_tokenfile.py +0 -0
  106. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/test_types.py +0 -0
  107. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/utilities/__init__.py +0 -0
  108. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/utilities/test_fs.py +0 -0
  109. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tests/utils.py +0 -0
  110. {mreg_cli-1.11.0 → mreg_cli-1.12.0}/tox.ini +0 -0
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  <!-- ## Unreleased -->
9
9
 
10
+ ## [1.12.0](https://github.com/unioslo/mreg-cli/releases/tag/1.12.0) - 2026-10-05
11
+
12
+ ### Changed
13
+
14
+ - Mreg API errors are now rendered as human-readable messages instead of formatted JSON. This is a result of improved exception parsing and handling in `mreg-api` 0.6.0.
15
+ - Large internal refactor of exceptions, drastically reducing the number of exception classes. Should have no effect on the user experience.
16
+
10
17
  ## [1.11.0](https://github.com/unioslo/mreg-cli/releases/tag/1.11.0) - 2026-09-09
11
18
 
12
19
  ### Changed
@@ -125,20 +125,6 @@ This allows uniform handling of exceptions from both `mreg_cli` and `mreg_api`.
125
125
 
126
126
  ### Exception Classes
127
127
 
128
- Exception classes in `mreg_cli.exceptions` are pure data containers with no output methods:
129
-
130
- ```text
131
- CliException (base)
132
- ├── CliError (non-recoverable errors, displayed in red)
133
- │ ├── CreateError, PatchError, DeleteError, GetError
134
- │ ├── InternalError, FileError, ValidationError, LoginFailedError
135
- └── CliWarning (recoverable, displayed in italics)
136
- ├── APIError (has response attribute), UnexpectedDataError
137
- ├── EntityNotFound, EntityAlreadyExists, MultipleEntitiesFound
138
- ├── TooManyResults, NoHistoryFound, ForceMissing
139
- └── IPNetworkWarning and subclasses
140
- ```
141
-
142
128
  ### Exception Handling Locations
143
129
 
144
130
  - `mreg_cli/cli.py` - Main command parsing catches and handles exceptions
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mreg-cli
3
- Version: 1.11.0
3
+ Version: 1.12.0
4
4
  Summary: MREG interactive command line client
5
5
  Author: Others (see AUTHORS)
6
6
  Author-email: Øyvind Kolbu <oyvind.kolbu@usit.uio.no>, Safet A <amedov@usit.uio.no>, Magnus Hirth <mhmorgan42@gmail.com>, Nico <nicolaydmohebi@gmail.com>, Marius Bakke <marius.bakke@usit.uio.no>, Fredrik Larsen <fredrik.larsen@usit.uio.no>, Paal Braathen <paal.braathen@usit.uio.no>, Nils Hiorth <nils@nls.me>, Dmytro Karpenko <dmytrok@usit.uio.no>
@@ -26,7 +26,7 @@ Requires-Dist: pydantic-extra-types>=2.1.0
26
26
  Requires-Dist: platformdirs>=4.3.0
27
27
  Requires-Dist: pydantic-settings>=2.10.1
28
28
  Requires-Dist: rich>=13.9.4
29
- Requires-Dist: mreg-api<0.6.0,>=0.5.0
29
+ Requires-Dist: mreg-api<0.7.0,>=0.6.0
30
30
  Dynamic: license-file
31
31
 
32
32
  # MREG CLI [![Build Status](https://github.com/unioslo/mreg-cli/actions/workflows/test.yml/badge.svg)](https://github.com/unioslo/mreg-cli/actions/workflows/test.yml)
@@ -32,7 +32,7 @@ services:
32
32
  test: sh -c "[ -f /var/run/gunicorn.pid ]"
33
33
  interval: 5s
34
34
  timeout: 5s
35
- retries: 10
35
+ retries: 20
36
36
  start_period: 30s
37
37
 
38
38
  # The purpose of the dummy container is to depend on the mreg container,