pythonfmu3 0.2.2.2__py3-none-any.whl → 0.2.3__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 (199) hide show
  1. pythonfmu3/__init__.py +8 -8
  2. pythonfmu3/__main__.py +52 -52
  3. pythonfmu3/_version.py +1 -1
  4. pythonfmu3/builder.py +260 -260
  5. pythonfmu3/default_experiment.py +7 -7
  6. pythonfmu3/deploy.py +118 -118
  7. pythonfmu3/enums.py +48 -48
  8. pythonfmu3/fmi3slave.py +438 -438
  9. pythonfmu3/logmsg.py +14 -14
  10. pythonfmu3/osutil.py +22 -22
  11. pythonfmu3/pythonfmu-export/.clang-format +35 -35
  12. pythonfmu3/pythonfmu-export/CMakeLists.txt +59 -59
  13. pythonfmu3/pythonfmu-export/build_unix.sh +4 -4
  14. pythonfmu3/pythonfmu-export/build_win.sh +4 -4
  15. pythonfmu3/pythonfmu-export/src/CMakeLists.txt +45 -45
  16. pythonfmu3/pythonfmu-export/src/cppfmu/cppfmu_common.hpp +161 -161
  17. pythonfmu3/pythonfmu-export/src/cppfmu/cppfmu_cs.cpp +192 -192
  18. pythonfmu3/pythonfmu-export/src/cppfmu/cppfmu_cs.hpp +185 -185
  19. pythonfmu3/pythonfmu-export/src/cppfmu/fmi_functions.cpp +937 -937
  20. pythonfmu3/pythonfmu-export/src/fmi/fmi3FunctionTypes.h +638 -638
  21. pythonfmu3/pythonfmu-export/src/fmi/fmi3Functions.h +343 -343
  22. pythonfmu3/pythonfmu-export/src/fmi/fmi3PlatformTypes.h +94 -94
  23. pythonfmu3/pythonfmu-export/src/pythonfmu/IPyState.hpp +17 -17
  24. pythonfmu3/pythonfmu-export/src/pythonfmu/PySlaveInstance.cpp +744 -744
  25. pythonfmu3/pythonfmu-export/src/pythonfmu/PySlaveInstance.hpp +111 -111
  26. pythonfmu3/pythonfmu-export/src/pythonfmu/PyState.hpp +84 -84
  27. pythonfmu3/resources/binaries/x86_64-linux/libpythonfmu-export.so +0 -0
  28. pythonfmu3/resources/binaries/x86_64-windows/pythonfmu-export.dll +0 -0
  29. pythonfmu3/tests/conftest.py +5 -5
  30. pythonfmu3/tests/data/csvdemo.csv +7 -7
  31. pythonfmu3/tests/slaves/PythonSlaveWithException.py +18 -18
  32. pythonfmu3/tests/slaves/localmodule.py +8 -8
  33. pythonfmu3/tests/slaves/pythonslave.py +52 -52
  34. pythonfmu3/tests/slaves/pythonslave_read_file.py +23 -23
  35. pythonfmu3/tests/slaves/slavewithdep.py +21 -21
  36. pythonfmu3/tests/test_builder.py +195 -195
  37. pythonfmu3/tests/test_deploy.py +48 -48
  38. pythonfmu3/tests/test_fmi3slave.py +152 -152
  39. pythonfmu3/tests/test_integration.py +350 -350
  40. pythonfmu3/tests/test_logger.py +180 -180
  41. pythonfmu3/tests/test_multiple_fmus.py +141 -141
  42. pythonfmu3/tests/test_variables.py +334 -334
  43. pythonfmu3/tests/utils.py +13 -13
  44. pythonfmu3/unit.py +62 -62
  45. pythonfmu3/variable_types.py +101 -101
  46. pythonfmu3/variables.py +400 -400
  47. {pythonfmu3-0.2.2.2.dist-info → pythonfmu3-0.2.3.dist-info}/METADATA +7 -9
  48. pythonfmu3-0.2.3.dist-info/RECORD +54 -0
  49. {pythonfmu3-0.2.2.2.dist-info → pythonfmu3-0.2.3.dist-info}/WHEEL +1 -1
  50. {pythonfmu3-0.2.2.2.dist-info → pythonfmu3-0.2.3.dist-info}/entry_points.txt +0 -1
  51. pythonfmu3-0.2.2.2.dist-info/LICENSE.txt → pythonfmu3-0.2.3.dist-info/licenses/LICENSE +23 -23
  52. pythonfmu3/pythonfmu-export/build/ALL_BUILD.vcxproj +0 -184
  53. pythonfmu3/pythonfmu-export/build/ALL_BUILD.vcxproj.filters +0 -8
  54. pythonfmu3/pythonfmu-export/build/CMakeCache.txt +0 -369
  55. pythonfmu3/pythonfmu-export/build/CMakeFiles/0ee4db0675778dfba98c7160896d5a45/generate.stamp.rule +0 -1
  56. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CMakeCCompiler.cmake +0 -72
  57. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CMakeCXXCompiler.cmake +0 -83
  58. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CMakeDetermineCompilerABI_C.bin +0 -0
  59. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CMakeDetermineCompilerABI_CXX.bin +0 -0
  60. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CMakeRCCompiler.cmake +0 -6
  61. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CMakeSystem.cmake +0 -15
  62. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/CMakeCCompilerId.c +0 -838
  63. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/CompilerIdC.exe +0 -0
  64. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/CompilerIdC.vcxproj +0 -71
  65. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/Debug/CMakeCCompilerId.obj +0 -0
  66. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/Debug/CompilerIdC.exe.recipe +0 -11
  67. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/Debug/CompilerIdC.tlog/CL.command.1.tlog +0 -0
  68. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/Debug/CompilerIdC.tlog/CL.read.1.tlog +0 -0
  69. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/Debug/CompilerIdC.tlog/CL.write.1.tlog +0 -0
  70. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/Debug/CompilerIdC.tlog/CompilerIdC.lastbuildstate +0 -2
  71. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/Debug/CompilerIdC.tlog/link.command.1.tlog +0 -0
  72. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/Debug/CompilerIdC.tlog/link.read.1.tlog +0 -0
  73. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdC/Debug/CompilerIdC.tlog/link.write.1.tlog +0 -0
  74. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/CMakeCXXCompilerId.cpp +0 -826
  75. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/CompilerIdCXX.exe +0 -0
  76. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/CompilerIdCXX.vcxproj +0 -71
  77. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/Debug/CMakeCXXCompilerId.obj +0 -0
  78. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/Debug/CompilerIdCXX.exe.recipe +0 -11
  79. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.command.1.tlog +0 -0
  80. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog +0 -0
  81. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog +0 -0
  82. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CompilerIdCXX.lastbuildstate +0 -2
  83. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog +0 -0
  84. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog +0 -0
  85. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog +0 -0
  86. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/VCTargetsPath.txt +0 -1
  87. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/VCTargetsPath.vcxproj +0 -31
  88. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/x64/Debug/VCTargetsPath.recipe +0 -11
  89. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.24.0/x64/Debug/VCTargetsPath.tlog/VCTargetsPath.lastbuildstate +0 -2
  90. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CMakeCCompiler.cmake +0 -81
  91. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CMakeCXXCompiler.cmake +0 -101
  92. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CMakeDetermineCompilerABI_C.bin +0 -0
  93. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CMakeDetermineCompilerABI_CXX.bin +0 -0
  94. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CMakeRCCompiler.cmake +0 -6
  95. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CMakeSystem.cmake +0 -15
  96. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/CMakeCCompilerId.c +0 -904
  97. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/CompilerIdC.exe +0 -0
  98. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/CompilerIdC.vcxproj +0 -72
  99. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/Debug/CMakeCCompilerId.obj +0 -0
  100. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/Debug/CompilerIdC.exe.recipe +0 -11
  101. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/Debug/CompilerIdC.tlog/CL.command.1.tlog +0 -0
  102. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/Debug/CompilerIdC.tlog/CL.read.1.tlog +0 -0
  103. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/Debug/CompilerIdC.tlog/CL.write.1.tlog +0 -0
  104. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/Debug/CompilerIdC.tlog/CompilerIdC.lastbuildstate +0 -2
  105. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/Debug/CompilerIdC.tlog/link.command.1.tlog +0 -0
  106. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/Debug/CompilerIdC.tlog/link.read.1.tlog +0 -0
  107. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdC/Debug/CompilerIdC.tlog/link.write.1.tlog +0 -0
  108. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/CMakeCXXCompilerId.cpp +0 -919
  109. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/CompilerIdCXX.exe +0 -0
  110. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/CompilerIdCXX.vcxproj +0 -72
  111. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/Debug/CMakeCXXCompilerId.obj +0 -0
  112. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/Debug/CompilerIdCXX.exe.recipe +0 -11
  113. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.command.1.tlog +0 -0
  114. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog +0 -0
  115. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog +0 -0
  116. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CompilerIdCXX.lastbuildstate +0 -2
  117. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog +0 -0
  118. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog +0 -0
  119. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog +0 -0
  120. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/VCTargetsPath.txt +0 -1
  121. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/VCTargetsPath.vcxproj +0 -31
  122. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/x64/Debug/VCTargetsPath.recipe +0 -11
  123. pythonfmu3/pythonfmu-export/build/CMakeFiles/3.30.2/x64/Debug/VCTargetsPath.tlog/VCTargetsPath.lastbuildstate +0 -2
  124. pythonfmu3/pythonfmu-export/build/CMakeFiles/CMakeConfigureLog.yaml +0 -568
  125. pythonfmu3/pythonfmu-export/build/CMakeFiles/CMakeOutput.log +0 -357
  126. pythonfmu3/pythonfmu-export/build/CMakeFiles/TargetDirectories.txt +0 -3
  127. pythonfmu3/pythonfmu-export/build/CMakeFiles/cmake.check_cache +0 -1
  128. pythonfmu3/pythonfmu-export/build/CMakeFiles/generate.stamp +0 -1
  129. pythonfmu3/pythonfmu-export/build/CMakeFiles/generate.stamp.depend +0 -28
  130. pythonfmu3/pythonfmu-export/build/CMakeFiles/generate.stamp.list +0 -2
  131. pythonfmu3/pythonfmu-export/build/ZERO_CHECK.vcxproj +0 -174
  132. pythonfmu3/pythonfmu-export/build/ZERO_CHECK.vcxproj.filters +0 -13
  133. pythonfmu3/pythonfmu-export/build/cmake_install.cmake +0 -50
  134. pythonfmu3/pythonfmu-export/build/install_manifest.txt +0 -0
  135. pythonfmu3/pythonfmu-export/build/pythonfmu-export.sln +0 -53
  136. pythonfmu3/pythonfmu-export/build/src/CMakeFiles/generate.stamp +0 -1
  137. pythonfmu3/pythonfmu-export/build/src/CMakeFiles/generate.stamp.depend +0 -2
  138. pythonfmu3/pythonfmu-export/build/src/Debug/pythonfmu-export.pdb +0 -0
  139. pythonfmu3/pythonfmu-export/build/src/Release/pythonfmu-export.exp +0 -0
  140. pythonfmu3/pythonfmu-export/build/src/Release/pythonfmu-export.lib +0 -0
  141. pythonfmu3/pythonfmu-export/build/src/cmake_install.cmake +0 -34
  142. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/PySlaveInstance.obj +0 -0
  143. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/cppfmu_cs.obj +0 -0
  144. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/exports.def +0 -1885
  145. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/fmi_functions.obj +0 -0
  146. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/objects.txt +0 -3
  147. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/CL.command.1.tlog +0 -0
  148. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/CL.read.1.tlog +0 -0
  149. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/CL.write.1.tlog +0 -0
  150. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/CustomBuild.command.1.tlog +0 -10
  151. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/CustomBuild.read.1.tlog +0 -1
  152. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/CustomBuild.write.1.tlog +0 -2
  153. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/link.command.1.tlog +0 -1
  154. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/link.read.1.tlog +0 -1
  155. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/link.read.3.tlog +0 -1
  156. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/link.write.1.tlog +0 -1
  157. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/pythonfmu-export.lastbuildstate +0 -2
  158. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/pythonfmu-export.tlog/unsuccessfulbuild +0 -0
  159. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Debug/vc142.pdb +0 -0
  160. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/MinSizeRel/objects.txt +0 -3
  161. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/RelWithDebInfo/objects.txt +0 -3
  162. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/PySlaveInstance.obj +0 -0
  163. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/cppfmu_cs.obj +0 -0
  164. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/exports.def +0 -538
  165. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/fmi_functions.obj +0 -0
  166. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/objects.txt +0 -3
  167. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.dll.recipe +0 -14
  168. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/CL.command.1.tlog +0 -0
  169. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/CL.read.1.tlog +0 -0
  170. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/CL.write.1.tlog +0 -0
  171. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/CustomBuild.command.1.tlog +0 -10
  172. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/CustomBuild.read.1.tlog +0 -1
  173. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/CustomBuild.write.1.tlog +0 -2
  174. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/link.command.1.tlog +0 -0
  175. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/link.delete.1.tlog +0 -0
  176. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/link.read.1.tlog +0 -0
  177. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/link.write.1.tlog +0 -0
  178. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/pythonfmu-export.lastbuildstate +0 -2
  179. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.dir/Release/pythonfmu-export.tlog/pythonfmu-export.write.1u.tlog +0 -0
  180. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.vcxproj +0 -414
  181. pythonfmu3/pythonfmu-export/build/src/pythonfmu-export.vcxproj.filters +0 -48
  182. pythonfmu3/pythonfmu-export/build/x64/Debug/ZERO_CHECK/ZERO_CHECK.recipe +0 -11
  183. pythonfmu3/pythonfmu-export/build/x64/Debug/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.command.1.tlog +0 -10
  184. pythonfmu3/pythonfmu-export/build/x64/Debug/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.read.1.tlog +0 -29
  185. pythonfmu3/pythonfmu-export/build/x64/Debug/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.write.1.tlog +0 -3
  186. pythonfmu3/pythonfmu-export/build/x64/Debug/ZERO_CHECK/ZERO_CHECK.tlog/ZERO_CHECK.lastbuildstate +0 -2
  187. pythonfmu3/pythonfmu-export/build/x64/Release/ALL_BUILD/ALL_BUILD.recipe +0 -17
  188. pythonfmu3/pythonfmu-export/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/ALL_BUILD.lastbuildstate +0 -2
  189. pythonfmu3/pythonfmu-export/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/CustomBuild.command.1.tlog +0 -10
  190. pythonfmu3/pythonfmu-export/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/CustomBuild.read.1.tlog +0 -27
  191. pythonfmu3/pythonfmu-export/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/CustomBuild.write.1.tlog +0 -2
  192. pythonfmu3/pythonfmu-export/build/x64/Release/ZERO_CHECK/ZERO_CHECK.recipe +0 -11
  193. pythonfmu3/pythonfmu-export/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.command.1.tlog +0 -10
  194. pythonfmu3/pythonfmu-export/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.read.1.tlog +0 -29
  195. pythonfmu3/pythonfmu-export/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.write.1.tlog +0 -3
  196. pythonfmu3/pythonfmu-export/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/ZERO_CHECK.lastbuildstate +0 -2
  197. pythonfmu3/resources/binaries/x86_64-windows1/pythonfmu-export.dll +0 -0
  198. pythonfmu3-0.2.2.2.dist-info/RECORD +0 -200
  199. {pythonfmu3-0.2.2.2.dist-info → pythonfmu3-0.2.3.dist-info}/top_level.txt +0 -0
@@ -1,21 +1,21 @@
1
- import math
2
- from pythonfmu3.fmi3slave import Fmi3Slave, Fmi3Causality, Float64, Fmi3Variability
3
- from localmodule import get_amplitude, get_time_constant
4
-
5
-
6
- class PythonSlaveWithDep(Fmi3Slave):
7
-
8
- def __init__(self, **kwargs):
9
- super().__init__(**kwargs)
10
-
11
- self.realIn = 22.0
12
- self.realOut = 0.0
13
- self.time = 0
14
-
15
- self.register_variable(Float64("time", causality=Fmi3Causality.independent, variability=Fmi3Variability.continuous))
16
- self.register_variable(Float64("realIn", causality=Fmi3Causality.input))
17
- self.register_variable(Float64("realOut", causality=Fmi3Causality.output))
18
-
19
- def do_step(self, current_time, step_size):
20
- self.realOut = self.realIn * get_amplitude() * math.exp((current_time + step_size) / get_time_constant())
21
- return True
1
+ import math
2
+ from pythonfmu3.fmi3slave import Fmi3Slave, Fmi3Causality, Float64, Fmi3Variability
3
+ from localmodule import get_amplitude, get_time_constant
4
+
5
+
6
+ class PythonSlaveWithDep(Fmi3Slave):
7
+
8
+ def __init__(self, **kwargs):
9
+ super().__init__(**kwargs)
10
+
11
+ self.realIn = 22.0
12
+ self.realOut = 0.0
13
+ self.time = 0
14
+
15
+ self.register_variable(Float64("time", causality=Fmi3Causality.independent, variability=Fmi3Variability.continuous))
16
+ self.register_variable(Float64("realIn", causality=Fmi3Causality.input))
17
+ self.register_variable(Float64("realOut", causality=Fmi3Causality.output))
18
+
19
+ def do_step(self, current_time, step_size):
20
+ self.realOut = self.realIn * get_amplitude() * math.exp((current_time + step_size) / get_time_constant())
21
+ return True
@@ -1,195 +1,195 @@
1
- import itertools
2
- import platform
3
- import tempfile
4
- import zipfile
5
- from pathlib import Path
6
-
7
- import pytest
8
-
9
- import pythonfmu3
10
- from pythonfmu3.builder import FmuBuilder, get_platform
11
-
12
- PROJECT_TEST_CASES = [
13
- ("dummy.txt",),
14
- ("dummy.py", "subdir/dummy.txt"),
15
- ("dummy.py", "subdir/dummy.txt", "subdir/dummy2.txt"),
16
- ("dummy.py", "subdir/dummy.txt", "subdir2/dummy2.txt"),
17
- ]
18
-
19
-
20
- lib_extension = ({"Darwin": "dylib", "Linux": "so", "Windows": "dll"}).get(
21
- platform.system(), None
22
- )
23
-
24
-
25
- def test_zip_content(tmp_path):
26
-
27
- script_name = "pythonslave.py"
28
- script_file = Path(__file__).parent / "slaves" / script_name
29
- fmu = FmuBuilder.build_FMU(script_file, dest=tmp_path)
30
- assert fmu.exists()
31
- assert zipfile.is_zipfile(fmu)
32
-
33
- with zipfile.ZipFile(fmu) as files:
34
- names = files.namelist()
35
-
36
- assert "modelDescription.xml" in names
37
- assert "/".join(("resources", script_name)) in names
38
- module_file = "/".join(("resources", "slavemodule.txt"))
39
- assert module_file in names
40
-
41
- nfiles = 20
42
- if FmuBuilder.has_binary():
43
- assert (
44
- "/".join(("binaries", get_platform(), f"PythonSlave.{lib_extension}"))
45
- in names
46
- )
47
- else:
48
- nfiles -= 1
49
-
50
- # Check sources
51
- src_folder = Path(pythonfmu3.__path__[0]) / "pythonfmu-export"
52
- for f in itertools.chain(
53
- src_folder.rglob("*.hpp"),
54
- src_folder.rglob("*.cpp"),
55
- src_folder.rglob("CMakeLists.txt"),
56
- ):
57
- if "build" in f.parts:
58
- continue
59
- assert "/".join(("sources", f.relative_to(src_folder).as_posix())) in names
60
-
61
- # Check pythonfmu is embedded
62
- pkg_folder = Path(pythonfmu3.__path__[0])
63
- for f in pkg_folder.rglob("*.py"):
64
- relative_f = f.relative_to(pkg_folder).as_posix()
65
- if "test" not in relative_f:
66
- assert "/".join(("resources", "pythonfmu3", relative_f)) in names
67
-
68
- assert len(names) >= nfiles # Library + python script + XML + module name + sources
69
-
70
- with files.open(module_file) as myfile:
71
- assert myfile.read() == b"pythonslave"
72
-
73
-
74
- @pytest.mark.parametrize("pfiles", PROJECT_TEST_CASES)
75
- def test_project_files(tmp_path, pfiles):
76
- pfiles = map(Path, pfiles)
77
- script_file = Path(__file__).parent / "slaves/pythonslave.py"
78
- def build():
79
- with tempfile.TemporaryDirectory() as project_dir:
80
- project_dir = Path(project_dir)
81
-
82
- project_files = set()
83
- for f in pfiles:
84
- full_name = project_dir / f
85
- if full_name.suffix:
86
- full_name.parent.mkdir(parents=True, exist_ok=True)
87
- full_name.write_text("dummy content")
88
- else:
89
- full_name.mkdir(parents=True, exist_ok=True)
90
-
91
- # Add subfolder and not file if common parent exits
92
- to_remove = None
93
- for p in project_files:
94
- if p.parent == full_name.parent or p == full_name.parent:
95
- to_remove = p
96
- break
97
- if to_remove is None:
98
- project_files.add(full_name)
99
- else:
100
- project_files.remove(to_remove)
101
- project_files.add(full_name.parent)
102
-
103
- return FmuBuilder.build_FMU(script_file, dest=tmp_path, project_files=project_files)
104
-
105
- fmu = build()
106
- with zipfile.ZipFile(fmu) as files:
107
- names = files.namelist()
108
-
109
- parents = [p.parent for p in pfiles]
110
- unique_folders = set(parents)
111
- common_parents = set()
112
- if len(unique_folders) < len(parents):
113
- common_parents = set(filter(lambda f: parents.count(f) > 1, unique_folders))
114
-
115
- pfiles = map(lambda f: f if f.parent in common_parents else f.name, pfiles)
116
-
117
- for pfile in pfiles:
118
- assert f"resources/{pfile!s}" in names
119
-
120
-
121
- @pytest.mark.parametrize("pfiles", PROJECT_TEST_CASES)
122
- def test_project_files_containing_script(tmp_path, pfiles):
123
- orig_script_file = Path(__file__).parent / "slaves/pythonslave.py"
124
- pfiles = map(Path, pfiles)
125
-
126
- def build():
127
- with tempfile.TemporaryDirectory() as project_dir:
128
- project_dir = Path(project_dir)
129
- script_file = project_dir / "slave.py"
130
- with open(orig_script_file) as script_f:
131
- script_file.write_text(script_f.read())
132
-
133
- for f in pfiles:
134
- full_name = project_dir / f
135
- if full_name.suffix:
136
- full_name.parent.mkdir(parents=True, exist_ok=True)
137
- full_name.write_text("dummy content")
138
- else:
139
- full_name.mkdir(parents=True, exist_ok=True)
140
-
141
- return FmuBuilder.build_FMU(
142
- script_file, dest=tmp_path, project_files=[script_file.parent]
143
- )
144
-
145
- fmu = build()
146
- with zipfile.ZipFile(fmu) as files:
147
- names = files.namelist()
148
-
149
- parents = [p.parent for p in pfiles]
150
- unique_folders = set(parents)
151
- common_parents = set()
152
- if len(unique_folders) < len(parents):
153
- common_parents = set(filter(lambda f: parents.count(f) > 1, unique_folders))
154
-
155
- pfiles = map(lambda f: f if f.parent in common_parents else f.name, pfiles)
156
-
157
- for pfile in pfiles:
158
- assert f"resources/{pfile!s}" in names
159
-
160
-
161
- def test_documentation(tmp_path):
162
- script_file = Path(__file__).parent / "slaves/pythonslave.py"
163
- def build():
164
- with tempfile.TemporaryDirectory() as documentation_dir:
165
- doc_dir = Path(documentation_dir)
166
- license_file = doc_dir / "licenses" / "license.txt"
167
- license_file.parent.mkdir()
168
- license_file.write_text("Dummy license")
169
- index_file = doc_dir / "index.html"
170
- index_file.write_text("dummy index")
171
- return FmuBuilder.build_FMU(script_file, dest=tmp_path, documentation_folder=doc_dir)
172
-
173
- fmu = build()
174
- with zipfile.ZipFile(fmu) as files:
175
- names = files.namelist()
176
-
177
- assert "documentation/index.html" in names
178
- assert "documentation/licenses/license.txt" in names
179
-
180
-
181
- def test_terminals(tmp_path):
182
- script_file = Path(__file__).parent / "slaves/pythonslave.py"
183
- def build():
184
- with tempfile.TemporaryDirectory() as terminals_dir:
185
- terminals_dir = Path(terminals_dir)
186
- terminals = terminals_dir / "terminalsAndIcons.xml"
187
- terminals.write_text("Dummy Terminal 1")
188
-
189
- return FmuBuilder.build_FMU(script_file, dest=tmp_path, terminals=terminals)
190
-
191
- fmu = build()
192
- with zipfile.ZipFile(fmu) as files:
193
- names = files.namelist()
194
-
195
- assert "terminalsAndIcons/terminalsAndIcons.xml" in names
1
+ import itertools
2
+ import platform
3
+ import tempfile
4
+ import zipfile
5
+ from pathlib import Path
6
+
7
+ import pytest
8
+
9
+ import pythonfmu3
10
+ from pythonfmu3.builder import FmuBuilder, get_platform
11
+
12
+ PROJECT_TEST_CASES = [
13
+ ("dummy.txt",),
14
+ ("dummy.py", "subdir/dummy.txt"),
15
+ ("dummy.py", "subdir/dummy.txt", "subdir/dummy2.txt"),
16
+ ("dummy.py", "subdir/dummy.txt", "subdir2/dummy2.txt"),
17
+ ]
18
+
19
+
20
+ lib_extension = ({"Darwin": "dylib", "Linux": "so", "Windows": "dll"}).get(
21
+ platform.system(), None
22
+ )
23
+
24
+
25
+ def test_zip_content(tmp_path):
26
+
27
+ script_name = "pythonslave.py"
28
+ script_file = Path(__file__).parent / "slaves" / script_name
29
+ fmu = FmuBuilder.build_FMU(script_file, dest=tmp_path)
30
+ assert fmu.exists()
31
+ assert zipfile.is_zipfile(fmu)
32
+
33
+ with zipfile.ZipFile(fmu) as files:
34
+ names = files.namelist()
35
+
36
+ assert "modelDescription.xml" in names
37
+ assert "/".join(("resources", script_name)) in names
38
+ module_file = "/".join(("resources", "slavemodule.txt"))
39
+ assert module_file in names
40
+
41
+ nfiles = 20
42
+ if FmuBuilder.has_binary():
43
+ assert (
44
+ "/".join(("binaries", get_platform(), f"PythonSlave.{lib_extension}"))
45
+ in names
46
+ )
47
+ else:
48
+ nfiles -= 1
49
+
50
+ # Check sources
51
+ src_folder = Path(pythonfmu3.__path__[0]) / "pythonfmu-export"
52
+ for f in itertools.chain(
53
+ src_folder.rglob("*.hpp"),
54
+ src_folder.rglob("*.cpp"),
55
+ src_folder.rglob("CMakeLists.txt"),
56
+ ):
57
+ if "build" in f.parts:
58
+ continue
59
+ assert "/".join(("sources", f.relative_to(src_folder).as_posix())) in names
60
+
61
+ # Check pythonfmu is embedded
62
+ pkg_folder = Path(pythonfmu3.__path__[0])
63
+ for f in pkg_folder.rglob("*.py"):
64
+ relative_f = f.relative_to(pkg_folder).as_posix()
65
+ if "test" not in relative_f:
66
+ assert "/".join(("resources", "pythonfmu3", relative_f)) in names
67
+
68
+ assert len(names) >= nfiles # Library + python script + XML + module name + sources
69
+
70
+ with files.open(module_file) as myfile:
71
+ assert myfile.read() == b"pythonslave"
72
+
73
+
74
+ @pytest.mark.parametrize("pfiles", PROJECT_TEST_CASES)
75
+ def test_project_files(tmp_path, pfiles):
76
+ pfiles = map(Path, pfiles)
77
+ script_file = Path(__file__).parent / "slaves/pythonslave.py"
78
+ def build():
79
+ with tempfile.TemporaryDirectory() as project_dir:
80
+ project_dir = Path(project_dir)
81
+
82
+ project_files = set()
83
+ for f in pfiles:
84
+ full_name = project_dir / f
85
+ if full_name.suffix:
86
+ full_name.parent.mkdir(parents=True, exist_ok=True)
87
+ full_name.write_text("dummy content")
88
+ else:
89
+ full_name.mkdir(parents=True, exist_ok=True)
90
+
91
+ # Add subfolder and not file if common parent exits
92
+ to_remove = None
93
+ for p in project_files:
94
+ if p.parent == full_name.parent or p == full_name.parent:
95
+ to_remove = p
96
+ break
97
+ if to_remove is None:
98
+ project_files.add(full_name)
99
+ else:
100
+ project_files.remove(to_remove)
101
+ project_files.add(full_name.parent)
102
+
103
+ return FmuBuilder.build_FMU(script_file, dest=tmp_path, project_files=project_files)
104
+
105
+ fmu = build()
106
+ with zipfile.ZipFile(fmu) as files:
107
+ names = files.namelist()
108
+
109
+ parents = [p.parent for p in pfiles]
110
+ unique_folders = set(parents)
111
+ common_parents = set()
112
+ if len(unique_folders) < len(parents):
113
+ common_parents = set(filter(lambda f: parents.count(f) > 1, unique_folders))
114
+
115
+ pfiles = map(lambda f: f if f.parent in common_parents else f.name, pfiles)
116
+
117
+ for pfile in pfiles:
118
+ assert f"resources/{pfile!s}" in names
119
+
120
+
121
+ @pytest.mark.parametrize("pfiles", PROJECT_TEST_CASES)
122
+ def test_project_files_containing_script(tmp_path, pfiles):
123
+ orig_script_file = Path(__file__).parent / "slaves/pythonslave.py"
124
+ pfiles = map(Path, pfiles)
125
+
126
+ def build():
127
+ with tempfile.TemporaryDirectory() as project_dir:
128
+ project_dir = Path(project_dir)
129
+ script_file = project_dir / "slave.py"
130
+ with open(orig_script_file) as script_f:
131
+ script_file.write_text(script_f.read())
132
+
133
+ for f in pfiles:
134
+ full_name = project_dir / f
135
+ if full_name.suffix:
136
+ full_name.parent.mkdir(parents=True, exist_ok=True)
137
+ full_name.write_text("dummy content")
138
+ else:
139
+ full_name.mkdir(parents=True, exist_ok=True)
140
+
141
+ return FmuBuilder.build_FMU(
142
+ script_file, dest=tmp_path, project_files=[script_file.parent]
143
+ )
144
+
145
+ fmu = build()
146
+ with zipfile.ZipFile(fmu) as files:
147
+ names = files.namelist()
148
+
149
+ parents = [p.parent for p in pfiles]
150
+ unique_folders = set(parents)
151
+ common_parents = set()
152
+ if len(unique_folders) < len(parents):
153
+ common_parents = set(filter(lambda f: parents.count(f) > 1, unique_folders))
154
+
155
+ pfiles = map(lambda f: f if f.parent in common_parents else f.name, pfiles)
156
+
157
+ for pfile in pfiles:
158
+ assert f"resources/{pfile!s}" in names
159
+
160
+
161
+ def test_documentation(tmp_path):
162
+ script_file = Path(__file__).parent / "slaves/pythonslave.py"
163
+ def build():
164
+ with tempfile.TemporaryDirectory() as documentation_dir:
165
+ doc_dir = Path(documentation_dir)
166
+ license_file = doc_dir / "licenses" / "license.txt"
167
+ license_file.parent.mkdir()
168
+ license_file.write_text("Dummy license")
169
+ index_file = doc_dir / "index.html"
170
+ index_file.write_text("dummy index")
171
+ return FmuBuilder.build_FMU(script_file, dest=tmp_path, documentation_folder=doc_dir)
172
+
173
+ fmu = build()
174
+ with zipfile.ZipFile(fmu) as files:
175
+ names = files.namelist()
176
+
177
+ assert "documentation/index.html" in names
178
+ assert "documentation/licenses/license.txt" in names
179
+
180
+
181
+ def test_terminals(tmp_path):
182
+ script_file = Path(__file__).parent / "slaves/pythonslave.py"
183
+ def build():
184
+ with tempfile.TemporaryDirectory() as terminals_dir:
185
+ terminals_dir = Path(terminals_dir)
186
+ terminals = terminals_dir / "terminalsAndIcons.xml"
187
+ terminals.write_text("Dummy Terminal 1")
188
+
189
+ return FmuBuilder.build_FMU(script_file, dest=tmp_path, terminals=terminals)
190
+
191
+ fmu = build()
192
+ with zipfile.ZipFile(fmu) as files:
193
+ names = files.namelist()
194
+
195
+ assert "terminalsAndIcons/terminalsAndIcons.xml" in names
@@ -1,48 +1,48 @@
1
- from pathlib import Path
2
- from tempfile import TemporaryDirectory
3
- from unittest.mock import patch
4
-
5
- import pytest
6
-
7
- from pythonfmu3.builder import FmuBuilder
8
- from pythonfmu3.deploy import deploy
9
-
10
- PYTHON_SLAVE = Path(__file__).parent / "slaves/pythonslave.py"
11
-
12
- @pytest.mark.parametrize("test_manager", [None, "pip", "conda"])
13
- @pytest.mark.parametrize(
14
- "requirements, test_requirements, expected", [
15
- (None, None, ValueError),
16
- (None, "requirements.txt", ValueError),
17
- (None, "environment.yaml", ValueError),
18
- ("requirements.txt", None, "pip"),
19
- ("environment.yaml", None, "conda"),
20
- ("environment.yml", None, "conda"),
21
- ("req.txt", "req.txt", "pip"),
22
- ("env.yml", "env.yml", "conda"),
23
- ]
24
- )
25
- def test_deploy(tmp_path, test_manager, requirements, test_requirements, expected):
26
-
27
- dummy_requirements = """numpy=1.16
28
- scipy
29
- """
30
- if requirements is not None:
31
- with TemporaryDirectory() as tempd:
32
- requirements_file = Path(tempd) / requirements
33
- requirements_file.write_text(dummy_requirements)
34
- fmu = FmuBuilder.build_FMU(PYTHON_SLAVE, dest=tmp_path, project_files=[requirements_file, ])
35
- else:
36
- fmu = FmuBuilder.build_FMU(PYTHON_SLAVE, dest=tmp_path)
37
- assert fmu.exists()
38
-
39
- with patch("subprocess.run") as run:
40
- if isinstance(expected, type) and issubclass(expected, Exception):
41
- with pytest.raises(expected):
42
- deploy(fmu, environment=test_requirements, package_manager=test_manager)
43
- run.assert_not_called()
44
- else:
45
- deploy(fmu, environment=test_requirements, package_manager=test_manager)
46
-
47
- run.assert_called_once()
48
- assert (test_manager or expected) in " ".join(run.call_args[0][0])
1
+ from pathlib import Path
2
+ from tempfile import TemporaryDirectory
3
+ from unittest.mock import patch
4
+
5
+ import pytest
6
+
7
+ from pythonfmu3.builder import FmuBuilder
8
+ from pythonfmu3.deploy import deploy
9
+
10
+ PYTHON_SLAVE = Path(__file__).parent / "slaves/pythonslave.py"
11
+
12
+ @pytest.mark.parametrize("test_manager", [None, "pip", "conda"])
13
+ @pytest.mark.parametrize(
14
+ "requirements, test_requirements, expected", [
15
+ (None, None, ValueError),
16
+ (None, "requirements.txt", ValueError),
17
+ (None, "environment.yaml", ValueError),
18
+ ("requirements.txt", None, "pip"),
19
+ ("environment.yaml", None, "conda"),
20
+ ("environment.yml", None, "conda"),
21
+ ("req.txt", "req.txt", "pip"),
22
+ ("env.yml", "env.yml", "conda"),
23
+ ]
24
+ )
25
+ def test_deploy(tmp_path, test_manager, requirements, test_requirements, expected):
26
+
27
+ dummy_requirements = """numpy=1.16
28
+ scipy
29
+ """
30
+ if requirements is not None:
31
+ with TemporaryDirectory() as tempd:
32
+ requirements_file = Path(tempd) / requirements
33
+ requirements_file.write_text(dummy_requirements)
34
+ fmu = FmuBuilder.build_FMU(PYTHON_SLAVE, dest=tmp_path, project_files=[requirements_file, ])
35
+ else:
36
+ fmu = FmuBuilder.build_FMU(PYTHON_SLAVE, dest=tmp_path)
37
+ assert fmu.exists()
38
+
39
+ with patch("subprocess.run") as run:
40
+ if isinstance(expected, type) and issubclass(expected, Exception):
41
+ with pytest.raises(expected):
42
+ deploy(fmu, environment=test_requirements, package_manager=test_manager)
43
+ run.assert_not_called()
44
+ else:
45
+ deploy(fmu, environment=test_requirements, package_manager=test_manager)
46
+
47
+ run.assert_called_once()
48
+ assert (test_manager or expected) in " ".join(run.call_args[0][0])