iotedgedev 3.3.4__zip

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 (356) hide show
  1. s/.devcontainer/Dockerfile +75 -0
  2. s/.devcontainer/devcontainer.json +40 -0
  3. s/.devcontainer/library-scripts/docker-in-docker-debian.sh +236 -0
  4. s/.env.tmp +108 -0
  5. s/.git/FETCH_HEAD +61 -0
  6. s/.git/HEAD +1 -0
  7. s/.git/config +12 -0
  8. s/.git/description +1 -0
  9. s/.git/hooks/applypatch-msg.sample +15 -0
  10. s/.git/hooks/commit-msg.sample +24 -0
  11. s/.git/hooks/fsmonitor-watchman.sample +173 -0
  12. s/.git/hooks/post-update.sample +8 -0
  13. s/.git/hooks/pre-applypatch.sample +14 -0
  14. s/.git/hooks/pre-commit.sample +49 -0
  15. s/.git/hooks/pre-merge-commit.sample +13 -0
  16. s/.git/hooks/pre-push.sample +53 -0
  17. s/.git/hooks/pre-rebase.sample +169 -0
  18. s/.git/hooks/pre-receive.sample +24 -0
  19. s/.git/hooks/prepare-commit-msg.sample +42 -0
  20. s/.git/hooks/push-to-checkout.sample +78 -0
  21. s/.git/hooks/update.sample +128 -0
  22. s/.git/index +0 -0
  23. s/.git/info/exclude +6 -0
  24. s/.git/logs/HEAD +1 -0
  25. s/.git/logs/refs/remotes/origin/EO +1 -0
  26. s/.git/logs/refs/remotes/origin/avagraw/security_fix +1 -0
  27. s/.git/logs/refs/remotes/origin/cherry-pick-rename +1 -0
  28. s/.git/logs/refs/remotes/origin/chyuan/fix-validation-not-fail-test +1 -0
  29. s/.git/logs/refs/remotes/origin/chyuan/update-linux-agent +1 -0
  30. s/.git/logs/refs/remotes/origin/dependabot/pip/pyyaml-5.4 +1 -0
  31. s/.git/logs/refs/remotes/origin/eliises/add-device-tagging-docs +1 -0
  32. s/.git/logs/refs/remotes/origin/main +1 -0
  33. s/.git/logs/refs/remotes/origin/ray-deps +1 -0
  34. s/.git/logs/refs/remotes/origin/ray-dev-setup +1 -0
  35. s/.git/logs/refs/remotes/origin/ray-tox +1 -0
  36. s/.git/logs/refs/remotes/origin/release-pipeline-automation +1 -0
  37. s/.git/logs/refs/remotes/origin/spmcdono/fix-pipeline-test-install +1 -0
  38. s/.git/logs/refs/remotes/origin/spmcdono/layered-deployments +1 -0
  39. s/.git/logs/refs/remotes/origin/spmcdono/pypi-package-test-pipeline +1 -0
  40. s/.git/logs/refs/remotes/origin/spmcdono/remove-py2 +1 -0
  41. s/.git/logs/refs/remotes/origin/spmcdono/remove-py2-dev +1 -0
  42. s/.git/logs/refs/remotes/origin/spmcdono/test-native-runtime-install +1 -0
  43. s/.git/logs/refs/remotes/origin/spmcdono/update-pipeline +1 -0
  44. s/.git/logs/refs/remotes/origin/user/marine/EliiseS/devcontainer +1 -0
  45. s/.git/logs/refs/remotes/origin/user/marine/fixsimver +1 -0
  46. s/.git/logs/refs/remotes/origin/user/marine/layereddeploymentsbuildtest +1 -0
  47. s/.git/logs/refs/remotes/origin/user/marine/master-to-main +1 -0
  48. s/.git/logs/refs/remotes/origin/user/marine/pipeline +1 -0
  49. s/.git/logs/refs/remotes/origin/user/vikas +1 -0
  50. s/.git/logs/refs/remotes/origin/user/vikas0212/verify-tests +1 -0
  51. s/.git/logs/refs/remotes/origin/user/vikas2 +1 -0
  52. s/.git/logs/refs/remotes/origin/user/vikas_pypi +1 -0
  53. s/.git/logs/refs/remotes/origin/user/vikas_pypi-1 +1 -0
  54. s/.git/logs/refs/remotes/origin/user/vikas_testing +1 -0
  55. s/.git/logs/refs/remotes/origin/user/xinzed/dps_conn_str +1 -0
  56. s/.git/logs/refs/remotes/origin/user/xinzed/update-python-docker +1 -0
  57. s/.git/logs/refs/remotes/origin/vikas/azure +1 -0
  58. s/.git/logs/refs/remotes/origin/vikas/dependebot +1 -0
  59. s/.git/logs/refs/remotes/origin/xinzed/3_1_0rc1 +1 -0
  60. s/.git/logs/refs/remotes/origin/xinzed/update-runtime +1 -0
  61. s/.git/objects/pack/pack-a8179feb7da51d11a42c37c5b3c8593cffe17075.idx +0 -0
  62. s/.git/objects/pack/pack-a8179feb7da51d11a42c37c5b3c8593cffe17075.pack +0 -0
  63. s/.git/refs/remotes/origin/EO +1 -0
  64. s/.git/refs/remotes/origin/avagraw/security_fix +1 -0
  65. s/.git/refs/remotes/origin/cherry-pick-rename +1 -0
  66. s/.git/refs/remotes/origin/chyuan/fix-validation-not-fail-test +1 -0
  67. s/.git/refs/remotes/origin/chyuan/update-linux-agent +1 -0
  68. s/.git/refs/remotes/origin/dependabot/pip/pyyaml-5.4 +1 -0
  69. s/.git/refs/remotes/origin/eliises/add-device-tagging-docs +1 -0
  70. s/.git/refs/remotes/origin/main +1 -0
  71. s/.git/refs/remotes/origin/ray-deps +1 -0
  72. s/.git/refs/remotes/origin/ray-dev-setup +1 -0
  73. s/.git/refs/remotes/origin/ray-tox +1 -0
  74. s/.git/refs/remotes/origin/release-pipeline-automation +1 -0
  75. s/.git/refs/remotes/origin/spmcdono/fix-pipeline-test-install +1 -0
  76. s/.git/refs/remotes/origin/spmcdono/layered-deployments +1 -0
  77. s/.git/refs/remotes/origin/spmcdono/pypi-package-test-pipeline +1 -0
  78. s/.git/refs/remotes/origin/spmcdono/remove-py2 +1 -0
  79. s/.git/refs/remotes/origin/spmcdono/remove-py2-dev +1 -0
  80. s/.git/refs/remotes/origin/spmcdono/test-native-runtime-install +1 -0
  81. s/.git/refs/remotes/origin/spmcdono/update-pipeline +1 -0
  82. s/.git/refs/remotes/origin/user/marine/EliiseS/devcontainer +1 -0
  83. s/.git/refs/remotes/origin/user/marine/fixsimver +1 -0
  84. s/.git/refs/remotes/origin/user/marine/layereddeploymentsbuildtest +1 -0
  85. s/.git/refs/remotes/origin/user/marine/master-to-main +1 -0
  86. s/.git/refs/remotes/origin/user/marine/pipeline +1 -0
  87. s/.git/refs/remotes/origin/user/vikas +1 -0
  88. s/.git/refs/remotes/origin/user/vikas0212/verify-tests +1 -0
  89. s/.git/refs/remotes/origin/user/vikas2 +1 -0
  90. s/.git/refs/remotes/origin/user/vikas_pypi +1 -0
  91. s/.git/refs/remotes/origin/user/vikas_pypi-1 +1 -0
  92. s/.git/refs/remotes/origin/user/vikas_testing +1 -0
  93. s/.git/refs/remotes/origin/user/xinzed/dps_conn_str +1 -0
  94. s/.git/refs/remotes/origin/user/xinzed/update-python-docker +1 -0
  95. s/.git/refs/remotes/origin/vikas/azure +1 -0
  96. s/.git/refs/remotes/origin/vikas/dependebot +1 -0
  97. s/.git/refs/remotes/origin/xinzed/3_1_0rc1 +1 -0
  98. s/.git/refs/remotes/origin/xinzed/update-runtime +1 -0
  99. s/.git/refs/tags/v0.49.0 +1 -0
  100. s/.git/refs/tags/v0.50.0 +1 -0
  101. s/.git/refs/tags/v0.51.0 +1 -0
  102. s/.git/refs/tags/v0.52.0 +1 -0
  103. s/.git/refs/tags/v0.53.0 +1 -0
  104. s/.git/refs/tags/v0.54.0 +1 -0
  105. s/.git/refs/tags/v0.55.0 +1 -0
  106. s/.git/refs/tags/v0.56.0 +1 -0
  107. s/.git/refs/tags/v0.57.0 +1 -0
  108. s/.git/refs/tags/v0.58.0 +1 -0
  109. s/.git/refs/tags/v0.59.0 +1 -0
  110. s/.git/refs/tags/v0.60.0 +1 -0
  111. s/.git/refs/tags/v0.61.0 +1 -0
  112. s/.git/refs/tags/v0.62.0 +1 -0
  113. s/.git/refs/tags/v0.63.0 +1 -0
  114. s/.git/refs/tags/v0.64.0 +1 -0
  115. s/.git/refs/tags/v0.65.0 +1 -0
  116. s/.git/refs/tags/v0.66.0 +1 -0
  117. s/.git/refs/tags/v0.67.0 +1 -0
  118. s/.git/refs/tags/v0.68.0 +1 -0
  119. s/.git/refs/tags/v0.69.0 +1 -0
  120. s/.git/refs/tags/v0.70.0 +1 -0
  121. s/.git/refs/tags/v0.71.0 +1 -0
  122. s/.git/refs/tags/v0.72.0 +1 -0
  123. s/.git/refs/tags/v0.73.0 +1 -0
  124. s/.git/refs/tags/v0.74.0 +1 -0
  125. s/.git/refs/tags/v0.75.0 +1 -0
  126. s/.git/refs/tags/v0.76.0 +1 -0
  127. s/.git/refs/tags/v0.77.0 +1 -0
  128. s/.git/refs/tags/v0.78.0 +1 -0
  129. s/.git/refs/tags/v0.79.0 +1 -0
  130. s/.git/refs/tags/v0.82.0 +1 -0
  131. s/.git/refs/tags/v0.82.0-container +1 -0
  132. s/.git/refs/tags/v1.0.0 +1 -0
  133. s/.git/refs/tags/v1.1.0 +1 -0
  134. s/.git/refs/tags/v1.2.0 +1 -0
  135. s/.git/refs/tags/v1.3.0 +1 -0
  136. s/.git/refs/tags/v2.0.0 +1 -0
  137. s/.git/refs/tags/v2.0.1 +1 -0
  138. s/.git/refs/tags/v2.0.2 +1 -0
  139. s/.git/refs/tags/v2.1.0 +1 -0
  140. s/.git/refs/tags/v2.1.1 +1 -0
  141. s/.git/refs/tags/v2.1.2 +1 -0
  142. s/.git/refs/tags/v2.1.3 +1 -0
  143. s/.git/refs/tags/v2.1.4 +1 -0
  144. s/.git/refs/tags/v2.1.6 +1 -0
  145. s/.git/refs/tags/v2.2.0 +1 -0
  146. s/.git/refs/tags/v3.0.0 +1 -0
  147. s/.git/refs/tags/v3.0.0-rc +1 -0
  148. s/.git/refs/tags/v3.1.0 +1 -0
  149. s/.git/refs/tags/v3.1.1 +1 -0
  150. s/.git/refs/tags/v3.1.2 +1 -0
  151. s/.git/refs/tags/v3.2.0 +1 -0
  152. s/.git/refs/tags/v3.2.0rc0 +1 -0
  153. s/.git/refs/tags/v3.3.0 +1 -0
  154. s/.git/refs/tags/v3.3.1 +1 -0
  155. s/.git/refs/tags/v3.3.2 +1 -0
  156. s/.git/refs/tags/v3.3.3 +1 -0
  157. s/.git/refs/tags/v3.3.3-rc0 +1 -0
  158. s/.git/refs/tags/v3.3.4 +1 -0
  159. s/.github/ISSUE_TEMPLATE/bug_report.md +16 -0
  160. s/.github/ISSUE_TEMPLATE/feature_request.md +7 -0
  161. s/.github/workflows/wiki.yml +54 -0
  162. s/.gitignore +103 -0
  163. s/.vscode/launch.json +26 -0
  164. s/.vscode/settings.json +30 -0
  165. s/CHANGELOG.md +156 -0
  166. s/CODE_OF_CONDUCT.md +1 -0
  167. s/CONTRIBUTING.md +122 -0
  168. s/LICENSE +14 -0
  169. s/MANIFEST.in +7 -0
  170. s/Makefile +87 -0
  171. s/README.md +204 -0
  172. s/assets/armdeployment.png +0 -0
  173. s/assets/armoutputs.png +0 -0
  174. s/assets/deploy/ARMDeployment/ARMDeployment.deployproj +36 -0
  175. s/assets/deploy/ARMDeployment/Deploy-AzureResourceGroup.ps1 +118 -0
  176. s/assets/deploy/ARMDeployment/azuredeploy.json +145 -0
  177. s/assets/deploy/ARMDeployment/azuredeploy.parameters.json +6 -0
  178. s/assets/deploy/ARMDeployment.sln +25 -0
  179. s/assets/edgedevtool2mins.png +0 -0
  180. s/assets/edgedevtoolintro.png +0 -0
  181. s/assets/edgedevtoolquickstartlarge.png +0 -0
  182. s/assets/edgedevtoolquickstartsmall.png +0 -0
  183. s/assets/edgedevtoolwsl.png +0 -0
  184. s/azure-pipelines.yml +144 -0
  185. s/build/lib/iotedgedev/__init__.py +6 -0
  186. s/build/lib/iotedgedev/args.py +18 -0
  187. s/build/lib/iotedgedev/azurecli.py +542 -0
  188. s/build/lib/iotedgedev/buildoptionsparser.py +151 -0
  189. s/build/lib/iotedgedev/buildprofile.py +5 -0
  190. s/build/lib/iotedgedev/cli.py +830 -0
  191. s/build/lib/iotedgedev/connectionstring.py +58 -0
  192. s/build/lib/iotedgedev/constants.py +12 -0
  193. s/build/lib/iotedgedev/containerregistry.py +5 -0
  194. s/build/lib/iotedgedev/decorators.py +116 -0
  195. s/build/lib/iotedgedev/deploymentmanifest.py +313 -0
  196. s/build/lib/iotedgedev/dockercls.py +255 -0
  197. s/build/lib/iotedgedev/dotnet.py +31 -0
  198. s/build/lib/iotedgedev/edge.py +33 -0
  199. s/build/lib/iotedgedev/envvars.py +240 -0
  200. s/build/lib/iotedgedev/iothub.py +65 -0
  201. s/build/lib/iotedgedev/module.py +62 -0
  202. s/build/lib/iotedgedev/modules.py +332 -0
  203. s/build/lib/iotedgedev/organizedgroup.py +48 -0
  204. s/build/lib/iotedgedev/output.py +57 -0
  205. s/build/lib/iotedgedev/simulator.py +58 -0
  206. s/build/lib/iotedgedev/solution.py +48 -0
  207. s/build/lib/iotedgedev/telemetry.py +155 -0
  208. s/build/lib/iotedgedev/telemetryconfig.py +85 -0
  209. s/build/lib/iotedgedev/telemetryuploader.py +53 -0
  210. s/build/lib/iotedgedev/template/.env.tmp +87 -0
  211. s/build/lib/iotedgedev/template/.gitignore +10 -0
  212. s/build/lib/iotedgedev/template/deployment.template.json +79 -0
  213. s/build/lib/iotedgedev/template/launch_c.json +50 -0
  214. s/build/lib/iotedgedev/template/launch_csharp.json +43 -0
  215. s/build/lib/iotedgedev/template/launch_java.json +27 -0
  216. s/build/lib/iotedgedev/template/launch_node.json +36 -0
  217. s/build/lib/iotedgedev/template/launch_python.json +22 -0
  218. s/build/lib/iotedgedev/utility.py +179 -0
  219. s/build/lib/iotedgedev/version.py +4 -0
  220. s/build.sh +150 -0
  221. s/cleanup.sh +7 -0
  222. s/dist/iotedgedev-3.3.4-py3-none-any.whl +0 -0
  223. s/docker/tool/build-docker.sh +168 -0
  224. s/docker/tool/deps.txt +7 -0
  225. s/docker/tool/linux/Dockerfile +7 -0
  226. s/docker/tool/linux/Dockerfile.base +61 -0
  227. s/docker/tool/linux/install-dev.sh +8 -0
  228. s/docker/tool/linux/run.ps1 +5 -0
  229. s/docker/tool/linux/run.sh +5 -0
  230. s/docker/tool/push-docker.sh +35 -0
  231. s/docker/tool/windows/Dockerfile +4 -0
  232. s/docker/tool/windows/Dockerfile.base +63 -0
  233. s/docker/tool/windows/install-dev.bat +4 -0
  234. s/docker/tool/windows/run.ps1 +30 -0
  235. s/docs/Azure-Setup.md +102 -0
  236. s/docs/Command-List.md +564 -0
  237. s/docs/Command-Tips.md +51 -0
  238. s/docs/Edge-Device-Setup.md +23 -0
  239. s/docs/Home.md +10 -0
  240. s/docs/Manual-Dev-Machine-Setup.md +77 -0
  241. s/docs/Migration-Guides.md +131 -0
  242. s/docs/Overview.md +66 -0
  243. s/docs/Python-Virtual-Environment-Setup.md +35 -0
  244. s/docs/Quickstart-with-IoT-Edge-Dev-Container.md +145 -0
  245. s/docs/Test-Coverage.md +7 -0
  246. s/docs/Troubleshooting.md +21 -0
  247. s/docs/Usage.md +123 -0
  248. s/docs/_Sidebar.md +13 -0
  249. s/iotedgedev/__init__.py +6 -0
  250. s/iotedgedev/args.py +18 -0
  251. s/iotedgedev/azurecli.py +542 -0
  252. s/iotedgedev/buildoptionsparser.py +151 -0
  253. s/iotedgedev/buildprofile.py +5 -0
  254. s/iotedgedev/cli.py +830 -0
  255. s/iotedgedev/connectionstring.py +58 -0
  256. s/iotedgedev/constants.py +12 -0
  257. s/iotedgedev/containerregistry.py +5 -0
  258. s/iotedgedev/decorators.py +116 -0
  259. s/iotedgedev/deploymentmanifest.py +313 -0
  260. s/iotedgedev/dockercls.py +255 -0
  261. s/iotedgedev/dotnet.py +31 -0
  262. s/iotedgedev/edge.py +33 -0
  263. s/iotedgedev/envvars.py +240 -0
  264. s/iotedgedev/iothub.py +65 -0
  265. s/iotedgedev/module.py +62 -0
  266. s/iotedgedev/modules.py +332 -0
  267. s/iotedgedev/organizedgroup.py +48 -0
  268. s/iotedgedev/output.py +57 -0
  269. s/iotedgedev/simulator.py +58 -0
  270. s/iotedgedev/solution.py +48 -0
  271. s/iotedgedev/telemetry.py +155 -0
  272. s/iotedgedev/telemetryconfig.py +85 -0
  273. s/iotedgedev/telemetryuploader.py +53 -0
  274. s/iotedgedev/template/.env.tmp +87 -0
  275. s/iotedgedev/template/.gitignore +10 -0
  276. s/iotedgedev/template/deployment.template.json +79 -0
  277. s/iotedgedev/template/launch_c.json +50 -0
  278. s/iotedgedev/template/launch_csharp.json +43 -0
  279. s/iotedgedev/template/launch_java.json +27 -0
  280. s/iotedgedev/template/launch_node.json +36 -0
  281. s/iotedgedev/template/launch_python.json +22 -0
  282. s/iotedgedev/utility.py +179 -0
  283. s/iotedgedev/version.py +4 -0
  284. s/iotedgedev.egg-info/PKG-INFO +21 -0
  285. s/iotedgedev.egg-info/SOURCES.txt +100 -0
  286. s/iotedgedev.egg-info/dependency_links.txt +1 -0
  287. s/iotedgedev.egg-info/entry_points.txt +3 -0
  288. s/iotedgedev.egg-info/not-zip-safe +1 -0
  289. s/iotedgedev.egg-info/requires.txt +18 -0
  290. s/iotedgedev.egg-info/top_level.txt +1 -0
  291. s/pull_request_template.md +9 -0
  292. s/pytest.ini +4 -0
  293. s/requirements.txt +12 -0
  294. s/requirements_dev.txt +17 -0
  295. s/scripts/gen-help-markdown.bat +177 -0
  296. s/scripts/install-pip.sh +1 -0
  297. s/scripts/setup-wsl.sh +7 -0
  298. s/setup.cfg +18 -0
  299. s/setup.py +66 -0
  300. s/tests/__init__.py +5 -0
  301. s/tests/assets/deployment.manifest_invalid.json +106 -0
  302. s/tests/assets/deployment.manifest_invalid_createoptions.json +102 -0
  303. s/tests/assets/deployment.manifest_invalid_schema.json +69 -0
  304. s/tests/assets/deployment.template.non_str_placeholder.json +79 -0
  305. s/tests/assets/deployment.template_1.json +163 -0
  306. s/tests/assets/deployment.template_2.json +163 -0
  307. s/tests/assets/deployment.template_3.json +174 -0
  308. s/tests/assets/deployment.template_4.json +79 -0
  309. s/tests/assets/deployment.template_invalidresult.json +183 -0
  310. s/tests/assets/deployment.template_without_schema_template.json +99 -0
  311. s/tests/assets/launch.json +225 -0
  312. s/tests/assets/launch_without_nodejs.json +194 -0
  313. s/tests/assets/test_solution_shared_lib/.gitignore +2 -0
  314. s/tests/assets/test_solution_shared_lib/.vscode/launch.json +43 -0
  315. s/tests/assets/test_solution_shared_lib/deployment.debug.template.json +100 -0
  316. s/tests/assets/test_solution_shared_lib/deployment.escapedpath.template.json +90 -0
  317. s/tests/assets/test_solution_shared_lib/deployment.template.json +106 -0
  318. s/tests/assets/test_solution_shared_lib/layered_deployment.flattened_props.template.json +21 -0
  319. s/tests/assets/test_solution_shared_lib/layered_deployment.no_modules.template.json +12 -0
  320. s/tests/assets/test_solution_shared_lib/libs/sharedlib/Class1.cs +12 -0
  321. s/tests/assets/test_solution_shared_lib/libs/sharedlib/sharedlib.csproj +7 -0
  322. s/tests/assets/test_solution_shared_lib/modules/non_module_project/placeholder.txt +0 -0
  323. s/tests/assets/test_solution_shared_lib/modules/sample_module/.gitignore +34 -0
  324. s/tests/assets/test_solution_shared_lib/modules/sample_module/Dockerfile.amd64 +18 -0
  325. s/tests/assets/test_solution_shared_lib/modules/sample_module/Dockerfile.amd64.debug +25 -0
  326. s/tests/assets/test_solution_shared_lib/modules/sample_module/Dockerfile.windows-amd64 +15 -0
  327. s/tests/assets/test_solution_shared_lib/modules/sample_module/Program.cs +91 -0
  328. s/tests/assets/test_solution_shared_lib/modules/sample_module/module.json +18 -0
  329. s/tests/assets/test_solution_shared_lib/modules/sample_module/sample_module.csproj +26 -0
  330. s/tests/assets/test_solution_shared_lib/sample_module_2/.gitignore +34 -0
  331. s/tests/assets/test_solution_shared_lib/sample_module_2/Dockerfile.amd64 +18 -0
  332. s/tests/assets/test_solution_shared_lib/sample_module_2/Dockerfile.amd64.debug +25 -0
  333. s/tests/assets/test_solution_shared_lib/sample_module_2/Dockerfile.windows-amd64 +15 -0
  334. s/tests/assets/test_solution_shared_lib/sample_module_2/Program.cs +91 -0
  335. s/tests/assets/test_solution_shared_lib/sample_module_2/module.json +18 -0
  336. s/tests/assets/test_solution_shared_lib/sample_module_2/sample_module_2.csproj +26 -0
  337. s/tests/test_azurecli.py +33 -0
  338. s/tests/test_buildoptionsparser.py +155 -0
  339. s/tests/test_cli.py +55 -0
  340. s/tests/test_config.py +28 -0
  341. s/tests/test_connectionstring.py +87 -0
  342. s/tests/test_decorators.py +44 -0
  343. s/tests/test_deploymentmanifest.py +106 -0
  344. s/tests/test_envvars.py +169 -0
  345. s/tests/test_iotedgedev_iothub_deploy.py +199 -0
  346. s/tests/test_iotedgedev_simulator.py +133 -0
  347. s/tests/test_iotedgedev_solution.py +457 -0
  348. s/tests/test_iotedgedev_solution_build.py +246 -0
  349. s/tests/test_iotedgedev_solution_tag.py +99 -0
  350. s/tests/test_utility.py +132 -0
  351. s/tests/utility.py +132 -0
  352. s/tox.ini +29 -0
  353. s/vsts_ci/.vsts-ci.yml +93 -0
  354. s/vsts_ci/darwin/continuous-build-darwin.yml +54 -0
  355. s/vsts_ci/linux/continuous-build-linux.yml +28 -0
  356. s/vsts_ci/win32/continuous-build-win32.yml +26 -0
@@ -0,0 +1,179 @@
1
+ import fnmatch
2
+ import json
3
+ import os
4
+ import subprocess
5
+ from base64 import b64decode, b64encode
6
+ from hashlib import sha256
7
+ from hmac import HMAC
8
+ from time import time
9
+
10
+ from urllib.parse import quote, urlencode
11
+
12
+ from .constants import Constants
13
+
14
+
15
+ class Utility:
16
+ def __init__(self, envvars, output):
17
+ self.envvars = envvars
18
+ self.output = output
19
+
20
+ def exe_proc(self, params, shell=False, cwd=None, suppress_out=False):
21
+ proc = subprocess.Popen(
22
+ params, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=shell, cwd=cwd)
23
+
24
+ stdout_data, stderr_data = proc.communicate()
25
+ if not suppress_out and stdout_data != "":
26
+ self.output.procout(self.decode(stdout_data))
27
+
28
+ if proc.returncode != 0:
29
+ raise Exception(self.decode(stderr_data))
30
+
31
+ def call_proc(self, params, shell=False, cwd=None):
32
+ try:
33
+ subprocess.check_call(params, shell=shell, cwd=cwd)
34
+ return 0
35
+ except KeyboardInterrupt as ki:
36
+ return 1
37
+ except Exception as e:
38
+ self.output.error("Error while executing command: {0}. {1}".format(' '.join(params), str(e)))
39
+ return 1
40
+
41
+ def check_dependency(self, params, description):
42
+ try:
43
+ self.exe_proc(params, shell=not self.envvars.is_posix(), suppress_out=True)
44
+ except FileNotFoundError:
45
+ raise FileNotFoundError("{0} is required by the Azure IoT Edge Dev Tool. For installation instructions, see https://aka.ms/iotedgedevwiki.".format(description))
46
+
47
+ def is_dir_empty(self, name):
48
+ if os.path.exists(name):
49
+ return len(os.listdir(name)) == 0
50
+ else:
51
+ return True
52
+
53
+ def ensure_dir(self, name):
54
+ if not os.path.exists(name):
55
+ os.makedirs(name)
56
+
57
+ def find_files(self, directory, pattern):
58
+ # find all files in directory that match the pattern.
59
+ for root, dirs, files in os.walk(directory):
60
+ for basename in files:
61
+ if fnmatch.fnmatch(basename, pattern):
62
+ filename = os.path.join(root, basename)
63
+ yield filename
64
+
65
+ def get_iot_hub_sas_token(self, uri, key, policy_name, expiry=3600):
66
+ ttl = time() + expiry
67
+ sign_key = "%s\n%d" % ((quote(uri)), int(ttl))
68
+ signature = b64encode(
69
+ HMAC(b64decode(key), sign_key.encode("utf-8"), sha256).digest())
70
+
71
+ rawtoken = {
72
+ "sr": uri,
73
+ "sig": signature,
74
+ "se": str(int(ttl))
75
+ }
76
+
77
+ if policy_name is not None:
78
+ rawtoken["skn"] = policy_name
79
+
80
+ return "SharedAccessSignature " + urlencode(rawtoken)
81
+
82
+ @staticmethod
83
+ def get_file_contents(file, expandvars=False):
84
+ with open(file, "r") as file:
85
+ content = file.read()
86
+ if expandvars:
87
+ return os.path.expandvars(content)
88
+ else:
89
+ return content
90
+
91
+ def decode(self, val):
92
+ return val.decode("utf-8").strip()
93
+
94
+ def get_config_files(self):
95
+ # config files are in root of solution
96
+
97
+ return [os.path.join(os.getcwd(), f) for f in os.listdir(os.getcwd()) if f.endswith("template.json")]
98
+
99
+ def get_bypass_modules(self):
100
+ return [module.strip()
101
+ for module in self.envvars.BYPASS_MODULES.split(",") if module]
102
+
103
+ def in_asterisk_list(self, item, asterisk_list):
104
+ return len(asterisk_list) > 0 and (asterisk_list[0] == "*" or item in asterisk_list)
105
+
106
+ def copy_from_template_dir(self, src_file, dest_dir, dest_file=None, replacements=None):
107
+ if dest_file is None:
108
+ dest_file = src_file
109
+
110
+ template_dir = os.path.join(os.path.split(__file__)[0], "template")
111
+ self.copy_template(os.path.join(template_dir, src_file), os.path.join(dest_dir, dest_file), replacements, expandvars=False)
112
+
113
+ def copy_template(self, src, dest=None, replacements=None, expandvars=True):
114
+ """Read file at src, replace the keys in replacements with their values, optionally expand environment variables, and save to dest"""
115
+ if dest is None:
116
+ dest = src
117
+
118
+ content = Utility.get_file_contents(src)
119
+
120
+ if replacements:
121
+ for key, value in replacements.items():
122
+ content = content.replace(key, value)
123
+
124
+ if expandvars:
125
+ content = os.path.expandvars(content)
126
+
127
+ with open(dest, "w") as dest_file:
128
+ dest_file.write(content)
129
+
130
+ def nested_set(self, dict_, key_path, value):
131
+ current = dict_
132
+ for key in key_path[:-1]:
133
+ if key not in current:
134
+ current[key] = {}
135
+ current = current.get(key)
136
+
137
+ current[key_path[-1]] = value
138
+
139
+ def del_key(self, dict_, key_path):
140
+ if not isinstance(dict_, dict):
141
+ return None
142
+
143
+ current = dict_
144
+ for key in key_path[:-1]:
145
+ current = current.get(key, None)
146
+
147
+ if not isinstance(current, dict):
148
+ return None
149
+
150
+ return current.pop(key_path[-1], None)
151
+
152
+ @staticmethod
153
+ def get_sha256_hash(val):
154
+ hash_object = sha256(val.encode('utf-8'))
155
+
156
+ return str(hash_object.hexdigest()).lower()
157
+
158
+ @staticmethod
159
+ def get_deployment_manifest_name(template_file, template_schema_ver, platform):
160
+ if "DEPLOYMENT_CONFIG_FILE" in os.environ:
161
+ return os.environ["DEPLOYMENT_CONFIG_FILE"]
162
+
163
+ if template_schema_ver is None:
164
+ if os.path.exists(template_file):
165
+ json_ = json.loads(Utility.get_file_contents(template_file, expandvars=True))
166
+ template_schema_ver = json_.get("$schema-template", "")
167
+ else:
168
+ template_schema_ver = Constants.deployment_template_schema_version
169
+
170
+ platform = "." + platform if template_schema_ver > "0.0.1" else ""
171
+ prefix = os.path.basename(template_file)
172
+ if prefix.endswith(Constants.deployment_template_suffix):
173
+ prefix = prefix[:-len(Constants.deployment_template_suffix)]
174
+ elif prefix.endswith(".json"):
175
+ prefix = prefix[:-len(".json")]
176
+ else:
177
+ prefix = "deployment"
178
+
179
+ return "{0}{1}.json".format(prefix, platform)
@@ -0,0 +1,4 @@
1
+ import sys
2
+
3
+ PY35 = sys.version_info >= (3, 5)
4
+ PY3 = sys.version_info >= (3, 0)
@@ -0,0 +1,21 @@
1
+ Metadata-Version: 1.2
2
+ Name: iotedgedev
3
+ Version: 3.3.4
4
+ Summary: The Azure IoT Edge Dev Tool greatly simplifies the IoT Edge development process by automating many routine manual tasks, such as building, deploying, pushing modules and configuring the IoT Edge Runtime.
5
+ Home-page: https://github.com/azure/iotedgedev
6
+ Author: Microsoft Corporation
7
+ Author-email: vsciet@microsoft.com
8
+ License: MIT license
9
+ Description: See https://github.com/azure/iotedgedev for usage instructions.
10
+ Keywords: azure iot edge dev tool
11
+ Platform: UNKNOWN
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Natural Language :: English
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.6
18
+ Classifier: Programming Language :: Python :: 3.7
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Requires-Python: >=3.6, <3.10
@@ -0,0 +1,100 @@
1
+ CHANGELOG.md
2
+ LICENSE
3
+ MANIFEST.in
4
+ README.md
5
+ setup.cfg
6
+ setup.py
7
+ iotedgedev/__init__.py
8
+ iotedgedev/args.py
9
+ iotedgedev/azurecli.py
10
+ iotedgedev/buildoptionsparser.py
11
+ iotedgedev/buildprofile.py
12
+ iotedgedev/cli.py
13
+ iotedgedev/connectionstring.py
14
+ iotedgedev/constants.py
15
+ iotedgedev/containerregistry.py
16
+ iotedgedev/decorators.py
17
+ iotedgedev/deploymentmanifest.py
18
+ iotedgedev/dockercls.py
19
+ iotedgedev/dotnet.py
20
+ iotedgedev/edge.py
21
+ iotedgedev/envvars.py
22
+ iotedgedev/iothub.py
23
+ iotedgedev/module.py
24
+ iotedgedev/modules.py
25
+ iotedgedev/organizedgroup.py
26
+ iotedgedev/output.py
27
+ iotedgedev/simulator.py
28
+ iotedgedev/solution.py
29
+ iotedgedev/telemetry.py
30
+ iotedgedev/telemetryconfig.py
31
+ iotedgedev/telemetryuploader.py
32
+ iotedgedev/utility.py
33
+ iotedgedev/version.py
34
+ iotedgedev.egg-info/PKG-INFO
35
+ iotedgedev.egg-info/SOURCES.txt
36
+ iotedgedev.egg-info/dependency_links.txt
37
+ iotedgedev.egg-info/entry_points.txt
38
+ iotedgedev.egg-info/not-zip-safe
39
+ iotedgedev.egg-info/requires.txt
40
+ iotedgedev.egg-info/top_level.txt
41
+ iotedgedev/template/.env.tmp
42
+ iotedgedev/template/.gitignore
43
+ iotedgedev/template/deployment.template.json
44
+ iotedgedev/template/launch_c.json
45
+ iotedgedev/template/launch_csharp.json
46
+ iotedgedev/template/launch_java.json
47
+ iotedgedev/template/launch_node.json
48
+ iotedgedev/template/launch_python.json
49
+ tests/__init__.py
50
+ tests/test_azurecli.py
51
+ tests/test_buildoptionsparser.py
52
+ tests/test_cli.py
53
+ tests/test_config.py
54
+ tests/test_connectionstring.py
55
+ tests/test_decorators.py
56
+ tests/test_deploymentmanifest.py
57
+ tests/test_envvars.py
58
+ tests/test_iotedgedev_iothub_deploy.py
59
+ tests/test_iotedgedev_simulator.py
60
+ tests/test_iotedgedev_solution.py
61
+ tests/test_iotedgedev_solution_build.py
62
+ tests/test_iotedgedev_solution_tag.py
63
+ tests/test_utility.py
64
+ tests/utility.py
65
+ tests/assets/deployment.manifest_invalid.json
66
+ tests/assets/deployment.manifest_invalid_createoptions.json
67
+ tests/assets/deployment.manifest_invalid_schema.json
68
+ tests/assets/deployment.template.non_str_placeholder.json
69
+ tests/assets/deployment.template_1.json
70
+ tests/assets/deployment.template_2.json
71
+ tests/assets/deployment.template_3.json
72
+ tests/assets/deployment.template_4.json
73
+ tests/assets/deployment.template_invalidresult.json
74
+ tests/assets/deployment.template_without_schema_template.json
75
+ tests/assets/launch.json
76
+ tests/assets/launch_without_nodejs.json
77
+ tests/assets/test_solution_shared_lib/.gitignore
78
+ tests/assets/test_solution_shared_lib/deployment.debug.template.json
79
+ tests/assets/test_solution_shared_lib/deployment.escapedpath.template.json
80
+ tests/assets/test_solution_shared_lib/deployment.template.json
81
+ tests/assets/test_solution_shared_lib/layered_deployment.flattened_props.template.json
82
+ tests/assets/test_solution_shared_lib/layered_deployment.no_modules.template.json
83
+ tests/assets/test_solution_shared_lib/.vscode/launch.json
84
+ tests/assets/test_solution_shared_lib/libs/sharedlib/Class1.cs
85
+ tests/assets/test_solution_shared_lib/libs/sharedlib/sharedlib.csproj
86
+ tests/assets/test_solution_shared_lib/modules/non_module_project/placeholder.txt
87
+ tests/assets/test_solution_shared_lib/modules/sample_module/.gitignore
88
+ tests/assets/test_solution_shared_lib/modules/sample_module/Dockerfile.amd64
89
+ tests/assets/test_solution_shared_lib/modules/sample_module/Dockerfile.amd64.debug
90
+ tests/assets/test_solution_shared_lib/modules/sample_module/Dockerfile.windows-amd64
91
+ tests/assets/test_solution_shared_lib/modules/sample_module/Program.cs
92
+ tests/assets/test_solution_shared_lib/modules/sample_module/module.json
93
+ tests/assets/test_solution_shared_lib/modules/sample_module/sample_module.csproj
94
+ tests/assets/test_solution_shared_lib/sample_module_2/.gitignore
95
+ tests/assets/test_solution_shared_lib/sample_module_2/Dockerfile.amd64
96
+ tests/assets/test_solution_shared_lib/sample_module_2/Dockerfile.amd64.debug
97
+ tests/assets/test_solution_shared_lib/sample_module_2/Dockerfile.windows-amd64
98
+ tests/assets/test_solution_shared_lib/sample_module_2/Program.cs
99
+ tests/assets/test_solution_shared_lib/sample_module_2/module.json
100
+ tests/assets/test_solution_shared_lib/sample_module_2/sample_module_2.csproj
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ iotedgedev = iotedgedev.cli:main
3
+
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,18 @@
1
+ click>=6.0
2
+ bcrypt<=3.1.7
3
+ docker>=3.7.0
4
+ python-dotenv
5
+ requests<=2.25.1,>=2.20.0
6
+ fstrings
7
+ azure-cli-core>=2.25.0
8
+ iotedgehubdev==0.14.14
9
+ applicationinsights==0.11.9
10
+ commentjson==0.9.0
11
+ pyyaml>=5.4
12
+ more-itertools<8.1.0
13
+
14
+ [:sys_platform == "win32" and python_version < "3.6"]
15
+ pypiwin32==219
16
+
17
+ [:sys_platform == "win32" and python_version >= "3.6"]
18
+ pypiwin32==223
@@ -0,0 +1 @@
1
+ iotedgedev
@@ -0,0 +1,9 @@
1
+ ## iotedgedev Pull Request Checklist
2
+
3
+ - [ ] Versions updated (both __init__.py files, CHANGELOG, setup.py, setup.cfg)
4
+ - [ ] Unit tests pass locally
5
+ - [ ] Quickstart steps locally validated
6
+ - [ ] Passes unit tests in CICD pipeline (green on Github pipeline)
7
+ - [ ] Pypi RC version passes Edge CICD pipeline validation for cross-tool validation
8
+
9
+ ## Additional comments
s/pytest.ini ADDED
@@ -0,0 +1,4 @@
1
+ [pytest]
2
+ markers =
3
+ e2e
4
+ unit
s/requirements.txt ADDED
@@ -0,0 +1,12 @@
1
+ click==8.0.1
2
+ docker==5.0.3
3
+ python-dotenv==0.19.0
4
+ requests==2.25.1
5
+ fstrings==0.1.0
6
+ msrestazure==0.4.34
7
+ iotedgehubdev==0.14.14
8
+ applicationinsights==0.11.9
9
+ commentjson==0.9.0
10
+ azure-cli-core==2.25.0
11
+ pypiwin32==219; sys_platform == 'win32' and python_version < '3.6'
12
+ pypiwin32==223; sys_platform == 'win32' and python_version >= '3.6'
s/requirements_dev.txt ADDED
@@ -0,0 +1,17 @@
1
+ -r requirements.txt
2
+ bumpversion==0.5.3
3
+ wheel==0.30.0
4
+ watchdog==0.8.3
5
+ docker-compose==1.29.1
6
+ flake8
7
+ pycodestyle==2.7.0
8
+ autopep8==1.5.7
9
+ tox==3.24.1
10
+ coverage==4.1
11
+ Sphinx==4.4.0
12
+ cookiecutter==1.7.3
13
+ PyYAML>=5.4
14
+ pylint==2.3.0
15
+ pytest==6.2.4
16
+ setuptools==57.0.0
17
+ twine==3.4.2
@@ -0,0 +1,177 @@
1
+ @ECHO OFF
2
+ ECHO ## Commands
3
+
4
+ ECHO **iotedgedev**
5
+ ECHO ```
6
+ iotedgedev -h
7
+ ECHO ```
8
+
9
+ ECHO **iotedgedev add**
10
+ ECHO ```
11
+ iotedgedev add -h
12
+ ECHO ```
13
+
14
+ ECHO **iotedgedev build**
15
+ ECHO ```
16
+ iotedgedev build -h
17
+ ECHO ```
18
+
19
+ ECHO **iotedgedev deploy**
20
+ ECHO ```
21
+ iotedgedev deploy -h
22
+ ECHO ```
23
+
24
+ ECHO **iotedgedev genconfig**
25
+ ECHO ```
26
+ iotedgedev genconfig -h
27
+ ECHO ```
28
+
29
+ ECHO **iotedgedev init**
30
+ ECHO ```
31
+ iotedgedev init -h
32
+ ECHO ```
33
+
34
+ ECHO **iotedgedev log**
35
+ ECHO ```
36
+ iotedgedev log -h
37
+ ECHO ```
38
+
39
+ ECHO **iotedgedev monitor**
40
+ ECHO ```
41
+ iotedgedev monitor -h
42
+ ECHO ```
43
+
44
+ ECHO **iotedgedev new**
45
+ ECHO ```
46
+ iotedgedev new -h
47
+ ECHO ```
48
+
49
+ ECHO **iotedgedev push**
50
+ ECHO ```
51
+ iotedgedev push -h
52
+ ECHO ```
53
+
54
+ ECHO **iotedgedev setup**
55
+ ECHO ```
56
+ iotedgedev setup -h
57
+ ECHO ```
58
+
59
+ ECHO **iotedgedev start**
60
+ ECHO ```
61
+ iotedgedev start -h
62
+ ECHO ```
63
+
64
+ ECHO **iotedgedev stop**
65
+ ECHO ```
66
+ iotedgedev stop -h
67
+ ECHO ```
68
+
69
+ ECHO **iotedgedev docker**
70
+ ECHO ```
71
+ iotedgedev docker -h
72
+ ECHO ```
73
+
74
+ ECHO **iotedgedev docker clean**
75
+ ECHO ```
76
+ iotedgedev docker clean -h
77
+ ECHO ```
78
+
79
+ ECHO **iotedgedev docker log**
80
+ ECHO ```
81
+ iotedgedev docker log -h
82
+ ECHO ```
83
+
84
+ ECHO **iotedgedev docker setup**
85
+ ECHO ```
86
+ iotedgedev docker setup -h
87
+ ECHO ```
88
+
89
+ ECHO **iotedgedev iothub**
90
+ ECHO ```
91
+ iotedgedev iothub -h
92
+ ECHO ```
93
+
94
+ ECHO **iotedgedev iothub monitor**
95
+ ECHO ```
96
+ iotedgedev iothub monitor -h
97
+ ECHO ```
98
+
99
+ ECHO **iotedgedev iothub setup**
100
+ ECHO ```
101
+ iotedgedev iothub setup -h
102
+ ECHO ```
103
+
104
+ ECHO **iotedgedev simulator**
105
+ ECHO ```
106
+ iotedgedev simulator -h
107
+ ECHO ```
108
+
109
+ ECHO **iotedgedev simulator modulecred**
110
+ ECHO ```
111
+ iotedgedev simulator modulecred -h
112
+ ECHO ```
113
+
114
+ ECHO **iotedgedev simulator setup**
115
+ ECHO ```
116
+ iotedgedev simulator setup -h
117
+ ECHO ```
118
+
119
+ ECHO **iotedgedev simulator start**
120
+ ECHO ```
121
+ iotedgedev simulator start -h
122
+ ECHO ```
123
+
124
+ ECHO **iotedgedev simulator stop**
125
+ ECHO ```
126
+ iotedgedev simulator stop -h
127
+ ECHO ```
128
+
129
+ ECHO **iotedgedev solution**
130
+ ECHO ```
131
+ iotedgedev solution -h
132
+ ECHO ```
133
+
134
+ ECHO **iotedgedev solution add**
135
+ ECHO ```
136
+ iotedgedev solution add -h
137
+ ECHO ```
138
+
139
+ ECHO **iotedgedev solution build**
140
+ ECHO ```
141
+ iotedgedev solution build -h
142
+ ECHO ```
143
+
144
+ ECHO **iotedgedev solution build**
145
+ ECHO ```
146
+ iotedgedev solution build -h
147
+ ECHO ```
148
+
149
+ ECHO **iotedgedev solution deploy**
150
+ ECHO ```
151
+ iotedgedev solution deploy -h
152
+ ECHO ```
153
+
154
+ ECHO **iotedgedev solution e2e**
155
+ ECHO ```
156
+ iotedgedev solution e2e -h
157
+ ECHO ```
158
+
159
+ ECHO **iotedgedev solution genconfig**
160
+ ECHO ```
161
+ iotedgedev solution genconfig -h
162
+ ECHO ```
163
+
164
+ ECHO **iotedgedev solution init**
165
+ ECHO ```
166
+ iotedgedev solution init -h
167
+ ECHO ```
168
+
169
+ ECHO **iotedgedev solution new**
170
+ ECHO ```
171
+ iotedgedev solution new -h
172
+ ECHO ```
173
+
174
+ ECHO **iotedgedev solution push**
175
+ ECHO ```
176
+ iotedgedev solution push -h
177
+ ECHO ```
@@ -0,0 +1 @@
1
+ curl -O https://bootstrap.pypa.io/get-pip.py && python get-pip.py
s/scripts/setup-wsl.sh ADDED
@@ -0,0 +1,7 @@
1
+ echo "PATH=\"$PATH:$HOME/bin:$HOME/.local/bin:/mnt/c/Program\ Files/Docker/Docker/resources/bin\"" >> ~/.bashrc
2
+ echo "alias docker=docker.exe" >> ~/.bashrc
3
+ echo "alias docker-machine=docker-machine.exe" >> ~/.bashrc
4
+ echo "alias docker-compose=docker-compose.exe" >> ~/.bashrc
5
+ echo "export DOCKER_HOST='${DOCKER_HOST}'" >> ~/.bashrc
6
+ source ~/.bashrc
7
+ sudo sh -c "echo Defaults env_keep += \"DOCKER_HOST\" >> /etc/sudoers.d/docker"
s/setup.cfg ADDED
@@ -0,0 +1,18 @@
1
+ [bumpversion]
2
+ current_version = 3.3.4
3
+ commit = True
4
+ tag = True
5
+
6
+ [bumpversion:file:setup.py]
7
+ search = version='{current_version}'
8
+ replace = version='{new_version}'
9
+
10
+ [bumpversion:file:iotedgedev/__init__.py]
11
+ search = __version__ = '{current_version}'
12
+ replace = __version__ = '{new_version}'
13
+
14
+ [flake8]
15
+ exclude = docs
16
+
17
+ [aliases]
18
+
s/setup.py ADDED
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env python
2
+ from setuptools import find_packages, setup
3
+
4
+
5
+ with open('CHANGELOG.md') as history_file:
6
+ history = history_file.read()
7
+
8
+ requirements = [
9
+ 'click>=6.0',
10
+ 'bcrypt<=3.1.7',
11
+ 'docker >= 3.7.0',
12
+ 'python-dotenv',
13
+ 'requests >= 2.20.0, <= 2.25.1',
14
+ 'fstrings',
15
+ 'azure-cli-core >= 2.25.0',
16
+ 'iotedgehubdev == 0.14.14',
17
+ 'applicationinsights == 0.11.9',
18
+ 'commentjson == 0.9.0',
19
+ 'pyyaml>=5.4',
20
+ 'pypiwin32==219; sys_platform == "win32" and python_version < "3.6"',
21
+ 'pypiwin32==223; sys_platform == "win32" and python_version >= "3.6"',
22
+ 'more-itertools < 8.1.0'
23
+ ]
24
+
25
+ setup_requirements = [
26
+ ]
27
+
28
+ test_requirements = [
29
+ ]
30
+
31
+
32
+ setup(
33
+ name='iotedgedev',
34
+ version='3.3.4',
35
+ description='The Azure IoT Edge Dev Tool greatly simplifies the IoT Edge development process by automating many routine manual tasks, such as building, deploying, pushing modules and configuring the IoT Edge Runtime.',
36
+ long_description='See https://github.com/azure/iotedgedev for usage instructions.',
37
+ author='Microsoft Corporation',
38
+ author_email='vsciet@microsoft.com',
39
+ url='https://github.com/azure/iotedgedev',
40
+ packages=find_packages(include=['iotedgedev']),
41
+ entry_points={
42
+ 'console_scripts': [
43
+ 'iotedgedev=iotedgedev.cli:main'
44
+ ]
45
+ },
46
+ include_package_data=True,
47
+ install_requires=requirements,
48
+ license='MIT license',
49
+ zip_safe=False,
50
+ keywords='azure iot edge dev tool',
51
+ python_requires='>=3.6, <3.10',
52
+ classifiers=[
53
+ 'Development Status :: 5 - Production/Stable',
54
+ 'Intended Audience :: Developers',
55
+ 'License :: OSI Approved :: MIT License',
56
+ 'Natural Language :: English',
57
+ 'Programming Language :: Python :: 3',
58
+ 'Programming Language :: Python :: 3.6',
59
+ 'Programming Language :: Python :: 3.7',
60
+ 'Programming Language :: Python :: 3.8',
61
+ 'Programming Language :: Python :: 3.9'
62
+ ],
63
+ test_suite='tests',
64
+ tests_require=test_requirements,
65
+ setup_requires=setup_requirements
66
+ )
s/tests/__init__.py ADDED
@@ -0,0 +1,5 @@
1
+ """Test package for Azure IoT Edge Dev Tool ."""
2
+
3
+ __author__ = 'Microsoft Corporation'
4
+ __email__ = 'opencode@microsoft.com'
5
+ __version__ = '3.3.4'