jarvisplot 2.0.0__tar.gz → 2.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.
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/JarvisPLOT.egg-info/PKG-INFO +1 -1
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/PKG-INFO +1 -1
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/flowchart/default.json +1 -1
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/flowchart.py +21 -5
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/pyproject.toml +1 -1
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_flowchart_renderer.py +64 -1
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/JarvisPLOT.egg-info/SOURCES.txt +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/JarvisPLOT.egg-info/dependency_links.txt +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/JarvisPLOT.egg-info/entry_points.txt +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/JarvisPLOT.egg-info/requires.txt +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/JarvisPLOT.egg-info/top_level.txt +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/README.md +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/__init__.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/adapters_rect.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/adapters_ternary.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/cards/std_axes_adapter_config.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/colorbar_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/config_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/data_pipelines.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/density_cell_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/design_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/dynesty_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/figure.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/figure_types.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/helper.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/interp_2d_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/interp_natural_neighbor.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/interp_natural_neighbor_exact.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/layer_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/layout_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/method_registry.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/posterior_density_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/posterior_hpd.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/posterior_mesh.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/preprocessor.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/preprocessor_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/profile_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/Figure/style_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/__init__.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/agent_digest.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/agent_io.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cache_store.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/capabilities.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/1x1/ternary.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/2x1/dynesty_runplot.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/2x1/rect.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/2x1/rect5x1.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/2x1/rect_cmap.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/2x1/ternary.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/2x1/ternary_cmap.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/4x1/rect.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/4x1/rect_cmap.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/4x1/ternary.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/a4paper/4x1/ternary_cmap.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/args.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/colors/colormaps.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/default/output.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/gambit/1x1/ternary.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/gambit/2x1/rect_cmap.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/gambit/2x1/ternary.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/gambit/2x1/ternary_cmap.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/icons/JarvisHEP.png +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/icons/flowchart/JarvisHEP.png +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/icons/flowchart/calculator.png +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/icons/flowchart/inputfile.png +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/icons/flowchart/opera.png +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/icons/flowchart/outputfile.png +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/icons/flowchart/sampler.png +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/icons/gambit.png +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/icons/gambit_small.png +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cards/style_preference.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cli.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/cli_help.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/client.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/column_demand.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/column_probe.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/config.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/config_address.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/core.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/core_assets.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/core_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/data_access.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/data_loader.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/data_loader_hdf5.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/data_loader_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/data_loader_summary.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/diagnostic_guidance.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/diagnostics.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/dryrun_runtime.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/expr_names.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/fix_apply.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/inner_func.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/man_catalog.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/man_methods.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/man_render_agent.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/man_render_human.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/man_transforms.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/agent-output.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/cli-map.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/data-columns.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/diagnostics.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/dryrun-viz.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/layer-method.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/manifest.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/method_notes.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/style-axes.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/type-posterior-2d.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/type-profile-2d.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/validate.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/workflow.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/manual_cards/yaml-root.yaml +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/memtrace.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/method_contracts.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/render_health.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/core/common.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/core/dataset.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/core/figure.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/core/layer.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/core/transform.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/manifest.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/bar.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/barh.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/contour.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/contourf.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/dynesty_runplot.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/errorbar.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/fill.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/fill_between.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/fill_betweenx.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/hist.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/imshow.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/jpcontour.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/jpcontourf.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/jpfield.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/pcolor.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/pcolormesh.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/plot.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/quiver.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/scatter.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/step.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/tricontour.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/tricontourf.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/tripcolor.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/tripcolor_axes.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/triplot.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/voronoi.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/methods/voronoif.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema/plot-config.json +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema_catalog.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/schema_diagnostics.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/templates_catalog.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/transform_contracts.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/utils/__init__.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/utils/cmaps.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/utils/dataframes.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/utils/expression.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/utils/interpolator.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/utils/pathing.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/validation.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/__init__.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/cap.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/config_cmd.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/data.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/doctor.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/dryrun.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/explain.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/man.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/suggest.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/template.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/verbs/validate.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/jarvisplot/yaml_io.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/setup.cfg +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_agent_digest.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_agent_envelope.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_axis_title.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_capabilities.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_cli_help.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_cli_verbs.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_cmaps.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_column_existence.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_config_addressing.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_config_edit.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_config_expand.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_data_access.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_data_describe.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_data_head_eval.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_data_loader_contracts.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_data_pipelines.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_density_cell_transform.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_diagnostic_guidance.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_docs_status_labels.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_doctor_partial.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_explain.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_figure_contracts.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_figure_type_expander.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_fix_application.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_interp_2d_transform.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_interp_natural_neighbor.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_interpolator_contracts.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_jpcontour_methods.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_man_cli.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_method_contracts.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_parse_data_metadata.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_pathing_contracts.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_posterior_hpd.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_render_health.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_row_ledger.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_schema_catalog.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_suggest.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_suggest_axes.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_template_catalog.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_template_json.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_transform_contracts.py +0 -0
- {jarvisplot-2.0.0 → jarvisplot-2.0.1}/tests/test_validate_no_matplotlib.py +0 -0
|
@@ -412,6 +412,7 @@ class _ClassicGraph:
|
|
|
412
412
|
self.output_variable_dx = float(self.classic.get("output_variable_dx", self.variable_dx))
|
|
413
413
|
self.bridge_y_offset = float(self.classic.get("bridge_y_offset", 0.45))
|
|
414
414
|
self.bridge_output_pad = float(self.classic.get("bridge_output_pad", 0.18))
|
|
415
|
+
self.module_icon_size = float(self.classic.get("module_icon_size", 0.9))
|
|
415
416
|
self.mains: dict[str, dict] = {}
|
|
416
417
|
self.files: dict[str, dict] = {}
|
|
417
418
|
self.variables: dict[str, dict] = {}
|
|
@@ -585,7 +586,7 @@ class _ClassicGraph:
|
|
|
585
586
|
y = cursor - height / 2.0
|
|
586
587
|
self._place_main_group(main_id, x, y, height)
|
|
587
588
|
cursor -= height + self.group_gap
|
|
588
|
-
self._place_standalone_bridges(layer_id, x, max_height)
|
|
589
|
+
self._place_standalone_bridges(layer_id, x, max_height, layer_groups.get(layer_id, []))
|
|
589
590
|
|
|
590
591
|
self._place_unpositioned_variables(max_height)
|
|
591
592
|
self._compute_bounds(max_height)
|
|
@@ -704,11 +705,20 @@ class _ClassicGraph:
|
|
|
704
705
|
self._place_variable(var_id, x - self.input_variable_dx, y, align="right")
|
|
705
706
|
self._place_variables(self._direct_output_variables(main_id), x + self.output_variable_dx, y, align="right")
|
|
706
707
|
|
|
707
|
-
def _place_standalone_bridges(self, layer_id: str, x: float, max_height: float) -> None:
|
|
708
|
+
def _place_standalone_bridges(self, layer_id: str, x: float, max_height: float, main_ids: list[str]) -> None:
|
|
708
709
|
bridges = self._standalone_bridges(layer_id)
|
|
709
710
|
if not bridges:
|
|
710
711
|
return
|
|
711
|
-
|
|
712
|
+
main_items = [self.mains[main_id] for main_id in main_ids if main_id in self.mains]
|
|
713
|
+
if main_items:
|
|
714
|
+
module_top = max(item["pos"][1] + self.module_icon_size / 2.0 for item in main_items)
|
|
715
|
+
lowest_bridge_y = module_top + self.bridge_y_offset
|
|
716
|
+
ys = [
|
|
717
|
+
lowest_bridge_y + (len(bridges) - 1 - idx) * self.var_gap
|
|
718
|
+
for idx in range(len(bridges))
|
|
719
|
+
]
|
|
720
|
+
else:
|
|
721
|
+
ys = self._spread_y(max_height / 2.0 + self.bridge_y_offset, len(bridges), self.var_gap)
|
|
712
722
|
for node_id, y in zip(bridges, ys):
|
|
713
723
|
label = str(self.nodes[node_id].get("label") or "")
|
|
714
724
|
self.bridges[node_id] = {
|
|
@@ -823,12 +833,18 @@ class _ClassicGraph:
|
|
|
823
833
|
return [str(node_id) for node_id in layer.get("nodes", [])]
|
|
824
834
|
return []
|
|
825
835
|
|
|
826
|
-
def _bridge_order_key(self, bridge_id: str) -> tuple[
|
|
836
|
+
def _bridge_order_key(self, bridge_id: str) -> tuple[float, float, str]:
|
|
827
837
|
source_id = None
|
|
828
838
|
for edge in self.edges:
|
|
829
839
|
if str(edge.get("target", {}).get("node")) == bridge_id:
|
|
830
840
|
source_id = str(edge.get("source", {}).get("node"))
|
|
831
841
|
break
|
|
842
|
+
|
|
843
|
+
source_item = self.variables.get(source_id or "") or self.bridges.get(source_id or "")
|
|
844
|
+
if source_item is not None:
|
|
845
|
+
# Preserve the actual top-to-bottom order of the previous layer.
|
|
846
|
+
return (0.0, -float(source_item["pos"][1]), bridge_id)
|
|
847
|
+
|
|
832
848
|
source_node = self.nodes.get(source_id or "")
|
|
833
849
|
source_layer = str(source_node.get("layer", "")) if isinstance(source_node, Mapping) else ""
|
|
834
850
|
layer_ids = self._layer_node_ids(source_layer)
|
|
@@ -841,7 +857,7 @@ class _ClassicGraph:
|
|
|
841
857
|
if str(layer.get("id")) == source_layer:
|
|
842
858
|
layer_pos = idx
|
|
843
859
|
break
|
|
844
|
-
return (layer_pos, source_pos, bridge_id)
|
|
860
|
+
return (float(layer_pos + 1), float(source_pos), bridge_id)
|
|
845
861
|
|
|
846
862
|
def _incoming_variables(self, target_id: str) -> list[str]:
|
|
847
863
|
return self._unique(
|
|
@@ -158,7 +158,10 @@ def test_flowchart_synthesizes_missing_bridge_for_cross_layer_file_input():
|
|
|
158
158
|
],
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
graph = _ClassicGraph(
|
|
161
|
+
graph = _ClassicGraph(
|
|
162
|
+
scene,
|
|
163
|
+
{"classic": {"synthesize_missing_bridges": True, "bridge_y_offset": 0.6}},
|
|
164
|
+
)
|
|
162
165
|
|
|
163
166
|
bridge_id = "bridge::x::L2"
|
|
164
167
|
assert bridge_id in graph.nodes
|
|
@@ -181,6 +184,66 @@ def test_flowchart_synthesizes_missing_bridge_for_cross_layer_file_input():
|
|
|
181
184
|
for edge in graph.edges
|
|
182
185
|
)
|
|
183
186
|
|
|
187
|
+
graph.layout()
|
|
188
|
+
module_top = graph.mains["FirstModule"]["pos"][1] + graph.module_icon_size / 2.0
|
|
189
|
+
bridge_y = graph.bridges[bridge_id]["pos"][1]
|
|
190
|
+
assert abs(bridge_y - module_top - 0.6) < 1e-9
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def test_flowchart_orders_bridge_chain_by_previous_layer_y_position():
|
|
194
|
+
scene = {
|
|
195
|
+
"schema": "jarvisplot.scene/v1",
|
|
196
|
+
"scene_type": "flowchart",
|
|
197
|
+
"layers": [
|
|
198
|
+
{"id": "layer_1", "index": 1, "nodes": ["Parameters", "var::top", "var::bottom"]},
|
|
199
|
+
{"id": "layer_2", "index": 2, "nodes": []},
|
|
200
|
+
{"id": "layer_3", "index": 3, "nodes": []},
|
|
201
|
+
{
|
|
202
|
+
"id": "layer_4",
|
|
203
|
+
"index": 4,
|
|
204
|
+
"nodes": ["FinalModule", "file::FinalModule::input::final_input"],
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
"nodes": [
|
|
208
|
+
{"id": "Parameters", "kind": "source", "label": "Parameters", "layer": "layer_1"},
|
|
209
|
+
{"id": "var::top", "kind": "variable", "role": "parameter", "label": "top", "layer": "layer_1"},
|
|
210
|
+
{"id": "var::bottom", "kind": "variable", "role": "parameter", "label": "bottom", "layer": "layer_1"},
|
|
211
|
+
{"id": "FinalModule", "kind": "module", "label": "FinalModule", "layer": "layer_4"},
|
|
212
|
+
{
|
|
213
|
+
"id": "file::FinalModule::input::final_input",
|
|
214
|
+
"kind": "file",
|
|
215
|
+
"role": "input_file",
|
|
216
|
+
"label": "final_input",
|
|
217
|
+
"layer": "layer_4",
|
|
218
|
+
},
|
|
219
|
+
],
|
|
220
|
+
"edges": [
|
|
221
|
+
{"source": {"node": "Parameters", "port": "top"}, "target": {"node": "var::top", "port": "in"}, "role": "parameterflow"},
|
|
222
|
+
{"source": {"node": "Parameters", "port": "bottom"}, "target": {"node": "var::bottom", "port": "in"}, "role": "parameterflow"},
|
|
223
|
+
{
|
|
224
|
+
"source": {"node": "var::bottom", "port": "out"},
|
|
225
|
+
"target": {"node": "file::FinalModule::input::final_input", "port": "in"},
|
|
226
|
+
"role": "fileflow",
|
|
227
|
+
"metadata": {"variable": "bottom"},
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"source": {"node": "var::top", "port": "out"},
|
|
231
|
+
"target": {"node": "file::FinalModule::input::final_input", "port": "in"},
|
|
232
|
+
"role": "fileflow",
|
|
233
|
+
"metadata": {"variable": "top"},
|
|
234
|
+
},
|
|
235
|
+
],
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
graph = _ClassicGraph(scene, {"classic": {"synthesize_missing_bridges": True}})
|
|
239
|
+
graph.layout()
|
|
240
|
+
|
|
241
|
+
layer_2_bridges = graph._standalone_bridges("layer_2")
|
|
242
|
+
layer_3_bridges = graph._standalone_bridges("layer_3")
|
|
243
|
+
assert layer_2_bridges == ["bridge::top::L2", "bridge::bottom::L2"]
|
|
244
|
+
assert layer_3_bridges == ["bridge::top::L3", "bridge::bottom::L3"]
|
|
245
|
+
assert graph.bridges["bridge::top::L3"]["pos"][1] > graph.bridges["bridge::bottom::L3"]["pos"][1]
|
|
246
|
+
|
|
184
247
|
|
|
185
248
|
def test_flowchart_uses_triangle_for_file_output_variables():
|
|
186
249
|
scene = {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|