jarvisplot 2.0.1__tar.gz → 2.0.2__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.1 → jarvisplot-2.0.2}/JarvisPLOT.egg-info/PKG-INFO +1 -1
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/PKG-INFO +1 -1
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/figure.py +5 -2
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/layout_runtime.py +15 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/core.py +12 -1
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/pyproject.toml +1 -1
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_agent_digest.py +25 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_figure_contracts.py +33 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/JarvisPLOT.egg-info/SOURCES.txt +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/JarvisPLOT.egg-info/dependency_links.txt +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/JarvisPLOT.egg-info/entry_points.txt +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/JarvisPLOT.egg-info/requires.txt +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/JarvisPLOT.egg-info/top_level.txt +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/README.md +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/__init__.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/adapters_rect.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/adapters_ternary.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/cards/std_axes_adapter_config.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/colorbar_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/config_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/data_pipelines.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/density_cell_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/design_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/dynesty_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/figure_types.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/helper.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/interp_2d_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/interp_natural_neighbor.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/interp_natural_neighbor_exact.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/layer_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/method_registry.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/posterior_density_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/posterior_hpd.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/posterior_mesh.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/preprocessor.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/preprocessor_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/profile_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/Figure/style_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/__init__.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/agent_digest.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/agent_io.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cache_store.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/capabilities.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/1x1/ternary.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/2x1/dynesty_runplot.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/2x1/rect.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/2x1/rect5x1.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/2x1/rect_cmap.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/2x1/ternary.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/2x1/ternary_cmap.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/4x1/rect.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/4x1/rect_cmap.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/4x1/ternary.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/a4paper/4x1/ternary_cmap.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/args.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/colors/colormaps.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/default/output.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/flowchart/default.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/gambit/1x1/ternary.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/gambit/2x1/rect_cmap.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/gambit/2x1/ternary.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/gambit/2x1/ternary_cmap.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/icons/JarvisHEP.png +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/icons/flowchart/JarvisHEP.png +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/icons/flowchart/calculator.png +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/icons/flowchart/inputfile.png +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/icons/flowchart/opera.png +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/icons/flowchart/outputfile.png +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/icons/flowchart/sampler.png +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/icons/gambit.png +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/icons/gambit_small.png +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cards/style_preference.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cli.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/cli_help.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/client.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/column_demand.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/column_probe.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/config.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/config_address.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/core_assets.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/core_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/data_access.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/data_loader.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/data_loader_hdf5.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/data_loader_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/data_loader_summary.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/diagnostic_guidance.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/diagnostics.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/dryrun_runtime.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/expr_names.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/fix_apply.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/flowchart.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/inner_func.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/man_catalog.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/man_methods.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/man_render_agent.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/man_render_human.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/man_transforms.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/agent-output.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/cli-map.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/data-columns.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/diagnostics.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/dryrun-viz.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/layer-method.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/manifest.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/method_notes.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/style-axes.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/type-posterior-2d.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/type-profile-2d.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/validate.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/workflow.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/manual_cards/yaml-root.yaml +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/memtrace.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/method_contracts.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/render_health.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/core/common.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/core/dataset.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/core/figure.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/core/layer.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/core/transform.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/manifest.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/bar.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/barh.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/contour.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/contourf.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/dynesty_runplot.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/errorbar.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/fill.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/fill_between.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/fill_betweenx.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/hist.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/imshow.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/jpcontour.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/jpcontourf.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/jpfield.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/pcolor.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/pcolormesh.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/plot.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/quiver.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/scatter.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/step.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/tricontour.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/tricontourf.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/tripcolor.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/tripcolor_axes.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/triplot.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/voronoi.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/methods/voronoif.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema/plot-config.json +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema_catalog.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/schema_diagnostics.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/templates_catalog.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/transform_contracts.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/utils/__init__.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/utils/cmaps.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/utils/dataframes.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/utils/expression.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/utils/interpolator.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/utils/pathing.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/validation.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/__init__.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/cap.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/config_cmd.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/data.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/doctor.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/dryrun.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/explain.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/man.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/suggest.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/template.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/verbs/validate.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/jarvisplot/yaml_io.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/setup.cfg +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_agent_envelope.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_axis_title.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_capabilities.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_cli_help.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_cli_verbs.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_cmaps.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_column_existence.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_config_addressing.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_config_edit.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_config_expand.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_data_access.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_data_describe.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_data_head_eval.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_data_loader_contracts.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_data_pipelines.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_density_cell_transform.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_diagnostic_guidance.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_docs_status_labels.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_doctor_partial.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_explain.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_figure_type_expander.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_fix_application.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_flowchart_renderer.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_interp_2d_transform.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_interp_natural_neighbor.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_interpolator_contracts.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_jpcontour_methods.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_man_cli.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_method_contracts.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_parse_data_metadata.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_pathing_contracts.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_posterior_hpd.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_render_health.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_row_ledger.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_schema_catalog.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_suggest.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_suggest_axes.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_template_catalog.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_template_json.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_transform_contracts.py +0 -0
- {jarvisplot-2.0.1 → jarvisplot-2.0.2}/tests/test_validate_no_matplotlib.py +0 -0
|
@@ -26,6 +26,7 @@ from .layout_runtime import (
|
|
|
26
26
|
apply_manual_ticks,
|
|
27
27
|
ensure_numbered_rect_axes,
|
|
28
28
|
has_manual_ticks,
|
|
29
|
+
hide_log_minor_tick_labels,
|
|
29
30
|
is_numbered_ax,
|
|
30
31
|
)
|
|
31
32
|
from .colorbar_runtime import (
|
|
@@ -802,6 +803,7 @@ class Figure:
|
|
|
802
803
|
self.ax.set_yscale("log")
|
|
803
804
|
from matplotlib.ticker import LogLocator
|
|
804
805
|
self.ax.yaxis.set_minor_locator(LogLocator(subs='auto'))
|
|
806
|
+
hide_log_minor_tick_labels(self.ax, "y")
|
|
805
807
|
else:
|
|
806
808
|
self.ax.yaxis.set_minor_locator(AutoMinorLocator())
|
|
807
809
|
|
|
@@ -809,6 +811,7 @@ class Figure:
|
|
|
809
811
|
self.ax.set_xscale("log")
|
|
810
812
|
from matplotlib.ticker import LogLocator
|
|
811
813
|
self.ax.xaxis.set_minor_locator(LogLocator(subs='auto'))
|
|
814
|
+
hide_log_minor_tick_labels(self.ax, "x")
|
|
812
815
|
else:
|
|
813
816
|
self.ax.xaxis.set_minor_locator(AutoMinorLocator())
|
|
814
817
|
|
|
@@ -838,8 +841,8 @@ class Figure:
|
|
|
838
841
|
|
|
839
842
|
# Apply manual ticks here at initialization if provided in YAML
|
|
840
843
|
ax_ticks_cfg = self.frame.get('ax', {}).get('ticks', {})
|
|
841
|
-
|
|
842
|
-
|
|
844
|
+
self._apply_manual_ticks(self.ax, "x", ax_ticks_cfg.get('x', {}))
|
|
845
|
+
self._apply_manual_ticks(self.ax, "y", ax_ticks_cfg.get('y', {}))
|
|
843
846
|
|
|
844
847
|
|
|
845
848
|
self.ax.tick_params(**self.frame['ax']['ticks'].get("both", {}))
|
|
@@ -61,6 +61,19 @@ def apply_axis_title(fig, ax_obj, ax_name: str) -> None:
|
|
|
61
61
|
ax_obj.text(s=str(title), **text_params)
|
|
62
62
|
|
|
63
63
|
|
|
64
|
+
def hide_log_minor_tick_labels(ax_obj, which: str) -> None:
|
|
65
|
+
"""Keep log minor tick marks, but hide their labels by default."""
|
|
66
|
+
target = ax_obj.ax if hasattr(ax_obj, "ax") else ax_obj
|
|
67
|
+
if which == "x":
|
|
68
|
+
target.tick_params(
|
|
69
|
+
axis="x", which="minor", labelbottom=False, labeltop=False
|
|
70
|
+
)
|
|
71
|
+
elif which == "y":
|
|
72
|
+
target.tick_params(
|
|
73
|
+
axis="y", which="minor", labelleft=False, labelright=False
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
64
77
|
def ensure_numbered_rect_axes(fig, ax_name: str, kwgs: dict):
|
|
65
78
|
if not is_numbered_ax(ax_name):
|
|
66
79
|
raise ValueError(f"Illegal dynamic axes name '{ax_name}'. Only ax<NUMBER> is allowed.")
|
|
@@ -88,12 +101,14 @@ def ensure_numbered_rect_axes(fig, ax_name: str, kwgs: dict):
|
|
|
88
101
|
if fig.frame.get(ax_name, {}).get("yscale", "").lower() == "log":
|
|
89
102
|
ax_obj.set_yscale("log")
|
|
90
103
|
ax_obj.yaxis.set_minor_locator(LogLocator(subs="auto"))
|
|
104
|
+
hide_log_minor_tick_labels(ax_obj, "y")
|
|
91
105
|
else:
|
|
92
106
|
ax_obj.yaxis.set_minor_locator(AutoMinorLocator())
|
|
93
107
|
|
|
94
108
|
if fig.frame.get(ax_name, {}).get("xscale", "").lower() == "log":
|
|
95
109
|
ax_obj.set_xscale("log")
|
|
96
110
|
ax_obj.xaxis.set_minor_locator(LogLocator(subs="auto"))
|
|
111
|
+
hide_log_minor_tick_labels(ax_obj, "x")
|
|
97
112
|
else:
|
|
98
113
|
ax_obj.xaxis.set_minor_locator(AutoMinorLocator())
|
|
99
114
|
|
|
@@ -285,11 +285,22 @@ class JarvisPLOT():
|
|
|
285
285
|
def _maybe_write_agent_digest(self, figure_cfg, figobj) -> None:
|
|
286
286
|
"""Write figure-level agent_output digest after a successful plot."""
|
|
287
287
|
try:
|
|
288
|
-
from .agent_digest import
|
|
288
|
+
from .agent_digest import (
|
|
289
|
+
load_figure_source_dataframe,
|
|
290
|
+
maybe_write_figure_digest,
|
|
291
|
+
parse_agent_output,
|
|
292
|
+
)
|
|
289
293
|
from .cli import JPLOT_VERSION
|
|
290
294
|
|
|
291
295
|
if not isinstance(figure_cfg, dict):
|
|
292
296
|
return
|
|
297
|
+
# Do not load the source dataframe just to discover that no agent
|
|
298
|
+
# digest was requested. This matters after rendering releases the
|
|
299
|
+
# last layer's source data.
|
|
300
|
+
root_config = getattr(self.yaml, "config", {}) or {}
|
|
301
|
+
root_output = root_config.get("output", {}) if isinstance(root_config, dict) else {}
|
|
302
|
+
if parse_agent_output(figure_cfg, root_output=root_output) is None:
|
|
303
|
+
return
|
|
293
304
|
# Prefer raw YAML figure block (pre type-expand may have type: fields).
|
|
294
305
|
# After expand_figure_types, config figures are already expanded; still OK.
|
|
295
306
|
df = load_figure_source_dataframe(self, figure_cfg)
|
|
@@ -5,6 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
import json
|
|
6
6
|
import textwrap
|
|
7
7
|
from pathlib import Path
|
|
8
|
+
from types import SimpleNamespace
|
|
8
9
|
|
|
9
10
|
import numpy as np
|
|
10
11
|
|
|
@@ -18,6 +19,30 @@ from jarvisplot.client import main
|
|
|
18
19
|
from jarvisplot.diagnostics import DiagnosticBag
|
|
19
20
|
|
|
20
21
|
|
|
22
|
+
def test_render_skips_agent_digest_source_load_when_not_requested(monkeypatch):
|
|
23
|
+
from jarvisplot.core import JarvisPLOT
|
|
24
|
+
|
|
25
|
+
core = JarvisPLOT()
|
|
26
|
+
core.yaml = SimpleNamespace(config={"output": {}})
|
|
27
|
+
core.logger = SimpleNamespace(warning=lambda *args, **kwargs: None)
|
|
28
|
+
|
|
29
|
+
def fail_if_source_is_loaded(*args, **kwargs):
|
|
30
|
+
raise AssertionError("agent digest source should not load when disabled")
|
|
31
|
+
|
|
32
|
+
monkeypatch.setattr(
|
|
33
|
+
"jarvisplot.agent_digest.load_figure_source_dataframe",
|
|
34
|
+
fail_if_source_is_loaded,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
core._maybe_write_agent_digest(
|
|
38
|
+
{
|
|
39
|
+
"name": "plain_plot",
|
|
40
|
+
"layers": [{"data": [{"source": "samples"}]}],
|
|
41
|
+
},
|
|
42
|
+
SimpleNamespace(),
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
21
46
|
def test_strip_digest_axes_stash_removes_key(tmp_path):
|
|
22
47
|
from jarvisplot.agent_digest import strip_digest_axes_stash
|
|
23
48
|
|
|
@@ -716,6 +716,39 @@ def test_colorbar_manual_y_ticks_override_auto_ticks(axc_name):
|
|
|
716
716
|
plt.close(fig.fig)
|
|
717
717
|
|
|
718
718
|
|
|
719
|
+
def test_main_axis_manual_log_x_ticks_are_applied_and_preserved():
|
|
720
|
+
positions = [0.1, 1.0, 5.0]
|
|
721
|
+
labels = ["0.1", "1", "5"]
|
|
722
|
+
|
|
723
|
+
fig = Figure()
|
|
724
|
+
fig.logger = _logger()
|
|
725
|
+
fig.frame = {
|
|
726
|
+
"figure": {"figsize": (2, 2)},
|
|
727
|
+
"ax": {
|
|
728
|
+
"labels": {"x": "", "y": ""},
|
|
729
|
+
"xlim": [0.1, 5.0],
|
|
730
|
+
"ylim": [0.1, 5.0],
|
|
731
|
+
"xscale": "log",
|
|
732
|
+
"yscale": "linear",
|
|
733
|
+
"ticks": {"x": {"positions": positions, "labels": labels}},
|
|
734
|
+
},
|
|
735
|
+
}
|
|
736
|
+
fig.fig = plt.figure(figsize=(2, 2))
|
|
737
|
+
fig.axes = {}
|
|
738
|
+
fig.ax = {"rect": [0.1, 0.1, 0.8, 0.8]}
|
|
739
|
+
|
|
740
|
+
fig.render()
|
|
741
|
+
fig.fig.canvas.draw()
|
|
742
|
+
|
|
743
|
+
np.testing.assert_allclose(fig.ax.xaxis.get_majorticklocs(), positions)
|
|
744
|
+
assert [label.get_text() for label in fig.ax.get_xticklabels()] == labels
|
|
745
|
+
assert all(
|
|
746
|
+
not tick.label1.get_visible() and not tick.label2.get_visible()
|
|
747
|
+
for tick in fig.ax.xaxis.get_minor_ticks()
|
|
748
|
+
)
|
|
749
|
+
plt.close(fig.fig)
|
|
750
|
+
|
|
751
|
+
|
|
719
752
|
@pytest.mark.parametrize("ax_type", ["rect", "tri"])
|
|
720
753
|
def test_render_layer_does_not_mutate_layer_data(monkeypatch, ax_type):
|
|
721
754
|
original_data = object()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|