hatch-xclam 0.7.0.dev12__py3-none-any.whl → 0.7.1__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 (87) hide show
  1. hatch/cli_hatch.py +120 -18
  2. hatch/mcp_host_config/__init__.py +4 -2
  3. hatch/mcp_host_config/backup.py +62 -31
  4. hatch/mcp_host_config/models.py +125 -1
  5. hatch/mcp_host_config/strategies.py +268 -1
  6. {hatch_xclam-0.7.0.dev12.dist-info → hatch_xclam-0.7.1.dist-info}/METADATA +41 -32
  7. hatch_xclam-0.7.1.dist-info/RECORD +105 -0
  8. hatch_xclam-0.7.1.dist-info/top_level.txt +2 -0
  9. tests/integration/__init__.py +5 -0
  10. tests/integration/test_mcp_kiro_integration.py +153 -0
  11. tests/regression/__init__.py +5 -0
  12. tests/regression/test_mcp_codex_backup_integration.py +162 -0
  13. tests/regression/test_mcp_codex_host_strategy.py +163 -0
  14. tests/regression/test_mcp_codex_model_validation.py +117 -0
  15. tests/regression/test_mcp_kiro_backup_integration.py +241 -0
  16. tests/regression/test_mcp_kiro_cli_integration.py +141 -0
  17. tests/regression/test_mcp_kiro_decorator_registration.py +71 -0
  18. tests/regression/test_mcp_kiro_host_strategy.py +214 -0
  19. tests/regression/test_mcp_kiro_model_validation.py +116 -0
  20. tests/regression/test_mcp_kiro_omni_conversion.py +104 -0
  21. tests/test_data_utils.py +108 -0
  22. tests/test_mcp_cli_all_host_specific_args.py +194 -1
  23. tests/test_mcp_cli_direct_management.py +8 -5
  24. hatch_xclam-0.7.0.dev12.dist-info/RECORD +0 -152
  25. hatch_xclam-0.7.0.dev12.dist-info/top_level.txt +0 -3
  26. node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py +0 -45
  27. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -365
  28. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -206
  29. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -1272
  30. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -1547
  31. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -59
  32. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -152
  33. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -270
  34. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -574
  35. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -704
  36. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -709
  37. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -173
  38. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -169
  39. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -113
  40. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -55
  41. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  42. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -805
  43. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -1172
  44. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -1319
  45. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -128
  46. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -104
  47. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -462
  48. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -89
  49. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -56
  50. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -2745
  51. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -3976
  52. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -44
  53. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -2965
  54. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -67
  55. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -1391
  56. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -26
  57. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -3112
  58. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -99
  59. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -767
  60. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -1260
  61. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -174
  62. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -61
  63. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -373
  64. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -1939
  65. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +0 -54
  66. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -303
  67. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -3196
  68. node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -65
  69. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +0 -15
  70. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +0 -108
  71. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +0 -252
  72. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +0 -83
  73. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +0 -359
  74. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +0 -61
  75. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +0 -192
  76. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/markers.py +0 -252
  77. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +0 -825
  78. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
  79. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +0 -90
  80. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +0 -1030
  81. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/tags.py +0 -553
  82. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/utils.py +0 -172
  83. node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/version.py +0 -563
  84. node_modules/npm/node_modules/node-gyp/gyp/test_gyp.py +0 -261
  85. {hatch_xclam-0.7.0.dev12.dist-info → hatch_xclam-0.7.1.dist-info}/WHEEL +0 -0
  86. {hatch_xclam-0.7.0.dev12.dist-info → hatch_xclam-0.7.1.dist-info}/entry_points.txt +0 -0
  87. {hatch_xclam-0.7.0.dev12.dist-info → hatch_xclam-0.7.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,152 +0,0 @@
1
- hatch/__init__.py,sha256=5JFQZiaZQewEWg8WktQKEdT8IeH0KstndZf27VH7sq4,594
2
- hatch/cli_hatch.py,sha256=kwTUTUqwI0SbAmyjeRFoj5ppLG90hJf7Pb4chPb7jvI,108041
3
- hatch/environment_manager.py,sha256=9R9PJYPKQLmWeGXBrOzXxty20la33LgCCYY8o2aMFBQ,60757
4
- hatch/package_loader.py,sha256=Sa2JIoio1QlMT2tOGwZhC6pFJIs419cYyoodzyaTDl4,11269
5
- hatch/python_environment_manager.py,sha256=guU3zz4_WG3ptuX_ATGCRIi_fDxNHlaQtMv3kiRSo8k,28894
6
- hatch/registry_explorer.py,sha256=XAHUUYNUtUnHeQc4J3HInzzpZBXuYJmCYKIEWzG-dDM,6636
7
- hatch/registry_retriever.py,sha256=e-6F_QcPVRvZfi9IxTAaWYxdE9qGZu0m8hhII1pVvM0,14524
8
- hatch/template_generator.py,sha256=SuZyi-_JhnRLKxpSdKppeNh2FbpSLNfyEFu_IypDaVs,5467
9
- hatch/installers/__init__.py,sha256=THz3NGO9lxFicFooY5HYuxH5u_kIrNhJkzsJnNI5Z3g,1190
10
- hatch/installers/dependency_installation_orchestrator.py,sha256=-K8PdI8BOcAhkwDmlDoH7U2T5pGIsAySbll25e8QVBo,30221
11
- hatch/installers/docker_installer.py,sha256=j4IJUczIHGzpCldszUdrmtONpqCtktPoQE9XY8PWUsY,21537
12
- hatch/installers/hatch_installer.py,sha256=DL9NR_UhhlYy7zqwGBZ9OiGz7eIL8rWREiChzJoLTeQ,8483
13
- hatch/installers/installation_context.py,sha256=TXM67kJhZZXynAfnorqZBV5-2uDOc2yfyzMqeVV6C8w,3513
14
- hatch/installers/installer_base.py,sha256=mId6Q_DLOQPZriq3wu3BCU-ckouom3EZgbWJQqo8Of0,8295
15
- hatch/installers/python_installer.py,sha256=MS9Q8wKjMAy7MEWk7zcAAiFgN0KzOVJFmMzXt1MSH8g,13632
16
- hatch/installers/registry.py,sha256=ZOEEMJy_kL5LVj5Mf7s1_CIovDnUVag6nB01dEU9Xeg,6831
17
- hatch/installers/system_installer.py,sha256=bdrmw3I9g2EU2E94-4vtJj01RhmekX9GxylU1RPT3Lk,22869
18
- hatch/mcp_host_config/__init__.py,sha256=WtN_wZVqSrzgcSzmL00I4Qh7_MKjtRlNhWLQ4JinP1o,1683
19
- hatch/mcp_host_config/backup.py,sha256=h3jssjEQxIsEPcpW07WSEJNcPvQ5ps-83_YtVuek-eg,16867
20
- hatch/mcp_host_config/host_management.py,sha256=sXyGluFQpfXKggxAVvV9riGRis29JnoEM2dTWSIwb24,23905
21
- hatch/mcp_host_config/models.py,sha256=WLAdeJc-t4zyiiHByQHYGpC55t6ViggBAs4N1ksJ6W8,24548
22
- hatch/mcp_host_config/reporting.py,sha256=Q8UKBJRfvJTbb5PM9xwLEOh3OJjf19AKpWKxs-2622k,6889
23
- hatch/mcp_host_config/strategies.py,sha256=deFdAbj8G6Mzs7W8fBlPMPnijxzSnQ2SS5AAx0JR6oY,20293
24
- hatch_xclam-0.7.0.dev12.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
25
- node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py,sha256=gOsKGUgjDIMvF7-Z8xqHKdVARNgEac_g_srOaeerZqY,1250
26
- node_modules/npm/node_modules/node-gyp/gyp/test_gyp.py,sha256=7PWZav30J2V-o0h5VFmqEyxmhPpjUPH9xYBJQnhcF8k,7691
27
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py,sha256=mzNxGJv3xJz8NLNfPaj1V9Yv1BH38PktL9i7hYphDOo,13029
28
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py,sha256=6i0lB7o_XoITED062iStKzkGvjAa9dOR8i144Aax4Ls,6732
29
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py,sha256=nLWtz6P0eyRyYOBO_S-WGKgQ7xXWNUYX2ZcsyYVY1l0,45452
30
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py,sha256=02XqIF-1lTV0fAb0zoJPA7hSNVMjyfw7hAVEobLF8pA,74286
31
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py,sha256=iMp0oiweW12S02CpXXFurd9omUPEfxMuVcSlT_PtlOQ,1782
32
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py,sha256=1WnQrXCQWH4ohj4Y4bfLzZl2Pdy2UJ6gO1wF74wh4Fg,5325
33
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py,sha256=OkSDMtL1zZQE-epLNBUdrjgQCeDUNaTcwzl__xIL7c8,10230
34
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py,sha256=cRWt9bqH-3GffwLXUHyJiwRP2ink-4LwJl3iH1xc5J4,19744
35
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py,sha256=aRZB6y6u3NDYEJvWmpCZ7v37lkBegdKrJ4tncBZReA4,24562
36
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/common.py,sha256=QGWO-e1zBGF1QFs4LbscBlpbrn7GZ9z9oZVpaQVYgAQ,24582
37
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/common_test.py,sha256=-emUJeGyMl2bN687KNEyfdX0uDxWDslILAgD0H04wXM,5716
38
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py,sha256=GICY6cjlHnVJ_QkRBy3rljPTvy-Ykkgr2Vy-4Ti0KHs,5425
39
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py,sha256=3oc9BPr9cXuGo7erwwTCUNvcaR20Qwku-HqwdBgZ5Y8,3943
40
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py,sha256=NqP4clxE-6pVXVfDnDiW0XAoPhZMU_8-vlnLQ9s5PBo,1886
41
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py,sha256=Jyv6gTGKlz1f7Jbw1Ja8iLzG5k-veW8o0OLLbimIXXY,126396
42
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input_test.py,sha256=nCv7azVvSS-vF9Eui11qu_RVT2vPG-_Erj-oUmgazqs,3426
43
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py,sha256=hXtJTTBcn2oWevCHEOVRMLUobrZDOCfbn6CDOTRVABk,30123
44
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py,sha256=jzNVLumqNttq4byaADi1PdPJIWMYrqWuw9hthAsWfvk,54122
45
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py,sha256=zMHkB8l0O7oRkuYFoaN9dotnbATBHZgErQztwE_W648,5640
46
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py,sha256=2V-wVMJ9TQ94aAQ9Omph4w_4DFCm_UGmG_L4alylB80,1293
47
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py,sha256=XKY-2mqlBEfXsGjf6ozAboN64RYWPK7ytI4emK6-CDw,15131
48
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py,sha256=2Wl7sy6DHlC843kjRCrEb2ZwkYbrusiV5jV4AACMr_A,81981
49
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py,sha256=eEphiO1QEl5qdNcuW1e7ogdtDVaTxSN3ZUKlUwCRyrc,1489
50
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py,sha256=GP1JKt30Xf3g1PF3-F5VjCbCXTwhGDIkrJqkQPGSyw0,12125
51
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py,sha256=zCvgZdHSGCax46mFdZjUnGlQXZzrDsSeRQbepj0n0kE,135596
52
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py,sha256=-z0nf3UnZa7vNw0uwxYYhISHrN6eSHIEVsGjiEaAuBg,2245
53
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py,sha256=Xm-S8jZHwD8FpxKkSypH_7khjm1THgfGSkXgHKr32uI,31540
55
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py,sha256=kZWeETJ3fmFKhBzLoNDwhYOagI7BFwQ6pnVoSeAxbAs,49815
56
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py,sha256=A9J1FnkYf6StVzWU0Qn9ynonSDC0F-AJJdNmJL1-z1g,49203
57
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py,sha256=rnoSt5dZZlDWKFUZInaX5Yx2lVJRl4vb790Zt_Ax59g,4849
58
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py,sha256=GEzwTkRQ8dQJfo_AzFeSKyP-uVBbfd1PBKXjgFc23vs,3102
59
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py,sha256=v3MaKUMkGRam8aDZKtF-Et8UmTpEwfbWXlW9IRlYuvM,17502
60
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py,sha256=wVdr3hEBg-mBbJ5ciQb6KlpTmXTbFNJmGrsI4GnNMhw,3505
61
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py,sha256=0GIUNSBx_z3M5gI8QnW6SPz08TyhgqunM9FtCs9A4LM,1693
62
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py,sha256=5FVgKqu4lkuTDcRwY_Y3ZMh7MbQTp4BL-YVvVcOm8QI,111590
63
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py,sha256=gvDPjImXGMPT80l4aQs18MUuv8-zCW-rPyEYEhtn8nw,150686
64
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py,sha256=GXwx0VN6YW9UEknU48egK8975dePLagBeEJoEpEtvFU,1263
65
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py,sha256=0vT2fWyk8vQ4kTXeHUaA4zhxhVoqA1Y-FAdASltrJTY,119547
66
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py,sha256=Iwe3AvH0ZDjGXhJoNCAIkJprR5mQb9uTfIu0UwbQn0U,2416
67
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py,sha256=wCOq2RCCIG72DYcDZVz0ChSRQw3tItvWSnGAkVn8DPw,66017
68
- node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py,sha256=PmjE1ka3d8g44YYw16_f1eDJR9wsfYIBCniDp2gm-wY,669
69
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/__init__.py,sha256=KgBCfHz9vghN9DtyaCUxyewfe5VrjVDtiatA1m6Ch7Q,501
70
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py,sha256=hbmK8OD6Z7fY6hwinHEUcD1by7czkGiNYu7ShnFEk2k,3266
71
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py,sha256=Rq6ppXAxH8XFtNf6tC-B-1SKuvCODPBvcCoSulMtbtk,9526
72
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py,sha256=kgmBGLFybpy8609-KTvzmt2zChCPWYvhp5BWP4JX7dE,2676
73
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_parser.py,sha256=5DhK_zYJE4U4yzSkgEBT4F7tT2xZ6Pkx4gSRKyvXneQ,10382
74
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431
75
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py,sha256=alCtbwXhOFAmFGZ6BQ-wCTSFoRAJ2z-ysIf7__MTJ_k,5292
76
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/markers.py,sha256=eH-txS2zq1HdNpTd9LcZUcVIwewAiNU0grmq5wjKnOk,8208
77
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/metadata.py,sha256=BX-cG2W29bcNHLKK9M8N62HBnTGfEXepszVl0rhF-HM,33030
78
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/requirements.py,sha256=wswG4mXHSgE9w4NjNnlSvgLGo6yYvfHVEFnWhuEmXxg,2952
80
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py,sha256=fmOSyM6_1KuFHLXQsRfIg6KiqAa5NyRPeXuxyooPL5A,39969
81
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/tags.py,sha256=pkG6gQ28RlhS09VzymVhVpGrWF5doHXfK1VxG9cdhoY,18355
82
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/utils.py,sha256=XgdmP3yx9-wQEFjO7OvMj9RjEf5JlR5HFFR69v7SQ9E,5268
83
- node_modules/npm/node_modules/node-gyp/gyp/pylib/packaging/version.py,sha256=XjRBLNK17UMDgLeP8UHnqwiY3TdSi03xFQURtec211A,16236
84
- tests/__init__.py,sha256=4I3aQWv143Y1QY_nRIBWnY9MIL-aoQOJuVlpoPQz24E,53
85
- tests/run_environment_tests.py,sha256=bWCr8UsPgU80SM8f_VSi0TCwDI6JNqZpvZ2W9-b2Lqk,7302
86
- tests/test_cli_version.py,sha256=lU8TBZfzn_8AenFNXYrLMARht91fI5twBN13L-iJebc,4778
87
- tests/test_data_utils.py,sha256=OjT4rVUxHAe-d1fIuG-4iMicM1uuadsWsKjqRzYlGtY,17752
88
- tests/test_dependency_orchestrator_consent.py,sha256=lA9Qu-3dFdXKmU8mzOS0tjM8j0yy9qMQXJJcgEoy12g,12652
89
- tests/test_docker_installer.py,sha256=pcWev4fGf1p-pR5T8tDswGVZqIprC86puLEl6t8yY2w,22305
90
- tests/test_env_manip.py,sha256=f3LjBX0y0wzTDjc52QDan3Fgcgtld7CvuzH5gYKxGhs,47941
91
- tests/test_hatch_installer.py,sha256=qHCEcKpbe0fHvkzib2rcUJUw1Z-PCRBBJhbjoyOYiVM,8231
92
- tests/test_installer_base.py,sha256=0xZiPDMf8LeFJs2SmnYhbIgL7mgvG_HKwL1myQovEZI,11818
93
- tests/test_mcp_atomic_operations.py,sha256=QmwUDRNZUz6b2i50yRAMBntRDaMMYZt6flHFJfVkzNE,10563
94
- tests/test_mcp_backup_integration.py,sha256=Auw6Bx1EXGwmCA-mRIy31DRLuRWyV33eB7GJiOvIPXQ,12360
95
- tests/test_mcp_cli_all_host_specific_args.py,sha256=xLmWCgvupfYo5Z107rYyuz4VJdgWFAWBAw7eKokSscw,11302
96
- tests/test_mcp_cli_backup_management.py,sha256=GlUUNu5K1w8S2jTQ6YISp5KeXH5c-H9F0lJX2SG0JWM,14019
97
- tests/test_mcp_cli_direct_management.py,sha256=NOlRGP7M3CJ6dzR9JNtqIswJaCT8WIOoy2PhKXlGqSM,21906
98
- tests/test_mcp_cli_discovery_listing.py,sha256=kdrCU6POLyGW9ejowNV-dUVDFVseMd_vibvgIDjZUCM,26595
99
- tests/test_mcp_cli_host_config_integration.py,sha256=dD6maHP0wHWnFZwxJ5LgSK1GsrYqB4WdicZkotqIANo,32512
100
- tests/test_mcp_cli_package_management.py,sha256=YFMhyh3dueel1f2R5_VMNr9AewDmVrqGbU1kj5bhdeo,14590
101
- tests/test_mcp_cli_partial_updates.py,sha256=zbzW_TfmQz7umzMdGkGmRwzstWM0bwCf0OzTscMv86Q,35785
102
- tests/test_mcp_environment_integration.py,sha256=_VaAaHH-CyA1p0o3mc21x7QuAnLGcPF0JV2Q5ajs2Ss,23098
103
- tests/test_mcp_host_config_backup.py,sha256=HiavPCfXRv3gCg3BZ7xiAwHREh0Kr7b5pDMGALnU_Zw,10675
104
- tests/test_mcp_host_configuration_manager.py,sha256=TGbdPY4IRhwZtn6QwZ665Tjfja3PLYgX9N6w2JZy1BY,12248
105
- tests/test_mcp_host_registry_decorator.py,sha256=RfluDYDan252HWxlRmjRY8j6ZVdNmomLwmW3L5whe8A,14038
106
- tests/test_mcp_pydantic_architecture_v4.py,sha256=cVMC2EPLn6eG52B4UeOdD1j6gF93o3MOm_J-dDBx0N8,21334
107
- tests/test_mcp_server_config_models.py,sha256=zxMsVmUTtpt57ffK7Pz2QRQtSdSeiVw8x77GGa_1yHM,9595
108
- tests/test_mcp_server_config_type_field.py,sha256=jix0Y_5DV5wAxAooZzPZiNXXfLzH7poqwG5TVK64H-g,7748
109
- tests/test_mcp_sync_functionality.py,sha256=7K16gdJfI74E8ngQn12YtZZvGHzqBUmbGflgjL_hyMA,12960
110
- tests/test_mcp_user_feedback_reporting.py,sha256=k_pg4vuWSO7V50TqG8NlW4U6xur939nUpANSY7WC3rY,12339
111
- tests/test_non_tty_integration.py,sha256=TrDOS64tmGSpBHIAfZh3FGCIcrcZmGv0X5zk777up4c,10981
112
- tests/test_online_package_loader.py,sha256=KAGa1e9B1AZ4f0ZUXI8DAZ99ps3Y4uCC5rwB5CNJj14,9214
113
- tests/test_python_environment_manager.py,sha256=AHEooqVL_1hDX1yKxN2Md7_rWqskxmLvw2OlnbeLwYs,38972
114
- tests/test_python_installer.py,sha256=DXBy7hNJk5313_dDXiHTLEH7UJSPUnyGs4IEr7Hn_5E,13009
115
- tests/test_registry.py,sha256=nFHwRIx9n8y0nHwW9j8X3DZ07Y0BLYZMKduTXo-xXTc,2261
116
- tests/test_registry_retriever.py,sha256=6mQQuqy2tQdw4j3VOkC_DxWqtKwaCjGPgXsdL-w48Yw,10775
117
- tests/test_system_installer.py,sha256=bWuyEKakhvi51iM8xHJh62zv83HUTd8QnPlqUUMWx9c,28102
118
- tests/test_data/packages/basic/base_pkg/hatch_mcp_server.py,sha256=nn9XJQz7Owq_AKZ35bUV-l5eThauxTvIQZdQmcZqbQg,350
119
- tests/test_data/packages/basic/base_pkg/mcp_server.py,sha256=gzXj-n0NbcS1TF-ebKOdXQRyuVIC0Gn_b8ZB-9RckrM,422
120
- tests/test_data/packages/basic/base_pkg_v2/hatch_mcp_server.py,sha256=VmGpeLPpsNyFyePNtcRQCSscLOHdZgXsGDulA4_9CJA,356
121
- tests/test_data/packages/basic/base_pkg_v2/mcp_server.py,sha256=73NQIbSaJ9Ou7UTASW-jr1BmGBvPJVQAZdTOESFlmMo,437
122
- tests/test_data/packages/basic/utility_pkg/hatch_mcp_server.py,sha256=7JkdHdsudXgfcVc8oDOUY2lm2HsZVNYynAMHvF-6o0Q,356
123
- tests/test_data/packages/basic/utility_pkg/mcp_server.py,sha256=bciy9KS6xfXEClf0MhKEV2ov6cPX0UrSxRjbwZoqGSk,437
124
- tests/test_data/packages/dependencies/complex_dep_pkg/hatch_mcp_server.py,sha256=4tsMAwqBlLQnVK-o2zCKQJdFdK_Gf-wa-WnzDGkZYTs,364
125
- tests/test_data/packages/dependencies/complex_dep_pkg/mcp_server.py,sha256=-uPYTLNwxy-ESddSr3WtJGB5jlQXzyv-hPTj-8kKvTw,457
126
- tests/test_data/packages/dependencies/docker_dep_pkg/hatch_mcp_server.py,sha256=UdAwxCqNdkJfT9eAKsJXRhn08Fr0mV1whMQ04Js8lRw,362
127
- tests/test_data/packages/dependencies/docker_dep_pkg/mcp_server.py,sha256=NIV5QJdq8VYN9MI5E7-ly9qWyhbYEvwfwXMfkOWmnk8,452
128
- tests/test_data/packages/dependencies/mixed_dep_pkg/hatch_mcp_server.py,sha256=ME3U787o6-WViUWrWh7TpI9XSnMl1gBD-_4Jgu2WjgA,360
129
- tests/test_data/packages/dependencies/mixed_dep_pkg/mcp_server.py,sha256=6Pa1bIp_FsEBhWDXQAfCCC35l6LPeDzh79zVmMgvSAc,447
130
- tests/test_data/packages/dependencies/python_dep_pkg/hatch_mcp_server.py,sha256=2ACrRr-uSt6VhVVjEcQ79yOk7Y9pUzH27TdlYJ1OY3A,362
131
- tests/test_data/packages/dependencies/python_dep_pkg/mcp_server.py,sha256=s_z_0-w0XiqU45Ujzrn62YoTHWH-x_jKq88dh8hPHgs,452
132
- tests/test_data/packages/dependencies/simple_dep_pkg/hatch_mcp_server.py,sha256=d-h1olfMIn8OBn8FKMcljerBqTXSNYpBl0NrPsulGEA,362
133
- tests/test_data/packages/dependencies/simple_dep_pkg/mcp_server.py,sha256=T1rMSjhu91oo0EKdUjd6J6WYWiwAA69t6MgjrUnEkLU,452
134
- tests/test_data/packages/dependencies/system_dep_pkg/hatch_mcp_server.py,sha256=CzykT89AkO2ROYQPncFdLSaLtOTcMZA-DPqgARJllOA,362
135
- tests/test_data/packages/dependencies/system_dep_pkg/mcp_server.py,sha256=1B67KE5GwrQiA2wx5fDiNslz-0o1LmLzt5m3Mgihx0E,452
136
- tests/test_data/packages/error_scenarios/circular_dep_pkg/hatch_mcp_server.py,sha256=1-j-7YRZ0LB5UlTXpg4st2HGmnuY7tvWb25y8sgvZjc,366
137
- tests/test_data/packages/error_scenarios/circular_dep_pkg/mcp_server.py,sha256=JnQW_659fc7YoNxo-SkAfOt0X34rvtsx37rUKbW7X9E,462
138
- tests/test_data/packages/error_scenarios/circular_dep_pkg_b/hatch_mcp_server.py,sha256=b4cim_becARqQWBZVVgruBtecdJdL6ggLSSii-mbrXo,370
139
- tests/test_data/packages/error_scenarios/circular_dep_pkg_b/mcp_server.py,sha256=xfR3F8rhlI4ERaKu7XX3kjawVMaJ1D07ufEKYpx2_ss,472
140
- tests/test_data/packages/error_scenarios/invalid_dep_pkg/hatch_mcp_server.py,sha256=V5Mj7zQmQzB2O-tVjQ4u8RICCXYHOWV05ThJotPk87E,364
141
- tests/test_data/packages/error_scenarios/invalid_dep_pkg/mcp_server.py,sha256=6e8_sbaCfe94rN1qrthHUZvBm8LpSc2l_3d0LMefDh8,457
142
- tests/test_data/packages/error_scenarios/version_conflict_pkg/hatch_mcp_server.py,sha256=5QsMT3FgqPi4RUEIn1JlMKhIip3Mb9Ctm_yAUZo5cWE,374
143
- tests/test_data/packages/error_scenarios/version_conflict_pkg/mcp_server.py,sha256=3H14Ys_jt8YVH8685d47lVPDudIICzFiwZxUrgXuP38,482
144
- tests/test_data/packages/schema_versions/schema_v1_1_0_pkg/main.py,sha256=_B5aqXK4ZgCKc2R6907s1UyCgAvelczcbC_ZOzednHc,238
145
- tests/test_data/packages/schema_versions/schema_v1_2_0_pkg/main.py,sha256=rinhVySJpjXKd2sRCS0ps7xTrVqImWcZ8l4aYbidYR8,238
146
- tests/test_data/packages/schema_versions/schema_v1_2_1_pkg/hatch_mcp_server.py,sha256=FT14llzHlA4i8I__8GugzBRowhg_CbLmsOwjq0IWFsY,368
147
- tests/test_data/packages/schema_versions/schema_v1_2_1_pkg/mcp_server.py,sha256=BRPAyyAseE2CGR3W647SwjlluYfi7ejhZck0An5581I,467
148
- hatch_xclam-0.7.0.dev12.dist-info/METADATA,sha256=ve7xm5bDxv39eMA-VmKhL6ie4wWzwMgmAmdUg-qepaw,5120
149
- hatch_xclam-0.7.0.dev12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
150
- hatch_xclam-0.7.0.dev12.dist-info/entry_points.txt,sha256=6xbkwFUtr7nRa56vUFMyJk2wjwFQ_XVaU53ruecWKI0,47
151
- hatch_xclam-0.7.0.dev12.dist-info/top_level.txt,sha256=1filTSzkOKvsGvPyo2JJiM8OAHLzqNIjRkz8KxnnKjg,25
152
- hatch_xclam-0.7.0.dev12.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- hatch
2
- node_modules
3
- tests
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- # Copyright (c) 2009 Google Inc. All rights reserved.
4
- # Use of this source code is governed by a BSD-style license that can be
5
- # found in the LICENSE file.
6
-
7
- import os
8
- import subprocess
9
- import sys
10
-
11
-
12
- def IsCygwin():
13
- # Function copied from pylib/gyp/common.py
14
- try:
15
- out = subprocess.Popen(
16
- "uname", stdout=subprocess.PIPE, stderr=subprocess.STDOUT
17
- )
18
- stdout, _ = out.communicate()
19
- return "CYGWIN" in stdout.decode("utf-8")
20
- except Exception:
21
- return False
22
-
23
-
24
- def UnixifyPath(path):
25
- try:
26
- if not IsCygwin():
27
- return path
28
- out = subprocess.Popen(
29
- ["cygpath", "-u", path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT
30
- )
31
- stdout, _ = out.communicate()
32
- return stdout.decode("utf-8")
33
- except Exception:
34
- return path
35
-
36
-
37
- # Make sure we're using the version of pylib in this repo, not one installed
38
- # elsewhere on the system. Also convert to Unix style path on Cygwin systems,
39
- # else the 'gyp' library will not be found
40
- path = UnixifyPath(sys.argv[0])
41
- sys.path.insert(0, os.path.join(os.path.dirname(path), "pylib"))
42
- import gyp # noqa: E402
43
-
44
- if __name__ == "__main__":
45
- sys.exit(gyp.script_main())
@@ -1,365 +0,0 @@
1
- # Copyright (c) 2012 Google Inc. All rights reserved.
2
- # Use of this source code is governed by a BSD-style license that can be
3
- # found in the LICENSE file.
4
-
5
- """New implementation of Visual Studio project generation."""
6
-
7
- import hashlib
8
- import os
9
- import random
10
- from operator import attrgetter
11
-
12
- import gyp.common
13
-
14
-
15
- def cmp(x, y):
16
- return (x > y) - (x < y)
17
-
18
-
19
- # Initialize random number generator
20
- random.seed()
21
-
22
- # GUIDs for project types
23
- ENTRY_TYPE_GUIDS = {
24
- "project": "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}",
25
- "folder": "{2150E333-8FDC-42A3-9474-1A3956D46DE8}",
26
- }
27
-
28
- # ------------------------------------------------------------------------------
29
- # Helper functions
30
-
31
-
32
- def MakeGuid(name, seed="msvs_new"):
33
- """Returns a GUID for the specified target name.
34
-
35
- Args:
36
- name: Target name.
37
- seed: Seed for MD5 hash.
38
- Returns:
39
- A GUID-line string calculated from the name and seed.
40
-
41
- This generates something which looks like a GUID, but depends only on the
42
- name and seed. This means the same name/seed will always generate the same
43
- GUID, so that projects and solutions which refer to each other can explicitly
44
- determine the GUID to refer to explicitly. It also means that the GUID will
45
- not change when the project for a target is rebuilt.
46
- """
47
- # Calculate a MD5 signature for the seed and name.
48
- d = hashlib.md5((str(seed) + str(name)).encode("utf-8")).hexdigest().upper()
49
- # Convert most of the signature to GUID form (discard the rest)
50
- guid = (
51
- "{"
52
- + d[:8]
53
- + "-"
54
- + d[8:12]
55
- + "-"
56
- + d[12:16]
57
- + "-"
58
- + d[16:20]
59
- + "-"
60
- + d[20:32]
61
- + "}"
62
- )
63
- return guid
64
-
65
-
66
- # ------------------------------------------------------------------------------
67
-
68
-
69
- class MSVSSolutionEntry:
70
- def __cmp__(self, other):
71
- # Sort by name then guid (so things are in order on vs2008).
72
- return cmp((self.name, self.get_guid()), (other.name, other.get_guid()))
73
-
74
-
75
- class MSVSFolder(MSVSSolutionEntry):
76
- """Folder in a Visual Studio project or solution."""
77
-
78
- def __init__(self, path, name=None, entries=None, guid=None, items=None):
79
- """Initializes the folder.
80
-
81
- Args:
82
- path: Full path to the folder.
83
- name: Name of the folder.
84
- entries: List of folder entries to nest inside this folder. May contain
85
- Folder or Project objects. May be None, if the folder is empty.
86
- guid: GUID to use for folder, if not None.
87
- items: List of solution items to include in the folder project. May be
88
- None, if the folder does not directly contain items.
89
- """
90
- if name:
91
- self.name = name
92
- else:
93
- # Use last layer.
94
- self.name = os.path.basename(path)
95
-
96
- self.path = path
97
- self.guid = guid
98
-
99
- # Copy passed lists (or set to empty lists)
100
- self.entries = sorted(entries or [], key=attrgetter("path"))
101
- self.items = list(items or [])
102
-
103
- self.entry_type_guid = ENTRY_TYPE_GUIDS["folder"]
104
-
105
- def get_guid(self):
106
- if self.guid is None:
107
- # Use consistent guids for folders (so things don't regenerate).
108
- self.guid = MakeGuid(self.path, seed="msvs_folder")
109
- return self.guid
110
-
111
-
112
- # ------------------------------------------------------------------------------
113
-
114
-
115
- class MSVSProject(MSVSSolutionEntry):
116
- """Visual Studio project."""
117
-
118
- def __init__(
119
- self,
120
- path,
121
- name=None,
122
- dependencies=None,
123
- guid=None,
124
- spec=None,
125
- build_file=None,
126
- config_platform_overrides=None,
127
- fixpath_prefix=None,
128
- ):
129
- """Initializes the project.
130
-
131
- Args:
132
- path: Absolute path to the project file.
133
- name: Name of project. If None, the name will be the same as the base
134
- name of the project file.
135
- dependencies: List of other Project objects this project is dependent
136
- upon, if not None.
137
- guid: GUID to use for project, if not None.
138
- spec: Dictionary specifying how to build this project.
139
- build_file: Filename of the .gyp file that the vcproj file comes from.
140
- config_platform_overrides: optional dict of configuration platforms to
141
- used in place of the default for this target.
142
- fixpath_prefix: the path used to adjust the behavior of _fixpath
143
- """
144
- self.path = path
145
- self.guid = guid
146
- self.spec = spec
147
- self.build_file = build_file
148
- # Use project filename if name not specified
149
- self.name = name or os.path.splitext(os.path.basename(path))[0]
150
-
151
- # Copy passed lists (or set to empty lists)
152
- self.dependencies = list(dependencies or [])
153
-
154
- self.entry_type_guid = ENTRY_TYPE_GUIDS["project"]
155
-
156
- if config_platform_overrides:
157
- self.config_platform_overrides = config_platform_overrides
158
- else:
159
- self.config_platform_overrides = {}
160
- self.fixpath_prefix = fixpath_prefix
161
- self.msbuild_toolset = None
162
-
163
- def set_dependencies(self, dependencies):
164
- self.dependencies = list(dependencies or [])
165
-
166
- def get_guid(self):
167
- if self.guid is None:
168
- # Set GUID from path
169
- # TODO(rspangler): This is fragile.
170
- # 1. We can't just use the project filename sans path, since there could
171
- # be multiple projects with the same base name (for example,
172
- # foo/unittest.vcproj and bar/unittest.vcproj).
173
- # 2. The path needs to be relative to $SOURCE_ROOT, so that the project
174
- # GUID is the same whether it's included from base/base.sln or
175
- # foo/bar/baz/baz.sln.
176
- # 3. The GUID needs to be the same each time this builder is invoked, so
177
- # that we don't need to rebuild the solution when the project changes.
178
- # 4. We should be able to handle pre-built project files by reading the
179
- # GUID from the files.
180
- self.guid = MakeGuid(self.name)
181
- return self.guid
182
-
183
- def set_msbuild_toolset(self, msbuild_toolset):
184
- self.msbuild_toolset = msbuild_toolset
185
-
186
-
187
- # ------------------------------------------------------------------------------
188
-
189
-
190
- class MSVSSolution:
191
- """Visual Studio solution."""
192
-
193
- def __init__(
194
- self, path, version, entries=None, variants=None, websiteProperties=True
195
- ):
196
- """Initializes the solution.
197
-
198
- Args:
199
- path: Path to solution file.
200
- version: Format version to emit.
201
- entries: List of entries in solution. May contain Folder or Project
202
- objects. May be None, if the folder is empty.
203
- variants: List of build variant strings. If none, a default list will
204
- be used.
205
- websiteProperties: Flag to decide if the website properties section
206
- is generated.
207
- """
208
- self.path = path
209
- self.websiteProperties = websiteProperties
210
- self.version = version
211
-
212
- # Copy passed lists (or set to empty lists)
213
- self.entries = list(entries or [])
214
-
215
- if variants:
216
- # Copy passed list
217
- self.variants = variants[:]
218
- else:
219
- # Use default
220
- self.variants = ["Debug|Win32", "Release|Win32"]
221
- # TODO(rspangler): Need to be able to handle a mapping of solution config
222
- # to project config. Should we be able to handle variants being a dict,
223
- # or add a separate variant_map variable? If it's a dict, we can't
224
- # guarantee the order of variants since dict keys aren't ordered.
225
-
226
- # TODO(rspangler): Automatically write to disk for now; should delay until
227
- # node-evaluation time.
228
- self.Write()
229
-
230
- def Write(self, writer=gyp.common.WriteOnDiff):
231
- """Writes the solution file to disk.
232
-
233
- Raises:
234
- IndexError: An entry appears multiple times.
235
- """
236
- # Walk the entry tree and collect all the folders and projects.
237
- all_entries = set()
238
- entries_to_check = self.entries[:]
239
- while entries_to_check:
240
- e = entries_to_check.pop(0)
241
-
242
- # If this entry has been visited, nothing to do.
243
- if e in all_entries:
244
- continue
245
-
246
- all_entries.add(e)
247
-
248
- # If this is a folder, check its entries too.
249
- if isinstance(e, MSVSFolder):
250
- entries_to_check += e.entries
251
-
252
- all_entries = sorted(all_entries, key=attrgetter("path"))
253
-
254
- # Open file and print header
255
- f = writer(self.path)
256
- f.write(
257
- "Microsoft Visual Studio Solution File, "
258
- "Format Version %s\r\n" % self.version.SolutionVersion()
259
- )
260
- f.write("# %s\r\n" % self.version.Description())
261
-
262
- # Project entries
263
- sln_root = os.path.split(self.path)[0]
264
- for e in all_entries:
265
- relative_path = gyp.common.RelativePath(e.path, sln_root)
266
- # msbuild does not accept an empty folder_name.
267
- # use '.' in case relative_path is empty.
268
- folder_name = relative_path.replace("/", "\\") or "."
269
- f.write(
270
- 'Project("%s") = "%s", "%s", "%s"\r\n'
271
- % (
272
- e.entry_type_guid, # Entry type GUID
273
- e.name, # Folder name
274
- folder_name, # Folder name (again)
275
- e.get_guid(), # Entry GUID
276
- )
277
- )
278
-
279
- # TODO(rspangler): Need a way to configure this stuff
280
- if self.websiteProperties:
281
- f.write(
282
- "\tProjectSection(WebsiteProperties) = preProject\r\n"
283
- '\t\tDebug.AspNetCompiler.Debug = "True"\r\n'
284
- '\t\tRelease.AspNetCompiler.Debug = "False"\r\n'
285
- "\tEndProjectSection\r\n"
286
- )
287
-
288
- if isinstance(e, MSVSFolder) and e.items:
289
- f.write("\tProjectSection(SolutionItems) = preProject\r\n")
290
- for i in e.items:
291
- f.write(f"\t\t{i} = {i}\r\n")
292
- f.write("\tEndProjectSection\r\n")
293
-
294
- if isinstance(e, MSVSProject) and e.dependencies:
295
- f.write("\tProjectSection(ProjectDependencies) = postProject\r\n")
296
- for d in e.dependencies:
297
- f.write(f"\t\t{d.get_guid()} = {d.get_guid()}\r\n")
298
- f.write("\tEndProjectSection\r\n")
299
-
300
- f.write("EndProject\r\n")
301
-
302
- # Global section
303
- f.write("Global\r\n")
304
-
305
- # Configurations (variants)
306
- f.write("\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n")
307
- for v in self.variants:
308
- f.write(f"\t\t{v} = {v}\r\n")
309
- f.write("\tEndGlobalSection\r\n")
310
-
311
- # Sort config guids for easier diffing of solution changes.
312
- config_guids = []
313
- config_guids_overrides = {}
314
- for e in all_entries:
315
- if isinstance(e, MSVSProject):
316
- config_guids.append(e.get_guid())
317
- config_guids_overrides[e.get_guid()] = e.config_platform_overrides
318
- config_guids.sort()
319
-
320
- f.write("\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n")
321
- for g in config_guids:
322
- for v in self.variants:
323
- nv = config_guids_overrides[g].get(v, v)
324
- # Pick which project configuration to build for this solution
325
- # configuration.
326
- f.write(
327
- "\t\t%s.%s.ActiveCfg = %s\r\n"
328
- % (
329
- g, # Project GUID
330
- v, # Solution build configuration
331
- nv, # Project build config for that solution config
332
- )
333
- )
334
-
335
- # Enable project in this solution configuration.
336
- f.write(
337
- "\t\t%s.%s.Build.0 = %s\r\n"
338
- % (
339
- g, # Project GUID
340
- v, # Solution build configuration
341
- nv, # Project build config for that solution config
342
- )
343
- )
344
- f.write("\tEndGlobalSection\r\n")
345
-
346
- # TODO(rspangler): Should be able to configure this stuff too (though I've
347
- # never seen this be any different)
348
- f.write("\tGlobalSection(SolutionProperties) = preSolution\r\n")
349
- f.write("\t\tHideSolutionNode = FALSE\r\n")
350
- f.write("\tEndGlobalSection\r\n")
351
-
352
- # Folder mappings
353
- # Omit this section if there are no folders
354
- if any(e.entries for e in all_entries if isinstance(e, MSVSFolder)):
355
- f.write("\tGlobalSection(NestedProjects) = preSolution\r\n")
356
- for e in all_entries:
357
- if not isinstance(e, MSVSFolder):
358
- continue # Does not apply to projects, only folders
359
- for subentry in e.entries:
360
- f.write(f"\t\t{subentry.get_guid()} = {e.get_guid()}\r\n")
361
- f.write("\tEndGlobalSection\r\n")
362
-
363
- f.write("EndGlobal\r\n")
364
-
365
- f.close()