simwrapper 4.0.0b1__tar.gz → 4.0.1__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 (433) hide show
  1. simwrapper-4.0.1/CONFIG-EXAMPLE.yaml +31 -0
  2. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/Makefile +1 -1
  3. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/PKG-INFO +79 -19
  4. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/README.md +77 -18
  5. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/pyproject.toml +2 -1
  6. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/FlaskApp.py +48 -34
  7. simwrapper-4.0.1/simwrapper/GunicornServer.py +15 -0
  8. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/cli.py +1 -1
  9. simwrapper-4.0.1/simwrapper/static/CNAME +1 -0
  10. simwrapper-4.0.1/simwrapper/static/assets/AggregateOd-B4y8aYuC.js +1 -0
  11. simwrapper-4.0.1/simwrapper/static/assets/AggregateOd-aR9bhJaL.css +1 -0
  12. simwrapper-4.0.0b1/simwrapper/static/assets/BackgroundMapOnTop-BPjbI60c.js → simwrapper-4.0.1/simwrapper/static/assets/BackgroundMapOnTop-CMoHelYK.js +1 -1
  13. simwrapper-4.0.1/simwrapper/static/assets/BackgroundMapOnTop-DptOe2tm.css +1 -0
  14. simwrapper-4.0.0b1/simwrapper/static/assets/CalculationTable-WWen6ZB6.js → simwrapper-4.0.1/simwrapper/static/assets/CalculationTable-BKJ39V7b.js +1 -1
  15. simwrapper-4.0.1/simwrapper/static/assets/CalculationTable-ie-f6C8y.css +1 -0
  16. simwrapper-4.0.1/simwrapper/static/assets/CarrierViewer-BMQAVXNF.css +1 -0
  17. simwrapper-4.0.1/simwrapper/static/assets/CarrierViewer-CBqkLqs3.js +1 -0
  18. simwrapper-4.0.0b1/simwrapper/static/assets/CollapsiblePanel-CfLT1wcO.js → simwrapper-4.0.1/simwrapper/static/assets/CollapsiblePanel-CGEamBkr.js +1 -1
  19. simwrapper-4.0.1/simwrapper/static/assets/CollapsiblePanel-zCvUtCGk.css +1 -0
  20. simwrapper-4.0.0b1/simwrapper/static/assets/ColorMapSelector-BdBdNmey.js → simwrapper-4.0.1/simwrapper/static/assets/ColorMapSelector-B07ZL-2R.js +1 -1
  21. simwrapper-4.0.1/simwrapper/static/assets/ColorMapSelector-DzIjgrBt.css +1 -0
  22. simwrapper-4.0.0b1/simwrapper/static/assets/ColorsAndWidths-CEPhi42P.js → simwrapper-4.0.1/simwrapper/static/assets/ColorsAndWidths-DIJqI60j.js +1 -1
  23. simwrapper-4.0.0b1/simwrapper/static/assets/DashboardDataManager-CWuUsItU.js → simwrapper-4.0.1/simwrapper/static/assets/DashboardDataManager-BQP3prLI.js +1 -1
  24. simwrapper-4.0.0b1/simwrapper/static/assets/DrawingTool-DVhl1QwS.js → simwrapper-4.0.1/simwrapper/static/assets/DrawingTool-CBau2IAH.js +1 -1
  25. simwrapper-4.0.1/simwrapper/static/assets/DrawingTool-Cxz0mWSd.css +1 -0
  26. simwrapper-4.0.1/simwrapper/static/assets/EventViewer-BDft6Wzn.css +1 -0
  27. simwrapper-4.0.0b1/simwrapper/static/assets/EventViewer-vyosGI_U.js → simwrapper-4.0.1/simwrapper/static/assets/EventViewer-CSp2IN1v.js +2 -2
  28. simwrapper-4.0.1/simwrapper/static/assets/Flowmap--zMRkn8n.css +1 -0
  29. simwrapper-4.0.0b1/simwrapper/static/assets/Flowmap-DjxoQ5-Q.js → simwrapper-4.0.1/simwrapper/static/assets/Flowmap-hgyHkho_.js +2 -2
  30. simwrapper-4.0.1/simwrapper/static/assets/GridMap-BAwSaBed.css +1 -0
  31. simwrapper-4.0.0b1/simwrapper/static/assets/GridMap-CKQnDrqr.js → simwrapper-4.0.1/simwrapper/static/assets/GridMap-BoFPYcsV.js +1 -1
  32. simwrapper-4.0.1/simwrapper/static/assets/ImageView-Bh2HyJTN.css +1 -0
  33. simwrapper-4.0.0b1/simwrapper/static/assets/ImageView-CjHXQmAa.js → simwrapper-4.0.1/simwrapper/static/assets/ImageView-D6uWvvAa.js +1 -1
  34. simwrapper-4.0.0b1/simwrapper/static/assets/LayerMap-BBst-sDi.js → simwrapper-4.0.1/simwrapper/static/assets/LayerMap-oLq7p3On.js +3 -3
  35. simwrapper-4.0.1/simwrapper/static/assets/LayerMap-oQQxnF8O.css +1 -0
  36. simwrapper-4.0.0b1/simwrapper/static/assets/LayoutManager-e-KiG2dT.js → simwrapper-4.0.1/simwrapper/static/assets/LayoutManager-BTKmNrLt.js +39 -39
  37. simwrapper-4.0.1/simwrapper/static/assets/LayoutManager-XvRWeyv7.css +1 -0
  38. simwrapper-4.0.0b1/simwrapper/static/assets/LegendBox-DxOTkzfG.js → simwrapper-4.0.1/simwrapper/static/assets/LegendBox-B08OK2Ch.js +1 -1
  39. simwrapper-4.0.1/simwrapper/static/assets/LegendBox-BJxkonIO.css +1 -0
  40. simwrapper-4.0.0b1/simwrapper/static/assets/LegendColors-D0pXOpGB.js → simwrapper-4.0.1/simwrapper/static/assets/LegendColors-D4curWGf.js +1 -1
  41. simwrapper-4.0.0b1/simwrapper/static/assets/LineOffsetLayer-BRxTnr7e.js → simwrapper-4.0.1/simwrapper/static/assets/LineOffsetLayer-Be36pIP4.js +1 -1
  42. simwrapper-4.0.0b1/simwrapper/static/assets/LogisticsViewer-hLLzAhbk.js → simwrapper-4.0.1/simwrapper/static/assets/LogisticsViewer-BVe_kaMF.js +1 -1
  43. simwrapper-4.0.1/simwrapper/static/assets/LogisticsViewer-DcAXVGrY.css +1 -0
  44. simwrapper-4.0.1/simwrapper/static/assets/MatrixViewer-B5u8FtkP.css +1 -0
  45. simwrapper-4.0.0b1/simwrapper/static/assets/MatrixViewer-B_sGwdHT.js → simwrapper-4.0.1/simwrapper/static/assets/MatrixViewer-l2gE0Jm1.js +1 -1
  46. simwrapper-4.0.1/simwrapper/static/assets/NetworkLinks-BU463xJY.css +1 -0
  47. simwrapper-4.0.1/simwrapper/static/assets/NetworkLinks-qgWYa7yh.js +1 -0
  48. simwrapper-4.0.0b1/simwrapper/static/assets/PathOffsetLayer-BZ4zepg9.js → simwrapper-4.0.1/simwrapper/static/assets/PathOffsetLayer-QXIMy42N.js +1 -1
  49. simwrapper-4.0.0b1/simwrapper/static/assets/PathTraceLayer-DgZFMARh.js → simwrapper-4.0.1/simwrapper/static/assets/PathTraceLayer-Bch_qDuL.js +1 -1
  50. simwrapper-4.0.1/simwrapper/static/assets/PathTraceLayer-DnayuE36.css +1 -0
  51. simwrapper-4.0.0b1/simwrapper/static/assets/PieChartDemo-B5xttigz.js → simwrapper-4.0.1/simwrapper/static/assets/PieChartDemo-BytJL3ZF.js +1 -1
  52. simwrapper-4.0.1/simwrapper/static/assets/PieChartDemo-DkgWM9v6.css +1 -0
  53. simwrapper-4.0.0b1/simwrapper/static/assets/PlotlyDiagram-sJ8Th6C3.js → simwrapper-4.0.1/simwrapper/static/assets/PlotlyDiagram-BXbfuZ9G.js +1 -1
  54. simwrapper-4.0.1/simwrapper/static/assets/PlotlyDiagram-BdPQboat.css +1 -0
  55. simwrapper-4.0.0b1/simwrapper/static/assets/PolygonsLayer.worker--PQPT5j1.js → simwrapper-4.0.1/simwrapper/static/assets/PolygonsLayer.worker-BsI8I7o0.js +3 -3
  56. simwrapper-4.0.1/simwrapper/static/assets/RunConfigurator-Cka-r30l.css +1 -0
  57. simwrapper-4.0.0b1/simwrapper/static/assets/RunConfigurator-CqnlsvlW.js → simwrapper-4.0.1/simwrapper/static/assets/RunConfigurator-DQJiHszX.js +1 -1
  58. simwrapper-4.0.1/simwrapper/static/assets/SW_logo_yellow-Btlbhihn.png +0 -0
  59. simwrapper-4.0.1/simwrapper/static/assets/SankeyDiagram-CACz4sdX.css +1 -0
  60. simwrapper-4.0.0b1/simwrapper/static/assets/SankeyDiagram-FLJQ6H6f.js → simwrapper-4.0.1/simwrapper/static/assets/SankeyDiagram-PMBnbyLr.js +1 -1
  61. simwrapper-4.0.1/simwrapper/static/assets/ShapeFile-03xUN9L-.js +1 -0
  62. simwrapper-4.0.1/simwrapper/static/assets/ShapeFile-DVEMvVwY.css +1 -0
  63. simwrapper-4.0.0b1/simwrapper/static/assets/ShapeFile.vue_vue_type_style_index_0_scoped_e007a3ab_lang-Bs7JTne4.js → simwrapper-4.0.1/simwrapper/static/assets/ShapeFile.vue_vue_type_style_index_0_scoped_e007a3ab_lang-Cg9d3qEn.js +1 -1
  64. simwrapper-4.0.1/simwrapper/static/assets/TimeSlider-DKK7Kyeo.css +1 -0
  65. simwrapper-4.0.0b1/simwrapper/static/assets/TimeSlider-D52GcPiP.js → simwrapper-4.0.1/simwrapper/static/assets/TimeSlider-bl3jMjHl.js +1 -1
  66. simwrapper-4.0.0b1/simwrapper/static/assets/TopSheet-BRLOYIbG.js → simwrapper-4.0.1/simwrapper/static/assets/TopSheet-9MJkamwe.js +1 -1
  67. simwrapper-4.0.1/simwrapper/static/assets/TopSheet-C6eJGli3.css +1 -0
  68. simwrapper-4.0.1/simwrapper/static/assets/TransitDemand-BB7pRKZu.css +1 -0
  69. simwrapper-4.0.0b1/simwrapper/static/assets/TransitDemand-50dl_VFD.js → simwrapper-4.0.1/simwrapper/static/assets/TransitDemand-CJJVWGuk.js +2 -2
  70. simwrapper-4.0.0b1/simwrapper/static/assets/VegaLite-D_02CRNL.js → simwrapper-4.0.1/simwrapper/static/assets/VegaLite-CBHEOqZU.js +1 -1
  71. simwrapper-4.0.1/simwrapper/static/assets/VegaLite-DVfrWt8N.css +1 -0
  72. simwrapper-4.0.1/simwrapper/static/assets/VehicleAnimation-BFdy5eRi.css +1 -0
  73. simwrapper-4.0.1/simwrapper/static/assets/VehicleAnimation-C50drogW.css +1 -0
  74. simwrapper-4.0.0b1/simwrapper/static/assets/VehicleAnimation-C756l5fQ.js → simwrapper-4.0.1/simwrapper/static/assets/VehicleAnimation-HA2HQP4Y.js +1 -1
  75. simwrapper-4.0.0b1/simwrapper/static/assets/VehicleAnimation-DUv7DXBH.js → simwrapper-4.0.1/simwrapper/static/assets/VehicleAnimation-eK9UOm9A.js +1 -1
  76. simwrapper-4.0.0b1/simwrapper/static/assets/VideoPlayer-BOHHCfWy.js → simwrapper-4.0.1/simwrapper/static/assets/VideoPlayer-Dv8PbDvI.js +1 -1
  77. simwrapper-4.0.1/simwrapper/static/assets/VizConfigurator-CGwo3zpl.js +11 -0
  78. simwrapper-4.0.1/simwrapper/static/assets/VizConfigurator-pmbbASys.css +1 -0
  79. simwrapper-4.0.0b1/simwrapper/static/assets/VuePlotly-CDpMgD2e.js → simwrapper-4.0.1/simwrapper/static/assets/VuePlotly-D9-EaHZi.js +1 -1
  80. simwrapper-4.0.0b1/simwrapper/static/assets/WASMEventStreamer.worker-BySrmQBt.js → simwrapper-4.0.1/simwrapper/static/assets/WASMEventStreamer.worker-Damh4Nll.js +4 -4
  81. simwrapper-4.0.1/simwrapper/static/assets/XmlViewer-CeUPBZXt.js +1 -0
  82. simwrapper-4.0.1/simwrapper/static/assets/XmlViewer-hB_o1pGI.css +1 -0
  83. simwrapper-4.0.0b1/simwrapper/static/assets/XyHexagons-DZkw88GI.js → simwrapper-4.0.1/simwrapper/static/assets/XyHexagons-DNyuZL1f.js +1 -1
  84. simwrapper-4.0.1/simwrapper/static/assets/XyHexagons-l2j9r24G.css +1 -0
  85. simwrapper-4.0.1/simwrapper/static/assets/XyTime-DT-ZW-1w.css +1 -0
  86. simwrapper-4.0.0b1/simwrapper/static/assets/XyTime-vDl1jhMw.js → simwrapper-4.0.1/simwrapper/static/assets/XyTime-Npy9r_qy.js +1 -1
  87. simwrapper-4.0.1/simwrapper/static/assets/ZoomButtons-CZq11kBt.css +1 -0
  88. simwrapper-4.0.0b1/simwrapper/static/assets/ZoomButtons-3WN3ARlX.js → simwrapper-4.0.1/simwrapper/static/assets/ZoomButtons-DERh7Eho.js +1 -1
  89. simwrapper-4.0.1/simwrapper/static/assets/aggregate-od-CxN1rXyi.css +1 -0
  90. simwrapper-4.0.1/simwrapper/static/assets/aggregate-od-ykfZybwN.js +1 -0
  91. simwrapper-4.0.0b1/simwrapper/static/assets/arc-layer-C4XBKL_J.js → simwrapper-4.0.1/simwrapper/static/assets/arc-layer-Dn9ajLjf.js +1 -1
  92. simwrapper-4.0.1/simwrapper/static/assets/area-BtCARixv.css +1 -0
  93. simwrapper-4.0.0b1/simwrapper/static/assets/area-CsO5OBUp.js → simwrapper-4.0.1/simwrapper/static/assets/area-D-I6dGQB.js +1 -1
  94. simwrapper-4.0.1/simwrapper/static/assets/area-map-CR15-uE0.js +1 -0
  95. simwrapper-4.0.1/simwrapper/static/assets/area-map-CwgktcLJ.css +1 -0
  96. simwrapper-4.0.1/simwrapper/static/assets/bar-BbDIFWK1.css +1 -0
  97. simwrapper-4.0.0b1/simwrapper/static/assets/bar-CkKzKbiQ.js → simwrapper-4.0.1/simwrapper/static/assets/bar-BnBcDEQo.js +1 -1
  98. simwrapper-4.0.0b1/simwrapper/static/assets/bubble-Bp7Rg_c0.js → simwrapper-4.0.1/simwrapper/static/assets/bubble-BdlXQ49B.js +1 -1
  99. simwrapper-4.0.1/simwrapper/static/assets/bubble-CbGwYQfW.css +1 -0
  100. simwrapper-4.0.1/simwrapper/static/assets/carriers-Bynfqluv.css +1 -0
  101. simwrapper-4.0.1/simwrapper/static/assets/carriers-hM0KIsoK.js +1 -0
  102. simwrapper-4.0.0b1/simwrapper/static/assets/column-layer-C3GuTOVn.js → simwrapper-4.0.1/simwrapper/static/assets/column-layer-CwQpY9i6.js +1 -1
  103. simwrapper-4.0.0b1/simwrapper/static/assets/cut-by-mercator-bounds-BGbpcTWV.js → simwrapper-4.0.1/simwrapper/static/assets/cut-by-mercator-bounds-xMe5Xf6r.js +1 -1
  104. simwrapper-4.0.0b1/simwrapper/static/assets/data-filter-B-HlcbD3.js → simwrapper-4.0.1/simwrapper/static/assets/data-filter-BD_Wkfmn.js +1 -1
  105. simwrapper-4.0.1/simwrapper/static/assets/flowmap-CvjUZABP.css +1 -0
  106. simwrapper-4.0.1/simwrapper/static/assets/flowmap-t79drfay.js +1 -0
  107. simwrapper-4.0.0b1/simwrapper/static/assets/geojson-layer-C5Uc2kXs.js → simwrapper-4.0.1/simwrapper/static/assets/geojson-layer-BJzM0td6.js +1 -1
  108. simwrapper-4.0.1/simwrapper/static/assets/gridmap-f31N4Owr.css +1 -0
  109. simwrapper-4.0.0b1/simwrapper/static/assets/gridmap-Bokdr-V1.js → simwrapper-4.0.1/simwrapper/static/assets/gridmap-sfEiQxq6.js +1 -1
  110. simwrapper-4.0.1/simwrapper/static/assets/heatmap-D_UHOruG.css +1 -0
  111. simwrapper-4.0.0b1/simwrapper/static/assets/heatmap-CFe8A7h4.js → simwrapper-4.0.1/simwrapper/static/assets/heatmap-V049cGOj.js +1 -1
  112. simwrapper-4.0.1/simwrapper/static/assets/hexagons--8f7-t--.js +1 -0
  113. simwrapper-4.0.1/simwrapper/static/assets/hexagons-CPOSxcyG.css +1 -0
  114. simwrapper-4.0.0b1/simwrapper/static/assets/icon-manager-APtRYO6R.js → simwrapper-4.0.1/simwrapper/static/assets/icon-manager-VCgL6dLz.js +1 -1
  115. simwrapper-4.0.1/simwrapper/static/assets/index-BFgQCBGP.css +1 -0
  116. simwrapper-4.0.0b1/simwrapper/static/assets/index-iS_j7FTr.js → simwrapper-4.0.1/simwrapper/static/assets/index-BvhPezkX.js +39 -39
  117. simwrapper-4.0.0b1/simwrapper/static/assets/index-B1G4f8ec.js → simwrapper-4.0.1/simwrapper/static/assets/index-C5ggn9H-.js +1 -1
  118. simwrapper-4.0.0b1/simwrapper/static/assets/index-DJULR93U.js → simwrapper-4.0.1/simwrapper/static/assets/index-CL0jgCgf.js +1 -1
  119. simwrapper-4.0.0b1/simwrapper/static/assets/index-C-XpRsTv.js → simwrapper-4.0.1/simwrapper/static/assets/index-CsWoCkIA.js +1 -1
  120. simwrapper-4.0.0b1/simwrapper/static/assets/index-Bbrp069I.js → simwrapper-4.0.1/simwrapper/static/assets/index-DsrLhKEb.js +1 -1
  121. simwrapper-4.0.0b1/simwrapper/static/assets/index-C4f9UAEJ.js → simwrapper-4.0.1/simwrapper/static/assets/index-txrVZiR_.js +1 -1
  122. simwrapper-4.0.0b1/simwrapper/static/assets/layer-extension-BP2meZ0f.js → simwrapper-4.0.1/simwrapper/static/assets/layer-extension-Cpk9-dEi.js +1 -1
  123. simwrapper-4.0.1/simwrapper/static/assets/layermap-CWKLShno.css +1 -0
  124. simwrapper-4.0.1/simwrapper/static/assets/layermap-DdYBpDZ0.js +1 -0
  125. simwrapper-4.0.0b1/simwrapper/static/assets/line-Dq99iWK0.js → simwrapper-4.0.1/simwrapper/static/assets/line-Ch_EX0v9.js +1 -1
  126. simwrapper-4.0.1/simwrapper/static/assets/line-DONUOCo1.css +1 -0
  127. simwrapper-4.0.0b1/simwrapper/static/assets/line-layer-B2gRlZ_i.js → simwrapper-4.0.1/simwrapper/static/assets/line-layer-FsBfv74I.js +1 -1
  128. simwrapper-4.0.1/simwrapper/static/assets/links-BdpHH8jO.css +1 -0
  129. simwrapper-4.0.1/simwrapper/static/assets/links-xT8SMCIT.js +1 -0
  130. simwrapper-4.0.0b1/simwrapper/static/assets/lodash-BzFR0Iad.js → simwrapper-4.0.1/simwrapper/static/assets/lodash-BLxeWTQP.js +1 -1
  131. simwrapper-4.0.1/simwrapper/static/assets/matrix-CwtPS1VI.css +1 -0
  132. simwrapper-4.0.1/simwrapper/static/assets/matrix-DnHe1cH1.js +1 -0
  133. simwrapper-4.0.0b1/simwrapper/static/assets/moving-icons-vehicles-layer-CMrFH-cU.js → simwrapper-4.0.1/simwrapper/static/assets/moving-icons-vehicles-layer-BGxe9T_u.js +1 -1
  134. simwrapper-4.0.0b1/simwrapper/static/assets/nprogress-DStwNSZ3.js → simwrapper-4.0.1/simwrapper/static/assets/nprogress-CUI5i0md.js +1 -1
  135. simwrapper-4.0.0b1/simwrapper/static/assets/papaparse.min-CWypJjeG.js → simwrapper-4.0.1/simwrapper/static/assets/papaparse.min-DKoG2MWZ.js +1 -1
  136. simwrapper-4.0.0b1/simwrapper/static/assets/path-layer-CltseviS.js → simwrapper-4.0.1/simwrapper/static/assets/path-layer-BJ-_QCeU.js +1 -1
  137. simwrapper-4.0.0b1/simwrapper/static/assets/pie-7szoJovu.js → simwrapper-4.0.1/simwrapper/static/assets/pie-Dr7l5Rkm.js +1 -1
  138. simwrapper-4.0.1/simwrapper/static/assets/pie-ZUTwNf2R.css +1 -0
  139. simwrapper-4.0.0b1/simwrapper/static/assets/plotly-D2viyWqv.js → simwrapper-4.0.1/simwrapper/static/assets/plotly-D-L3h402.js +1 -1
  140. simwrapper-4.0.1/simwrapper/static/assets/plotly-DIuHo25J.css +1 -0
  141. simwrapper-4.0.1/simwrapper/static/assets/sankey-ChmfM_XB.css +1 -0
  142. simwrapper-4.0.0b1/simwrapper/static/assets/sankey-DG2dKVnK.js → simwrapper-4.0.1/simwrapper/static/assets/sankey-CyJcX8mk.js +1 -1
  143. simwrapper-4.0.1/simwrapper/static/assets/scatter-CIhK1YX-.css +1 -0
  144. simwrapper-4.0.0b1/simwrapper/static/assets/scatter-C6YJMtkC.js → simwrapper-4.0.1/simwrapper/static/assets/scatter-SqC5HFGM.js +1 -1
  145. simwrapper-4.0.0b1/simwrapper/static/assets/set-rtl-text-plugin-_4Cp-1a3.js → simwrapper-4.0.1/simwrapper/static/assets/set-rtl-text-plugin-C15y_Scn.js +1 -1
  146. simwrapper-4.0.0b1/simwrapper/static/assets/slideshow-DaJctId6.js → simwrapper-4.0.1/simwrapper/static/assets/slideshow-CBEV3mYI.js +1 -1
  147. simwrapper-4.0.0b1/simwrapper/static/assets/slideshow-DJlS9W7I.css → simwrapper-4.0.1/simwrapper/static/assets/slideshow-KikGqlRS.css +1 -1
  148. simwrapper-4.0.0b1/simwrapper/static/assets/solid-polygon-layer-D5xr7nkB.js → simwrapper-4.0.1/simwrapper/static/assets/solid-polygon-layer-B2eWl8cz.js +1 -1
  149. simwrapper-4.0.0b1/simwrapper/static/assets/table-D6v3xIdM.css → simwrapper-4.0.1/simwrapper/static/assets/table-B5iq16nn.css +1 -1
  150. simwrapper-4.0.0b1/simwrapper/static/assets/table-luNf0mx8.js → simwrapper-4.0.1/simwrapper/static/assets/table-jL5TYkQ0.js +1 -1
  151. simwrapper-4.0.1/simwrapper/static/assets/text-Cz75an8R.css +1 -0
  152. simwrapper-4.0.0b1/simwrapper/static/assets/text-Cmp1Ghby.js → simwrapper-4.0.1/simwrapper/static/assets/text-h7arvIN0.js +1 -1
  153. simwrapper-4.0.0b1/simwrapper/static/assets/text-layer-Di7z1Nmz.js → simwrapper-4.0.1/simwrapper/static/assets/text-layer-D-rJTu6F.js +1 -1
  154. simwrapper-4.0.0b1/simwrapper/static/assets/tile-BhLamkeg.js → simwrapper-4.0.1/simwrapper/static/assets/tile-Ck3URzKY.js +1 -1
  155. simwrapper-4.0.1/simwrapper/static/assets/tile-_Lm2YGSR.css +1 -0
  156. simwrapper-4.0.1/simwrapper/static/assets/transit-J9voF7aH.css +1 -0
  157. simwrapper-4.0.1/simwrapper/static/assets/transit-atSN5QSD.js +1 -0
  158. simwrapper-4.0.0b1/simwrapper/static/assets/util-k85ln55i.js → simwrapper-4.0.1/simwrapper/static/assets/util-vCd5pz9J.js +1 -1
  159. simwrapper-4.0.1/simwrapper/static/assets/vega-9UM1ksay.css +1 -0
  160. simwrapper-4.0.0b1/simwrapper/static/assets/vega-TgLwjm_s.js → simwrapper-4.0.1/simwrapper/static/assets/vega-Bgrlftig.js +1 -1
  161. simwrapper-4.0.1/simwrapper/static/assets/vehicles-BBsy7Jzt.js +1 -0
  162. simwrapper-4.0.1/simwrapper/static/assets/vehicles-BmIdYWvk.css +1 -0
  163. simwrapper-4.0.0b1/simwrapper/static/assets/video-OJcyaErV.js → simwrapper-4.0.1/simwrapper/static/assets/video-DjkUchOu.js +1 -1
  164. simwrapper-4.0.1/simwrapper/static/assets/video-Mp6RrM_l.css +1 -0
  165. simwrapper-4.0.1/simwrapper/static/assets/xml-D0uOEf4Q.css +1 -0
  166. simwrapper-4.0.1/simwrapper/static/assets/xml-DCyymAZS.js +1 -0
  167. simwrapper-4.0.1/simwrapper/static/assets/xytime-7qGwmDZI.js +1 -0
  168. simwrapper-4.0.1/simwrapper/static/assets/xytime-BdF5XbHJ.css +1 -0
  169. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/index.html +2 -2
  170. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/uv.lock +1 -1
  171. simwrapper-4.0.0b1/VERSION +0 -1
  172. simwrapper-4.0.0b1/simwrapper/static/assets/AggregateOd-BoXk8agJ.css +0 -1
  173. simwrapper-4.0.0b1/simwrapper/static/assets/AggregateOd-qXmyWHUU.js +0 -1
  174. simwrapper-4.0.0b1/simwrapper/static/assets/BackgroundMapOnTop-BDYwt8Ic.css +0 -1
  175. simwrapper-4.0.0b1/simwrapper/static/assets/CalculationTable-oLS3shLk.css +0 -1
  176. simwrapper-4.0.0b1/simwrapper/static/assets/CarrierViewer-CKpwXsqi.js +0 -1
  177. simwrapper-4.0.0b1/simwrapper/static/assets/CarrierViewer-DkAcbAoO.css +0 -1
  178. simwrapper-4.0.0b1/simwrapper/static/assets/CollapsiblePanel-DW-6UICi.css +0 -1
  179. simwrapper-4.0.0b1/simwrapper/static/assets/ColorMapSelector-D2Dx3tMt.css +0 -1
  180. simwrapper-4.0.0b1/simwrapper/static/assets/DrawingTool-CqHy-5XI.css +0 -1
  181. simwrapper-4.0.0b1/simwrapper/static/assets/EventViewer-BVAup26C.css +0 -1
  182. simwrapper-4.0.0b1/simwrapper/static/assets/Flowmap-DMtKrUuq.css +0 -1
  183. simwrapper-4.0.0b1/simwrapper/static/assets/GridMap-BjZfMEuA.css +0 -1
  184. simwrapper-4.0.0b1/simwrapper/static/assets/ImageView-NWk3geFf.css +0 -1
  185. simwrapper-4.0.0b1/simwrapper/static/assets/LayerMap-KnLxosFu.css +0 -1
  186. simwrapper-4.0.0b1/simwrapper/static/assets/LayoutManager-Bhw4Kwbm.css +0 -1
  187. simwrapper-4.0.0b1/simwrapper/static/assets/LegendBox-CBEOPOKs.css +0 -1
  188. simwrapper-4.0.0b1/simwrapper/static/assets/LogisticsViewer-xH14EKlp.css +0 -1
  189. simwrapper-4.0.0b1/simwrapper/static/assets/MatrixViewer-CO5JbShK.css +0 -1
  190. simwrapper-4.0.0b1/simwrapper/static/assets/NetworkLinks-DA4QKEdh.css +0 -1
  191. simwrapper-4.0.0b1/simwrapper/static/assets/NetworkLinks-s3SR-LP4.js +0 -1
  192. simwrapper-4.0.0b1/simwrapper/static/assets/PathTraceLayer-BqJjhD9z.css +0 -1
  193. simwrapper-4.0.0b1/simwrapper/static/assets/PieChartDemo-Dv6s3Jwd.css +0 -1
  194. simwrapper-4.0.0b1/simwrapper/static/assets/PlotlyDiagram-DWZrqmPz.css +0 -1
  195. simwrapper-4.0.0b1/simwrapper/static/assets/RunConfigurator-CZNVsC4x.css +0 -1
  196. simwrapper-4.0.0b1/simwrapper/static/assets/SankeyDiagram-CbaiIQll.css +0 -1
  197. simwrapper-4.0.0b1/simwrapper/static/assets/ShapeFile-CV8bs7TL.js +0 -1
  198. simwrapper-4.0.0b1/simwrapper/static/assets/ShapeFile-ChxRiSCQ.css +0 -1
  199. simwrapper-4.0.0b1/simwrapper/static/assets/TimeSlider-CvE89nrj.css +0 -1
  200. simwrapper-4.0.0b1/simwrapper/static/assets/TopSheet-CWYF9Kvd.css +0 -1
  201. simwrapper-4.0.0b1/simwrapper/static/assets/TransitDemand-BCsJD-bE.css +0 -1
  202. simwrapper-4.0.0b1/simwrapper/static/assets/VegaLite-BEXyYTQ4.css +0 -1
  203. simwrapper-4.0.0b1/simwrapper/static/assets/VehicleAnimation-DXPtVAem.css +0 -1
  204. simwrapper-4.0.0b1/simwrapper/static/assets/VehicleAnimation-Qv_fjtLA.css +0 -1
  205. simwrapper-4.0.0b1/simwrapper/static/assets/VizConfigurator-C0EUk0O0.css +0 -1
  206. simwrapper-4.0.0b1/simwrapper/static/assets/VizConfigurator-CnL8H4aK.js +0 -11
  207. simwrapper-4.0.0b1/simwrapper/static/assets/XmlViewer-Blqr_2R3.css +0 -1
  208. simwrapper-4.0.0b1/simwrapper/static/assets/XmlViewer-C53hfFIf.js +0 -1
  209. simwrapper-4.0.0b1/simwrapper/static/assets/XyHexagons-DOFua4Tf.css +0 -1
  210. simwrapper-4.0.0b1/simwrapper/static/assets/XyTime-Bzs0AfPt.css +0 -1
  211. simwrapper-4.0.0b1/simwrapper/static/assets/ZoomButtons-DBnxz1ld.css +0 -1
  212. simwrapper-4.0.0b1/simwrapper/static/assets/aggregate-od-BYTWLlsw.css +0 -1
  213. simwrapper-4.0.0b1/simwrapper/static/assets/aggregate-od-CVQwk2tj.js +0 -1
  214. simwrapper-4.0.0b1/simwrapper/static/assets/area-RqFnarOX.css +0 -1
  215. simwrapper-4.0.0b1/simwrapper/static/assets/area-map-CRtMzedP.js +0 -1
  216. simwrapper-4.0.0b1/simwrapper/static/assets/area-map-CS2wDqW5.css +0 -1
  217. simwrapper-4.0.0b1/simwrapper/static/assets/bar-DTdJNj2b.css +0 -1
  218. simwrapper-4.0.0b1/simwrapper/static/assets/bubble-DMACfFaY.css +0 -1
  219. simwrapper-4.0.0b1/simwrapper/static/assets/carriers-C1djkvoD.js +0 -1
  220. simwrapper-4.0.0b1/simwrapper/static/assets/carriers-KvJsTYh8.css +0 -1
  221. simwrapper-4.0.0b1/simwrapper/static/assets/flowmap-BTN0EDP6.js +0 -1
  222. simwrapper-4.0.0b1/simwrapper/static/assets/flowmap-hxk2Dufh.css +0 -1
  223. simwrapper-4.0.0b1/simwrapper/static/assets/gridmap-BHRFqF1P.css +0 -1
  224. simwrapper-4.0.0b1/simwrapper/static/assets/heatmap-BVvz2Qpm.css +0 -1
  225. simwrapper-4.0.0b1/simwrapper/static/assets/hexagons-Cs1j58EO.js +0 -1
  226. simwrapper-4.0.0b1/simwrapper/static/assets/hexagons-nRwxOgY9.css +0 -1
  227. simwrapper-4.0.0b1/simwrapper/static/assets/index-D1-irzgk.css +0 -1
  228. simwrapper-4.0.0b1/simwrapper/static/assets/index-DGtZBxnr.js +0 -1
  229. simwrapper-4.0.0b1/simwrapper/static/assets/layermap-C6_2-Yzz.js +0 -1
  230. simwrapper-4.0.0b1/simwrapper/static/assets/layermap-Ce35F_3a.css +0 -1
  231. simwrapper-4.0.0b1/simwrapper/static/assets/line-BoUycrnZ.css +0 -1
  232. simwrapper-4.0.0b1/simwrapper/static/assets/links-B89C3TsY.css +0 -1
  233. simwrapper-4.0.0b1/simwrapper/static/assets/links-BAQXPchp.js +0 -1
  234. simwrapper-4.0.0b1/simwrapper/static/assets/matrix-DNsb1DN6.js +0 -1
  235. simwrapper-4.0.0b1/simwrapper/static/assets/matrix-EAZBWzR8.css +0 -1
  236. simwrapper-4.0.0b1/simwrapper/static/assets/pie-Ctzmv2Wx.css +0 -1
  237. simwrapper-4.0.0b1/simwrapper/static/assets/plotly-DwLEpuPH.css +0 -1
  238. simwrapper-4.0.0b1/simwrapper/static/assets/sankey-DAMQaosU.css +0 -1
  239. simwrapper-4.0.0b1/simwrapper/static/assets/scatter-02M33Y8r.css +0 -1
  240. simwrapper-4.0.0b1/simwrapper/static/assets/text-DibEywl6.css +0 -1
  241. simwrapper-4.0.0b1/simwrapper/static/assets/tile-CQ7_D1xX.css +0 -1
  242. simwrapper-4.0.0b1/simwrapper/static/assets/transit-D1hPBy3c.css +0 -1
  243. simwrapper-4.0.0b1/simwrapper/static/assets/transit-dlUS1RNB.js +0 -1
  244. simwrapper-4.0.0b1/simwrapper/static/assets/vega-DWDur9PJ.css +0 -1
  245. simwrapper-4.0.0b1/simwrapper/static/assets/vehicles-BsrKD_d0.css +0 -1
  246. simwrapper-4.0.0b1/simwrapper/static/assets/vehicles-S32jWqy_.js +0 -1
  247. simwrapper-4.0.0b1/simwrapper/static/assets/video-DPICzTDf.css +0 -1
  248. simwrapper-4.0.0b1/simwrapper/static/assets/xml-Bofibrjs.css +0 -1
  249. simwrapper-4.0.0b1/simwrapper/static/assets/xml-D4iTeY7F.js +0 -1
  250. simwrapper-4.0.0b1/simwrapper/static/assets/xytime-JrSFt96c.js +0 -1
  251. simwrapper-4.0.0b1/simwrapper/static/assets/xytime-eoxkGHww.css +0 -1
  252. simwrapper-4.0.0b1/simwrapper/storage.yaml +0 -18
  253. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/.gitignore +0 -0
  254. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/.pylintrc +0 -0
  255. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/.versionrc +0 -0
  256. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/.vscode/settings.json +0 -0
  257. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/CHANGELOG.md +0 -0
  258. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/LICENSE.txt +0 -0
  259. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/MANIFEST.in +0 -0
  260. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/patches/apply_pytables_patch.py +0 -0
  261. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/patches/pytables-3.10.2.patch +0 -0
  262. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/MiniFileServer.py +0 -0
  263. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/__init__.py +0 -0
  264. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/gunicorn_config.py +0 -0
  265. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/nginx.conf +0 -0
  266. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/simwrapper-flask-app.service +0 -0
  267. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/simwrapper-rclone.service +0 -0
  268. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/supervisord.conf +0 -0
  269. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/sites.py +0 -0
  270. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/404.html +0 -0
  271. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/404.html.bak +0 -0
  272. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/README.md +0 -0
  273. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/AggregateDatasetStreamer.worker-C0WTuhxa.js +0 -0
  274. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/Coords-CQQjH_Bj.js +0 -0
  275. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/CsvGzipParser.worker-BLBFQ-aV.js +0 -0
  276. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/DataFetcher.worker-BEGJ5mrK.js +0 -0
  277. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/GzipFetcher.worker-BN1FeEl_.js +0 -0
  278. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/GzipFetcher.worker-Dil8PfAW.js +0 -0
  279. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/LegendStore-CGgeb9zL.js +0 -0
  280. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/MATSimEventStreamer.worker-Do4vvbuZ.js +0 -0
  281. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/NewXmlFetcher.worker-DqenmrSu.js +0 -0
  282. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/NewXmlFetcher.worker-fQRtinoY.js +0 -0
  283. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/RoadNetworkLoader.worker-CZSk_iwT.js +0 -0
  284. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/RoadNetworkLoader.worker-DWlRv2k1.js +0 -0
  285. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/SW_logo_icon_anim-Cyl7nwZq.gif +0 -0
  286. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/SW_logo_white-mbdplT21.png +0 -0
  287. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/Set3-Dyl9Llxj.js +0 -0
  288. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/TopSheetWorker.worker-DZfZs6Iy.js +0 -0
  289. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/TransitSupplyHelper.worker-1BijG__s.js +0 -0
  290. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/VideoPlayer-Cdz1McNz.css +0 -0
  291. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/XytDataParser.worker-BavN8Lc3.js +0 -0
  292. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/arcs-B-65v31y.png +0 -0
  293. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/avro-Dd9UqmeZ.js +0 -0
  294. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/berlin-C-twquEa.jpg +0 -0
  295. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/color-DZRtpOAM.js +0 -0
  296. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/comlink-DESosX-g.js +0 -0
  297. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/cubehelix-Bg3rkAQA.js +0 -0
  298. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/defaultLocale-VLpijIbO.js +0 -0
  299. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/draw-icon-dm-DbFh91q-.png +0 -0
  300. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/extends-CF3RwP-h.js +0 -0
  301. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/extent-Ccx1MofX.js +0 -0
  302. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/fsum-CWwcR1RF.js +0 -0
  303. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/fxp-4YEvQr-_.js +0 -0
  304. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/group-DobYzF2-.js +0 -0
  305. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/hcl-BuAPUl0w.js +0 -0
  306. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/icon-blue-ramp-D1d4h-6x.png +0 -0
  307. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/icon-pie-chart-BS7BHQ_l.png +0 -0
  308. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/icon-stop-triangle-BjEDyLtU.png +0 -0
  309. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/index-B9fw0f6a.js +0 -0
  310. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/index-CrY58g0x.js +0 -0
  311. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/index-DgdUD6UN.js +0 -0
  312. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/index-_doEQLKC.js +0 -0
  313. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zblosc-DmbwZN5J.so +0 -0
  314. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zblosc2-C2k_kvFi.so +0 -0
  315. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zbshuf-CAWqoiJv.so +0 -0
  316. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zbz2-YH5bcfd1.so +0 -0
  317. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zlz4-DBxVEC8C.so +0 -0
  318. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zlzf-B37RoVJN.so +0 -0
  319. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zszf-vmQ-rYRm.so +0 -0
  320. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zzfp-CxpSdQww.so +0 -0
  321. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zzstd-BNHjSL5H.so +0 -0
  322. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/lil-gui.esm-D2cLj-mk.js +0 -0
  323. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/links-BjFLDFnX.png +0 -0
  324. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/matsim_event_streamer_bg-CzbXQAK4.wasm +0 -0
  325. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/min-D1slsF82.js +0 -0
  326. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/points-CNz3arAg.png +0 -0
  327. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/polygons-BCSoK5vV.png +0 -0
  328. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/pow-BDr0uoeQ.js +0 -0
  329. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/rainbow-Dz4seJAz.js +0 -0
  330. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/range-OtVwhkKS.js +0 -0
  331. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/round-D-ROWHlE.js +0 -0
  332. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/screenshots-Tas2EtGs.js +0 -0
  333. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sequential-CKBnvidU.js +0 -0
  334. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sidebar-BRi9n39r.png +0 -0
  335. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sum-CB6J5KXz.js +0 -0
  336. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_minus-B3KtJjJs.jpg +0 -0
  337. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_minus_dm-BB92PyXK.jpg +0 -0
  338. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_north_arrow-BuDjRW21.png +0 -0
  339. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_north_arrow_dm-b3Ne7pdA.png +0 -0
  340. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_plus-_7XGt7Yq.jpg +0 -0
  341. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_plus_dm-O9hpaAgy.jpg +0 -0
  342. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/table-NNqWMujx.png +0 -0
  343. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/thumbnail-B7gJwb8m.jpg +0 -0
  344. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/thumbnail-BWla1ZrP.jpg +0 -0
  345. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/thumbnail-B_QeHA-1.jpg +0 -0
  346. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/thumbnail-ywgPDHXm.jpg +0 -0
  347. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/timer-D6Wzbp6M.js +0 -0
  348. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/turf.es-DhhXp8l8.js +0 -0
  349. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/vsp-2023-logo-kcRNuRsU.png +0 -0
  350. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/year-DwdiMAWv.js +0 -0
  351. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/zip-Db3GAX2E.js +0 -0
  352. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-bluered.png +0 -0
  353. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-inferno.png +0 -0
  354. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-picnic.png +0 -0
  355. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-salinity.png +0 -0
  356. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-viridis.png +0 -0
  357. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/css/font-awesome-5.7.1.css +0 -0
  358. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/data/build-index.js +0 -0
  359. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/data/index.html +0 -0
  360. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/icon-atlas.png +0 -0
  361. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/icon-stop-triangle.png +0 -0
  362. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/SW_favicon.png +0 -0
  363. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/SW_logo_icon_white.png +0 -0
  364. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/SW_logo_icon_yellow.png +0 -0
  365. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/draw-icon.svg +0 -0
  366. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas-2.svg +0 -0
  367. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas-3.png +0 -0
  368. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas-3.xcf +0 -0
  369. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas.png +0 -0
  370. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas.svg +0 -0
  371. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/arc.png +0 -0
  372. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/bmbf-logo.png +0 -0
  373. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/dfg.jpg +0 -0
  374. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/matsim-logo-blue.png +0 -0
  375. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/matsim-logo-white.png +0 -0
  376. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/metcouncil.png +0 -0
  377. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/mtc.png +0 -0
  378. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/mwcog.png +0 -0
  379. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/ohiodot.png +0 -0
  380. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/oregondot.png +0 -0
  381. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/psrc.png +0 -0
  382. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/sandag.jpg +0 -0
  383. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/semcog.jpg +0 -0
  384. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/sfcta-old.png +0 -0
  385. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/sfcta.png +0 -0
  386. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/tu-logo.png +0 -0
  387. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/vsp-logo-300dpi.png +0 -0
  388. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/departure_board.svg +0 -0
  389. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_bike.svg +0 -0
  390. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_boat.svg +0 -0
  391. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_bus.svg +0 -0
  392. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_car.svg +0 -0
  393. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_subway.svg +0 -0
  394. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/electric_car.svg +0 -0
  395. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/electric_rickshaw.svg +0 -0
  396. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/emoji_transportation.svg +0 -0
  397. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/ev_station.svg +0 -0
  398. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/group.svg +0 -0
  399. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/groups.svg +0 -0
  400. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/info.txt +0 -0
  401. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/local_gas_station.svg +0 -0
  402. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/local_parking.svg +0 -0
  403. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/local_shipping.svg +0 -0
  404. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/local_taxi.svg +0 -0
  405. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/motorcycle.svg +0 -0
  406. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/person.svg +0 -0
  407. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/route.svg +0 -0
  408. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/subway.svg +0 -0
  409. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/train.svg +0 -0
  410. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/transportation.svg +0 -0
  411. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/two_wheeler.svg +0 -0
  412. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/sax-wasm.wasm +0 -0
  413. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/sql-wasm.wasm +0 -0
  414. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/tu-logo-circle.jpg +0 -0
  415. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/tu-logo-circle.png +0 -0
  416. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/tu-logo.png +0 -0
  417. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/veh-curvy.png +0 -0
  418. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/veh-curvy2.png +0 -0
  419. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/veh-curvy3.png +0 -0
  420. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/veh-curvy5.png +0 -0
  421. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.eot +0 -0
  422. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.svg +0 -0
  423. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.ttf +0 -0
  424. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.woff +0 -0
  425. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.woff2 +0 -0
  426. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.eot +0 -0
  427. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.svg +0 -0
  428. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.ttf +0 -0
  429. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.woff +0 -0
  430. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.woff2 +0 -0
  431. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/zones/sandag.geojson.gz +0 -0
  432. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/zones/zones.yaml +0 -0
  433. {simwrapper-4.0.0b1 → simwrapper-4.0.1}/tests/__init__.py +0 -0
@@ -0,0 +1,31 @@
1
+ # config-example.yaml
2
+ # This file defines storage locations and any
3
+ # front-page "readme" material in markdown
4
+ # ------------------------------------------------
5
+
6
+ # --- STORAGE ----------------------
7
+ # **Local/network mounts only: no http URLs here**
8
+ # Each key defines a starting point in the local filesystem.
9
+ # (if no config is found, the current working folder is shared)
10
+ storage:
11
+ data:
12
+ path: '/Users/billy/data'
13
+ description: 'Local data on my laptop'
14
+ vsp-public:
15
+ path: '/Users/billy/public-svn'
16
+ description: 'VSP/TU-Berlin public datasets'
17
+
18
+ # --- FRONT-PAGE TEXT -------------
19
+ # Readme can either be a .md markdown filename,
20
+ # or you can put markdown text directly in this file with "readme: |"
21
+ #
22
+ tagline: 'Transport simulation data visualizer'
23
+ # readme: 'readme.md'
24
+ # # or
25
+ # readme: |
26
+ # Welcome to My SimWrapper
27
+ # ========================
28
+ # Markdown text here
29
+ # - notes 1
30
+ # - notes 2
31
+
@@ -33,7 +33,7 @@ push: build
33
33
  > twine upload dist/*
34
34
  .PHONY: push
35
35
 
36
- .build-sentinel: $(shell find simwrapper/*.py) VERSION README.md
36
+ .build-sentinel: $(shell find simwrapper/*.py) pyproject.toml README.md
37
37
  > rm -rf dist
38
38
  > python3 -m build
39
39
  > twine check dist/*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simwrapper
3
- Version: 4.0.0b1
3
+ Version: 4.0.1
4
4
  Summary: Run SimWrapper from Python
5
5
  Project-URL: Homepage, https://docs.simwrapper.app
6
6
  Project-URL: Repository, https://github.com/simwrapper/simwrapper-python-tools
@@ -8,6 +8,7 @@ License-Expression: GPL-3.0-or-later
8
8
  License-File: LICENSE.txt
9
9
  Requires-Python: >=3.11
10
10
  Requires-Dist: blosc>=1.11.2
11
+ Requires-Dist: build>=1.2.2.post1
11
12
  Requires-Dist: click>=8.0
12
13
  Requires-Dist: flask-cors>=5.0.1
13
14
  Requires-Dist: flask-restful>=0.3.10
@@ -24,46 +25,100 @@ Description-Content-Type: text/markdown
24
25
 
25
26
  Official python library for working with SimWrapper.
26
27
 
27
- [SimWrapper](https://simwrapper.github.io) is a data visualization tool for exploring large transport simulation results.
28
+ [SimWrapper](https://simwrapper.app) is a data visualization tool for exploring large transport simulation results.
28
29
 
29
- Web browsers all block access to your local filesystem from external websites, for obvious security reasons. The SimWrapper website needs access to model run outputs on your filesystem. This program bridges that gap: it is a command-line tool that starts a local file server in a specific folder, so that you can access the files in that folder using SimWrapper.
30
+ Normally, web browsers block access to your local filesystem from external websites, for obvious security reasons. The SimWrapper website needs access to model run outputs on your filesystem.
31
+
32
+ This python program bridges that gap: it is a command-line tool that starts a local file server in a specific folder of your choosing, so that you can access the files in that folder using SimWrapper!
30
33
 
31
34
  ## About this library
32
35
 
33
36
  This library contains the "simwrapper" command-line tool, which allows browsing of local files on your PC/laptop using the SimWrapper website.
34
37
 
35
- We are at the very early stages of building this tool. The API will change, things will break, and there are certainly bugs.
36
-
37
- - Our primary goal is to make it easy to get local simulation results viewable using the SimWrapper website.
38
- - We have only tested this using Anaconda Python. Only Python 3.x is supported.
38
+ - Only Python 3.10+ is supported.
39
39
 
40
40
  ## Installation
41
41
 
42
- Installation requires the `pip` package manager.
42
+ This package is on the PyPi pip package library. You can use pip or the more modern **uv** tool to install it. Note it has many scientific library dependencies, so it's best to use a virtual environment (via uv)
43
43
 
44
44
  - Install using `pip install simwrapper`
45
45
  - To upgrade to the latest version, `pip install --upgrade simwrapper`
46
46
 
47
+ ## Running Simwrapper locally
48
+
47
49
  This package includes an embedded copy of the Javascript code from the SimWrapper
48
- project, available separately at https://github.com/simwrapper/simwrapper. That code is under the
49
- identical GNU GPL V3 and is embedded here with explicit permission of the author.
50
+ project, available separately at https://github.com/simwrapper/simwrapper. No monorepo here! Maybe someday.
50
51
 
51
52
  ## Usage
52
53
 
53
- `simwrapper` knows three commands.
54
+ `simwrapper` knows four commands.
55
+
56
+ ### simwrapper run [config.yaml]
57
+
58
+ starts a _local instance of the SimWrapper website_ running on your machine and usually listening on port 4999. Run this command if you have a machine on your local network which contains outputs you'd like to view (such as a modeling server), and that machine has not been set up with any other file sharing software such as NGINX or Apache.
59
+
60
+ - This command is designed to support the use case where an agency has (1) a local network with files stored on a central "modeling server" or file server, and also (2) desktop machines or laptops on the local network that wish to access those files using SimWrapper.
61
+ - Ultimately you may decide that you want to put simwrapper behind a proxy server such as those listed, for improved performance, features, and security.
62
+
63
+ This is especially useful if you use cloud-based storage such as AWS or Azure. You can **mount your cloud storage** to a local folder using a tool such as [Rclone mount](https://rclone.org/commands/rclone_mount/), and use this `simwrapper run` to browse your files and results!
64
+
65
+ **Options:**
66
+
67
+ `simwrapper run [config-file.yaml]` will read configuration from specified file.
68
+
69
+ - If not provided, simwrapper will serve the files found in the current working folder. If provided, the YAML file can provide three sections:
70
+
71
+ - **storage** - a list of mount points (folders) that simwrapper should share
72
+ - **tagline** - the front page tagline, default "Transport simulation data visualizer"
73
+ - **readme** - Markdown filename or raw markdown text to be shown on front page
74
+
75
+ **Example: config.yaml:**
76
+
77
+ ```yaml
78
+ # --- STORAGE ----------------------
79
+ # **Local/network mounts only: no http URLs here**
80
+ # Each key defines a starting point in the local filesystem.
81
+ # (if no config is found, the current working folder is shared)
82
+ storage:
83
+ data:
84
+ path: '/Users/billy/data'
85
+ description: 'Local data on my laptop'
86
+ vsp-public:
87
+ path: '/Users/billy/public-svn'
88
+ description: 'VSP/TU-Berlin public datasets'
89
+
90
+ # --- FRONT-PAGE TEXT -------------
91
+ # Readme can either be a .md markdown filename,
92
+ # or you can put markdown text directly in this file with "readme: |"
93
+ #
94
+ tagline: 'Transport simulation data visualizer'
95
+ readme: 'readme.md'
96
+ # # or...
97
+ # readme: |
98
+ # Welcome to My SimWrapper
99
+ # ========================
100
+ # Markdown text here
101
+ # - notes 1
102
+ # - notes 2
103
+ ```
54
104
 
55
- **simwrapper serve**
105
+ ---
106
+ ### simwrapper serve
56
107
 
57
108
  starts a local file server in the current directory. Run this command, then browse to either <https://vsp.berlin/simwrapper> or <https://activitysim.github.io/dashboard> to view your local folder outputs.
58
109
 
59
- **simwrapper here**
110
+ ---
111
+ ### simwrapper here
112
+
113
+ _Deprecated - "use simwrapper run" instead_
60
114
 
61
115
  starts a _local copy of the SimWrapper website_ usually listening on port 8050. Run this command instead of `simwrapper serve` if you have a machine on your local network which contains outputs you'd like to view (such as a modeling server), and that machine has not been set up with any other file sharing software such as NGINX or Apache.
62
116
 
63
117
  - This command is designed to support the use case where an agency has (1) a local network with files stored on a central "modeling server" or file server, and also (2) desktop machines or laptops on the local network that wish to access those files using SimWrapper.
64
118
  - Note, it's not a battle-tested multi-threaded web proxy server such as Apache, NGINX, or Gunicorn. Ultimately you may decide that you want to put simwrapper behind a proxy server such as those listed, for improved performance, features, and security.
65
119
 
66
- **simwrapper open [vsp|asim]**
120
+ ---
121
+ ### simwrapper open [vsp|asim]
67
122
 
68
123
  opens a new web browser tab AND a local file server in the current directory. The site will only operate as long as you keep that local server running, so don't close the command window.
69
124
 
@@ -73,6 +128,8 @@ opens a new web browser tab AND a local file server in the current directory. Th
73
128
 
74
129
  All three simwrapper commands start a small local file server, listening on a local port number. The site will only operate as long as you keep that local server running: quitting the command with CTRL-C or closing the command window will shut down the server.
75
130
 
131
+ ---
132
+
76
133
  ## Security
77
134
 
78
135
  When `simwrapper` is running, it listens for connections on your network interface. Your computer's **firewall rules and router settings** determine whether other machines on the network can access the folder, or not.
@@ -83,6 +140,8 @@ By default, almost all computers now run firewalls which block external access.
83
140
 
84
141
  ## Running as HTTPS - required for Safari
85
142
 
143
+ _We really just don't recommend using Safari. It is by far the slowest of all the browsers, and doesn't allow many advanced features because Apple wants to hold the open web back and push people to Apps_
144
+
86
145
  Safari blocks HTTPS websites (such as SimWrapper VSP and ASIM) which access localhost resources such as this local simwrapper file server. _We recommend Chromium-based browsers_ such as Google Chrome, Brave, and Microsoft Edge, because they are much faster than Safari. But you can run simwrapper in HTTPS mode by following these extra instructions.
87
146
 
88
147
  Simwrapper commands accept `--key` and `--cert` options to specify the two pieces of a PEM certicate. You can create a PEM certificate for "localhost" and install it in your browser's certificate database with the following commands.
@@ -93,7 +152,7 @@ This requires Homebrew, which supplies the `brew` command.
93
152
  brew install mkcert nss # installs mkcert command
94
153
  mkcert localhost # Create PEM key/cert files for "localhost"
95
154
  mkcert -install # Installs certificates in browser
96
- ```
155
+ ````
97
156
 
98
157
  This creates two files: `localhost.pem` and `localhost-key.pem`. Move them somewhere where you cn find them.
99
158
 
@@ -116,6 +175,7 @@ The python `simwrapper` tool contains a fully-built static copy of the SimWrappe
116
175
  Here are the basic steps to do that:
117
176
 
118
177
  - In the SimWrapper javascript project repo:
178
+
119
179
  - Make any changes to the [SimWrapper javascript code](https://github.com/simwrapper/simwrapper) as needed, and test vigorously
120
180
  - Ensure that both `vite.config.js` and `public/404.html` are both set to have prefix "/" instead of "/simwrapper/" or "/dashboard/". The Python tool will not work if there is a URL prefix in the path.
121
181
  - Run `npm run build` to compile everything into the `dist` folder.
@@ -138,16 +198,16 @@ If everything is running smoothly, then push the project to pip and conda:
138
198
  - Commit the version bump, and push changes to Github
139
199
  - Push to PyPi (pip) with `make push`
140
200
  - Take note of the SHA256 string for the new `version.tar.gz` at https://pypi.org/project/simwrapper
141
- which can be found on the "Download Files" page
201
+ which can be found on the "Download Files" page
142
202
 
143
203
  ### Updating conda
144
204
 
205
+ _Conda is also deprecated. Stop using Anaconda._
206
+
145
207
  - Modify the conda "feedstock" fork at https://github.com/simwrapper/simwrapper-feedstock :
146
208
  - Edit `recipe/meta.yaml`: you probably just need to change the version string and the SHA256
147
209
  - The SHA256 is found on https://pypi.org/project/simwrapper on the Download Files page
148
210
  - Push to Github
149
211
  - Create a pull request on https://github.com/conda-forge/simwrapper-feedstock
150
- - Make notes in the PR description, checking off the relevant boxes.
212
+ - Make notes in the PR description, checking off the relevant boxes.
151
213
  - You don't need to do a "rerender" unless you've changed Python versions (I think)
152
-
153
-
@@ -2,46 +2,100 @@
2
2
 
3
3
  Official python library for working with SimWrapper.
4
4
 
5
- [SimWrapper](https://simwrapper.github.io) is a data visualization tool for exploring large transport simulation results.
5
+ [SimWrapper](https://simwrapper.app) is a data visualization tool for exploring large transport simulation results.
6
6
 
7
- Web browsers all block access to your local filesystem from external websites, for obvious security reasons. The SimWrapper website needs access to model run outputs on your filesystem. This program bridges that gap: it is a command-line tool that starts a local file server in a specific folder, so that you can access the files in that folder using SimWrapper.
7
+ Normally, web browsers block access to your local filesystem from external websites, for obvious security reasons. The SimWrapper website needs access to model run outputs on your filesystem.
8
+
9
+ This python program bridges that gap: it is a command-line tool that starts a local file server in a specific folder of your choosing, so that you can access the files in that folder using SimWrapper!
8
10
 
9
11
  ## About this library
10
12
 
11
13
  This library contains the "simwrapper" command-line tool, which allows browsing of local files on your PC/laptop using the SimWrapper website.
12
14
 
13
- We are at the very early stages of building this tool. The API will change, things will break, and there are certainly bugs.
14
-
15
- - Our primary goal is to make it easy to get local simulation results viewable using the SimWrapper website.
16
- - We have only tested this using Anaconda Python. Only Python 3.x is supported.
15
+ - Only Python 3.10+ is supported.
17
16
 
18
17
  ## Installation
19
18
 
20
- Installation requires the `pip` package manager.
19
+ This package is on the PyPi pip package library. You can use pip or the more modern **uv** tool to install it. Note it has many scientific library dependencies, so it's best to use a virtual environment (via uv)
21
20
 
22
21
  - Install using `pip install simwrapper`
23
22
  - To upgrade to the latest version, `pip install --upgrade simwrapper`
24
23
 
24
+ ## Running Simwrapper locally
25
+
25
26
  This package includes an embedded copy of the Javascript code from the SimWrapper
26
- project, available separately at https://github.com/simwrapper/simwrapper. That code is under the
27
- identical GNU GPL V3 and is embedded here with explicit permission of the author.
27
+ project, available separately at https://github.com/simwrapper/simwrapper. No monorepo here! Maybe someday.
28
28
 
29
29
  ## Usage
30
30
 
31
- `simwrapper` knows three commands.
31
+ `simwrapper` knows four commands.
32
+
33
+ ### simwrapper run [config.yaml]
34
+
35
+ starts a _local instance of the SimWrapper website_ running on your machine and usually listening on port 4999. Run this command if you have a machine on your local network which contains outputs you'd like to view (such as a modeling server), and that machine has not been set up with any other file sharing software such as NGINX or Apache.
36
+
37
+ - This command is designed to support the use case where an agency has (1) a local network with files stored on a central "modeling server" or file server, and also (2) desktop machines or laptops on the local network that wish to access those files using SimWrapper.
38
+ - Ultimately you may decide that you want to put simwrapper behind a proxy server such as those listed, for improved performance, features, and security.
39
+
40
+ This is especially useful if you use cloud-based storage such as AWS or Azure. You can **mount your cloud storage** to a local folder using a tool such as [Rclone mount](https://rclone.org/commands/rclone_mount/), and use this `simwrapper run` to browse your files and results!
41
+
42
+ **Options:**
43
+
44
+ `simwrapper run [config-file.yaml]` will read configuration from specified file.
45
+
46
+ - If not provided, simwrapper will serve the files found in the current working folder. If provided, the YAML file can provide three sections:
47
+
48
+ - **storage** - a list of mount points (folders) that simwrapper should share
49
+ - **tagline** - the front page tagline, default "Transport simulation data visualizer"
50
+ - **readme** - Markdown filename or raw markdown text to be shown on front page
51
+
52
+ **Example: config.yaml:**
53
+
54
+ ```yaml
55
+ # --- STORAGE ----------------------
56
+ # **Local/network mounts only: no http URLs here**
57
+ # Each key defines a starting point in the local filesystem.
58
+ # (if no config is found, the current working folder is shared)
59
+ storage:
60
+ data:
61
+ path: '/Users/billy/data'
62
+ description: 'Local data on my laptop'
63
+ vsp-public:
64
+ path: '/Users/billy/public-svn'
65
+ description: 'VSP/TU-Berlin public datasets'
66
+
67
+ # --- FRONT-PAGE TEXT -------------
68
+ # Readme can either be a .md markdown filename,
69
+ # or you can put markdown text directly in this file with "readme: |"
70
+ #
71
+ tagline: 'Transport simulation data visualizer'
72
+ readme: 'readme.md'
73
+ # # or...
74
+ # readme: |
75
+ # Welcome to My SimWrapper
76
+ # ========================
77
+ # Markdown text here
78
+ # - notes 1
79
+ # - notes 2
80
+ ```
32
81
 
33
- **simwrapper serve**
82
+ ---
83
+ ### simwrapper serve
34
84
 
35
85
  starts a local file server in the current directory. Run this command, then browse to either <https://vsp.berlin/simwrapper> or <https://activitysim.github.io/dashboard> to view your local folder outputs.
36
86
 
37
- **simwrapper here**
87
+ ---
88
+ ### simwrapper here
89
+
90
+ _Deprecated - "use simwrapper run" instead_
38
91
 
39
92
  starts a _local copy of the SimWrapper website_ usually listening on port 8050. Run this command instead of `simwrapper serve` if you have a machine on your local network which contains outputs you'd like to view (such as a modeling server), and that machine has not been set up with any other file sharing software such as NGINX or Apache.
40
93
 
41
94
  - This command is designed to support the use case where an agency has (1) a local network with files stored on a central "modeling server" or file server, and also (2) desktop machines or laptops on the local network that wish to access those files using SimWrapper.
42
95
  - Note, it's not a battle-tested multi-threaded web proxy server such as Apache, NGINX, or Gunicorn. Ultimately you may decide that you want to put simwrapper behind a proxy server such as those listed, for improved performance, features, and security.
43
96
 
44
- **simwrapper open [vsp|asim]**
97
+ ---
98
+ ### simwrapper open [vsp|asim]
45
99
 
46
100
  opens a new web browser tab AND a local file server in the current directory. The site will only operate as long as you keep that local server running, so don't close the command window.
47
101
 
@@ -51,6 +105,8 @@ opens a new web browser tab AND a local file server in the current directory. Th
51
105
 
52
106
  All three simwrapper commands start a small local file server, listening on a local port number. The site will only operate as long as you keep that local server running: quitting the command with CTRL-C or closing the command window will shut down the server.
53
107
 
108
+ ---
109
+
54
110
  ## Security
55
111
 
56
112
  When `simwrapper` is running, it listens for connections on your network interface. Your computer's **firewall rules and router settings** determine whether other machines on the network can access the folder, or not.
@@ -61,6 +117,8 @@ By default, almost all computers now run firewalls which block external access.
61
117
 
62
118
  ## Running as HTTPS - required for Safari
63
119
 
120
+ _We really just don't recommend using Safari. It is by far the slowest of all the browsers, and doesn't allow many advanced features because Apple wants to hold the open web back and push people to Apps_
121
+
64
122
  Safari blocks HTTPS websites (such as SimWrapper VSP and ASIM) which access localhost resources such as this local simwrapper file server. _We recommend Chromium-based browsers_ such as Google Chrome, Brave, and Microsoft Edge, because they are much faster than Safari. But you can run simwrapper in HTTPS mode by following these extra instructions.
65
123
 
66
124
  Simwrapper commands accept `--key` and `--cert` options to specify the two pieces of a PEM certicate. You can create a PEM certificate for "localhost" and install it in your browser's certificate database with the following commands.
@@ -71,7 +129,7 @@ This requires Homebrew, which supplies the `brew` command.
71
129
  brew install mkcert nss # installs mkcert command
72
130
  mkcert localhost # Create PEM key/cert files for "localhost"
73
131
  mkcert -install # Installs certificates in browser
74
- ```
132
+ ````
75
133
 
76
134
  This creates two files: `localhost.pem` and `localhost-key.pem`. Move them somewhere where you cn find them.
77
135
 
@@ -94,6 +152,7 @@ The python `simwrapper` tool contains a fully-built static copy of the SimWrappe
94
152
  Here are the basic steps to do that:
95
153
 
96
154
  - In the SimWrapper javascript project repo:
155
+
97
156
  - Make any changes to the [SimWrapper javascript code](https://github.com/simwrapper/simwrapper) as needed, and test vigorously
98
157
  - Ensure that both `vite.config.js` and `public/404.html` are both set to have prefix "/" instead of "/simwrapper/" or "/dashboard/". The Python tool will not work if there is a URL prefix in the path.
99
158
  - Run `npm run build` to compile everything into the `dist` folder.
@@ -116,16 +175,16 @@ If everything is running smoothly, then push the project to pip and conda:
116
175
  - Commit the version bump, and push changes to Github
117
176
  - Push to PyPi (pip) with `make push`
118
177
  - Take note of the SHA256 string for the new `version.tar.gz` at https://pypi.org/project/simwrapper
119
- which can be found on the "Download Files" page
178
+ which can be found on the "Download Files" page
120
179
 
121
180
  ### Updating conda
122
181
 
182
+ _Conda is also deprecated. Stop using Anaconda._
183
+
123
184
  - Modify the conda "feedstock" fork at https://github.com/simwrapper/simwrapper-feedstock :
124
185
  - Edit `recipe/meta.yaml`: you probably just need to change the version string and the SHA256
125
186
  - The SHA256 is found on https://pypi.org/project/simwrapper on the Download Files page
126
187
  - Push to Github
127
188
  - Create a pull request on https://github.com/conda-forge/simwrapper-feedstock
128
- - Make notes in the PR description, checking off the relevant boxes.
189
+ - Make notes in the PR description, checking off the relevant boxes.
129
190
  - You don't need to do a "rerender" unless you've changed Python versions (I think)
130
-
131
-
@@ -1,5 +1,5 @@
1
1
  [project]
2
- version = "4.0.0b1"
2
+ version = "4.0.1"
3
3
  name = "simwrapper"
4
4
  description = "Run SimWrapper from Python"
5
5
  readme = "README.md"
@@ -7,6 +7,7 @@ license = "GPL-3.0-or-later"
7
7
  requires-python = ">=3.11"
8
8
  dependencies = [
9
9
  "blosc>=1.11.2",
10
+ "build>=1.2.2.post1",
10
11
  "click>=8.0",
11
12
  "flask>=3.1.0",
12
13
  "flask-cors>=5.0.1",
@@ -19,7 +19,6 @@ from functools import wraps
19
19
  import openmatrix as omx
20
20
  import yaml
21
21
 
22
- from gunicorn.app.base import BaseApplication
23
22
  from waitress import serve
24
23
 
25
24
  import logging
@@ -28,27 +27,13 @@ logger = logging.getLogger('simwrapper')
28
27
 
29
28
  # STORAGE LOCATIONS -------------------------------------------------
30
29
  # Default is to just share the content of the starting folder.
31
-
32
30
  STORAGE = {
33
- "flask": "./",
31
+ "Server": "./",
34
32
  }
35
33
  STORAGE_ROOTS = {
36
- "flask": { "path": "./", "description": "local folder"}
34
+ "Server": { "path": "./", "description": os.getcwd()}
37
35
  }
38
-
39
- class GunicornServer(BaseApplication):
40
- def __init__(self, app, **kwargs):
41
- self.application = app
42
- self.options = kwargs
43
- super().__init__()
44
-
45
- def load_config(self):
46
- for key, value in self.options.items():
47
- if key in self.cfg.settings and value is not None:
48
- self.cfg.set(key, value)
49
-
50
- def load(self):
51
- return self.application
36
+ CONFIG = {"storage": STORAGE_ROOTS}
52
37
 
53
38
  # ------------------------------------------------
54
39
  def nocache(view):
@@ -126,7 +111,7 @@ class File(Resource):
126
111
  class Storage(Resource):
127
112
  @nocache
128
113
  def get(self):
129
- return STORAGE_ROOTS
114
+ return CONFIG
130
115
 
131
116
  # ------------------------------------------------
132
117
  class Omx(Resource):
@@ -213,47 +198,76 @@ def serve_static_files(path):
213
198
 
214
199
 
215
200
  def setupStorageRoots(config, port):
216
- global STORAGE, STORAGE_ROOTS
201
+ """
202
+ If a config file was passed in, read the config from file and set things up
203
+ accordingly.
204
+ Config may have these keys: storage, readme, tagline
205
+ """
206
+ global CONFIG, STORAGE, STORAGE_ROOTS
217
207
 
218
208
  if config:
219
209
  with open(config, 'r') as f:
220
- STORAGE_ROOTS = yaml.safe_load(f.read())
210
+
211
+ YAML = yaml.safe_load(f.read())
212
+
213
+ # front page text
214
+ tagline = "tagline" in YAML and YAML["tagline"] or ""
215
+ readme = "readme" in YAML and YAML["readme"] or ""
216
+ if readme and not '\n' in readme:
217
+ with open(readme, 'r') as r:
218
+ readme = r.read()
219
+
220
+ # storage locations
221
221
  STORAGE = {}
222
+ if "storage" in YAML:
223
+ STORAGE_ROOTS = YAML["storage"]
222
224
 
223
225
  for root in STORAGE_ROOTS:
224
226
  STORAGE[root] = '' + STORAGE_ROOTS[root]["path"]
225
-
226
227
  # putting this here, but the website will replace the path given
227
228
  # with the window href location. That way, whatever URL/ipaddr the
228
229
  # user entered to reach the flask server will be used.
229
230
  for root in STORAGE_ROOTS:
230
231
  STORAGE_ROOTS[root]["path"] = f"http://localhost:{port}"
231
232
 
233
+ CONFIG = {
234
+ "storage": STORAGE_ROOTS,
235
+ "tagline": tagline,
236
+ "readme": readme
237
+ }
238
+
239
+ print('HELLO', CONFIG)
240
+
241
+ def startGunicorn(port, debug):
242
+ from .GunicornServer import GunicornServer
243
+
244
+ gunicorn_options = {
245
+ 'bind': f'0.0.0.0:{port}',
246
+ 'workers': 4,
247
+ 'threads': 2,
248
+ 'reload': debug,
249
+ 'loglevel': debug and 'debug' or 'info',
250
+ 'access_log': '-', # Log to stdout
251
+ 'error_log': '-', # Log to stderr
252
+ }
253
+ GunicornServer(app, **gunicorn_options).run()
254
+
232
255
  # ----------------------------------------
233
256
  def startFlask(config=None, port=4999, debug=False):
234
257
  print('\n--- SET UP: storage roots')
235
258
  setupStorageRoots(config,port)
236
- print(STORAGE)
237
259
 
238
260
  print('\n--- START-FLASK', config, port)
261
+ print(f'--- If link below does not work, try server name or localhost: http://localhost:{port}\n\n')
239
262
 
240
263
  if os.name == 'nt':
241
264
  # Windows: use waitress
242
265
  logger.setLevel(debug and logging.DEBUG or logging.INFO)
243
- serve(app, host='0.0.0.0', port=port, threads=16)
266
+ serve(app, listen=f"*:{port}", threads=16)
244
267
 
245
268
  else:
246
269
  # Use Gunicorn
247
- gunicorn_options = {
248
- 'bind': f'0.0.0.0:{port}',
249
- 'workers': 4,
250
- 'threads': 2,
251
- 'reload': debug,
252
- 'loglevel': debug and 'debug' or 'info',
253
- 'access_log': '-', # Log to stdout
254
- 'error_log': '-', # Log to stderr
255
- }
256
- GunicornServer(app, **gunicorn_options).run()
270
+ startGunicorn(port,debug)
257
271
 
258
272
  # ----------------------------------------
259
273
  if __name__ == "__main__":
@@ -0,0 +1,15 @@
1
+ from gunicorn.app.base import BaseApplication
2
+
3
+ class GunicornServer(BaseApplication):
4
+ def __init__(self, app, **kwargs):
5
+ self.application = app
6
+ self.options = kwargs
7
+ super().__init__()
8
+
9
+ def load_config(self):
10
+ for key, value in self.options.items():
11
+ if key in self.cfg.settings and value is not None:
12
+ self.cfg.set(key, value)
13
+
14
+ def load(self):
15
+ return self.application
@@ -74,7 +74,7 @@ def here():
74
74
  @click.option('--debug', is_flag=True, default=False, help="Debug mode")
75
75
  # @click.option('--cert', default=None, help="PEM Certificate filename. Provide both a certificate and key to serve HTTPS")
76
76
  # @click.option('--key', default=None, help="PEM Key filename. Provide both a certificate and key to serve HTTPS")
77
- def flask(config, port, debug):
77
+ def run(config, port, debug):
78
78
  """Run the SimWrapper 'flask' app for local or networked files
79
79
 
80
80
  CONFIG is the path to the config.py file containing the root paths to be served. Defaults to the current folder if not provided.
@@ -0,0 +1 @@
1
+ simwrapper.app