craft-application 4.2.4__tar.gz → 4.2.6__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 (192) hide show
  1. {craft_application-4.2.4/craft_application.egg-info → craft_application-4.2.6}/PKG-INFO +5 -6
  2. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/_version.py +2 -2
  3. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/services/config.py +11 -0
  4. {craft_application-4.2.4 → craft_application-4.2.6/craft_application.egg-info}/PKG-INFO +5 -6
  5. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application.egg-info/requires.txt +4 -5
  6. {craft_application-4.2.4 → craft_application-4.2.6}/docs/reference/changelog.rst +16 -0
  7. {craft_application-4.2.4 → craft_application-4.2.6}/pyproject.toml +4 -7
  8. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/test_config.py +33 -0
  9. {craft_application-4.2.4 → craft_application-4.2.6}/.editorconfig +0 -0
  10. {craft_application-4.2.4 → craft_application-4.2.6}/.github/.jira_sync_config.yaml +0 -0
  11. {craft_application-4.2.4 → craft_application-4.2.6}/.github/ISSUE_TEMPLATE/bug.yaml +0 -0
  12. {craft_application-4.2.4 → craft_application-4.2.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  13. {craft_application-4.2.4 → craft_application-4.2.6}/.github/ISSUE_TEMPLATE/task.yaml +0 -0
  14. {craft_application-4.2.4 → craft_application-4.2.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  15. {craft_application-4.2.4 → craft_application-4.2.6}/.github/release-drafter.yaml +0 -0
  16. {craft_application-4.2.4 → craft_application-4.2.6}/.github/release-drafter.yml +0 -0
  17. {craft_application-4.2.4 → craft_application-4.2.6}/.github/renovate.json5 +0 -0
  18. {craft_application-4.2.4 → craft_application-4.2.6}/.github/workflows/check-renovate.yaml +0 -0
  19. {craft_application-4.2.4 → craft_application-4.2.6}/.github/workflows/cla-check.yaml +0 -0
  20. {craft_application-4.2.4 → craft_application-4.2.6}/.github/workflows/docs.yaml +0 -0
  21. {craft_application-4.2.4 → craft_application-4.2.6}/.github/workflows/release-drafter.yaml +0 -0
  22. {craft_application-4.2.4 → craft_application-4.2.6}/.github/workflows/release-publish.yaml +0 -0
  23. {craft_application-4.2.4 → craft_application-4.2.6}/.github/workflows/tests.yaml +0 -0
  24. {craft_application-4.2.4 → craft_application-4.2.6}/.gitignore +0 -0
  25. {craft_application-4.2.4 → craft_application-4.2.6}/.pre-commit-config.yaml +0 -0
  26. {craft_application-4.2.4 → craft_application-4.2.6}/.readthedocs.yaml +0 -0
  27. {craft_application-4.2.4 → craft_application-4.2.6}/.yamllint.yaml +0 -0
  28. {craft_application-4.2.4 → craft_application-4.2.6}/HACKING.rst +0 -0
  29. {craft_application-4.2.4 → craft_application-4.2.6}/LICENSE +0 -0
  30. {craft_application-4.2.4 → craft_application-4.2.6}/README.rst +0 -0
  31. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/__init__.py +0 -0
  32. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/_config.py +0 -0
  33. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/application.py +0 -0
  34. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/commands/__init__.py +0 -0
  35. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/commands/base.py +0 -0
  36. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/commands/lifecycle.py +0 -0
  37. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/commands/other.py +0 -0
  38. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/errors.py +0 -0
  39. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/git/__init__.py +0 -0
  40. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/git/_errors.py +0 -0
  41. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/git/_git_repo.py +0 -0
  42. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/git/_models.py +0 -0
  43. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/grammar.py +0 -0
  44. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/__init__.py +0 -0
  45. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/errors.py +0 -0
  46. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/launchpad.py +0 -0
  47. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/models/__init__.py +0 -0
  48. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/models/base.py +0 -0
  49. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/models/build.py +0 -0
  50. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/models/code.py +0 -0
  51. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/models/distro.py +0 -0
  52. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/models/project.py +0 -0
  53. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/models/recipe.py +0 -0
  54. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/launchpad/util.py +0 -0
  55. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/misc/instance_bashrc +0 -0
  56. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/models/__init__.py +0 -0
  57. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/models/base.py +0 -0
  58. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/models/constraints.py +0 -0
  59. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/models/grammar.py +0 -0
  60. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/models/metadata.py +0 -0
  61. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/models/project.py +0 -0
  62. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/py.typed +0 -0
  63. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/remote/__init__.py +0 -0
  64. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/remote/errors.py +0 -0
  65. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/remote/git.py +0 -0
  66. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/remote/utils.py +0 -0
  67. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/remote/worktree.py +0 -0
  68. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/secrets.py +0 -0
  69. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/services/__init__.py +0 -0
  70. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/services/base.py +0 -0
  71. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/services/lifecycle.py +0 -0
  72. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/services/package.py +0 -0
  73. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/services/provider.py +0 -0
  74. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/services/remotebuild.py +0 -0
  75. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/services/request.py +0 -0
  76. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/services/service_factory.py +0 -0
  77. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/__init__.py +0 -0
  78. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/callbacks.py +0 -0
  79. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/docs.py +0 -0
  80. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/error_formatting.py +0 -0
  81. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/logging.py +0 -0
  82. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/paths.py +0 -0
  83. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/platforms.py +0 -0
  84. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/repositories.py +0 -0
  85. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/retry.py +0 -0
  86. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/snap_config.py +0 -0
  87. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/string.py +0 -0
  88. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application/util/yaml.py +0 -0
  89. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application.egg-info/SOURCES.txt +0 -0
  90. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application.egg-info/dependency_links.txt +0 -0
  91. {craft_application-4.2.4 → craft_application-4.2.6}/craft_application.egg-info/top_level.txt +0 -0
  92. {craft_application-4.2.4 → craft_application-4.2.6}/docs/conf.py +0 -0
  93. {craft_application-4.2.4 → craft_application-4.2.6}/docs/explanation/build-plans.rst +0 -0
  94. {craft_application-4.2.4 → craft_application-4.2.6}/docs/explanation/index.rst +0 -0
  95. {craft_application-4.2.4 → craft_application-4.2.6}/docs/howto/index.rst +0 -0
  96. {craft_application-4.2.4 → craft_application-4.2.6}/docs/howto/partitions.rst +0 -0
  97. {craft_application-4.2.4 → craft_application-4.2.6}/docs/index.rst +0 -0
  98. {craft_application-4.2.4 → craft_application-4.2.6}/docs/reference/environment-variables.rst +0 -0
  99. {craft_application-4.2.4 → craft_application-4.2.6}/docs/reference/index.rst +0 -0
  100. {craft_application-4.2.4 → craft_application-4.2.6}/docs/reference/platforms.rst +0 -0
  101. {craft_application-4.2.4 → craft_application-4.2.6}/docs/tutorials/index.rst +0 -0
  102. {craft_application-4.2.4 → craft_application-4.2.6}/setup.cfg +0 -0
  103. {craft_application-4.2.4 → craft_application-4.2.6}/tests/__init__.py +0 -0
  104. {craft_application-4.2.4 → craft_application-4.2.6}/tests/conftest.py +0 -0
  105. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/__init__.py +0 -0
  106. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/conftest.py +0 -0
  107. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/build-secrets/secret-source-folder/source-file.txt +0 -0
  108. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/build-secrets/testcraft.yaml +0 -0
  109. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/invalid_projects/build-error/testcraft.yaml +0 -0
  110. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/adoption/stderr +0 -0
  111. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/adoption/testcraft.yaml +0 -0
  112. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/basic/stderr +0 -0
  113. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/basic/testcraft.yaml +0 -0
  114. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/build-for-all/stderr +0 -0
  115. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/build-for-all/testcraft.yaml +0 -0
  116. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/environment/stderr +0 -0
  117. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/environment/testcraft.yaml +0 -0
  118. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/grammar/src/on-amd64-to-amd64/hello.txt +0 -0
  119. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/grammar/src/on-amd64-to-arm64/hello.txt +0 -0
  120. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/grammar/stderr +0 -0
  121. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/data/valid_projects/grammar/testcraft.yaml +0 -0
  122. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/launchpad/__init__.py +0 -0
  123. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/launchpad/conftest.py +0 -0
  124. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/launchpad/test_anonymous_access.py +0 -0
  125. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/services/__init__.py +0 -0
  126. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/services/test_lifecycle.py +0 -0
  127. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/services/test_provider.py +0 -0
  128. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/services/test_remotebuild.py +0 -0
  129. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/services/test_request.py +0 -0
  130. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/services/test_service_factory.py +0 -0
  131. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/test_application.py +0 -0
  132. {craft_application-4.2.4 → craft_application-4.2.6}/tests/integration/test_version.py +0 -0
  133. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/__init__.py +0 -0
  134. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/commands/__init__.py +0 -0
  135. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/commands/test_base.py +0 -0
  136. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/commands/test_lifecycle.py +0 -0
  137. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/commands/test_other.py +0 -0
  138. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/conftest.py +0 -0
  139. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/git/__init__.py +0 -0
  140. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/git/test_errors.py +0 -0
  141. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/git/test_git.py +0 -0
  142. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/launchpad/__init__.py +0 -0
  143. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/launchpad/conftest.py +0 -0
  144. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/launchpad/models/__init__.py +0 -0
  145. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/launchpad/models/test_base.py +0 -0
  146. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/launchpad/models/test_code.py +0 -0
  147. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/launchpad/test_launchpad.py +0 -0
  148. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/launchpad/test_util.py +0 -0
  149. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/models/__init__.py +0 -0
  150. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/models/project_models/basic_project.yaml +0 -0
  151. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/models/project_models/full_project.yaml +0 -0
  152. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/models/project_models/invalid_project.yaml +0 -0
  153. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/models/test_base.py +0 -0
  154. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/models/test_constraints.py +0 -0
  155. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/models/test_grammar.py +0 -0
  156. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/models/test_project.py +0 -0
  157. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/remote/__init__.py +0 -0
  158. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/remote/conftest.py +0 -0
  159. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/remote/test_errors.py +0 -0
  160. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/remote/test_git.py +0 -0
  161. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/remote/test_utils.py +0 -0
  162. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/remote/test_worktree.py +0 -0
  163. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/__init__.py +0 -0
  164. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/conftest.py +0 -0
  165. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/test_lifecycle.py +0 -0
  166. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/test_package.py +0 -0
  167. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/test_provider.py +0 -0
  168. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/test_remotebuild.py +0 -0
  169. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/test_repositories.py +0 -0
  170. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/test_request.py +0 -0
  171. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/services/test_service_factory.py +0 -0
  172. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/test_application.py +0 -0
  173. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/test_errors.py +0 -0
  174. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/test_grammar.py +0 -0
  175. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/test_nothing.py +0 -0
  176. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/test_secrets.py +0 -0
  177. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/__init__.py +0 -0
  178. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/invalid_yaml/_README +0 -0
  179. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/invalid_yaml/duplicate_second_level.yaml-invalid +0 -0
  180. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/invalid_yaml/duplicate_top_level.yaml-invalid +0 -0
  181. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/invalid_yaml/unhashable.yaml-invalid +0 -0
  182. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/test_docs.py +0 -0
  183. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/test_error_formatting.py +0 -0
  184. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/test_logging.py +0 -0
  185. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/test_paths.py +0 -0
  186. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/test_platforms.py +0 -0
  187. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/test_retry.py +0 -0
  188. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/test_snap_config.py +0 -0
  189. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/test_string.py +0 -0
  190. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/test_yaml.py +0 -0
  191. {craft_application-4.2.4 → craft_application-4.2.6}/tests/unit/util/valid_yaml/empty.yaml +0 -0
  192. {craft_application-4.2.4 → craft_application-4.2.6}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: craft-application
3
- Version: 4.2.4
3
+ Version: 4.2.6
4
4
  Summary: A framework for *craft applications.
5
5
  Classifier: Development Status :: 5 - Production/Stable
6
6
  Classifier: Environment :: Console
@@ -18,15 +18,15 @@ License-File: LICENSE
18
18
  Requires-Dist: craft-archives>=2.0.0
19
19
  Requires-Dist: craft-cli>=2.6.0
20
20
  Requires-Dist: craft-grammar>=2.0.0
21
- Requires-Dist: craft-parts>=2.0.0
22
- Requires-Dist: craft-providers>=2.0.0
21
+ Requires-Dist: craft-parts>=2.1.1
22
+ Requires-Dist: craft-providers>=2.0.4
23
23
  Requires-Dist: snap-helpers>=0.4.2
24
24
  Requires-Dist: platformdirs>=3.10
25
25
  Requires-Dist: pydantic~=2.0
26
26
  Requires-Dist: license-expression>=30.0.0
27
27
  Requires-Dist: pygit2<1.15.0,>=1.13.0
28
28
  Requires-Dist: PyYaml>=6.0
29
- Requires-Dist: requests<2.32
29
+ Requires-Dist: requests~=2.32
30
30
  Requires-Dist: typing_extensions>=4.4.0
31
31
  Provides-Extra: remote
32
32
  Requires-Dist: launchpadlib>=1.10.16; extra == "remote"
@@ -41,7 +41,6 @@ Requires-Dist: pytest-mock==3.14.0; extra == "dev"
41
41
  Requires-Dist: pytest-rerunfailures==14.0; extra == "dev"
42
42
  Requires-Dist: pytest-subprocess~=1.5.2; extra == "dev"
43
43
  Requires-Dist: pytest-time>=0.3.1; extra == "dev"
44
- Requires-Dist: requests<2.32.0; extra == "dev"
45
44
  Requires-Dist: responses~=0.25.0; extra == "dev"
46
45
  Requires-Dist: craft-application[remote]; extra == "dev"
47
46
  Provides-Extra: lint
@@ -54,7 +53,7 @@ Requires-Dist: pyright==1.1.376; extra == "types"
54
53
  Requires-Dist: types-requests; extra == "types"
55
54
  Requires-Dist: types-urllib3; extra == "types"
56
55
  Provides-Extra: docs
57
- Requires-Dist: canonical-sphinx~=0.1; extra == "docs"
56
+ Requires-Dist: canonical-sphinx~=0.1.0; extra == "docs"
58
57
  Requires-Dist: sphinx-autobuild==2024.9.3; extra == "docs"
59
58
  Requires-Dist: sphinx-lint==0.9.1; extra == "docs"
60
59
  Provides-Extra: apt
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '4.2.4'
16
- __version_tuple__ = version_tuple = (4, 2, 4)
15
+ __version__ = version = '4.2.6'
16
+ __version_tuple__ = version_tuple = (4, 2, 6)
@@ -91,10 +91,21 @@ class SnapConfigHandler(ConfigHandler):
91
91
 
92
92
  def __init__(self, app: application.AppMetadata) -> None:
93
93
  super().__init__(app)
94
+ if not snaphelpers.is_snap():
95
+ raise OSError("Not running as a snap.")
94
96
  try:
95
97
  self._snap = snaphelpers.SnapConfig()
96
98
  except KeyError:
97
99
  raise OSError("Not running as a snap.")
100
+ except snaphelpers.SnapCtlError:
101
+ # Most likely to happen in a container that has the snap environment set.
102
+ # See: https://github.com/canonical/snapcraft/issues/5079
103
+ emit.progress(
104
+ "Snap environment is set, but cannot connect to snapd. "
105
+ "Snap configuration is unavailable.",
106
+ permanent=True,
107
+ )
108
+ raise OSError("Not running as a snap or with snapd disabled.")
98
109
 
99
110
  @override
100
111
  def get_raw(self, item: str) -> Any:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: craft-application
3
- Version: 4.2.4
3
+ Version: 4.2.6
4
4
  Summary: A framework for *craft applications.
5
5
  Classifier: Development Status :: 5 - Production/Stable
6
6
  Classifier: Environment :: Console
@@ -18,15 +18,15 @@ License-File: LICENSE
18
18
  Requires-Dist: craft-archives>=2.0.0
19
19
  Requires-Dist: craft-cli>=2.6.0
20
20
  Requires-Dist: craft-grammar>=2.0.0
21
- Requires-Dist: craft-parts>=2.0.0
22
- Requires-Dist: craft-providers>=2.0.0
21
+ Requires-Dist: craft-parts>=2.1.1
22
+ Requires-Dist: craft-providers>=2.0.4
23
23
  Requires-Dist: snap-helpers>=0.4.2
24
24
  Requires-Dist: platformdirs>=3.10
25
25
  Requires-Dist: pydantic~=2.0
26
26
  Requires-Dist: license-expression>=30.0.0
27
27
  Requires-Dist: pygit2<1.15.0,>=1.13.0
28
28
  Requires-Dist: PyYaml>=6.0
29
- Requires-Dist: requests<2.32
29
+ Requires-Dist: requests~=2.32
30
30
  Requires-Dist: typing_extensions>=4.4.0
31
31
  Provides-Extra: remote
32
32
  Requires-Dist: launchpadlib>=1.10.16; extra == "remote"
@@ -41,7 +41,6 @@ Requires-Dist: pytest-mock==3.14.0; extra == "dev"
41
41
  Requires-Dist: pytest-rerunfailures==14.0; extra == "dev"
42
42
  Requires-Dist: pytest-subprocess~=1.5.2; extra == "dev"
43
43
  Requires-Dist: pytest-time>=0.3.1; extra == "dev"
44
- Requires-Dist: requests<2.32.0; extra == "dev"
45
44
  Requires-Dist: responses~=0.25.0; extra == "dev"
46
45
  Requires-Dist: craft-application[remote]; extra == "dev"
47
46
  Provides-Extra: lint
@@ -54,7 +53,7 @@ Requires-Dist: pyright==1.1.376; extra == "types"
54
53
  Requires-Dist: types-requests; extra == "types"
55
54
  Requires-Dist: types-urllib3; extra == "types"
56
55
  Provides-Extra: docs
57
- Requires-Dist: canonical-sphinx~=0.1; extra == "docs"
56
+ Requires-Dist: canonical-sphinx~=0.1.0; extra == "docs"
58
57
  Requires-Dist: sphinx-autobuild==2024.9.3; extra == "docs"
59
58
  Requires-Dist: sphinx-lint==0.9.1; extra == "docs"
60
59
  Provides-Extra: apt
@@ -1,15 +1,15 @@
1
1
  craft-archives>=2.0.0
2
2
  craft-cli>=2.6.0
3
3
  craft-grammar>=2.0.0
4
- craft-parts>=2.0.0
5
- craft-providers>=2.0.0
4
+ craft-parts>=2.1.1
5
+ craft-providers>=2.0.4
6
6
  snap-helpers>=0.4.2
7
7
  platformdirs>=3.10
8
8
  pydantic~=2.0
9
9
  license-expression>=30.0.0
10
10
  pygit2<1.15.0,>=1.13.0
11
11
  PyYaml>=6.0
12
- requests<2.32
12
+ requests~=2.32
13
13
  typing_extensions>=4.4.0
14
14
 
15
15
  [apt]
@@ -28,12 +28,11 @@ pytest-mock==3.14.0
28
28
  pytest-rerunfailures==14.0
29
29
  pytest-subprocess~=1.5.2
30
30
  pytest-time>=0.3.1
31
- requests<2.32.0
32
31
  responses~=0.25.0
33
32
  craft-application[remote]
34
33
 
35
34
  [docs]
36
- canonical-sphinx~=0.1
35
+ canonical-sphinx~=0.1.0
37
36
  sphinx-autobuild==2024.9.3
38
37
  sphinx-lint==0.9.1
39
38
 
@@ -2,6 +2,21 @@
2
2
  Changelog
3
3
  *********
4
4
 
5
+ 4.2.6 (2024-Oct-04)
6
+ -------------------
7
+
8
+ - Remove the ``requests<2.32.0`` constraint to resolve CVE-2024-35195.
9
+
10
+ 4.2.5 (2024-Oct-04)
11
+ -------------------
12
+
13
+ Services
14
+ ========
15
+
16
+ - The config service handles snap issues better.
17
+
18
+ For a complete list of commits, check out the `4.2.5`_ release on GitHub.
19
+
5
20
  4.2.4 (2024-Sep-19)
6
21
  -------------------
7
22
 
@@ -289,3 +304,4 @@ For a complete list of commits, check out the `2.7.0`_ release on GitHub.
289
304
  .. _4.2.2: https://github.com/canonical/craft-application/releases/tag/4.2.2
290
305
  .. _4.2.3: https://github.com/canonical/craft-application/releases/tag/4.2.3
291
306
  .. _4.2.4: https://github.com/canonical/craft-application/releases/tag/4.2.4
307
+ .. _4.2.5: https://github.com/canonical/craft-application/releases/tag/4.2.5
@@ -6,8 +6,8 @@ dependencies = [
6
6
  "craft-archives>=2.0.0",
7
7
  "craft-cli>=2.6.0",
8
8
  "craft-grammar>=2.0.0",
9
- "craft-parts>=2.0.0",
10
- "craft-providers>=2.0.0",
9
+ "craft-parts>=2.1.1",
10
+ "craft-providers>=2.0.4",
11
11
  "snap-helpers>=0.4.2",
12
12
  "platformdirs>=3.10",
13
13
  "pydantic~=2.0",
@@ -22,8 +22,7 @@ dependencies = [
22
22
  # Pygit2 changelog: https://github.com/libgit2/pygit2/blob/master/CHANGELOG.md
23
23
  "pygit2>=1.13.0,<1.15.0",
24
24
  "PyYaml>=6.0",
25
- # see https://github.com/psf/requests/issues/6707
26
- "requests<2.32",
25
+ "requests~=2.32",
27
26
  "typing_extensions>=4.4.0",
28
27
  ]
29
28
  classifiers = [
@@ -58,8 +57,6 @@ dev = [
58
57
  "pytest-rerunfailures==14.0",
59
58
  "pytest-subprocess~=1.5.2",
60
59
  "pytest-time>=0.3.1",
61
- # Pin requests because of https://github.com/msabramo/requests-unixsocket/issues/73
62
- "requests<2.32.0",
63
60
  "responses~=0.25.0",
64
61
  "craft-application[remote]"
65
62
  ]
@@ -75,7 +72,7 @@ types = [
75
72
  "types-urllib3",
76
73
  ]
77
74
  docs = [
78
- "canonical-sphinx~=0.1",
75
+ "canonical-sphinx~=0.1.0",
79
76
  "sphinx-autobuild==2024.9.3",
80
77
  "sphinx-lint==0.9.1",
81
78
  ]
@@ -15,16 +15,19 @@
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
16
  """Unit tests for the configuration service."""
17
17
 
18
+ import io
18
19
  import itertools
19
20
  import json
20
21
  import string
21
22
  import subprocess
22
23
  from collections.abc import Iterator
24
+ from unittest import mock
23
25
 
24
26
  import craft_application
25
27
  import craft_cli
26
28
  import pytest
27
29
  import pytest_subprocess
30
+ import snaphelpers
28
31
  from craft_application import launchpad
29
32
  from craft_application.services import config
30
33
  from hypothesis import given, strategies
@@ -136,6 +139,36 @@ def test_craft_environment_handler_error(
136
139
  assert craft_environment_handler.get_raw(item) == content
137
140
 
138
141
 
142
+ @pytest.mark.parametrize(
143
+ "error",
144
+ [
145
+ KeyError("SNAP_INSTANCE_NAME something or other"),
146
+ snaphelpers.SnapCtlError(
147
+ mock.Mock(returncode=1, stderr=io.BytesIO(b"snapd socket asplode"))
148
+ ),
149
+ ],
150
+ )
151
+ def test_snap_config_handler_create_error(mocker, default_app_metadata, error):
152
+ mocker.patch("snaphelpers.is_snap", return_value=True)
153
+ mock_snap_config = mocker.patch(
154
+ "snaphelpers.SnapConfig",
155
+ side_effect=error,
156
+ )
157
+ with pytest.raises(OSError, match="Not running as a snap."):
158
+ config.SnapConfigHandler(default_app_metadata)
159
+
160
+ mock_snap_config.assert_called_once_with()
161
+
162
+
163
+ def test_snap_config_handler_not_snap(mocker, default_app_metadata):
164
+ mock_is_snap = mocker.patch("snaphelpers.is_snap", return_value=False)
165
+
166
+ with pytest.raises(OSError, match="Not running as a snap."):
167
+ config.SnapConfigHandler(default_app_metadata)
168
+
169
+ mock_is_snap.asssert_called_once_with()
170
+
171
+
139
172
  @given(
140
173
  item=strategies.text(alphabet=string.ascii_letters + "_", min_size=1),
141
174
  content=strategies.text(