v2sim 1.4.2__tar.gz → 1.4.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. {v2sim-1.4.2 → v2sim-1.4.4}/PKG-INFO +1 -1
  2. {v2sim-1.4.2 → v2sim-1.4.4}/pyproject.toml +1 -1
  3. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/__init__.py +1 -1
  4. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/sim_single.py +40 -1
  5. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gen/misc.py +27 -0
  6. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/_lang/en_US.lang +1 -1
  7. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/_lang/zh_CN.lang +1 -1
  8. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/osmGet.py +11 -1
  9. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/plgbox/__init__.py +5 -34
  10. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/plgbox/_lang/en_US.lang +1 -1
  11. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/plgbox/_lang/zh_CN.lang +1 -1
  12. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/locale/lang.py +5 -0
  13. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/locale/zh_CN.py +5 -0
  14. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plugins/pool.py +67 -2
  15. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/veh/veh.py +6 -0
  16. {v2sim-1.4.2 → v2sim-1.4.4}/.gitignore +0 -0
  17. {v2sim-1.4.2 → v2sim-1.4.4}/LICENSE +0 -0
  18. {v2sim-1.4.2 → v2sim-1.4.4}/README.md +0 -0
  19. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/cmd_advplot.py +0 -0
  20. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/cmd_convert.py +0 -0
  21. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/cmd_csquery.py +0 -0
  22. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/cmd_gen_cs.py +0 -0
  23. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/cmd_gen_trip.py +0 -0
  24. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/cmd_plot.py +0 -0
  25. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/gui_cmp.py +0 -0
  26. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/gui_convert.py +0 -0
  27. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/gui_main.py +0 -0
  28. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/gui_osm.py +0 -0
  29. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/gui_para.py +0 -0
  30. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/gui_plgman.py +0 -0
  31. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/app/gui_viewer.py +0 -0
  32. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/core.py +0 -0
  33. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gen/__init__.py +0 -0
  34. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gen/core.py +0 -0
  35. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gen/csquery.py +0 -0
  36. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gen/poly.py +0 -0
  37. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gen/trip.py +0 -0
  38. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gen/veh.py +0 -0
  39. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/cmpbox/__init__.py +0 -0
  40. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/cmpbox/_lang/en_US.lang +0 -0
  41. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/cmpbox/_lang/zh_CN.lang +0 -0
  42. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/com_no_vx.py +0 -0
  43. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/common.py +0 -0
  44. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/convertbox/__init__.py +0 -0
  45. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/convertbox/_lang/en_US.lang +0 -0
  46. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/convertbox/_lang/zh_CN.lang +0 -0
  47. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/evtq.py +0 -0
  48. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/langhelper.py +0 -0
  49. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/__init__.py +0 -0
  50. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/__init__.py +0 -0
  51. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/_lang/en_US.lang +0 -0
  52. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/_lang/zh_CN.lang +0 -0
  53. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/lipad.py +0 -0
  54. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/network.py +0 -0
  55. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/pdfe.py +0 -0
  56. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/prope.py +0 -0
  57. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/rle.py +0 -0
  58. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/scrtv.py +0 -0
  59. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/sfe.py +0 -0
  60. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/sid.py +0 -0
  61. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/controls/utils.py +0 -0
  62. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/cscsveditor.py +0 -0
  63. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/loadingbox.py +0 -0
  64. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/plugin.py +0 -0
  65. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/sedit.py +0 -0
  66. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/mainbox/utils.py +0 -0
  67. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/__init__.py +0 -0
  68. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/osmBuild.py +0 -0
  69. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/osmWebWizard.py +0 -0
  70. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/ptlines2flows.py +0 -0
  71. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/readme.md +0 -0
  72. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/tileGet.py +0 -0
  73. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/navteqPolyconvert.typ.xml +0 -0
  74. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/opendriveNetconvert.typ.xml +0 -0
  75. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/opendriveNetconvertBicycle.typ.xml +0 -0
  76. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/opendriveNetconvertPedestrians.typ.xml +0 -0
  77. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvert.typ.xml +0 -0
  78. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertAerialway.typ.xml +0 -0
  79. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertAirport.typ.xml +0 -0
  80. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertBicycle.typ.xml +0 -0
  81. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertBidiRail.typ.xml +0 -0
  82. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertExtraRail.typ.xml +0 -0
  83. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertPedestrians.typ.xml +0 -0
  84. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertPedestriansNES.typ.xml +0 -0
  85. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertRailUsage.typ.xml +0 -0
  86. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertShips.typ.xml +0 -0
  87. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmNetconvertUrbanDe.typ.xml +0 -0
  88. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmPolyconvert.typ.xml +0 -0
  89. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/osmPolyconvertRail.typ.xml +0 -0
  90. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/typemap/visumPolyconvert.typ.xml +0 -0
  91. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/SimpleWebSocketServer.py +0 -0
  92. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/__init__.py +0 -0
  93. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/bicycle.png +0 -0
  94. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/bus.png +0 -0
  95. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/favicon.ico +0 -0
  96. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/generate.png +0 -0
  97. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/map.png +0 -0
  98. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/motorcycle.png +0 -0
  99. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/passenger.png +0 -0
  100. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/pedestrian.png +0 -0
  101. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/rail.png +0 -0
  102. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/rail_urban.png +0 -0
  103. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/road.png +0 -0
  104. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/ship.png +0 -0
  105. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/tram.png +0 -0
  106. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/images/truck.png +0 -0
  107. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/index.html +0 -0
  108. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/jquery-3.5.1.min.js +0 -0
  109. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/lib.js +0 -0
  110. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/script.js +0 -0
  111. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/osmhelper/webWizard/style.css +0 -0
  112. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/parabox/__init__.py +0 -0
  113. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/parabox/_lang/en.lang +0 -0
  114. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/parabox/_lang/zh_CN.lang +0 -0
  115. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/parabox/lgb.py +0 -0
  116. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/parabox/pareditor.py +0 -0
  117. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/parabox/utils.py +0 -0
  118. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/progbox/__init__.py +0 -0
  119. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/__init__.py +0 -0
  120. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/_lang/en_US.lang +0 -0
  121. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/_lang/zh_CN.lang +0 -0
  122. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/gridpage.py +0 -0
  123. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/optbox.py +0 -0
  124. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/plotpad.py +0 -0
  125. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/plotpage.py +0 -0
  126. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/srd.py +0 -0
  127. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/statepage.py +0 -0
  128. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/viewerbox/trips.py +0 -0
  129. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/welcomebox/__init__.py +0 -0
  130. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/welcomebox/_lang/en_US.lang +0 -0
  131. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/welcomebox/_lang/zh_CN.lang +0 -0
  132. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/gui/welcomebox/v2sim.png +0 -0
  133. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/hub/__init__.py +0 -0
  134. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/hub/cs.py +0 -0
  135. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/hub/hub.py +0 -0
  136. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/hub/s.py +0 -0
  137. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/locale/__init__.py +0 -0
  138. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/net.py +0 -0
  139. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plot/__init__.py +0 -0
  140. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plot/example.txt +0 -0
  141. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plot/plot.py +0 -0
  142. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plot/reader.py +0 -0
  143. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plugins/__init__.py +0 -0
  144. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plugins/base.py +0 -0
  145. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plugins/dyntrip.py +0 -0
  146. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plugins/ocur.py +0 -0
  147. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plugins/pdn.py +0 -0
  148. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/plugins/v2g.py +0 -0
  149. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/H.csv +0 -0
  150. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/H_spr.csv +0 -0
  151. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/H_spr_weekday.csv +0 -0
  152. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/H_spr_weekend.csv +0 -0
  153. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/O_spr.csv +0 -0
  154. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/O_spr_weekday.csv +0 -0
  155. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/O_spr_weekend.csv +0 -0
  156. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/R_spr.csv +0 -0
  157. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/R_spr_weekday.csv +0 -0
  158. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/R_spr_weekend.csv +0 -0
  159. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/W_spr.csv +0 -0
  160. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/W_spr_weekday.csv +0 -0
  161. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/duration_of_parking/W_spr_weekend.csv +0 -0
  162. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/soc_dist.csv +0 -0
  163. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/space_transfer_probability/H_spr_weekday.csv +0 -0
  164. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/space_transfer_probability/H_spr_weekend.csv +0 -0
  165. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/space_transfer_probability/O_spr_weekday.csv +0 -0
  166. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/space_transfer_probability/O_spr_weekend.csv +0 -0
  167. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/space_transfer_probability/R_spr_weekday.csv +0 -0
  168. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/space_transfer_probability/R_spr_weekend.csv +0 -0
  169. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/space_transfer_probability/W_spr_weekday.csv +0 -0
  170. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/space_transfer_probability/W_spr_weekend.csv +0 -0
  171. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/probtable/vtypes.xml +0 -0
  172. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/seg.py +0 -0
  173. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/__init__.py +0 -0
  174. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/base.py +0 -0
  175. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/routing.py +0 -0
  176. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/sumo.py +0 -0
  177. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/tlog.py +0 -0
  178. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/utils.py +0 -0
  179. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/ux.py +0 -0
  180. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/uxsim/LICENSE +0 -0
  181. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/uxsim/__init__.py +0 -0
  182. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/uxsim/analyzer.py +0 -0
  183. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/uxsim/readme.md +0 -0
  184. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/uxsim/scenario_reader_writer.py +0 -0
  185. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/uxsim/utils.py +0 -0
  186. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/uxsim/uxsim.py +0 -0
  187. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/uxworld.py +0 -0
  188. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/sim/win_vis.py +0 -0
  189. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/stats/__init__.py +0 -0
  190. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/stats/base.py +0 -0
  191. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/stats/logcs.py +0 -0
  192. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/stats/logev.py +0 -0
  193. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/stats/loggr.py +0 -0
  194. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/stats/manager.py +0 -0
  195. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/utils.py +0 -0
  196. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/veh/__init__.py +0 -0
  197. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/veh/ev.py +0 -0
  198. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/veh/params.py +0 -0
  199. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/veh/vdict.py +0 -0
  200. {v2sim-1.4.2 → v2sim-1.4.4}/v2sim/wrapper.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: v2sim
3
- Version: 1.4.2
3
+ Version: 1.4.4
4
4
  Summary: V2Sim: An Open-Source V2G Simulation Platform in Urban Power and Transportation Network
5
5
  Project-URL: Homepage, https://github.com/hesl-seu/v2sim
6
6
  Project-URL: Documentation, https://hesl-seu.github.io/v2sim-wiki/
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "v2sim"
7
- version = "1.4.2"
7
+ version = "1.4.4"
8
8
  dependencies = [ "feasytools>=0.1.4", "fpowerkit>=0.4.1", "networkx>=3.2.1", "numpy", "matplotlib", "pyproj", "requests", "cloudpickle", "sumolib", "dill", "libsumo", "scipy",]
9
9
  requires-python = ">= 3.9"
10
10
  license = "BSD-3-Clause"
@@ -6,4 +6,4 @@ from .net import *
6
6
  from .core import *
7
7
  from .wrapper import *
8
8
 
9
- __version__ = "1.4.2"
9
+ __version__ = "1.4.4"
@@ -1,3 +1,4 @@
1
+ from pathlib import Path
1
2
  import threading, sys, logging, platform
2
3
  from typing import Optional, Union
3
4
  from v2sim import Lang, get_sim_params
@@ -82,8 +83,46 @@ def main():
82
83
  print(Lang.MAIN_HELP_STR)
83
84
  return
84
85
 
86
+ # Version information
87
+ if args.pop_bool("version"):
88
+ import v2sim
89
+ print(v2sim.__version__)
90
+ return
91
+
92
+ # Add/del plugins
93
+ add_plg = args.pop_str_or_none("add-plugin")
94
+ if add_plg:
95
+ if not add_plg.endswith(".py") or not Path(add_plg).is_file():
96
+ error_exit(Lang.ERROR_MAIN_PLUGIN_FILE.format(add_plg))
97
+ from v2sim.plugins import PluginHelper
98
+ if PluginHelper.add_plugin(add_plg, as_link=False):
99
+ print(Lang.MAIN_ADD_PLUGIN_SUCCESS.format(add_plg))
100
+ else:
101
+ print(Lang.MAIN_ADD_PLUGIN_FAIL.format(add_plg))
102
+ return
103
+
104
+ add_plg_link = args.pop_str_or_none("add-plugin-link")
105
+ if add_plg_link:
106
+ if not add_plg_link.endswith(".py") or not Path(add_plg_link).is_file():
107
+ error_exit(Lang.ERROR_MAIN_PLUGIN_FILE.format(add_plg_link))
108
+ from v2sim.plugins import PluginHelper
109
+ if PluginHelper.add_plugin(add_plg_link, as_link=True):
110
+ print(Lang.MAIN_ADD_PLUGIN_SUCCESS.format(add_plg_link))
111
+ else:
112
+ print(Lang.MAIN_ADD_PLUGIN_FAIL.format(add_plg_link))
113
+ return
114
+
115
+ del_plg_name = args.pop_str_or_none("del-plugin")
116
+ if del_plg_name:
117
+ from v2sim.plugins import PluginHelper
118
+ if PluginHelper.del_plugin(del_plg_name):
119
+ print(Lang.MAIN_DEL_PLUGIN_SUCCESS.format(del_plg_name))
120
+ else:
121
+ print(Lang.MAIN_DEL_PLUGIN_NOT_FOUND.format(del_plg_name))
122
+ return
123
+
85
124
  # List available plugins and statistics
86
- if args.pop_bool("ls-com"):
125
+ if args.pop_bool("ls-com") or args.pop_bool("list-plugins"):
87
126
  plg_pool, sta_pool = create_pools()
88
127
  print(Lang.MAIN_LS_TITLE_PLG)
89
128
  for key, (_, deps) in plg_pool.GetAllPlugins().items():
@@ -70,7 +70,34 @@ class VehicleTypePool:
70
70
  return self.sample_evtype()
71
71
  else:
72
72
  return self.sample_gvtype()
73
+
74
+ def add_evtype(self, evtype:EVType, weight:float):
75
+ self.__evtypes.append(evtype)
76
+ self.__evt_weights.append(weight)
77
+ self.__total_ev_weight += weight
78
+
79
+ def add_gvtype(self, gvtype:GVType, weight:float):
80
+ self.__gvtypes.append(gvtype)
81
+ self.__gvt_weights.append(weight)
82
+ self.__total_gv_weight += weight
73
83
 
84
+ def remove_evtype(self, evtype:EVType):
85
+ for i, et in enumerate(self.__evtypes):
86
+ if et == evtype:
87
+ self.__total_ev_weight -= self.__evt_weights[i]
88
+ del self.__evtypes[i]
89
+ del self.__evt_weights[i]
90
+ return
91
+ raise ValueError("EVType not found in pool")
92
+
93
+ def remove_gvtype(self, gvtype:GVType):
94
+ for i, gt in enumerate(self.__gvtypes):
95
+ if gt == gvtype:
96
+ self.__total_gv_weight -= self.__gvt_weights[i]
97
+ del self.__gvtypes[i]
98
+ del self.__gvt_weights[i]
99
+ return
100
+ raise ValueError("GVType not found in pool")
74
101
 
75
102
  def random_diff(seq:Sequence[Any], exclude:Any):
76
103
  """Choose a random element from `seq` that is not equal to `exclude`"""
@@ -3,7 +3,7 @@ BTN_FIND=Find
3
3
  MB_EXIT_SAVE=Save the project before exit?
4
4
  MB_SAVE_AND_SIM=Project not saved. Save the project and start simulation?
5
5
  STA_READY=Ready
6
- TITLE=V2Sim-UX Project Editor
6
+ TITLE=V2Sim Project Editor
7
7
  LB_COUNT=Count: {0}
8
8
  MENU_PROJ=Project
9
9
  MENU_OPEN=Open...
@@ -3,7 +3,7 @@ BTN_FIND=查找
3
3
  MB_EXIT_SAVE=是否要在退出前保存项目?
4
4
  MB_SAVE_AND_SIM=项目未保存。是否保存并开始仿真?
5
5
  STA_READY=就绪
6
- TITLE=V2Sim-UX项目编辑器
6
+ TITLE=V2Sim项目编辑器
7
7
  LB_COUNT=数量:{0}
8
8
  MENU_PROJ=项目
9
9
  MENU_OPEN=打开...
@@ -151,7 +151,13 @@ def readCompressed(options, conn, urlpath, query, roadTypesJSON, getShapes, file
151
151
  with open(options.query_output, "w") as outf:
152
152
  outf.write(finalQuery)
153
153
 
154
- conn.request("POST", "/" + urlpath, finalQuery, headers={'Accept-Encoding': 'gzip'})
154
+ request_path = urlpath if urlpath.startswith('/') else '/' + urlpath
155
+ headers = {
156
+ 'Accept-Encoding': 'gzip',
157
+ 'User-Agent': 'v2sim-osmWebWizard/1.0 (+https://github.com/hesl-seu/v2sim)',
158
+ 'Accept': '*/*'
159
+ }
160
+ conn.request("POST", request_path, finalQuery.encode('utf-8'), headers=headers)
155
161
 
156
162
  response = conn.getresponse()
157
163
  if options.verbose:
@@ -171,6 +177,10 @@ def readCompressed(options, conn, urlpath, query, roadTypesJSON, getShapes, file
171
177
  out.write(gzip.compress(lines))
172
178
  else:
173
179
  out.write(lines)
180
+ else:
181
+ print("Error: Overpass API returned HTTP %s (%s)" % (response.status, response.reason), file=sys.stderr)
182
+ error_content = response.read().decode('utf-8', errors='replace')
183
+ print("Response: %s" % error_content, file=sys.stderr)
174
184
 
175
185
 
176
186
  def get_options(args):
@@ -1,8 +1,7 @@
1
1
  from v2sim.gui.common import *
2
2
  from collections import defaultdict
3
3
  from v2sim import load_external_components, PLUGINS_DIR, get_internal_components
4
- import os
5
- import shutil
4
+ from v2sim.plugins import PluginHelper
6
5
 
7
6
 
8
7
  _ = LangLib.Load(__file__)
@@ -64,40 +63,15 @@ class PlgBox(Tk):
64
63
  for v in val:
65
64
  tree.insert(key_id, 'end', text=v)
66
65
  return confirm_have_exists
67
-
68
- def get_lang_file(src_path: Union[str, Path]) -> Union[Path, None]:
69
- src_parent = Path(src_path).parent
70
- if (src_parent / "_lang").is_dir():
71
- src_lang = src_parent / "_lang"
72
- elif (src_parent / (Path(src_path).stem + ".langs")).is_file():
73
- src_lang = src_parent / (Path(src_path).stem + ".langs")
74
- else:
75
- src_lang = None
76
- return src_lang
77
66
 
78
67
  def on_import(link = False):
79
68
  src = filedialog.askopenfilename(title=_("IMPORT_PLUGIN_TITLE"), filetypes=[(_("Python files"), "*.py")])
80
69
  if not src: return
81
- src_lang = get_lang_file(src)
82
-
83
- dest_dir = PLUGINS_DIR
84
- dest_dir.mkdir(parents=True, exist_ok=True)
85
-
86
- dest_path_link = dest_dir / (Path(src).stem + ".link")
87
- dest_path_py = dest_dir / (Path(src).stem + ".py")
88
70
 
89
71
  try:
90
- if dest_path_link.exists():
91
- raise RuntimeError(_("ERROR_FILE_EXISTS").format(dest_path_link.name))
92
- if dest_path_py.exists():
93
- raise RuntimeError(_("ERROR_FILE_EXISTS").format(dest_path_py.name))
94
- if link:
95
- with open(dest_path_link, "w", encoding="utf-8") as f:
96
- f.write(src)
97
- else:
98
- shutil.copy2(src, dest_path_py)
99
- if src_lang is not None:
100
- shutil.copy2(src_lang, dest_dir / src_lang.name)
72
+ success = PluginHelper.add_plugin(src, as_link=link)
73
+ if not success:
74
+ raise RuntimeError(_("ERROR_FILE_EXISTS"))
101
75
  plg_name = Path(src).stem
102
76
  if refresh_tree(plg_name):
103
77
  MB.showinfo(_("INFO"), _("IMPORT_SUCCESS").format(plg_name))
@@ -125,11 +99,8 @@ class PlgBox(Tk):
125
99
  return
126
100
 
127
101
  file = PLUGINS_DIR / text # keep extension
128
- src_lang = get_lang_file(file)
129
102
  try:
130
- os.remove(file)
131
- if src_lang is not None:
132
- os.remove(src_lang)
103
+ PluginHelper.del_plugin(Path(file).stem)
133
104
  MB.showinfo(_("INFO"), _("DELETE_SUCCESS"))
134
105
  refresh_tree()
135
106
  except Exception as e:
@@ -17,5 +17,5 @@ IMPORT_BUTTON=Import...
17
17
  IMPORT_LINK_BUTTON=Import link...
18
18
  DELETE_BUTTON=Remove
19
19
  IMPORT_BUT_NOT_LOADED=Plugin {0} has been imported, but it does not contain plugins or statistics.
20
- ERROR_FILE_EXISTS=File {0} already existed.
20
+ ERROR_FILE_EXISTS=A plugin with the same name already existed.
21
21
  INTERNAL=(Internal)
@@ -17,5 +17,5 @@ IMPORT_BUTTON=导入...
17
17
  IMPORT_LINK_BUTTON=导入链接...
18
18
  DELETE_BUTTON=移除
19
19
  IMPORT_BUT_NOT_LOADED=插件{0}已导入,但是它不包含有效的插件或统计项。
20
- ERROR_FILE_EXISTS=文件{0}已经存在。
20
+ ERROR_FILE_EXISTS=已经存在同名插件。
21
21
  INTERNAL=(内部组件)
@@ -48,6 +48,7 @@ class Lang:
48
48
  ERROR_INVALID_CACHE_ROUTE = "Error: Invalid cache route: {0}"
49
49
  ERROR_INVALID_TRIP_GEN_MODE = "Error: Invalid trip generation mode: {0}"
50
50
  ERROR_CS_NODE_NOT_EXIST = "Error: CS node {0} does not exist in the road network."
51
+ ERROR_MAIN_PLUGIN_FILE = "Error: Plugin file '{}' is invalid."
51
52
 
52
53
  WARN_COPY_SKIPPED = "Warning: Copying case files skipped to avoid copying into itself."
53
54
  WARN_EXT_LOAD_FAILED = "Warning: {0} is a Python file, but cannot be loaded as a package: {1}"
@@ -86,6 +87,10 @@ class Lang:
86
87
  MAIN_SIGINT = "Received Ctrl-C signal, exiting prematurely."
87
88
  MAIN_SIM_DONE = "Simulation done. Duration: {}"
88
89
  MAIN_SIM_PROG = "Progress: {0:.2f}%, {1}/{2}. Elapsed: {3}, ETA: {4}"
90
+ MAIN_ADD_PLUGIN_SUCCESS = "Plugin '{}' has been imported successfully."
91
+ MAIN_ADD_PLUGIN_FAIL = "Failed to import plugin '{}'."
92
+ MAIN_DEL_PLUGIN_SUCCESS = "Plugin '{}' has been deleted successfully."
93
+ MAIN_DEL_PLUGIN_NOT_FOUND = "Plugin '{}' not found."
89
94
 
90
95
  PARA_SIM_SKIP_LIST = "Skip list: {}"
91
96
  PARA_SIM_DONE_PARA = "Parallel part done. Duration: {}"
@@ -37,6 +37,7 @@ class _locale:
37
37
  ERROR_INVALID_CACHE_ROUTE = "错误: 无效的寻路缓存模式: {0}"
38
38
  ERROR_INVALID_TRIP_GEN_MODE = "错误: 无效的行程生成模式: {0}"
39
39
  ERROR_CS_NODE_NOT_EXIST = "错误: 充电站所在节点{0}不存在"
40
+ ERROR_MAIN_PLUGIN_FILE = "错误: 插件文件'{}'无效."
40
41
 
41
42
  WARN_EXT_LOAD_FAILED = "警告: {0}是Python文件, 但无法作为包加载: {1}"
42
43
  WARN_EXT_INVALID_PLUGIN = "警告: {0}的plugin_exports无效, 无法作为插件导入: {1}"
@@ -72,6 +73,10 @@ class _locale:
72
73
  MAIN_SIGINT = "收到Ctrl-C退出信号, 提前退出"
73
74
  MAIN_SIM_DONE = "仿真结束. 用时: {}"
74
75
  MAIN_SIM_PROG = "进度: {0:.2f}%, {1}/{2}. 已用时: {3}, 预计剩余时间: {4}"
76
+ MAIN_ADD_PLUGIN_SUCCESS = "插件'{}'已成功导入."
77
+ MAIN_ADD_PLUGIN_FAIL = "导入插件'{}'失败."
78
+ MAIN_DEL_PLUGIN_SUCCESS = "插件'{}'已成功删除."
79
+ MAIN_DEL_PLUGIN_NOT_FOUND = "未找到插件'{}'."
75
80
 
76
81
  PARA_SIM_SKIP_LIST = "跳过: {}"
77
82
  PARA_SIM_DONE_PARA = "并行部分完成. 用时: {}"
@@ -1,5 +1,5 @@
1
1
  import dill as pickle
2
- from typing import Type
2
+ from typing import Type, Union
3
3
  from ..utils import CheckPyVersion, PyVersion
4
4
  from .base import *
5
5
  from .pdn import PluginPDN
@@ -42,6 +42,71 @@ def RegPlugin(name:str, dependencies:Optional[List[str]] = None):
42
42
  class PluginError(Exception):
43
43
  pass
44
44
 
45
+
46
+ class PluginHelper:
47
+ @staticmethod
48
+ def get_lang_file(src_path: Union[str, Path]) -> Union[Path, None]:
49
+ src_parent = Path(src_path).parent
50
+ if (src_parent / "_lang").is_dir():
51
+ src_lang = src_parent / "_lang"
52
+ elif (src_parent / (Path(src_path).stem + ".langs")).is_file():
53
+ src_lang = src_parent / (Path(src_path).stem + ".langs")
54
+ else:
55
+ src_lang = None
56
+ return src_lang
57
+
58
+ @staticmethod
59
+ def has_plugin(name:str) -> bool:
60
+ from ..core import PLUGINS_DIR
61
+ dest_dir = PLUGINS_DIR
62
+ dest_path_link = dest_dir / (name + ".link")
63
+ dest_path_py = dest_dir / (name + ".py")
64
+ return dest_path_link.exists() or dest_path_py.exists()
65
+
66
+ @staticmethod
67
+ def add_plugin(file: Union[str, Path], as_link:bool = False) -> bool:
68
+ import shutil
69
+ from ..core import PLUGINS_DIR
70
+ dest_dir = PLUGINS_DIR
71
+ dest_dir.mkdir(parents=True, exist_ok=True)
72
+ file = Path(file).absolute()
73
+ name = file.stem
74
+ if PluginHelper.has_plugin(name):
75
+ return False
76
+ dest_path_link = dest_dir / (name + ".link")
77
+ dest_path_py = dest_dir / (name + ".py")
78
+
79
+ if as_link:
80
+ with open(dest_path_link, "w", encoding="utf-8") as f:
81
+ f.write(str(file))
82
+ else:
83
+ src_lang = PluginHelper.get_lang_file(file)
84
+ shutil.copy2(file, dest_path_py)
85
+ if src_lang is not None:
86
+ shutil.copy2(src_lang, dest_dir / src_lang.name)
87
+ return True
88
+
89
+ @staticmethod
90
+ def del_plugin(name:str) -> bool:
91
+ from ..core import PLUGINS_DIR
92
+ dest_dir = PLUGINS_DIR
93
+ dest_path_link = dest_dir / (name + ".link")
94
+ dest_path_py = dest_dir / (name + ".py")
95
+ if dest_path_link.exists():
96
+ dest_path_link.unlink()
97
+ src_lang = PluginHelper.get_lang_file(dest_path_link)
98
+ if src_lang is not None:
99
+ src_lang.unlink()
100
+ return True
101
+ elif dest_path_py.exists():
102
+ dest_path_py.unlink()
103
+ src_lang = PluginHelper.get_lang_file(dest_path_py)
104
+ if src_lang is not None:
105
+ src_lang.unlink()
106
+ return True
107
+ else:
108
+ return False
109
+
45
110
  class PluginPool:
46
111
  '''Plugin pool'''
47
112
  def __init__(self, use_internal_plugins:bool = True):
@@ -216,4 +281,4 @@ class PluginMan:
216
281
  self._unsafe_load_states(d)
217
282
 
218
283
 
219
- __all__ = ['PluginPool', 'PluginMan', 'PluginError', 'RegPlugin', 'PluginExports', 'GetInternalPlugins']
284
+ __all__ = ['PluginPool', 'PluginMan', 'PluginError', 'RegPlugin', 'PluginExports', 'GetInternalPlugins', 'PluginHelper']
@@ -115,6 +115,7 @@ class Vehicle:
115
115
  # Energy storage
116
116
  self._cap = cap # Energy capacity, kWh for EV, L for GV
117
117
  assert 0.0 <= pct <= 1.0
118
+ self._init_pct = pct # Initial energy percentage (0.0~1.0)
118
119
  self._energy = pct * cap # Current energy stored, kWh for EV, L for GV
119
120
  self._epm = epm # Energy consumption per unit distance, kWh/m for EV, L/m for GV
120
121
 
@@ -235,6 +236,11 @@ class Vehicle:
235
236
  self._cost = 0.0
236
237
  self._dis = 0.0
237
238
  self._trip_index = 0
239
+ self._energy = self._cap * self._init_pct
240
+ self._cs = None
241
+ self._etar = self._cap
242
+ self._fr_on_dpt = None
243
+ self._dpt_rs = None
238
244
 
239
245
  def drive(self, new_dis: float):
240
246
  """
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes