conan-server 2.28.0__py3-none-any.whl

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 (386) hide show
  1. conan/__init__.py +6 -0
  2. conan/api/__init__.py +0 -0
  3. conan/api/conan_api.py +227 -0
  4. conan/api/input.py +95 -0
  5. conan/api/model/__init__.py +3 -0
  6. conan/api/model/list.py +451 -0
  7. conan/api/model/refs.py +304 -0
  8. conan/api/model/remote.py +59 -0
  9. conan/api/output.py +418 -0
  10. conan/api/subapi/__init__.py +0 -0
  11. conan/api/subapi/audit.py +169 -0
  12. conan/api/subapi/cache.py +513 -0
  13. conan/api/subapi/command.py +77 -0
  14. conan/api/subapi/config.py +338 -0
  15. conan/api/subapi/download.py +111 -0
  16. conan/api/subapi/export.py +152 -0
  17. conan/api/subapi/graph.py +257 -0
  18. conan/api/subapi/install.py +159 -0
  19. conan/api/subapi/list.py +563 -0
  20. conan/api/subapi/local.py +187 -0
  21. conan/api/subapi/lockfile.py +131 -0
  22. conan/api/subapi/new.py +229 -0
  23. conan/api/subapi/profiles.py +189 -0
  24. conan/api/subapi/remotes.py +377 -0
  25. conan/api/subapi/remove.py +51 -0
  26. conan/api/subapi/report.py +154 -0
  27. conan/api/subapi/upload.py +190 -0
  28. conan/api/subapi/workspace.py +451 -0
  29. conan/cli/__init__.py +14 -0
  30. conan/cli/args.py +156 -0
  31. conan/cli/cli.py +312 -0
  32. conan/cli/command.py +252 -0
  33. conan/cli/commands/__init__.py +0 -0
  34. conan/cli/commands/audit.py +241 -0
  35. conan/cli/commands/build.py +81 -0
  36. conan/cli/commands/cache.py +345 -0
  37. conan/cli/commands/config.py +170 -0
  38. conan/cli/commands/create.py +191 -0
  39. conan/cli/commands/download.py +64 -0
  40. conan/cli/commands/editable.py +87 -0
  41. conan/cli/commands/export.py +76 -0
  42. conan/cli/commands/export_pkg.py +90 -0
  43. conan/cli/commands/graph.py +384 -0
  44. conan/cli/commands/inspect.py +54 -0
  45. conan/cli/commands/install.py +108 -0
  46. conan/cli/commands/list.py +303 -0
  47. conan/cli/commands/lock.py +273 -0
  48. conan/cli/commands/new.py +28 -0
  49. conan/cli/commands/pkglist.py +63 -0
  50. conan/cli/commands/profile.py +115 -0
  51. conan/cli/commands/remote.py +326 -0
  52. conan/cli/commands/remove.py +123 -0
  53. conan/cli/commands/report.py +60 -0
  54. conan/cli/commands/require.py +130 -0
  55. conan/cli/commands/run.py +55 -0
  56. conan/cli/commands/search.py +40 -0
  57. conan/cli/commands/source.py +23 -0
  58. conan/cli/commands/test.py +80 -0
  59. conan/cli/commands/upload.py +141 -0
  60. conan/cli/commands/version.py +34 -0
  61. conan/cli/commands/workspace.py +422 -0
  62. conan/cli/exit_codes.py +9 -0
  63. conan/cli/formatters/__init__.py +8 -0
  64. conan/cli/formatters/audit/__init__.py +0 -0
  65. conan/cli/formatters/audit/vulnerabilities.py +401 -0
  66. conan/cli/formatters/graph/__init__.py +3 -0
  67. conan/cli/formatters/graph/build_order_html.py +274 -0
  68. conan/cli/formatters/graph/graph.py +53 -0
  69. conan/cli/formatters/graph/graph_info_text.py +60 -0
  70. conan/cli/formatters/graph/info_graph_dot.py +13 -0
  71. conan/cli/formatters/graph/info_graph_html.py +536 -0
  72. conan/cli/formatters/list/__init__.py +1 -0
  73. conan/cli/formatters/list/list.py +24 -0
  74. conan/cli/formatters/list/search_table_html.py +313 -0
  75. conan/cli/formatters/report/__init__.py +1 -0
  76. conan/cli/formatters/report/diff.py +161 -0
  77. conan/cli/formatters/report/diff_html.py +1041 -0
  78. conan/cli/printers/__init__.py +10 -0
  79. conan/cli/printers/graph.py +182 -0
  80. conan/cps/__init__.py +1 -0
  81. conan/cps/cps.py +307 -0
  82. conan/errors.py +22 -0
  83. conan/internal/__init__.py +11 -0
  84. conan/internal/api/__init__.py +0 -0
  85. conan/internal/api/audit/__init__.py +0 -0
  86. conan/internal/api/audit/providers.py +235 -0
  87. conan/internal/api/config/__init__.py +0 -0
  88. conan/internal/api/config/config_installer.py +233 -0
  89. conan/internal/api/detect/__init__.py +0 -0
  90. conan/internal/api/detect/detect_api.py +662 -0
  91. conan/internal/api/detect/detect_vs.py +134 -0
  92. conan/internal/api/export.py +212 -0
  93. conan/internal/api/install/__init__.py +0 -0
  94. conan/internal/api/install/generators.py +191 -0
  95. conan/internal/api/list/__init__.py +0 -0
  96. conan/internal/api/list/query_parse.py +165 -0
  97. conan/internal/api/local/__init__.py +0 -0
  98. conan/internal/api/local/editable.py +76 -0
  99. conan/internal/api/migrations.py +151 -0
  100. conan/internal/api/new/__init__.py +0 -0
  101. conan/internal/api/new/alias_new.py +12 -0
  102. conan/internal/api/new/autoools_exe.py +104 -0
  103. conan/internal/api/new/autotools_lib.py +141 -0
  104. conan/internal/api/new/basic.py +117 -0
  105. conan/internal/api/new/bazel_7_exe.py +73 -0
  106. conan/internal/api/new/bazel_7_lib.py +150 -0
  107. conan/internal/api/new/bazel_exe.py +76 -0
  108. conan/internal/api/new/bazel_lib.py +154 -0
  109. conan/internal/api/new/cmake_exe.py +104 -0
  110. conan/internal/api/new/cmake_lib.py +295 -0
  111. conan/internal/api/new/header_lib.py +116 -0
  112. conan/internal/api/new/local_recipes_index.py +113 -0
  113. conan/internal/api/new/meson_exe.py +83 -0
  114. conan/internal/api/new/meson_lib.py +114 -0
  115. conan/internal/api/new/msbuild_exe.py +84 -0
  116. conan/internal/api/new/msbuild_lib.py +291 -0
  117. conan/internal/api/new/premake_exe.py +104 -0
  118. conan/internal/api/new/premake_lib.py +148 -0
  119. conan/internal/api/new/qbs_lib.py +102 -0
  120. conan/internal/api/new/workspace.py +99 -0
  121. conan/internal/api/profile/__init__.py +0 -0
  122. conan/internal/api/profile/detect.py +38 -0
  123. conan/internal/api/profile/profile_loader.py +442 -0
  124. conan/internal/api/remotes/__init__.py +0 -0
  125. conan/internal/api/remotes/encrypt.py +39 -0
  126. conan/internal/api/remotes/localdb.py +106 -0
  127. conan/internal/api/upload.py +18 -0
  128. conan/internal/api/uploader.py +391 -0
  129. conan/internal/cache/__init__.py +0 -0
  130. conan/internal/cache/cache.py +322 -0
  131. conan/internal/cache/conan_reference_layout.py +143 -0
  132. conan/internal/cache/db/__init__.py +0 -0
  133. conan/internal/cache/db/cache_database.py +102 -0
  134. conan/internal/cache/db/packages_table.py +243 -0
  135. conan/internal/cache/db/recipes_table.py +132 -0
  136. conan/internal/cache/db/table.py +67 -0
  137. conan/internal/cache/home_paths.py +85 -0
  138. conan/internal/cache/integrity_check.py +79 -0
  139. conan/internal/conan_app.py +56 -0
  140. conan/internal/default_settings.py +195 -0
  141. conan/internal/deploy.py +228 -0
  142. conan/internal/errors.py +151 -0
  143. conan/internal/graph/__init__.py +0 -0
  144. conan/internal/graph/build_mode.py +133 -0
  145. conan/internal/graph/compatibility.py +178 -0
  146. conan/internal/graph/compute_pid.py +118 -0
  147. conan/internal/graph/graph.py +452 -0
  148. conan/internal/graph/graph_binaries.py +579 -0
  149. conan/internal/graph/graph_builder.py +489 -0
  150. conan/internal/graph/graph_error.py +95 -0
  151. conan/internal/graph/install_graph.py +611 -0
  152. conan/internal/graph/installer.py +486 -0
  153. conan/internal/graph/profile_node_definer.py +113 -0
  154. conan/internal/graph/provides.py +40 -0
  155. conan/internal/graph/proxy.py +186 -0
  156. conan/internal/graph/python_requires.py +141 -0
  157. conan/internal/graph/range_resolver.py +113 -0
  158. conan/internal/hook_manager.py +72 -0
  159. conan/internal/internal_tools.py +25 -0
  160. conan/internal/loader.py +457 -0
  161. conan/internal/methods.py +167 -0
  162. conan/internal/model/__init__.py +0 -0
  163. conan/internal/model/conan_file.py +422 -0
  164. conan/internal/model/conanconfig.py +44 -0
  165. conan/internal/model/conanfile_interface.py +163 -0
  166. conan/internal/model/conf.py +812 -0
  167. conan/internal/model/cpp_info.py +923 -0
  168. conan/internal/model/dependencies.py +191 -0
  169. conan/internal/model/info.py +487 -0
  170. conan/internal/model/layout.py +174 -0
  171. conan/internal/model/lockfile.py +385 -0
  172. conan/internal/model/manifest.py +133 -0
  173. conan/internal/model/options.py +424 -0
  174. conan/internal/model/pkg_type.py +68 -0
  175. conan/internal/model/profile.py +198 -0
  176. conan/internal/model/recipe_ref.py +8 -0
  177. conan/internal/model/requires.py +627 -0
  178. conan/internal/model/settings.py +406 -0
  179. conan/internal/model/version.py +201 -0
  180. conan/internal/model/version_range.py +269 -0
  181. conan/internal/model/workspace.py +135 -0
  182. conan/internal/paths.py +93 -0
  183. conan/internal/rest/__init__.py +27 -0
  184. conan/internal/rest/auth_manager.py +107 -0
  185. conan/internal/rest/caching_file_downloader.py +170 -0
  186. conan/internal/rest/client_routes.py +155 -0
  187. conan/internal/rest/conan_requester.py +205 -0
  188. conan/internal/rest/download_cache.py +145 -0
  189. conan/internal/rest/file_downloader.py +145 -0
  190. conan/internal/rest/file_uploader.py +115 -0
  191. conan/internal/rest/pkg_sign.py +155 -0
  192. conan/internal/rest/remote_credentials.py +88 -0
  193. conan/internal/rest/remote_manager.py +367 -0
  194. conan/internal/rest/rest_client.py +99 -0
  195. conan/internal/rest/rest_client_local_recipe_index.py +271 -0
  196. conan/internal/rest/rest_client_v2.py +457 -0
  197. conan/internal/rest/rest_routes.py +69 -0
  198. conan/internal/runner/__init__.py +6 -0
  199. conan/internal/runner/docker.py +334 -0
  200. conan/internal/runner/output.py +13 -0
  201. conan/internal/runner/ssh.py +278 -0
  202. conan/internal/runner/wsl.py +143 -0
  203. conan/internal/source.py +75 -0
  204. conan/internal/subsystems.py +218 -0
  205. conan/internal/util/__init__.py +31 -0
  206. conan/internal/util/config_parser.py +52 -0
  207. conan/internal/util/dates.py +36 -0
  208. conan/internal/util/files.py +330 -0
  209. conan/internal/util/runners.py +105 -0
  210. conan/test/__init__.py +0 -0
  211. conan/test/assets/__init__.py +0 -0
  212. conan/test/assets/autotools.py +68 -0
  213. conan/test/assets/cmake.py +107 -0
  214. conan/test/assets/genconanfile.py +509 -0
  215. conan/test/assets/premake.py +45 -0
  216. conan/test/assets/sources.py +265 -0
  217. conan/test/assets/visual_project_files.py +251 -0
  218. conan/test/utils/__init__.py +0 -0
  219. conan/test/utils/artifactory.py +127 -0
  220. conan/test/utils/env.py +17 -0
  221. conan/test/utils/file_server.py +77 -0
  222. conan/test/utils/mocks.py +114 -0
  223. conan/test/utils/profiles.py +18 -0
  224. conan/test/utils/scm.py +66 -0
  225. conan/test/utils/server_launcher.py +109 -0
  226. conan/test/utils/test_files.py +97 -0
  227. conan/test/utils/tools.py +857 -0
  228. conan/tools/__init__.py +8 -0
  229. conan/tools/android/__init__.py +1 -0
  230. conan/tools/android/utils.py +35 -0
  231. conan/tools/apple/__init__.py +8 -0
  232. conan/tools/apple/apple.py +376 -0
  233. conan/tools/apple/xcodebuild.py +59 -0
  234. conan/tools/apple/xcodedeps.py +357 -0
  235. conan/tools/apple/xcodetoolchain.py +130 -0
  236. conan/tools/build/__init__.py +109 -0
  237. conan/tools/build/compiler.py +44 -0
  238. conan/tools/build/cppstd.py +286 -0
  239. conan/tools/build/cpu.py +21 -0
  240. conan/tools/build/cross_building.py +50 -0
  241. conan/tools/build/cstd.py +211 -0
  242. conan/tools/build/flags.py +624 -0
  243. conan/tools/build/stdcpp_library.py +16 -0
  244. conan/tools/cmake/__init__.py +17 -0
  245. conan/tools/cmake/cmake.py +358 -0
  246. conan/tools/cmake/cmakeconfigdeps/__init__.py +0 -0
  247. conan/tools/cmake/cmakeconfigdeps/cmakeconfigdeps.py +413 -0
  248. conan/tools/cmake/cmakeconfigdeps/config.py +176 -0
  249. conan/tools/cmake/cmakeconfigdeps/config_version.py +102 -0
  250. conan/tools/cmake/cmakeconfigdeps/target_configuration.py +512 -0
  251. conan/tools/cmake/cmakeconfigdeps/targets.py +48 -0
  252. conan/tools/cmake/cmakedeps/__init__.py +4 -0
  253. conan/tools/cmake/cmakedeps/cmakedeps.py +228 -0
  254. conan/tools/cmake/cmakedeps/templates/__init__.py +101 -0
  255. conan/tools/cmake/cmakedeps/templates/config.py +147 -0
  256. conan/tools/cmake/cmakedeps/templates/config_version.py +96 -0
  257. conan/tools/cmake/cmakedeps/templates/macros.py +130 -0
  258. conan/tools/cmake/cmakedeps/templates/target_configuration.py +235 -0
  259. conan/tools/cmake/cmakedeps/templates/target_data.py +362 -0
  260. conan/tools/cmake/cmakedeps/templates/targets.py +106 -0
  261. conan/tools/cmake/layout.py +111 -0
  262. conan/tools/cmake/presets.py +407 -0
  263. conan/tools/cmake/toolchain/__init__.py +2 -0
  264. conan/tools/cmake/toolchain/blocks.py +1450 -0
  265. conan/tools/cmake/toolchain/toolchain.py +275 -0
  266. conan/tools/cmake/utils.py +45 -0
  267. conan/tools/cps/__init__.py +1 -0
  268. conan/tools/cps/cps_deps.py +53 -0
  269. conan/tools/env/__init__.py +3 -0
  270. conan/tools/env/environment.py +965 -0
  271. conan/tools/env/virtualbuildenv.py +94 -0
  272. conan/tools/env/virtualrunenv.py +100 -0
  273. conan/tools/files/__init__.py +8 -0
  274. conan/tools/files/conandata.py +77 -0
  275. conan/tools/files/copy_pattern.py +166 -0
  276. conan/tools/files/files.py +641 -0
  277. conan/tools/files/patches.py +183 -0
  278. conan/tools/files/symlinks/__init__.py +2 -0
  279. conan/tools/files/symlinks/symlinks.py +65 -0
  280. conan/tools/gnu/__init__.py +7 -0
  281. conan/tools/gnu/autotools.py +143 -0
  282. conan/tools/gnu/autotoolsdeps.py +84 -0
  283. conan/tools/gnu/autotoolstoolchain.py +435 -0
  284. conan/tools/gnu/get_gnu_triplet.py +113 -0
  285. conan/tools/gnu/gnudeps_flags.py +96 -0
  286. conan/tools/gnu/gnutoolchain.py +401 -0
  287. conan/tools/gnu/makedeps.py +687 -0
  288. conan/tools/gnu/pkgconfig.py +116 -0
  289. conan/tools/gnu/pkgconfigdeps.py +401 -0
  290. conan/tools/google/__init__.py +4 -0
  291. conan/tools/google/bazel.py +82 -0
  292. conan/tools/google/bazeldeps.py +570 -0
  293. conan/tools/google/layout.py +20 -0
  294. conan/tools/google/toolchain.py +168 -0
  295. conan/tools/intel/__init__.py +1 -0
  296. conan/tools/intel/intel_cc.py +152 -0
  297. conan/tools/layout/__init__.py +19 -0
  298. conan/tools/meson/__init__.py +3 -0
  299. conan/tools/meson/helpers.py +139 -0
  300. conan/tools/meson/meson.py +152 -0
  301. conan/tools/meson/toolchain.py +626 -0
  302. conan/tools/microsoft/__init__.py +9 -0
  303. conan/tools/microsoft/layout.py +38 -0
  304. conan/tools/microsoft/msbuild.py +85 -0
  305. conan/tools/microsoft/msbuilddeps.py +399 -0
  306. conan/tools/microsoft/nmakedeps.py +88 -0
  307. conan/tools/microsoft/nmaketoolchain.py +117 -0
  308. conan/tools/microsoft/subsystems.py +14 -0
  309. conan/tools/microsoft/toolchain.py +259 -0
  310. conan/tools/microsoft/visual.py +417 -0
  311. conan/tools/premake/__init__.py +3 -0
  312. conan/tools/premake/constants.py +33 -0
  313. conan/tools/premake/premake.py +128 -0
  314. conan/tools/premake/premakedeps.py +301 -0
  315. conan/tools/premake/toolchain.py +304 -0
  316. conan/tools/qbs/__init__.py +3 -0
  317. conan/tools/qbs/common.py +88 -0
  318. conan/tools/qbs/qbs.py +164 -0
  319. conan/tools/qbs/qbsdeps.py +199 -0
  320. conan/tools/qbs/qbsprofile.py +314 -0
  321. conan/tools/ros/__init__.py +1 -0
  322. conan/tools/ros/rosenv.py +78 -0
  323. conan/tools/sbom/__init__.py +1 -0
  324. conan/tools/sbom/cyclonedx.py +221 -0
  325. conan/tools/sbom/spdx_licenses.py +1367 -0
  326. conan/tools/scm/__init__.py +2 -0
  327. conan/tools/scm/git.py +295 -0
  328. conan/tools/scons/__init__.py +1 -0
  329. conan/tools/scons/sconsdeps.py +61 -0
  330. conan/tools/system/__init__.py +1 -0
  331. conan/tools/system/package_manager.py +439 -0
  332. conan/tools/system/python_manager.py +187 -0
  333. conan_server-2.28.0.dist-info/LICENSE.md +28 -0
  334. conan_server-2.28.0.dist-info/METADATA +218 -0
  335. conan_server-2.28.0.dist-info/RECORD +386 -0
  336. conan_server-2.28.0.dist-info/WHEEL +5 -0
  337. conan_server-2.28.0.dist-info/entry_points.txt +2 -0
  338. conan_server-2.28.0.dist-info/top_level.txt +2 -0
  339. conans/__init__.py +0 -0
  340. conans/conan.py +12 -0
  341. conans/conan_server.py +20 -0
  342. conans/requirements.txt +9 -0
  343. conans/requirements_dev.txt +9 -0
  344. conans/requirements_runner.txt +2 -0
  345. conans/requirements_server.txt +4 -0
  346. conans/server/__init__.py +5 -0
  347. conans/server/conf/__init__.py +250 -0
  348. conans/server/conf/default_server_conf.py +73 -0
  349. conans/server/crypto/__init__.py +0 -0
  350. conans/server/crypto/jwt/__init__.py +0 -0
  351. conans/server/crypto/jwt/jwt_credentials_manager.py +26 -0
  352. conans/server/launcher.py +65 -0
  353. conans/server/migrate.py +15 -0
  354. conans/server/migrations.py +9 -0
  355. conans/server/plugin_loader.py +26 -0
  356. conans/server/rest/__init__.py +0 -0
  357. conans/server/rest/api_v2.py +45 -0
  358. conans/server/rest/bottle_plugins/__init__.py +0 -0
  359. conans/server/rest/bottle_plugins/authorization_header.py +74 -0
  360. conans/server/rest/bottle_plugins/http_basic_authentication.py +43 -0
  361. conans/server/rest/bottle_plugins/jwt_authentication.py +42 -0
  362. conans/server/rest/bottle_plugins/return_handler.py +50 -0
  363. conans/server/rest/bottle_routes.py +11 -0
  364. conans/server/rest/controller/__init__.py +0 -0
  365. conans/server/rest/controller/v2/__init__.py +7 -0
  366. conans/server/rest/controller/v2/conan.py +62 -0
  367. conans/server/rest/controller/v2/delete.py +46 -0
  368. conans/server/rest/controller/v2/ping.py +18 -0
  369. conans/server/rest/controller/v2/revisions.py +71 -0
  370. conans/server/rest/controller/v2/search.py +37 -0
  371. conans/server/rest/controller/v2/users.py +38 -0
  372. conans/server/rest/server.py +52 -0
  373. conans/server/revision_list.py +67 -0
  374. conans/server/server_launcher.py +15 -0
  375. conans/server/service/__init__.py +0 -0
  376. conans/server/service/authorize.py +211 -0
  377. conans/server/service/mime.py +9 -0
  378. conans/server/service/user_service.py +18 -0
  379. conans/server/service/v2/__init__.py +0 -0
  380. conans/server/service/v2/search.py +116 -0
  381. conans/server/service/v2/service_v2.py +146 -0
  382. conans/server/store/__init__.py +0 -0
  383. conans/server/store/disk_adapter.py +45 -0
  384. conans/server/store/server_store.py +248 -0
  385. conans/server/utils/__init__.py +0 -0
  386. conans/server/utils/files.py +46 -0
conan/__init__.py ADDED
@@ -0,0 +1,6 @@
1
+ from conan.internal.model.conan_file import ConanFile
2
+ from conan.internal.model.workspace import Workspace
3
+ from conan.internal.model.version import Version
4
+
5
+ __version__ = '2.28.0'
6
+ conan_version = Version(__version__)
conan/api/__init__.py ADDED
File without changes
conan/api/conan_api.py ADDED
@@ -0,0 +1,227 @@
1
+ import os
2
+ import sys
3
+
4
+ from conan.api.output import init_colorama
5
+ from conan.api.subapi.audit import AuditAPI
6
+ from conan.api.subapi.cache import CacheAPI
7
+ from conan.api.subapi.command import CommandAPI
8
+ from conan.api.subapi.local import LocalAPI
9
+ from conan.api.subapi.lockfile import LockfileAPI
10
+ from conan.api.subapi.report import ReportAPI
11
+ from conan.api.subapi.workspace import WorkspaceAPI
12
+ from conan.api.subapi.config import ConfigAPI
13
+ from conan.api.subapi.download import DownloadAPI
14
+ from conan.api.subapi.export import ExportAPI
15
+ from conan.api.subapi.install import InstallAPI
16
+ from conan.api.subapi.graph import GraphAPI
17
+ from conan.api.subapi.new import NewAPI
18
+ from conan.api.subapi.profiles import ProfilesAPI
19
+ from conan.api.subapi.list import ListAPI
20
+ from conan.api.subapi.remotes import RemotesAPI
21
+ from conan.api.subapi.remove import RemoveAPI
22
+ from conan.api.subapi.upload import UploadAPI
23
+ from conan.errors import ConanException
24
+ from conan.internal.api.remotes.localdb import LocalDB
25
+ from conan.internal.cache.cache import PkgCache
26
+ from conan.internal.cache.home_paths import HomePaths
27
+ from conan.internal.conan_app import ConanFileHelpers, CmdWrapper
28
+ from conan.internal.graph.proxy import ConanProxy
29
+ from conan.internal.graph.python_requires import PyRequireLoader
30
+ from conan.internal.graph.range_resolver import RangeResolver
31
+ from conan.internal.hook_manager import HookManager
32
+ from conan.internal.loader import ConanFileLoader, load_python_file
33
+ from conan.internal.model.conf import load_global_conf, ConfDefinition, CORE_CONF_PATTERN
34
+ from conan.internal.model.settings import load_settings_yml
35
+ from conan.internal.paths import get_conan_user_home
36
+ from conan.internal.api.local.editable import EditablePackages
37
+ from conan.internal.api.migrations import ClientMigrator
38
+ from conan.internal.model.version_range import validate_conan_version
39
+ from conan.internal.rest.auth_manager import ConanApiAuthManager
40
+ from conan.internal.rest.conan_requester import ConanRequester
41
+ from conan.internal.rest.remote_manager import RemoteManager
42
+
43
+
44
+ class ConanAPI:
45
+ """
46
+ This is the main object to interact with the Conan API. It provides all the subapis to work with
47
+ recipes, packages, remotes, etc., which are exposed as attributes of this class, and should
48
+ not be created directly.
49
+ """
50
+ def __init__(self, cache_folder=None):
51
+ """
52
+ :param cache_folder: Conan cache/home folder. It will have less priority than the
53
+ ``"home_folder"`` defined in a Workspace.
54
+ """
55
+
56
+ version = sys.version_info
57
+ if version.major == 2 or version.minor < 7:
58
+ raise ConanException("Conan needs Python >= 3.7")
59
+ if cache_folder is not None and not os.path.isabs(cache_folder):
60
+ raise ConanException("cache_folder has to be an absolute path")
61
+
62
+ init_colorama(sys.stderr)
63
+ # Deprecated, but still used internally, prefer home_folder
64
+ self.cache_folder = cache_folder or get_conan_user_home()
65
+ self._home_folder = self.cache_folder
66
+ self._api_helpers = self._ApiHelpers(self)
67
+ self.migrate()
68
+
69
+ #: Used to interact with the local Conan configuration
70
+ self.config: ConfigAPI = ConfigAPI(self, self._api_helpers)
71
+ #: Used to interact with remotes
72
+ self.remotes: RemotesAPI = RemotesAPI(self, self._api_helpers)
73
+ #: Used to call other commands
74
+ self.command: CommandAPI = CommandAPI(self)
75
+ #: Used to get latest refs and list refs of recipes and packages
76
+ self.list: ListAPI = ListAPI(self, self._api_helpers)
77
+ #: Used to process and load Conan profiles
78
+ self.profiles: ProfilesAPI = ProfilesAPI(self, self._api_helpers)
79
+ #: Used to install binaries, sources, deploy packages and more
80
+ self.install: InstallAPI = InstallAPI(self, self._api_helpers)
81
+ self.graph = GraphAPI(self, self._api_helpers)
82
+ #: Used to export recipes and pre-compiled package binaries to the Conan cache
83
+ self.export: ExportAPI = ExportAPI(self, self._api_helpers)
84
+ self.remove = RemoveAPI(self, self._api_helpers)
85
+ self.new = NewAPI(self)
86
+ #: Used to upload recipes and packages to remotes
87
+ self.upload: UploadAPI = UploadAPI(self, self._api_helpers)
88
+ #: Used to download recipes and packages from remotes
89
+ self.download: DownloadAPI = DownloadAPI(self, self._api_helpers)
90
+ #: Used to interact wit the packages storage cache
91
+ self.cache: CacheAPI = CacheAPI(self, self._api_helpers)
92
+ #: Used to read and manage lockfile files
93
+ self.lockfile: LockfileAPI = LockfileAPI(self)
94
+ #: Local flow helpers for developer "source", "build", "editable" commands
95
+ self.local: LocalAPI = LocalAPI(self, self._api_helpers)
96
+ #: Used to check vulnerabilities of dependencies
97
+ self.audit: AuditAPI = AuditAPI(self)
98
+ #: Used to manage workspaces
99
+ self.workspace: WorkspaceAPI = WorkspaceAPI(self)
100
+ self.report: ReportAPI = ReportAPI(self, self._api_helpers)
101
+
102
+ @property
103
+ def home_folder(self) -> str:
104
+ """ Where the Conan user home is located. Read only.
105
+ Can be modified by the ``CONAN_HOME`` environment variable or by the
106
+ ``.conanrc`` file in the current directory or any parent directory
107
+ when Conan is called.
108
+ """
109
+ return self._home_folder
110
+
111
+ def reinit(self):
112
+ """
113
+ Reinitialize the Conan API. This is useful when the configuration changes.
114
+ """
115
+ self._api_helpers.reinit()
116
+
117
+ def migrate(self):
118
+ # Migration system
119
+ # TODO: A prettier refactoring of migrators would be nice
120
+ from conan import conan_version
121
+ migrator = ClientMigrator(self._home_folder, conan_version)
122
+ migrator.migrate()
123
+
124
+ class _ApiHelpers:
125
+ # This is an internal implementation detail of Conan, DO NOT USE
126
+ def __init__(self, conan_api):
127
+ self._conan_api = conan_api
128
+ self._cli_core_confs = None
129
+ self._init_global_conf()
130
+ # TODO: Make uniform lazy vs non lazy collaborators
131
+ self.hook_manager = HookManager(HomePaths(self._conan_api.home_folder).hooks_path)
132
+ self._editable_packages = EditablePackages(self._conan_api.home_folder)
133
+ # Wraps an http_requester to inject proxies, certs, etc
134
+ self._requester = ConanRequester(self.global_conf, self._conan_api.home_folder)
135
+ self.cache = PkgCache(self._conan_api.home_folder, self.global_conf)
136
+ self._settings_yml = None
137
+ self._remote_manager = None
138
+
139
+ def set_core_confs(self, core_confs):
140
+ confs = ConfDefinition()
141
+ for c in core_confs:
142
+ if not CORE_CONF_PATTERN.match(c):
143
+ raise ConanException(f"Only core. values are allowed in --core-conf. Got {c}")
144
+ confs.loads("\n".join(core_confs))
145
+ confs.validate()
146
+ self._cli_core_confs = confs
147
+ # Last but not least, apply the new configuration
148
+ # This will in turn call ApiHelpers.reinit() as the very first thing
149
+ self._conan_api.reinit()
150
+
151
+ def _init_global_conf(self):
152
+ self.global_conf = load_global_conf(self._conan_api.home_folder)
153
+ if self._cli_core_confs:
154
+ self.global_conf.update_conf_definition(self._cli_core_confs)
155
+ required_range_new = self.global_conf.get("core:required_conan_version")
156
+ if required_range_new:
157
+ validate_conan_version(required_range_new)
158
+ self.global_conf.validate()
159
+
160
+ def reinit(self):
161
+ self._init_global_conf()
162
+ self.hook_manager.reinit()
163
+ self._requester = ConanRequester(self.global_conf, self._conan_api.home_folder)
164
+ self._settings_yml = None
165
+ self.cache = PkgCache(self._conan_api.home_folder, self.global_conf)
166
+ self._remote_manager = None
167
+ self._editable_packages = EditablePackages(self._conan_api.home_folder)
168
+
169
+ @property
170
+ def settings_yml(self):
171
+ if self._settings_yml is None:
172
+ self._settings_yml = load_settings_yml(self._conan_api.home_folder)
173
+ return self._settings_yml
174
+
175
+ @property
176
+ def remote_manager(self):
177
+ if self._remote_manager is None:
178
+ home_folder = self._conan_api.home_folder
179
+ localdb = LocalDB(home_folder)
180
+ requester = self._conan_api._api_helpers.requester # noqa
181
+ auth_manager = ConanApiAuthManager(requester, self._conan_api.home_folder, localdb,
182
+ self.global_conf)
183
+ self._remote_manager = RemoteManager(self.cache, auth_manager, home_folder)
184
+ return self._remote_manager
185
+
186
+ @property
187
+ def requester(self):
188
+ return self._requester
189
+
190
+ @property
191
+ def editable_packages(self):
192
+ # These are just the global editables, not including workspace ones
193
+ return self._editable_packages
194
+
195
+ @property
196
+ def loader(self):
197
+ _, _, load, _ = self.get_loader()
198
+ return load
199
+
200
+ def _flags_plugin(self):
201
+ plugin_path = os.path.join(self._conan_api.home_folder, "extensions", "plugins",
202
+ "compiler_flags.py")
203
+ if os.path.isfile(plugin_path):
204
+ mod, _ = load_python_file(plugin_path)
205
+ return mod.flags_map
206
+ return None
207
+
208
+ def get_loader(self):
209
+ ws_editables = self._conan_api.workspace.packages()
210
+ editable_packages = self._editable_packages.update_copy(ws_editables)
211
+
212
+ legacy_update = self.global_conf.get("core:update_policy", choices=["legacy"])
213
+ # This proxy is caching information
214
+ proxy = ConanProxy(self.cache, self.remote_manager, editable_packages,
215
+ legacy_update=legacy_update)
216
+ # This is caching too
217
+ range_resolver = RangeResolver(self.cache, self.remote_manager, self.global_conf,
218
+ editable_packages)
219
+
220
+ cmd_wrap = CmdWrapper(HomePaths(self._conan_api.home_folder).wrapper_path)
221
+ conanfile_helpers = ConanFileHelpers(self._requester, cmd_wrap, self.global_conf,
222
+ self.cache, self._conan_api.home_folder,
223
+ self._conan_api, flags_map=self._flags_plugin())
224
+ pyreq_loader = PyRequireLoader(proxy, range_resolver, self.global_conf)
225
+ # This is caching too!
226
+ loader = ConanFileLoader(pyreq_loader, conanfile_helpers)
227
+ return proxy, range_resolver, loader, None
conan/api/input.py ADDED
@@ -0,0 +1,95 @@
1
+ import getpass
2
+ import sys
3
+
4
+ from conan.errors import ConanException
5
+
6
+
7
+ class UserInput:
8
+ """Class to interact with the user, used to show messages and ask for information"""
9
+
10
+ def __init__(self, non_interactive):
11
+ """
12
+ Params:
13
+ ins: input stream
14
+ out: ConanOutput, should have "write" method
15
+ """
16
+ self._ins = sys.stdin
17
+ # FIXME: circular include, move "color_enabled" function to better location
18
+ from conan.api.output import ConanOutput
19
+ self._out = ConanOutput()
20
+ self._interactive = not non_interactive
21
+
22
+ def _raise_if_non_interactive(self):
23
+ if not self._interactive:
24
+ raise ConanException("Conan interactive mode disabled")
25
+
26
+ def raw_input(self):
27
+ self._raise_if_non_interactive()
28
+ return input()
29
+
30
+ def request_login(self, remote_name, username=None):
31
+ """Request user to input their name and password
32
+ :param remote_name:
33
+ :param username If username is specified it only request password"""
34
+ self._raise_if_non_interactive()
35
+ if not username:
36
+ self._out.login_msg(f"Remote '{remote_name}' username: ")
37
+ username = self.get_username()
38
+
39
+ self._out.login_msg("Please enter a password for "
40
+ f"user '{username}' on remote '{remote_name}': ")
41
+ try:
42
+ pwd = self.get_password()
43
+ except ConanException:
44
+ raise
45
+ except Exception as e:
46
+ raise ConanException('Cancelled pass %s' % e)
47
+ return username, pwd
48
+
49
+ def get_username(self):
50
+ """Overridable for testing purpose"""
51
+ return self.raw_input()
52
+
53
+ @staticmethod
54
+ def get_password():
55
+ """Overridable for testing purpose"""
56
+ try:
57
+ return getpass.getpass("")
58
+ except BaseException: # For KeyboardInterrupt too
59
+ raise ConanException("Interrupted interactive password input")
60
+
61
+ def request_string(self, msg, default_value=None):
62
+ """Request user to input a msg
63
+ :param default_value:
64
+ :param msg Name of the msg
65
+ """
66
+ self._raise_if_non_interactive()
67
+
68
+ if default_value:
69
+ self._out.write('%s (%s): ' % (msg, default_value))
70
+ else:
71
+ self._out.write('%s: ' % msg)
72
+ s = self._ins.readline().replace("\n", "")
73
+ if default_value is not None and s == '':
74
+ return default_value
75
+ return s
76
+
77
+ def request_boolean(self, msg, default_option=None):
78
+ """Request user to input a boolean"""
79
+ ret = None
80
+ while ret is None:
81
+ if default_option:
82
+ s = self.request_string("%s (YES/no)" % msg)
83
+ elif default_option is False:
84
+ s = self.request_string("%s (NO/yes)" % msg)
85
+ else:
86
+ s = self.request_string("%s (yes/no)" % msg)
87
+ if default_option is not None and s == '':
88
+ return default_option
89
+ if s.lower() in ['yes', 'y']:
90
+ ret = True
91
+ elif s.lower() in ['no', 'n']:
92
+ ret = False
93
+ else:
94
+ self._out.error(f"{s} is not a valid answer")
95
+ return ret
@@ -0,0 +1,3 @@
1
+ from conan.api.model.remote import Remote, LOCAL_RECIPES_INDEX
2
+ from conan.api.model.refs import RecipeReference, PkgReference
3
+ from conan.api.model.list import PackagesList, MultiPackagesList, ListPattern