meson-python 0.19.0__tar.gz → 0.20.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 (253) hide show
  1. {meson_python-0.19.0 → meson_python-0.20.0}/CHANGELOG.rst +8 -0
  2. {meson_python-0.19.0 → meson_python-0.20.0}/PKG-INFO +1 -1
  3. {meson_python-0.19.0 → meson_python-0.20.0}/docs/changelog.rst +8 -0
  4. {meson_python-0.19.0 → meson_python-0.20.0}/mesonpy/__init__.py +59 -27
  5. {meson_python-0.19.0 → meson_python-0.20.0}/pyproject.toml +1 -1
  6. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_project.py +47 -0
  7. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_tags.py +2 -1
  8. {meson_python-0.19.0 → meson_python-0.20.0}/.cirrus.yml +0 -0
  9. {meson_python-0.19.0 → meson_python-0.20.0}/.gitattributes +0 -0
  10. {meson_python-0.19.0 → meson_python-0.20.0}/.github/workflows/docs.yml +0 -0
  11. {meson_python-0.19.0 → meson_python-0.20.0}/.github/workflows/release.yml +0 -0
  12. {meson_python-0.19.0 → meson_python-0.20.0}/.github/workflows/tests.yml +0 -0
  13. {meson_python-0.19.0 → meson_python-0.20.0}/.gitignore +0 -0
  14. {meson_python-0.19.0 → meson_python-0.20.0}/.mailmap +0 -0
  15. {meson_python-0.19.0 → meson_python-0.20.0}/.pre-commit-config.yaml +0 -0
  16. {meson_python-0.19.0 → meson_python-0.20.0}/.readthedocs.yaml +0 -0
  17. {meson_python-0.19.0 → meson_python-0.20.0}/.vscode/settings.json +0 -0
  18. {meson_python-0.19.0 → meson_python-0.20.0}/LICENSE +0 -0
  19. {meson_python-0.19.0 → meson_python-0.20.0}/LICENSES/MIT.txt +0 -0
  20. {meson_python-0.19.0 → meson_python-0.20.0}/README.rst +0 -0
  21. {meson_python-0.19.0 → meson_python-0.20.0}/RELEASE.rst +0 -0
  22. {meson_python-0.19.0 → meson_python-0.20.0}/ci/alpine-3.docker +0 -0
  23. {meson_python-0.19.0 → meson_python-0.20.0}/ci/archlinux.docker +0 -0
  24. {meson_python-0.19.0 → meson_python-0.20.0}/ci/debian-11.docker +0 -0
  25. {meson_python-0.19.0 → meson_python-0.20.0}/ci/debian-12.docker +0 -0
  26. {meson_python-0.19.0 → meson_python-0.20.0}/ci/debian-unstable.docker +0 -0
  27. {meson_python-0.19.0 → meson_python-0.20.0}/ci/fedora-41.docker +0 -0
  28. {meson_python-0.19.0 → meson_python-0.20.0}/ci/manylinux.docker +0 -0
  29. {meson_python-0.19.0 → meson_python-0.20.0}/ci/miniconda.docker +0 -0
  30. {meson_python-0.19.0 → meson_python-0.20.0}/ci/opensuse-15.docker +0 -0
  31. {meson_python-0.19.0 → meson_python-0.20.0}/codecov.yml +0 -0
  32. {meson_python-0.19.0 → meson_python-0.20.0}/docs/about.rst +0 -0
  33. {meson_python-0.19.0 → meson_python-0.20.0}/docs/conf.py +0 -0
  34. {meson_python-0.19.0 → meson_python-0.20.0}/docs/explanations/default-options.rst +0 -0
  35. {meson_python-0.19.0 → meson_python-0.20.0}/docs/explanations/design-old.rst +0 -0
  36. {meson_python-0.19.0 → meson_python-0.20.0}/docs/how-to-guides/config-settings.rst +0 -0
  37. {meson_python-0.19.0 → meson_python-0.20.0}/docs/how-to-guides/contributing.rst +0 -0
  38. {meson_python-0.19.0 → meson_python-0.20.0}/docs/how-to-guides/debug-builds.rst +0 -0
  39. {meson_python-0.19.0 → meson_python-0.20.0}/docs/how-to-guides/editable-installs.rst +0 -0
  40. {meson_python-0.19.0 → meson_python-0.20.0}/docs/how-to-guides/meson-args.rst +0 -0
  41. {meson_python-0.19.0 → meson_python-0.20.0}/docs/how-to-guides/sdist.rst +0 -0
  42. {meson_python-0.19.0 → meson_python-0.20.0}/docs/how-to-guides/shared-libraries.rst +0 -0
  43. {meson_python-0.19.0 → meson_python-0.20.0}/docs/index.rst +0 -0
  44. {meson_python-0.19.0 → meson_python-0.20.0}/docs/projects-using-meson-python.rst +0 -0
  45. {meson_python-0.19.0 → meson_python-0.20.0}/docs/reference/config-settings.rst +0 -0
  46. {meson_python-0.19.0 → meson_python-0.20.0}/docs/reference/environment-variables.rst +0 -0
  47. {meson_python-0.19.0 → meson_python-0.20.0}/docs/reference/limitations.rst +0 -0
  48. {meson_python-0.19.0 → meson_python-0.20.0}/docs/reference/meson-compatibility.rst +0 -0
  49. {meson_python-0.19.0 → meson_python-0.20.0}/docs/reference/pyproject-settings.rst +0 -0
  50. {meson_python-0.19.0 → meson_python-0.20.0}/docs/spelling_wordlist.txt +0 -0
  51. {meson_python-0.19.0 → meson_python-0.20.0}/docs/spelling_wordlist.txt.license +0 -0
  52. {meson_python-0.19.0 → meson_python-0.20.0}/docs/tutorials/introduction.rst +0 -0
  53. {meson_python-0.19.0 → meson_python-0.20.0}/meson.build +0 -0
  54. {meson_python-0.19.0 → meson_python-0.20.0}/mesonpy/_compat.py +0 -0
  55. {meson_python-0.19.0 → meson_python-0.20.0}/mesonpy/_editable.py +0 -0
  56. {meson_python-0.19.0 → meson_python-0.20.0}/mesonpy/_rpath.py +0 -0
  57. {meson_python-0.19.0 → meson_python-0.20.0}/mesonpy/_tags.py +0 -0
  58. {meson_python-0.19.0 → meson_python-0.20.0}/mesonpy/_util.py +0 -0
  59. {meson_python-0.19.0 → meson_python-0.20.0}/mesonpy/_wheelfile.py +0 -0
  60. {meson_python-0.19.0 → meson_python-0.20.0}/tests/__init__.py +0 -0
  61. {meson_python-0.19.0 → meson_python-0.20.0}/tests/conftest.py +0 -0
  62. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/cmake-subproject/cmakesubproject.pyx +0 -0
  63. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/cmake-subproject/meson.build +0 -0
  64. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/cmake-subproject/pyproject.toml +0 -0
  65. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/cmake-subproject/subprojects/cmaketest/CMakeLists.txt +0 -0
  66. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/cmake-subproject/subprojects/cmaketest/cmaketest.cpp +0 -0
  67. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/cmake-subproject/subprojects/cmaketest/cmaketest.hpp +0 -0
  68. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/cmake-subproject/subprojects/cmaketest.wrap +0 -0
  69. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/complex/__init__.py +0 -0
  70. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/complex/more/__init__.py +0 -0
  71. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/complex/more/baz.pyx +0 -0
  72. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/complex/more/meson.build +0 -0
  73. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/complex/namespace/bar.py +0 -0
  74. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/complex/namespace/foo.py +0 -0
  75. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/extension.c +0 -0
  76. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/foo.py +0 -0
  77. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/meson.build +0 -0
  78. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/move.py +0 -0
  79. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/pyproject.toml +0 -0
  80. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/complex/test.pyx +0 -0
  81. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/configure-data/configure_data.py.in +0 -0
  82. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/configure-data/meson.build +0 -0
  83. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/configure-data/pyproject.toml +0 -0
  84. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/custom-target-dir/codegen.py +0 -0
  85. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/custom-target-dir/meson.build +0 -0
  86. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/custom-target-dir/pyproject.toml +0 -0
  87. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/detect-compiler/detect_compiler.c +0 -0
  88. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/detect-compiler/meson.build +0 -0
  89. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/detect-compiler/pyproject.toml +0 -0
  90. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/dist-script/meson.build +0 -0
  91. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/dist-script/pyproject.toml +0 -0
  92. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/dynamic-version/meson.build +0 -0
  93. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/dynamic-version/pyproject.toml +0 -0
  94. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/encoding/meson.build +0 -0
  95. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/encoding/pyproject.toml +0 -0
  96. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/encoding//343/203/206/343/202/271/343/203/210.py" +0 -0
  97. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/executable/example.c +0 -0
  98. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/executable/meson.build +0 -0
  99. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/executable/pyproject.toml +0 -0
  100. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/executable-bit/example-script.py +0 -0
  101. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/executable-bit/example.c +0 -0
  102. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/executable-bit/executable_module.py +0 -0
  103. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/executable-bit/meson.build +0 -0
  104. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/executable-bit/pyproject.toml +0 -0
  105. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/full-metadata/LICENSE +0 -0
  106. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/full-metadata/README.md +0 -0
  107. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/full-metadata/meson.build +0 -0
  108. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/full-metadata/pyproject.toml +0 -0
  109. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/generated-files/example-script.py +0 -0
  110. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/generated-files/example.c +0 -0
  111. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/generated-files/executable_module.py +0 -0
  112. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/generated-files/generate_version.py +0 -0
  113. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/generated-files/meson.build +0 -0
  114. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/generated-files/pyproject.toml +0 -0
  115. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/imports-itself-during-build/meson.build +0 -0
  116. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/imports-itself-during-build/plat.c +0 -0
  117. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/imports-itself-during-build/pure.py +0 -0
  118. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/imports-itself-during-build/pyproject.toml +0 -0
  119. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-data/__init__.py +0 -0
  120. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-data/data.txt +0 -0
  121. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-data/data.txt.license +0 -0
  122. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-data/meson.build +0 -0
  123. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-data/pyproject.toml +0 -0
  124. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/meson.build +0 -0
  125. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/nested/deep/deep.py +0 -0
  126. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/nested/deep/excluded.py +0 -0
  127. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/nested/nested.py +0 -0
  128. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/pyproject.toml +0 -0
  129. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/strip/excluded.py +0 -0
  130. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/strip/module.py +0 -0
  131. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/subdir/__init__.py +0 -0
  132. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/subdir/excluded/__init__.py +0 -0
  133. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/subdir/excluded.py +0 -0
  134. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/install-subdir/subdir/test.py +0 -0
  135. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/library/example.c +0 -0
  136. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/library/examplelib.c +0 -0
  137. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/library/examplelib.h +0 -0
  138. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/library/meson.build +0 -0
  139. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/library/pyproject.toml +0 -0
  140. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/license-file/meson.build +0 -0
  141. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/license-file/pyproject.toml +0 -0
  142. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/license-file/something/LICENSE.custom +0 -0
  143. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/license-pep639/LICENSES/BSD-3-Clause.txt +0 -0
  144. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/license-pep639/LICENSES/MIT.txt +0 -0
  145. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/license-pep639/meson.build +0 -0
  146. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/license-pep639/pyproject.toml +0 -0
  147. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/limited-api/meson.build +0 -0
  148. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/limited-api/meson.options +0 -0
  149. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/limited-api/module.c +0 -0
  150. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/limited-api/pyproject.toml +0 -0
  151. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-against-local-lib/__init__.py +0 -0
  152. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-against-local-lib/examplemod.c +0 -0
  153. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-against-local-lib/lib/examplelib.c +0 -0
  154. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-against-local-lib/lib/examplelib.h +0 -0
  155. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-against-local-lib/lib/meson.build +0 -0
  156. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-against-local-lib/meson.build +0 -0
  157. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-against-local-lib/pyproject.toml +0 -0
  158. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-library-in-subproject/foo/__init__.py +0 -0
  159. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-library-in-subproject/foo/_examplemod.c +0 -0
  160. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-library-in-subproject/foo/meson.build +0 -0
  161. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-library-in-subproject/meson.build +0 -0
  162. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-library-in-subproject/pyproject.toml +0 -0
  163. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-library-in-subproject/subprojects/bar/bar_dll.h +0 -0
  164. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-library-in-subproject/subprojects/bar/examplelib.c +0 -0
  165. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-library-in-subproject/subprojects/bar/examplelib.h +0 -0
  166. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/link-library-in-subproject/subprojects/bar/meson.build +0 -0
  167. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/long-path/meson.build +0 -0
  168. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/long-path/pyproject.toml +0 -0
  169. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/missing-dynamic-version/meson.build +0 -0
  170. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/missing-dynamic-version/pyproject.toml +0 -0
  171. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/missing-meson-version/meson.build +0 -0
  172. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/missing-meson-version/pyproject.toml +0 -0
  173. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/module-types/file.py +0 -0
  174. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/module-types/meson.build +0 -0
  175. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/module-types/namespace/data.py +0 -0
  176. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/module-types/native.c +0 -0
  177. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/module-types/package/__init__.py +0 -0
  178. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/module-types/pyproject.toml +0 -0
  179. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/pure/meson.build +0 -0
  180. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/pure/pure.py +0 -0
  181. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/pure/pyproject.toml +0 -0
  182. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/purelib-and-platlib/meson.build +0 -0
  183. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/purelib-and-platlib/plat.c +0 -0
  184. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/purelib-and-platlib/pure.py +0 -0
  185. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/purelib-and-platlib/pyproject.toml +0 -0
  186. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/purelib-platlib-split/meson.build +0 -0
  187. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/purelib-platlib-split/plat.py +0 -0
  188. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/purelib-platlib-split/pure.py +0 -0
  189. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/purelib-platlib-split/pyproject.toml +0 -0
  190. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/scipy-like/meson.build +0 -0
  191. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/scipy-like/mypkg/__init__.py +0 -0
  192. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/scipy-like/mypkg/cy_extmod.pyx +0 -0
  193. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/scipy-like/mypkg/extmod.c +0 -0
  194. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/scipy-like/mypkg/meson.build +0 -0
  195. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/scipy-like/mypkg/submod/__init__.py +0 -0
  196. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/scipy-like/mypkg/submod/unknown_filetype.npq +0 -0
  197. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/scipy-like/pyproject.toml +0 -0
  198. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/scipy-like/tools/generate_config.py +0 -0
  199. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/meson.build +0 -0
  200. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/mypkg/__init__.py +0 -0
  201. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/mypkg/_examplemod.c +0 -0
  202. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/mypkg/examplelib.c +0 -0
  203. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/mypkg/examplelib.h +0 -0
  204. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/mypkg/meson.build +0 -0
  205. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/mypkg/sub/examplelib2.c +0 -0
  206. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/mypkg/sub/examplelib2.h +0 -0
  207. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/mypkg/sub/meson.build +0 -0
  208. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/mypkg/sub/mypkg_dll.h +0 -0
  209. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/sharedlib-in-package/pyproject.toml +0 -0
  210. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/simple/__init__.py +0 -0
  211. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/simple/data.txt +0 -0
  212. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/simple/data.txt.license +0 -0
  213. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/simple/meson.build +0 -0
  214. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/simple/pyproject.toml +0 -0
  215. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/simple/test.py +0 -0
  216. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subdirs/meson.build +0 -0
  217. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subdirs/pyproject.toml +0 -0
  218. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subdirs/subdirs/__init__.py +0 -0
  219. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subdirs/subdirs/a/__init__.py +0 -0
  220. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subdirs/subdirs/a/b/c.py +0 -0
  221. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subdirs/subdirs/b/c.py +0 -0
  222. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subproject/meson.build +0 -0
  223. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subproject/pyproject.toml +0 -0
  224. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subproject/subproject.py +0 -0
  225. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subproject/subprojects/dep/data.txt +0 -0
  226. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subproject/subprojects/dep/dep.py +0 -0
  227. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/subproject/subprojects/dep/meson.build +0 -0
  228. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/symlinks/__init__.py +0 -0
  229. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/symlinks/meson.build +0 -0
  230. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/symlinks/pyproject.toml +0 -0
  231. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/symlinks/submodule/__init__.py +0 -0
  232. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/symlinks/submodule/aaa.py +0 -0
  233. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/symlinks/submodule/bbb.py +0 -0
  234. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/unknown-user-args-meson-args/pyproject.toml +0 -0
  235. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/unknown-user-args-top-level/pyproject.toml +0 -0
  236. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/unsupported-python-version/meson.build +0 -0
  237. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/unsupported-python-version/pyproject.toml +0 -0
  238. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/user-args/meson.build +0 -0
  239. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/user-args/pure.py +0 -0
  240. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/user-args/pyproject.toml +0 -0
  241. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/vendored-meson/meson.build +0 -0
  242. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/vendored-meson/meson_options.txt +0 -0
  243. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/vendored-meson/pyproject.toml +0 -0
  244. {meson_python-0.19.0 → meson_python-0.20.0}/tests/packages/vendored-meson/third-party/meson.py +0 -0
  245. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_consistency.py +0 -0
  246. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_editable.py +0 -0
  247. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_metadata.py +0 -0
  248. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_options.py +0 -0
  249. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_output.py +0 -0
  250. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_pep517.py +0 -0
  251. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_sdist.py +0 -0
  252. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_wheel.py +0 -0
  253. {meson_python-0.19.0 → meson_python-0.20.0}/tests/test_wheelfile.py +0 -0
@@ -11,6 +11,14 @@
11
11
  Changelog
12
12
  +++++++++
13
13
 
14
+ 0.20.0
15
+ ======
16
+
17
+ - Add support for targeting the Android platform.
18
+
19
+ Daniele Nicolodi, Malcolm Smith, Ralf Gommers --- 10-06-2026.
20
+
21
+
14
22
  0.19.0
15
23
  ======
16
24
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meson-python
3
- Version: 0.19.0
3
+ Version: 0.20.0
4
4
  Summary: Meson Python build backend (PEP 517)
5
5
  Keywords: meson,build,backend,pep517,package
6
6
  Maintainer-Email: Ralf Gommers <ralf.gommers@gmail.com>, Daniele Nicolodi <daniele@grinta.net>, Henry Schreiner <HenrySchreinerIII@gmail.com>
@@ -11,6 +11,14 @@
11
11
  Changelog
12
12
  +++++++++
13
13
 
14
+ 0.20.0
15
+ ======
16
+
17
+ - Add support for targeting the Android platform.
18
+
19
+ Daniele Nicolodi, Malcolm Smith, Ralf Gommers --- 10-06-2026.
20
+
21
+
14
22
  0.19.0
15
23
  ======
16
24
 
@@ -15,6 +15,7 @@ import argparse
15
15
  import collections
16
16
  import contextlib
17
17
  import copy
18
+ import dataclasses
18
19
  import difflib
19
20
  import fnmatch
20
21
  import functools
@@ -83,7 +84,7 @@ if typing.TYPE_CHECKING: # pragma: no cover
83
84
  MesonArgs = Mapping[MesonArgsKeys, List[str]]
84
85
 
85
86
 
86
- __version__ = '0.19.0'
87
+ __version__ = '0.20.0'
87
88
 
88
89
 
89
90
  _PYPROJECT_METADATA_VERSION = tuple(map(int, pyproject_metadata.__version__.split('.')[:2]))
@@ -120,13 +121,17 @@ def _compile_patterns(patterns: List[str]) -> Callable[[str], bool]:
120
121
  return typing.cast('Callable[[str], bool]', func)
121
122
 
122
123
 
124
+ class _Entry(typing.NamedTuple):
125
+ dst: pathlib.Path
126
+ src: str
127
+
128
+
123
129
  def _map_to_wheel(
124
130
  sources: Dict[str, Dict[str, Any]],
125
- exclude: List[str],
126
- include: List[str],
127
- ) -> DefaultDict[str, List[Tuple[pathlib.Path, str]]]:
131
+ exclude: List[str], include: List[str]
132
+ ) -> DefaultDict[str, List[_Entry]]:
128
133
  """Map files to the wheel, organized by wheel installation directory."""
129
- wheel_files: DefaultDict[str, List[Tuple[pathlib.Path, str]]] = collections.defaultdict(list)
134
+ wheel_files: DefaultDict[str, List[_Entry]] = collections.defaultdict(list)
130
135
  packages: Dict[str, str] = {}
131
136
  excluded = _compile_patterns(exclude)
132
137
  included = _compile_patterns(include)
@@ -151,7 +156,8 @@ def _map_to_wheel(
151
156
  other = packages.setdefault(package, path)
152
157
  if other != path:
153
158
  this = os.fspath(pathlib.Path(path, *destination.parts[1:]))
154
- that = os.fspath(other / next(d for d, s in wheel_files[other] if d.parts[0] == destination.parts[1]))
159
+ module = next(entry.dst for entry in wheel_files[other] if entry.dst.parts[0] == destination.parts[1])
160
+ that = os.fspath(other / module)
155
161
  raise BuildError(
156
162
  f'The {package} package is split between {path} and {other}: '
157
163
  f'{this!r} and {that!r}, a "pure: false" argument may be missing in meson.build. '
@@ -174,9 +180,9 @@ def _map_to_wheel(
174
180
  if relpath in exclude_files:
175
181
  continue
176
182
  filedst = dst / relpath
177
- wheel_files[path].append((filedst, filesrc))
183
+ wheel_files[path].append(_Entry(filedst, filesrc))
178
184
  else:
179
- wheel_files[path].append((dst, src))
185
+ wheel_files[path].append(_Entry(dst, src))
180
186
 
181
187
  return wheel_files
182
188
 
@@ -323,20 +329,14 @@ def _is_native(file: Path) -> bool:
323
329
  return f.read(4) == b'\x7fELF' # ELF
324
330
 
325
331
 
332
+ @dataclasses.dataclass
326
333
  class _WheelBuilder():
327
334
  """Helper class to build wheels from projects."""
328
335
 
329
- def __init__(
330
- self,
331
- metadata: Metadata,
332
- manifest: Dict[str, List[Tuple[pathlib.Path, str]]],
333
- limited_api: bool,
334
- allow_windows_shared_libs: bool,
335
- ) -> None:
336
- self._metadata = metadata
337
- self._manifest = manifest
338
- self._limited_api = limited_api
339
- self._allow_windows_shared_libs = allow_windows_shared_libs
336
+ _metadata: Metadata
337
+ _manifest: Dict[str, List[_Entry]]
338
+ _limited_api: bool
339
+ _allow_windows_shared_libs: bool
340
340
 
341
341
  @property
342
342
  def _has_internal_libs(self) -> bool:
@@ -352,8 +352,8 @@ class _WheelBuilder():
352
352
  """Whether the wheel is architecture independent"""
353
353
  if self._manifest['platlib'] or self._manifest['mesonpy-libs']:
354
354
  return False
355
- for _, file in self._manifest['scripts']:
356
- if _is_native(file):
355
+ for entry in self._manifest['scripts']:
356
+ if _is_native(entry.src):
357
357
  return False
358
358
  return True
359
359
 
@@ -430,14 +430,14 @@ class _WheelBuilder():
430
430
  # in {platlib} that look like extension modules, and raise
431
431
  # an exception if any of them has a Python version
432
432
  # specific extension filename suffix ABI tag.
433
- for path, _ in self._manifest['platlib']:
434
- match = _EXTENSION_SUFFIX_REGEX.match(path.name)
433
+ for entry in self._manifest['platlib']:
434
+ match = _EXTENSION_SUFFIX_REGEX.match(entry.dst.name)
435
435
  if match:
436
436
  abi = match.group('abi')
437
437
  if abi is not None and abi != 'abi3':
438
438
  raise BuildError(
439
439
  f'The package declares compatibility with Python limited API but extension '
440
- f'module {os.fspath(path)!r} is tagged for a specific Python version.')
440
+ f'module {os.fspath(entry.dst)!r} is tagged for a specific Python version.')
441
441
  return 'abi3'
442
442
  return None
443
443
 
@@ -519,8 +519,8 @@ class _EditableWheelBuilder(_WheelBuilder):
519
519
  def _top_level_modules(self) -> Collection[str]:
520
520
  modules = set()
521
521
  for type_ in self._manifest:
522
- for path, _ in self._manifest[type_]:
523
- name, dot, ext = path.parts[0].partition('.')
522
+ for entry in self._manifest[type_]:
523
+ name, dot, ext = entry.dst.parts[0].partition('.')
524
524
  if dot:
525
525
  # module
526
526
  suffix = dot + ext
@@ -744,6 +744,38 @@ class Project():
744
744
  self._meson_cross_file.write_text(cross_file_data, encoding='utf-8')
745
745
  self._meson_args['setup'].extend(('--cross-file', os.fspath(self._meson_cross_file)))
746
746
 
747
+ # Simplify cross-compilation for Android with cibuildwheel: detect the
748
+ # cross-compilation environment set up by cibuildwheel and synthesize an
749
+ # appropriate cross file.
750
+ elif sysconfig.get_platform().startswith('android-') and 'CIBUILDWHEEL' in os.environ:
751
+ cpu = platform.machine()
752
+ cpu_family = 'x86' if cpu == 'i686' else 'arm' if cpu.startswith('arm') else cpu
753
+
754
+ # cibuildwheel uses environment variables to point to the cross
755
+ # compilation toolchain binaries thus the [binaries] section of
756
+ # the cross file is not needed.
757
+ cross_file_data = textwrap.dedent(f'''
758
+ [host_machine]
759
+ system = 'android'
760
+ subsystem = 'android'
761
+ kernel = 'linux'
762
+ cpu_family = {cpu_family!r}
763
+ cpu = {cpu!r}
764
+ endian = {sys.byteorder!r}
765
+
766
+ [properties]
767
+ # To obtain the correct wheel tags when cross-compiling
768
+ # cibuildwheel monkey-patches platform.system() and
769
+ # platform.machine() to simulate running on Android.
770
+ # This makes Meson believe that host and build machines
771
+ # match, and thus that host binaries can be run on the
772
+ # build machine when this is not actually the case.
773
+ # Override the auto-detection.
774
+ needs_exe_wrapper = true
775
+ ''')
776
+ self._meson_cross_file.write_text(cross_file_data, encoding='utf-8')
777
+ self._meson_args['setup'].extend(('--cross-file', os.fspath(self._meson_cross_file)))
778
+
747
779
  # Support iOS targets. iOS does not have native build tools and always
748
780
  # requires cross compilation: synthesize the appropriate cross file.
749
781
  elif sysconfig.get_platform().startswith('ios-'):
@@ -912,7 +944,7 @@ class Project():
912
944
  return json.loads(info.read_text(encoding='utf-8'))
913
945
 
914
946
  @property
915
- def _manifest(self) -> DefaultDict[str, List[Tuple[pathlib.Path, str]]]:
947
+ def _manifest(self) -> DefaultDict[str, List[_Entry]]:
916
948
  """The files to be added to the wheel, organized by wheel path."""
917
949
 
918
950
  # Obtain the list of files Meson would install.
@@ -16,7 +16,7 @@ requires = [
16
16
 
17
17
  [project]
18
18
  name = 'meson-python'
19
- version = '0.19.0'
19
+ version = '0.20.0'
20
20
  description = 'Meson Python build backend (PEP 517)'
21
21
  readme = 'README.rst'
22
22
  requires-python = '>= 3.9'
@@ -378,6 +378,53 @@ def test_archflags_envvar_parsing_invalid(package_purelib_and_platlib, monkeypat
378
378
  os.environ.pop('_PYTHON_HOST_PLATFORM', None)
379
379
 
380
380
 
381
+ @pytest.mark.parametrize(
382
+ ('cpu', 'cpu_family'),
383
+ [
384
+ ('aarch64', 'aarch64'),
385
+ ('armv7l', 'arm'),
386
+ ('armv8l', 'arm'),
387
+ ('i686', 'x86'),
388
+ ('x86_64', 'x86_64'),
389
+ ],
390
+ )
391
+ @pytest.mark.parametrize('cross', [True, False])
392
+ def test_android_project(package_simple, monkeypatch, tmp_path, cpu, cpu_family, cross):
393
+ # Mock being on Android
394
+ monkeypatch.setattr(sys, 'platform', 'android')
395
+ monkeypatch.setattr(sys, 'byteorder', 'little')
396
+ monkeypatch.setattr(platform, 'system', Mock(return_value='Android'))
397
+ monkeypatch.setattr(platform, 'machine', Mock(return_value=cpu))
398
+ monkeypatch.setattr(sysconfig, 'get_platform', Mock(return_value='android-24'))
399
+ if cross:
400
+ monkeypatch.setenv('CIBUILDWHEEL', '1')
401
+
402
+ # Meson may require some tools to be configured when fatal warnings are enabled.
403
+ # Set the same set of variables as cibuildwheel.
404
+ for name in ['ar', 'as', 'cc', 'cxx', 'ld', 'nm', 'ranlib', 'readelf', 'strip']:
405
+ monkeypatch.setenv(name.upper(), f'/path/to/{name}')
406
+
407
+ # Create a project.
408
+ project = mesonpy.Project(source_dir=package_simple, build_dir=tmp_path)
409
+
410
+ # When cross-compiling, a cross file should be generated and used.
411
+ setup_args = project._meson_args['setup']
412
+ cross_path = tmp_path / 'meson-python-cross-file.ini'
413
+ if cross:
414
+ assert setup_args[-2:] == ['--cross-file', str(cross_path)]
415
+ cross_config = cross_path.read_text().splitlines()
416
+ assert "system = 'android'" in cross_config
417
+ assert "subsystem = 'android'" in cross_config
418
+ assert "kernel = 'linux'" in cross_config
419
+ assert f"cpu_family = '{cpu_family}'" in cross_config
420
+ assert f"cpu = '{cpu}'" in cross_config
421
+ assert "endian = 'little'" in cross_config
422
+ assert 'needs_exe_wrapper = true' in cross_config
423
+ else:
424
+ assert '--cross-file' not in setup_args
425
+ assert not cross_path.exists()
426
+
427
+
381
428
  @pytest.mark.skipif(sys.version_info < (3, 13), reason='requires Python 3.13 or higher')
382
429
  @pytest.mark.parametrize('multiarch', [
383
430
  'arm64-iphoneos',
@@ -101,7 +101,8 @@ def test_ios_platform_tag(monkeypatch):
101
101
 
102
102
  def wheel_builder_test_factory(content, pure=True, limited_api=False):
103
103
  manifest = defaultdict(list)
104
- manifest.update({key: [(pathlib.Path(x), os.path.join('build', x)) for x in value] for key, value in content.items()})
104
+ for key, value in content.items():
105
+ manifest[key] = [mesonpy._Entry(pathlib.Path(x), os.path.join('build', x)) for x in value]
105
106
  return mesonpy._WheelBuilder(None, manifest, limited_api, False)
106
107
 
107
108
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes