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.
- simwrapper-4.0.1/CONFIG-EXAMPLE.yaml +31 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/Makefile +1 -1
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/PKG-INFO +79 -19
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/README.md +77 -18
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/pyproject.toml +2 -1
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/FlaskApp.py +48 -34
- simwrapper-4.0.1/simwrapper/GunicornServer.py +15 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/cli.py +1 -1
- simwrapper-4.0.1/simwrapper/static/CNAME +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/AggregateOd-B4y8aYuC.js +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/AggregateOd-aR9bhJaL.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/BackgroundMapOnTop-BPjbI60c.js → simwrapper-4.0.1/simwrapper/static/assets/BackgroundMapOnTop-CMoHelYK.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/BackgroundMapOnTop-DptOe2tm.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/CalculationTable-WWen6ZB6.js → simwrapper-4.0.1/simwrapper/static/assets/CalculationTable-BKJ39V7b.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/CalculationTable-ie-f6C8y.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/CarrierViewer-BMQAVXNF.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/CarrierViewer-CBqkLqs3.js +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/CollapsiblePanel-CfLT1wcO.js → simwrapper-4.0.1/simwrapper/static/assets/CollapsiblePanel-CGEamBkr.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/CollapsiblePanel-zCvUtCGk.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/ColorMapSelector-BdBdNmey.js → simwrapper-4.0.1/simwrapper/static/assets/ColorMapSelector-B07ZL-2R.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/ColorMapSelector-DzIjgrBt.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/ColorsAndWidths-CEPhi42P.js → simwrapper-4.0.1/simwrapper/static/assets/ColorsAndWidths-DIJqI60j.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/DashboardDataManager-CWuUsItU.js → simwrapper-4.0.1/simwrapper/static/assets/DashboardDataManager-BQP3prLI.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/DrawingTool-DVhl1QwS.js → simwrapper-4.0.1/simwrapper/static/assets/DrawingTool-CBau2IAH.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/DrawingTool-Cxz0mWSd.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/EventViewer-BDft6Wzn.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/EventViewer-vyosGI_U.js → simwrapper-4.0.1/simwrapper/static/assets/EventViewer-CSp2IN1v.js +2 -2
- simwrapper-4.0.1/simwrapper/static/assets/Flowmap--zMRkn8n.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/Flowmap-DjxoQ5-Q.js → simwrapper-4.0.1/simwrapper/static/assets/Flowmap-hgyHkho_.js +2 -2
- simwrapper-4.0.1/simwrapper/static/assets/GridMap-BAwSaBed.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/GridMap-CKQnDrqr.js → simwrapper-4.0.1/simwrapper/static/assets/GridMap-BoFPYcsV.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/ImageView-Bh2HyJTN.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/ImageView-CjHXQmAa.js → simwrapper-4.0.1/simwrapper/static/assets/ImageView-D6uWvvAa.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/LayerMap-BBst-sDi.js → simwrapper-4.0.1/simwrapper/static/assets/LayerMap-oLq7p3On.js +3 -3
- simwrapper-4.0.1/simwrapper/static/assets/LayerMap-oQQxnF8O.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/LayoutManager-e-KiG2dT.js → simwrapper-4.0.1/simwrapper/static/assets/LayoutManager-BTKmNrLt.js +39 -39
- simwrapper-4.0.1/simwrapper/static/assets/LayoutManager-XvRWeyv7.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/LegendBox-DxOTkzfG.js → simwrapper-4.0.1/simwrapper/static/assets/LegendBox-B08OK2Ch.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/LegendBox-BJxkonIO.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/LegendColors-D0pXOpGB.js → simwrapper-4.0.1/simwrapper/static/assets/LegendColors-D4curWGf.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/LineOffsetLayer-BRxTnr7e.js → simwrapper-4.0.1/simwrapper/static/assets/LineOffsetLayer-Be36pIP4.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/LogisticsViewer-hLLzAhbk.js → simwrapper-4.0.1/simwrapper/static/assets/LogisticsViewer-BVe_kaMF.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/LogisticsViewer-DcAXVGrY.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/MatrixViewer-B5u8FtkP.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/MatrixViewer-B_sGwdHT.js → simwrapper-4.0.1/simwrapper/static/assets/MatrixViewer-l2gE0Jm1.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/NetworkLinks-BU463xJY.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/NetworkLinks-qgWYa7yh.js +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/PathOffsetLayer-BZ4zepg9.js → simwrapper-4.0.1/simwrapper/static/assets/PathOffsetLayer-QXIMy42N.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/PathTraceLayer-DgZFMARh.js → simwrapper-4.0.1/simwrapper/static/assets/PathTraceLayer-Bch_qDuL.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/PathTraceLayer-DnayuE36.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/PieChartDemo-B5xttigz.js → simwrapper-4.0.1/simwrapper/static/assets/PieChartDemo-BytJL3ZF.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/PieChartDemo-DkgWM9v6.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/PlotlyDiagram-sJ8Th6C3.js → simwrapper-4.0.1/simwrapper/static/assets/PlotlyDiagram-BXbfuZ9G.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/PlotlyDiagram-BdPQboat.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/PolygonsLayer.worker--PQPT5j1.js → simwrapper-4.0.1/simwrapper/static/assets/PolygonsLayer.worker-BsI8I7o0.js +3 -3
- simwrapper-4.0.1/simwrapper/static/assets/RunConfigurator-Cka-r30l.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/RunConfigurator-CqnlsvlW.js → simwrapper-4.0.1/simwrapper/static/assets/RunConfigurator-DQJiHszX.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/SW_logo_yellow-Btlbhihn.png +0 -0
- simwrapper-4.0.1/simwrapper/static/assets/SankeyDiagram-CACz4sdX.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/SankeyDiagram-FLJQ6H6f.js → simwrapper-4.0.1/simwrapper/static/assets/SankeyDiagram-PMBnbyLr.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/ShapeFile-03xUN9L-.js +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/ShapeFile-DVEMvVwY.css +1 -0
- 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
- simwrapper-4.0.1/simwrapper/static/assets/TimeSlider-DKK7Kyeo.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/TimeSlider-D52GcPiP.js → simwrapper-4.0.1/simwrapper/static/assets/TimeSlider-bl3jMjHl.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/TopSheet-BRLOYIbG.js → simwrapper-4.0.1/simwrapper/static/assets/TopSheet-9MJkamwe.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/TopSheet-C6eJGli3.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/TransitDemand-BB7pRKZu.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/TransitDemand-50dl_VFD.js → simwrapper-4.0.1/simwrapper/static/assets/TransitDemand-CJJVWGuk.js +2 -2
- simwrapper-4.0.0b1/simwrapper/static/assets/VegaLite-D_02CRNL.js → simwrapper-4.0.1/simwrapper/static/assets/VegaLite-CBHEOqZU.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/VegaLite-DVfrWt8N.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/VehicleAnimation-BFdy5eRi.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/VehicleAnimation-C50drogW.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/VehicleAnimation-C756l5fQ.js → simwrapper-4.0.1/simwrapper/static/assets/VehicleAnimation-HA2HQP4Y.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/VehicleAnimation-DUv7DXBH.js → simwrapper-4.0.1/simwrapper/static/assets/VehicleAnimation-eK9UOm9A.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/VideoPlayer-BOHHCfWy.js → simwrapper-4.0.1/simwrapper/static/assets/VideoPlayer-Dv8PbDvI.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/VizConfigurator-CGwo3zpl.js +11 -0
- simwrapper-4.0.1/simwrapper/static/assets/VizConfigurator-pmbbASys.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/VuePlotly-CDpMgD2e.js → simwrapper-4.0.1/simwrapper/static/assets/VuePlotly-D9-EaHZi.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/WASMEventStreamer.worker-BySrmQBt.js → simwrapper-4.0.1/simwrapper/static/assets/WASMEventStreamer.worker-Damh4Nll.js +4 -4
- simwrapper-4.0.1/simwrapper/static/assets/XmlViewer-CeUPBZXt.js +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/XmlViewer-hB_o1pGI.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/XyHexagons-DZkw88GI.js → simwrapper-4.0.1/simwrapper/static/assets/XyHexagons-DNyuZL1f.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/XyHexagons-l2j9r24G.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/XyTime-DT-ZW-1w.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/XyTime-vDl1jhMw.js → simwrapper-4.0.1/simwrapper/static/assets/XyTime-Npy9r_qy.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/ZoomButtons-CZq11kBt.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/ZoomButtons-3WN3ARlX.js → simwrapper-4.0.1/simwrapper/static/assets/ZoomButtons-DERh7Eho.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/aggregate-od-CxN1rXyi.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/aggregate-od-ykfZybwN.js +1 -0
- 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
- simwrapper-4.0.1/simwrapper/static/assets/area-BtCARixv.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/area-CsO5OBUp.js → simwrapper-4.0.1/simwrapper/static/assets/area-D-I6dGQB.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/area-map-CR15-uE0.js +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/area-map-CwgktcLJ.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/bar-BbDIFWK1.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/bar-CkKzKbiQ.js → simwrapper-4.0.1/simwrapper/static/assets/bar-BnBcDEQo.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/bubble-Bp7Rg_c0.js → simwrapper-4.0.1/simwrapper/static/assets/bubble-BdlXQ49B.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/bubble-CbGwYQfW.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/carriers-Bynfqluv.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/carriers-hM0KIsoK.js +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/column-layer-C3GuTOVn.js → simwrapper-4.0.1/simwrapper/static/assets/column-layer-CwQpY9i6.js +1 -1
- 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
- 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
- simwrapper-4.0.1/simwrapper/static/assets/flowmap-CvjUZABP.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/flowmap-t79drfay.js +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/geojson-layer-C5Uc2kXs.js → simwrapper-4.0.1/simwrapper/static/assets/geojson-layer-BJzM0td6.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/gridmap-f31N4Owr.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/gridmap-Bokdr-V1.js → simwrapper-4.0.1/simwrapper/static/assets/gridmap-sfEiQxq6.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/heatmap-D_UHOruG.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/heatmap-CFe8A7h4.js → simwrapper-4.0.1/simwrapper/static/assets/heatmap-V049cGOj.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/hexagons--8f7-t--.js +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/hexagons-CPOSxcyG.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/icon-manager-APtRYO6R.js → simwrapper-4.0.1/simwrapper/static/assets/icon-manager-VCgL6dLz.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/index-BFgQCBGP.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/index-iS_j7FTr.js → simwrapper-4.0.1/simwrapper/static/assets/index-BvhPezkX.js +39 -39
- simwrapper-4.0.0b1/simwrapper/static/assets/index-B1G4f8ec.js → simwrapper-4.0.1/simwrapper/static/assets/index-C5ggn9H-.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/index-DJULR93U.js → simwrapper-4.0.1/simwrapper/static/assets/index-CL0jgCgf.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/index-C-XpRsTv.js → simwrapper-4.0.1/simwrapper/static/assets/index-CsWoCkIA.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/index-Bbrp069I.js → simwrapper-4.0.1/simwrapper/static/assets/index-DsrLhKEb.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/index-C4f9UAEJ.js → simwrapper-4.0.1/simwrapper/static/assets/index-txrVZiR_.js +1 -1
- 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
- simwrapper-4.0.1/simwrapper/static/assets/layermap-CWKLShno.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/layermap-DdYBpDZ0.js +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/line-Dq99iWK0.js → simwrapper-4.0.1/simwrapper/static/assets/line-Ch_EX0v9.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/line-DONUOCo1.css +1 -0
- 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
- simwrapper-4.0.1/simwrapper/static/assets/links-BdpHH8jO.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/links-xT8SMCIT.js +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/lodash-BzFR0Iad.js → simwrapper-4.0.1/simwrapper/static/assets/lodash-BLxeWTQP.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/matrix-CwtPS1VI.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/matrix-DnHe1cH1.js +1 -0
- 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
- simwrapper-4.0.0b1/simwrapper/static/assets/nprogress-DStwNSZ3.js → simwrapper-4.0.1/simwrapper/static/assets/nprogress-CUI5i0md.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/papaparse.min-CWypJjeG.js → simwrapper-4.0.1/simwrapper/static/assets/papaparse.min-DKoG2MWZ.js +1 -1
- 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
- simwrapper-4.0.0b1/simwrapper/static/assets/pie-7szoJovu.js → simwrapper-4.0.1/simwrapper/static/assets/pie-Dr7l5Rkm.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/pie-ZUTwNf2R.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/plotly-D2viyWqv.js → simwrapper-4.0.1/simwrapper/static/assets/plotly-D-L3h402.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/plotly-DIuHo25J.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/sankey-ChmfM_XB.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/sankey-DG2dKVnK.js → simwrapper-4.0.1/simwrapper/static/assets/sankey-CyJcX8mk.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/scatter-CIhK1YX-.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/scatter-C6YJMtkC.js → simwrapper-4.0.1/simwrapper/static/assets/scatter-SqC5HFGM.js +1 -1
- 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
- simwrapper-4.0.0b1/simwrapper/static/assets/slideshow-DaJctId6.js → simwrapper-4.0.1/simwrapper/static/assets/slideshow-CBEV3mYI.js +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/slideshow-DJlS9W7I.css → simwrapper-4.0.1/simwrapper/static/assets/slideshow-KikGqlRS.css +1 -1
- 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
- simwrapper-4.0.0b1/simwrapper/static/assets/table-D6v3xIdM.css → simwrapper-4.0.1/simwrapper/static/assets/table-B5iq16nn.css +1 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/table-luNf0mx8.js → simwrapper-4.0.1/simwrapper/static/assets/table-jL5TYkQ0.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/text-Cz75an8R.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/text-Cmp1Ghby.js → simwrapper-4.0.1/simwrapper/static/assets/text-h7arvIN0.js +1 -1
- 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
- simwrapper-4.0.0b1/simwrapper/static/assets/tile-BhLamkeg.js → simwrapper-4.0.1/simwrapper/static/assets/tile-Ck3URzKY.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/tile-_Lm2YGSR.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/transit-J9voF7aH.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/transit-atSN5QSD.js +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/util-k85ln55i.js → simwrapper-4.0.1/simwrapper/static/assets/util-vCd5pz9J.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/vega-9UM1ksay.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/vega-TgLwjm_s.js → simwrapper-4.0.1/simwrapper/static/assets/vega-Bgrlftig.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/vehicles-BBsy7Jzt.js +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/vehicles-BmIdYWvk.css +1 -0
- simwrapper-4.0.0b1/simwrapper/static/assets/video-OJcyaErV.js → simwrapper-4.0.1/simwrapper/static/assets/video-DjkUchOu.js +1 -1
- simwrapper-4.0.1/simwrapper/static/assets/video-Mp6RrM_l.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/xml-D0uOEf4Q.css +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/xml-DCyymAZS.js +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/xytime-7qGwmDZI.js +1 -0
- simwrapper-4.0.1/simwrapper/static/assets/xytime-BdF5XbHJ.css +1 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/index.html +2 -2
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/uv.lock +1 -1
- simwrapper-4.0.0b1/VERSION +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/AggregateOd-BoXk8agJ.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/AggregateOd-qXmyWHUU.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/BackgroundMapOnTop-BDYwt8Ic.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/CalculationTable-oLS3shLk.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/CarrierViewer-CKpwXsqi.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/CarrierViewer-DkAcbAoO.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/CollapsiblePanel-DW-6UICi.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/ColorMapSelector-D2Dx3tMt.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/DrawingTool-CqHy-5XI.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/EventViewer-BVAup26C.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/Flowmap-DMtKrUuq.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/GridMap-BjZfMEuA.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/ImageView-NWk3geFf.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/LayerMap-KnLxosFu.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/LayoutManager-Bhw4Kwbm.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/LegendBox-CBEOPOKs.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/LogisticsViewer-xH14EKlp.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/MatrixViewer-CO5JbShK.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/NetworkLinks-DA4QKEdh.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/NetworkLinks-s3SR-LP4.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/PathTraceLayer-BqJjhD9z.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/PieChartDemo-Dv6s3Jwd.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/PlotlyDiagram-DWZrqmPz.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/RunConfigurator-CZNVsC4x.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/SankeyDiagram-CbaiIQll.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/ShapeFile-CV8bs7TL.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/ShapeFile-ChxRiSCQ.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/TimeSlider-CvE89nrj.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/TopSheet-CWYF9Kvd.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/TransitDemand-BCsJD-bE.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/VegaLite-BEXyYTQ4.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/VehicleAnimation-DXPtVAem.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/VehicleAnimation-Qv_fjtLA.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/VizConfigurator-C0EUk0O0.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/VizConfigurator-CnL8H4aK.js +0 -11
- simwrapper-4.0.0b1/simwrapper/static/assets/XmlViewer-Blqr_2R3.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/XmlViewer-C53hfFIf.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/XyHexagons-DOFua4Tf.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/XyTime-Bzs0AfPt.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/ZoomButtons-DBnxz1ld.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/aggregate-od-BYTWLlsw.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/aggregate-od-CVQwk2tj.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/area-RqFnarOX.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/area-map-CRtMzedP.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/area-map-CS2wDqW5.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/bar-DTdJNj2b.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/bubble-DMACfFaY.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/carriers-C1djkvoD.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/carriers-KvJsTYh8.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/flowmap-BTN0EDP6.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/flowmap-hxk2Dufh.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/gridmap-BHRFqF1P.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/heatmap-BVvz2Qpm.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/hexagons-Cs1j58EO.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/hexagons-nRwxOgY9.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/index-D1-irzgk.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/index-DGtZBxnr.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/layermap-C6_2-Yzz.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/layermap-Ce35F_3a.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/line-BoUycrnZ.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/links-B89C3TsY.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/links-BAQXPchp.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/matrix-DNsb1DN6.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/matrix-EAZBWzR8.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/pie-Ctzmv2Wx.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/plotly-DwLEpuPH.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/sankey-DAMQaosU.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/scatter-02M33Y8r.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/text-DibEywl6.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/tile-CQ7_D1xX.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/transit-D1hPBy3c.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/transit-dlUS1RNB.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/vega-DWDur9PJ.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/vehicles-BsrKD_d0.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/vehicles-S32jWqy_.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/video-DPICzTDf.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/xml-Bofibrjs.css +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/xml-D4iTeY7F.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/xytime-JrSFt96c.js +0 -1
- simwrapper-4.0.0b1/simwrapper/static/assets/xytime-eoxkGHww.css +0 -1
- simwrapper-4.0.0b1/simwrapper/storage.yaml +0 -18
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/.gitignore +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/.pylintrc +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/.versionrc +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/.vscode/settings.json +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/CHANGELOG.md +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/LICENSE.txt +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/MANIFEST.in +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/patches/apply_pytables_patch.py +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/patches/pytables-3.10.2.patch +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/MiniFileServer.py +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/__init__.py +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/gunicorn_config.py +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/nginx.conf +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/simwrapper-flask-app.service +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/simwrapper-rclone.service +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/config/supervisord.conf +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/sites.py +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/404.html +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/404.html.bak +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/README.md +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/AggregateDatasetStreamer.worker-C0WTuhxa.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/Coords-CQQjH_Bj.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/CsvGzipParser.worker-BLBFQ-aV.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/DataFetcher.worker-BEGJ5mrK.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/GzipFetcher.worker-BN1FeEl_.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/GzipFetcher.worker-Dil8PfAW.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/LegendStore-CGgeb9zL.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/MATSimEventStreamer.worker-Do4vvbuZ.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/NewXmlFetcher.worker-DqenmrSu.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/NewXmlFetcher.worker-fQRtinoY.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/RoadNetworkLoader.worker-CZSk_iwT.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/RoadNetworkLoader.worker-DWlRv2k1.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/SW_logo_icon_anim-Cyl7nwZq.gif +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/SW_logo_white-mbdplT21.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/Set3-Dyl9Llxj.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/TopSheetWorker.worker-DZfZs6Iy.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/TransitSupplyHelper.worker-1BijG__s.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/VideoPlayer-Cdz1McNz.css +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/XytDataParser.worker-BavN8Lc3.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/arcs-B-65v31y.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/avro-Dd9UqmeZ.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/berlin-C-twquEa.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/color-DZRtpOAM.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/comlink-DESosX-g.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/cubehelix-Bg3rkAQA.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/defaultLocale-VLpijIbO.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/draw-icon-dm-DbFh91q-.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/extends-CF3RwP-h.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/extent-Ccx1MofX.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/fsum-CWwcR1RF.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/fxp-4YEvQr-_.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/group-DobYzF2-.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/hcl-BuAPUl0w.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/icon-blue-ramp-D1d4h-6x.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/icon-pie-chart-BS7BHQ_l.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/icon-stop-triangle-BjEDyLtU.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/index-B9fw0f6a.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/index-CrY58g0x.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/index-DgdUD6UN.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/index-_doEQLKC.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zblosc-DmbwZN5J.so +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zblosc2-C2k_kvFi.so +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zbshuf-CAWqoiJv.so +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zbz2-YH5bcfd1.so +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zlz4-DBxVEC8C.so +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zlzf-B37RoVJN.so +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zszf-vmQ-rYRm.so +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zzfp-CxpSdQww.so +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/libH5Zzstd-BNHjSL5H.so +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/lil-gui.esm-D2cLj-mk.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/links-BjFLDFnX.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/matsim_event_streamer_bg-CzbXQAK4.wasm +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/min-D1slsF82.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/points-CNz3arAg.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/polygons-BCSoK5vV.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/pow-BDr0uoeQ.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/rainbow-Dz4seJAz.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/range-OtVwhkKS.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/round-D-ROWHlE.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/screenshots-Tas2EtGs.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sequential-CKBnvidU.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sidebar-BRi9n39r.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sum-CB6J5KXz.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_minus-B3KtJjJs.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_minus_dm-BB92PyXK.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_north_arrow-BuDjRW21.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_north_arrow_dm-b3Ne7pdA.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_plus-_7XGt7Yq.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/sw_plus_dm-O9hpaAgy.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/table-NNqWMujx.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/thumbnail-B7gJwb8m.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/thumbnail-BWla1ZrP.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/thumbnail-B_QeHA-1.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/thumbnail-ywgPDHXm.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/timer-D6Wzbp6M.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/turf.es-DhhXp8l8.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/vsp-2023-logo-kcRNuRsU.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/year-DwdiMAWv.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/assets/zip-Db3GAX2E.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-bluered.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-inferno.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-picnic.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-salinity.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/colors/scale-viridis.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/css/font-awesome-5.7.1.css +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/data/build-index.js +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/data/index.html +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/icon-atlas.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/icon-stop-triangle.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/SW_favicon.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/SW_logo_icon_white.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/SW_logo_icon_yellow.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/draw-icon.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas-2.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas-3.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas-3.xcf +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/icon-atlas.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/arc.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/bmbf-logo.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/dfg.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/matsim-logo-blue.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/matsim-logo-white.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/metcouncil.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/mtc.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/mwcog.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/ohiodot.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/oregondot.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/psrc.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/sandag.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/semcog.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/sfcta-old.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/sfcta.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/tu-logo.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/logos/vsp-logo-300dpi.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/departure_board.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_bike.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_boat.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_bus.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_car.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/directions_subway.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/electric_car.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/electric_rickshaw.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/emoji_transportation.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/ev_station.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/group.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/groups.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/info.txt +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/local_gas_station.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/local_parking.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/local_shipping.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/local_taxi.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/motorcycle.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/person.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/route.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/subway.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/train.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/transportation.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/images/tile-icons/two_wheeler.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/sax-wasm.wasm +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/sql-wasm.wasm +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/tu-logo-circle.jpg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/tu-logo-circle.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/tu-logo.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/veh-curvy.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/veh-curvy2.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/veh-curvy3.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/veh-curvy5.png +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.eot +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.ttf +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.woff +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-regular-400.woff2 +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.eot +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.svg +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.ttf +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.woff +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/webfonts/fa-solid-900.woff2 +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/zones/sandag.geojson.gz +0 -0
- {simwrapper-4.0.0b1 → simwrapper-4.0.1}/simwrapper/static/zones/zones.yaml +0 -0
- {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)
|
|
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.
|
|
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.
|
|
28
|
+
[SimWrapper](https://simwrapper.app) is a data visualization tool for exploring large transport simulation results.
|
|
28
29
|
|
|
29
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
5
|
+
[SimWrapper](https://simwrapper.app) is a data visualization tool for exploring large transport simulation results.
|
|
6
6
|
|
|
7
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
"
|
|
31
|
+
"Server": "./",
|
|
34
32
|
}
|
|
35
33
|
STORAGE_ROOTS = {
|
|
36
|
-
"
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
266
|
+
serve(app, listen=f"*:{port}", threads=16)
|
|
244
267
|
|
|
245
268
|
else:
|
|
246
269
|
# Use Gunicorn
|
|
247
|
-
|
|
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
|
|
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
|