chronaxis 0.1.0.dev0__py3-none-any.whl
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.
- chronaxis/__init__.py +72 -0
- chronaxis/__main__.py +12 -0
- chronaxis/analysis_cli.py +181 -0
- chronaxis/batch/__init__.py +14 -0
- chronaxis/batch/api.py +46 -0
- chronaxis/batch/cli.py +48 -0
- chronaxis/batch/config.py +37 -0
- chronaxis/batch/models.py +202 -0
- chronaxis/batch/process_transport.py +149 -0
- chronaxis/batch/process_tree.py +72 -0
- chronaxis/batch/publication.py +41 -0
- chronaxis/batch/runner.py +236 -0
- chronaxis/batch/templates.py +42 -0
- chronaxis/can_dependencies.py +42 -0
- chronaxis/cli.py +193 -0
- chronaxis/configuration/__init__.py +46 -0
- chronaxis/configuration/cli.py +41 -0
- chronaxis/configuration/diagnostics.py +107 -0
- chronaxis/configuration/explanation.py +233 -0
- chronaxis/configuration/file_tools.py +140 -0
- chronaxis/configuration/imports.py +144 -0
- chronaxis/configuration/initialization.py +36 -0
- chronaxis/configuration/json_parser.py +114 -0
- chronaxis/configuration/models.py +74 -0
- chronaxis/configuration/origins.py +90 -0
- chronaxis/configuration/overrides.py +55 -0
- chronaxis/configuration/resolution.py +150 -0
- chronaxis/configuration/template_catalog.py +68 -0
- chronaxis/configuration/templates/batch/analysis-annotated.yaml +18 -0
- chronaxis/configuration/templates/batch/analysis-minimal.yaml +18 -0
- chronaxis/configuration/templates/batch/annotated.yaml +6 -0
- chronaxis/configuration/templates/batch/minimal.yaml +6 -0
- chronaxis/configuration/templates/can-asc/annotated.yaml +18 -0
- chronaxis/configuration/templates/can-asc/minimal.yaml +18 -0
- chronaxis/configuration/templates/can-blf/annotated.yaml +18 -0
- chronaxis/configuration/templates/can-blf/minimal.yaml +18 -0
- chronaxis/configuration/templates/can-export/annotated.yaml +23 -0
- chronaxis/configuration/templates/can-export/minimal.yaml +23 -0
- chronaxis/configuration/templates/catalog.json +233 -0
- chronaxis/configuration/templates/charge-session/annotated.yaml +38 -0
- chronaxis/configuration/templates/charge-session/minimal.yaml +38 -0
- chronaxis/configuration/templates/command-response/annotated.yaml +32 -0
- chronaxis/configuration/templates/command-response/minimal.yaml +36 -0
- chronaxis/configuration/templates/fault-window/annotated.yaml +25 -0
- chronaxis/configuration/templates/fault-window/minimal.yaml +27 -0
- chronaxis/configuration/templates/ini-mapping/annotated.yaml +20 -0
- chronaxis/configuration/templates/ini-mapping/minimal.yaml +20 -0
- chronaxis/configuration/templates/raw-can-csv/annotated.yaml +34 -0
- chronaxis/configuration/templates/raw-can-csv/minimal.yaml +35 -0
- chronaxis/configuration/templates/shared/charge-session.asc +5 -0
- chronaxis/configuration/templates/shared/command-response.asc +8 -0
- chronaxis/configuration/templates/shared/fault-window.asc +5 -0
- chronaxis/configuration/templates/shared/power.asc +7 -0
- chronaxis/configuration/templates/shared/sample.asc +6 -0
- chronaxis/configuration/templates/shared/sample.blf +0 -0
- chronaxis/configuration/templates/shared/sample.csv +5 -0
- chronaxis/configuration/templates/shared/sample.dbc +11 -0
- chronaxis/configuration/templates/shared/signals.csv +6 -0
- chronaxis/configuration/templates/shared/source.ini +5 -0
- chronaxis/configuration/templates/shared/stability.asc +9 -0
- chronaxis/configuration/templates/shared/teaching.dbc +27 -0
- chronaxis/configuration/templates/shared/threshold.asc +7 -0
- chronaxis/configuration/templates/signal-csv/annotated.yaml +27 -0
- chronaxis/configuration/templates/signal-csv/minimal.yaml +27 -0
- chronaxis/configuration/templates/signal-export/annotated.yaml +27 -0
- chronaxis/configuration/templates/signal-export/minimal.yaml +29 -0
- chronaxis/configuration/templates/stability/annotated.yaml +35 -0
- chronaxis/configuration/templates/stability/minimal.yaml +35 -0
- chronaxis/configuration/templates/threshold/annotated.yaml +22 -0
- chronaxis/configuration/templates/threshold/minimal.yaml +22 -0
- chronaxis/configuration/yaml_parser.py +125 -0
- chronaxis/core/__init__.py +71 -0
- chronaxis/core/binding.py +449 -0
- chronaxis/core/calculation_series_join.py +106 -0
- chronaxis/core/calculations.py +435 -0
- chronaxis/core/calculations_memory_numpy.py +136 -0
- chronaxis/core/calculations_memory_reference.py +165 -0
- chronaxis/core/calculations_numpy.py +298 -0
- chronaxis/core/calculations_reference.py +294 -0
- chronaxis/core/condition_evidence.py +182 -0
- chronaxis/core/conditional_integral_result.py +43 -0
- chronaxis/core/conditional_integral_terms.py +146 -0
- chronaxis/core/conditional_integral_terms_numpy.py +148 -0
- chronaxis/core/conditional_integral_terms_reference.py +111 -0
- chronaxis/core/conditional_time_reduction.py +118 -0
- chronaxis/core/conditional_time_reduction_numpy.py +223 -0
- chronaxis/core/conditional_time_reduction_reference.py +213 -0
- chronaxis/core/declarations.py +192 -0
- chronaxis/core/decoded_binding.py +197 -0
- chronaxis/core/direct_message.py +387 -0
- chronaxis/core/export_interpolation.py +54 -0
- chronaxis/core/expression.py +642 -0
- chronaxis/core/expression_numpy.py +314 -0
- chronaxis/core/expression_reference.py +272 -0
- chronaxis/core/integral_result.py +53 -0
- chronaxis/core/integral_sum.py +77 -0
- chronaxis/core/integral_sum_numpy.py +224 -0
- chronaxis/core/integral_sum_reference.py +148 -0
- chronaxis/core/integral_terms.py +119 -0
- chronaxis/core/integral_terms_numpy.py +127 -0
- chronaxis/core/integral_terms_reference.py +91 -0
- chronaxis/core/mean_weights_numpy.py +29 -0
- chronaxis/core/mean_weights_reference.py +27 -0
- chronaxis/core/message_binding.py +305 -0
- chronaxis/core/models.py +485 -0
- chronaxis/core/normalize_numpy.py +396 -0
- chronaxis/core/numeric.py +472 -0
- chronaxis/core/numeric_numpy.py +440 -0
- chronaxis/core/record_intervals.py +115 -0
- chronaxis/core/sample_reduction.py +161 -0
- chronaxis/core/sample_reduction_numpy.py +160 -0
- chronaxis/core/sample_reduction_reference.py +154 -0
- chronaxis/core/selection.py +74 -0
- chronaxis/core/sequence.py +160 -0
- chronaxis/core/sequence_reference.py +248 -0
- chronaxis/core/stability.py +249 -0
- chronaxis/core/start_end.py +169 -0
- chronaxis/core/state.py +494 -0
- chronaxis/core/state_numpy.py +296 -0
- chronaxis/core/temporal.py +373 -0
- chronaxis/core/temporal_clock.py +25 -0
- chronaxis/core/temporal_memory_numpy.py +163 -0
- chronaxis/core/temporal_memory_reference.py +161 -0
- chronaxis/core/temporal_numpy.py +345 -0
- chronaxis/core/temporal_reference.py +304 -0
- chronaxis/core/time_reduction.py +190 -0
- chronaxis/core/time_reduction_numpy.py +205 -0
- chronaxis/core/time_reduction_reference.py +203 -0
- chronaxis/core/types.py +105 -0
- chronaxis/core/units.py +81 -0
- chronaxis/core/validation.py +94 -0
- chronaxis/core/window_delta.py +123 -0
- chronaxis/core/window_delta_numpy.py +78 -0
- chronaxis/core/window_delta_reference.py +69 -0
- chronaxis/core/windows.py +224 -0
- chronaxis/core/windows_numpy.py +78 -0
- chronaxis/core/windows_reference.py +61 -0
- chronaxis/execution/__init__.py +6 -0
- chronaxis/execution/batch_signal_groups.py +122 -0
- chronaxis/execution/bindings.py +296 -0
- chronaxis/execution/boundaries.py +568 -0
- chronaxis/execution/calculation_blocks.py +338 -0
- chronaxis/execution/calculation_values.py +55 -0
- chronaxis/execution/can_batch_reader.py +356 -0
- chronaxis/execution/can_reader.py +948 -0
- chronaxis/execution/can_reference_template.py +61 -0
- chronaxis/execution/condition_evidence.py +370 -0
- chronaxis/execution/conditional_integral_facts.py +310 -0
- chronaxis/execution/conditional_integral_reduction.py +216 -0
- chronaxis/execution/csv_observation.py +524 -0
- chronaxis/execution/csv_reader.py +662 -0
- chronaxis/execution/current_message_calculation.py +225 -0
- chronaxis/execution/driver_expression.py +274 -0
- chronaxis/execution/expressions.py +618 -0
- chronaxis/execution/frame_capture.py +245 -0
- chronaxis/execution/groups.py +236 -0
- chronaxis/execution/historical_conditional_blocks.py +264 -0
- chronaxis/execution/historical_conditional_integral.py +226 -0
- chronaxis/execution/historical_conditional_time_calculation.py +368 -0
- chronaxis/execution/historical_integral.py +219 -0
- chronaxis/execution/historical_observation.py +372 -0
- chronaxis/execution/historical_sample_calculation.py +338 -0
- chronaxis/execution/historical_selection_rows.py +300 -0
- chronaxis/execution/historical_time_calculation.py +341 -0
- chronaxis/execution/history.py +572 -0
- chronaxis/execution/history_records.py +225 -0
- chronaxis/execution/hold.py +448 -0
- chronaxis/execution/integral_facts.py +311 -0
- chronaxis/execution/integral_reduction.py +216 -0
- chronaxis/execution/legacy_frame_samples.py +94 -0
- chronaxis/execution/memory_reader.py +247 -0
- chronaxis/execution/message_bindings.py +293 -0
- chronaxis/execution/message_delivery.py +37 -0
- chronaxis/execution/observed_ingestion.py +551 -0
- chronaxis/execution/raw_signal_groups.py +192 -0
- chronaxis/execution/record_alarm_duration.py +114 -0
- chronaxis/execution/record_delta_condition.py +167 -0
- chronaxis/execution/record_diagnostics.py +87 -0
- chronaxis/execution/record_event_durations.py +143 -0
- chronaxis/execution/record_export_samples.py +94 -0
- chronaxis/execution/record_exports.py +155 -0
- chronaxis/execution/record_integral.py +196 -0
- chronaxis/execution/record_point_buffer.py +101 -0
- chronaxis/execution/record_rule_timeline.py +344 -0
- chronaxis/execution/record_sample.py +46 -0
- chronaxis/execution/record_sample_series.py +29 -0
- chronaxis/execution/record_scope_calculations.py +290 -0
- chronaxis/execution/record_selection.py +62 -0
- chronaxis/execution/record_sequences.py +199 -0
- chronaxis/execution/record_session_calculations.py +778 -0
- chronaxis/execution/record_signal_export.py +133 -0
- chronaxis/execution/record_source_cursor.py +295 -0
- chronaxis/execution/record_time_calculation.py +322 -0
- chronaxis/execution/record_time_indexes.py +143 -0
- chronaxis/execution/record_value_history.py +160 -0
- chronaxis/execution/record_windows.py +229 -0
- chronaxis/execution/required_expression.py +52 -0
- chronaxis/execution/retained_metadata.py +71 -0
- chronaxis/execution/run_session.py +402 -0
- chronaxis/execution/scanned_signal_proof.py +550 -0
- chronaxis/execution/signal_validity.py +40 -0
- chronaxis/execution/state.py +280 -0
- chronaxis/execution/temporal_buffer.py +508 -0
- chronaxis/execution/text_can_reader.py +359 -0
- chronaxis/execution/timeline.py +309 -0
- chronaxis/execution/timeline_multi.py +415 -0
- chronaxis/execution/window_delta_events.py +220 -0
- chronaxis/execution/window_replay.py +350 -0
- chronaxis/execution/windows.py +173 -0
- chronaxis/guide/README.md +70 -0
- chronaxis/guide/api/AnalysisError.md +14 -0
- chronaxis/guide/api/AnalysisPlan.md +96 -0
- chronaxis/guide/api/AnalysisResult.md +398 -0
- chronaxis/guide/api/AnalysisRunner.md +155 -0
- chronaxis/guide/api/BatchJob.md +19 -0
- chronaxis/guide/api/BatchJobResult.md +61 -0
- chronaxis/guide/api/BatchPlan.md +48 -0
- chronaxis/guide/api/BatchReport.md +108 -0
- chronaxis/guide/api/BatchRunner.md +84 -0
- chronaxis/guide/api/OutputManifest.md +23 -0
- chronaxis/guide/api/PlanFragment.md +47 -0
- chronaxis/guide/api/PlanValidationError.md +98 -0
- chronaxis/guide/api/PresetSpec.md +63 -0
- chronaxis/guide/api/ResultClosedError.md +14 -0
- chronaxis/guide/api/RunMetadata.md +100 -0
- chronaxis/guide/api/TimeConversion.md +29 -0
- chronaxis/guide/api/TimeOverflowError.md +17 -0
- chronaxis/guide/api/build_preset.md +36 -0
- chronaxis/guide/api/checked_add_ns.md +30 -0
- chronaxis/guide/api/convert_time.md +40 -0
- chronaxis/guide/api/explain_analysis_plan.md +38 -0
- chronaxis/guide/api/index.json +185 -0
- chronaxis/guide/api/load_analysis_plan.md +34 -0
- chronaxis/guide/api/load_batch_plan.md +36 -0
- chronaxis/guide/api/parse_datetime_ns.md +35 -0
- chronaxis/guide/api/parse_duration.md +30 -0
- chronaxis/guide/api/resolve_preset_roles.md +37 -0
- chronaxis/guide/api/run_batch.md +38 -0
- chronaxis/guide/api/shift_times_reference.md +33 -0
- chronaxis/guide/api/time_deltas_reference.md +37 -0
- chronaxis/guide/api/validate_analysis_plan.md +38 -0
- chronaxis/guide/en/README.md +74 -0
- chronaxis/guide/en/api/AnalysisError.md +14 -0
- chronaxis/guide/en/api/AnalysisPlan.md +93 -0
- chronaxis/guide/en/api/AnalysisResult.md +398 -0
- chronaxis/guide/en/api/AnalysisRunner.md +191 -0
- chronaxis/guide/en/api/BatchJob.md +17 -0
- chronaxis/guide/en/api/BatchJobResult.md +43 -0
- chronaxis/guide/en/api/BatchPlan.md +37 -0
- chronaxis/guide/en/api/BatchReport.md +52 -0
- chronaxis/guide/en/api/BatchRunner.md +51 -0
- chronaxis/guide/en/api/OutputManifest.md +23 -0
- chronaxis/guide/en/api/PlanFragment.md +33 -0
- chronaxis/guide/en/api/PlanValidationError.md +58 -0
- chronaxis/guide/en/api/PresetSpec.md +51 -0
- chronaxis/guide/en/api/ResultClosedError.md +14 -0
- chronaxis/guide/en/api/RunMetadata.md +100 -0
- chronaxis/guide/en/api/TimeConversion.md +23 -0
- chronaxis/guide/en/api/TimeOverflowError.md +14 -0
- chronaxis/guide/en/api/build_preset.md +23 -0
- chronaxis/guide/en/api/checked_add_ns.md +21 -0
- chronaxis/guide/en/api/convert_time.md +25 -0
- chronaxis/guide/en/api/explain_analysis_plan.md +30 -0
- chronaxis/guide/en/api/index.json +185 -0
- chronaxis/guide/en/api/load_analysis_plan.md +27 -0
- chronaxis/guide/en/api/load_batch_plan.md +28 -0
- chronaxis/guide/en/api/parse_datetime_ns.md +23 -0
- chronaxis/guide/en/api/parse_duration.md +20 -0
- chronaxis/guide/en/api/resolve_preset_roles.md +23 -0
- chronaxis/guide/en/api/run_batch.md +39 -0
- chronaxis/guide/en/api/shift_times_reference.md +21 -0
- chronaxis/guide/en/api/time_deltas_reference.md +22 -0
- chronaxis/guide/en/api/validate_analysis_plan.md +29 -0
- chronaxis/guide/en/fields/analysis/calculations-all-1.json +345 -0
- chronaxis/guide/en/fields/analysis/calculations-all-2.json +300 -0
- chronaxis/guide/en/fields/analysis/calculations-all-3.json +84 -0
- chronaxis/guide/en/fields/analysis/config_version-all-1.json +24 -0
- chronaxis/guide/en/fields/analysis/dataset-all-1.json +344 -0
- chronaxis/guide/en/fields/analysis/derived-all-1.json +147 -0
- chronaxis/guide/en/fields/analysis/diagnostics-all-1.json +69 -0
- chronaxis/guide/en/fields/analysis/execution-all-1.json +167 -0
- chronaxis/guide/en/fields/analysis/imports-all-1.json +39 -0
- chronaxis/guide/en/fields/analysis/intervals-all-1.json +173 -0
- chronaxis/guide/en/fields/analysis/message_calculations-all-1.json +345 -0
- chronaxis/guide/en/fields/analysis/message_calculations-all-2.json +270 -0
- chronaxis/guide/en/fields/analysis/metadata-all-1.json +24 -0
- chronaxis/guide/en/fields/analysis/outputs-all-1.json +332 -0
- chronaxis/guide/en/fields/analysis/outputs-all-2.json +319 -0
- chronaxis/guide/en/fields/analysis/outputs-all-3.json +321 -0
- chronaxis/guide/en/fields/analysis/outputs-all-4.json +236 -0
- chronaxis/guide/en/fields/analysis/outputs-all-5.json +246 -0
- chronaxis/guide/en/fields/analysis/outputs-all-6.json +214 -0
- chronaxis/guide/en/fields/analysis/overrides-all-1.json +104 -0
- chronaxis/guide/en/fields/analysis/presets-charge_session-1.json +398 -0
- chronaxis/guide/en/fields/analysis/presets-charge_session-2.json +114 -0
- chronaxis/guide/en/fields/analysis/presets-command_response-1.json +376 -0
- chronaxis/guide/en/fields/analysis/presets-fault_context-1.json +285 -0
- chronaxis/guide/en/fields/analysis/presets-threshold_excursion-1.json +317 -0
- chronaxis/guide/en/fields/analysis/rules-condition_duration-1.json +344 -0
- chronaxis/guide/en/fields/analysis/rules-condition_duration-2.json +27 -0
- chronaxis/guide/en/fields/analysis/rules-debounce-1.json +335 -0
- chronaxis/guide/en/fields/analysis/rules-falling_edge-1.json +317 -0
- chronaxis/guide/en/fields/analysis/rules-hysteresis-1.json +334 -0
- chronaxis/guide/en/fields/analysis/rules-hysteresis-2.json +27 -0
- chronaxis/guide/en/fields/analysis/rules-rising_edge-1.json +317 -0
- chronaxis/guide/en/fields/analysis/rules-start_end-1.json +333 -0
- chronaxis/guide/en/fields/analysis/rules-start_end-2.json +60 -0
- chronaxis/guide/en/fields/analysis/rules-start_only-1.json +334 -0
- chronaxis/guide/en/fields/analysis/rules-window_delta-1.json +338 -0
- chronaxis/guide/en/fields/analysis/rules-window_delta-2.json +96 -0
- chronaxis/guide/en/fields/analysis/sequences-all-1.json +378 -0
- chronaxis/guide/en/fields/analysis/sequences-all-2.json +70 -0
- chronaxis/guide/en/fields/analysis/signals-variant-1-1.json +349 -0
- chronaxis/guide/en/fields/analysis/signals-variant-1-2.json +297 -0
- chronaxis/guide/en/fields/analysis/signals-variant-1-3.json +323 -0
- chronaxis/guide/en/fields/analysis/signals-variant-1-4.json +192 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-1.json +327 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-2.json +312 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-3.json +294 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-4.json +253 -0
- chronaxis/guide/en/fields/analysis/signals-variant-2-5.json +44 -0
- chronaxis/guide/en/fields/analysis/sources-can_asc-1.json +318 -0
- chronaxis/guide/en/fields/analysis/sources-can_asc-2.json +310 -0
- chronaxis/guide/en/fields/analysis/sources-can_asc-3.json +311 -0
- chronaxis/guide/en/fields/analysis/sources-can_asc-4.json +69 -0
- chronaxis/guide/en/fields/analysis/sources-can_blf-1.json +317 -0
- chronaxis/guide/en/fields/analysis/sources-can_blf-2.json +310 -0
- chronaxis/guide/en/fields/analysis/sources-can_blf-3.json +317 -0
- chronaxis/guide/en/fields/analysis/sources-memory-1.json +332 -0
- chronaxis/guide/en/fields/analysis/sources-memory-2.json +125 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-1.json +330 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-10.json +233 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-11.json +225 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-12.json +228 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-13.json +226 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-14.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-15.json +227 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-16.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-17.json +238 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-18.json +239 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-19.json +233 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-2.json +310 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-20.json +242 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-21.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-22.json +228 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-23.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-24.json +223 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-25.json +290 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-26.json +131 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-3.json +297 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-4.json +226 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-5.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-6.json +227 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-7.json +230 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-8.json +238 -0
- chronaxis/guide/en/fields/analysis/sources-raw_can_csv-9.json +239 -0
- chronaxis/guide/en/fields/analysis/sources-signal_csv-1.json +331 -0
- chronaxis/guide/en/fields/analysis/sources-signal_csv-2.json +307 -0
- chronaxis/guide/en/fields/analysis/sources-signal_csv-3.json +315 -0
- chronaxis/guide/en/fields/analysis/sources-variant-6-1.json +319 -0
- chronaxis/guide/en/fields/analysis/sources-variant-6-2.json +307 -0
- chronaxis/guide/en/fields/analysis/sources-variant-6-3.json +312 -0
- chronaxis/guide/en/fields/analysis/sources-variant-6-4.json +113 -0
- chronaxis/guide/en/fields/analysis/windows-all-1.json +361 -0
- chronaxis/guide/en/fields/analysis/windows-all-2.json +187 -0
- chronaxis/guide/en/fields/batch/backend-all-1.json +26 -0
- chronaxis/guide/en/fields/batch/batch_version-all-1.json +22 -0
- chronaxis/guide/en/fields/batch/fail_fast-all-1.json +22 -0
- chronaxis/guide/en/fields/batch/inputs-all-1.json +161 -0
- chronaxis/guide/en/fields/batch/jobs-all-1.json +58 -0
- chronaxis/guide/en/fields/batch/process_count-all-1.json +23 -0
- chronaxis/guide/en/fields/batch/source-all-1.json +22 -0
- chronaxis/guide/en/fields/batch/template-all-1.json +22 -0
- chronaxis/guide/en/fields/definitions/derived-all-1.json +121 -0
- chronaxis/guide/en/fields/definitions/signals-all-1.json +336 -0
- chronaxis/guide/en/fields/definitions/signals-all-2.json +307 -0
- chronaxis/guide/en/fields/definitions/signals-all-3.json +290 -0
- chronaxis/guide/en/fields/definitions/signals-all-4.json +347 -0
- chronaxis/guide/en/fields/definitions/signals-all-5.json +297 -0
- chronaxis/guide/en/fields/definitions/signals-all-6.json +259 -0
- chronaxis/guide/en/fields/definitions/signals-all-7.json +117 -0
- chronaxis/guide/en/fields/definitions/sources-all-1.json +332 -0
- chronaxis/guide/en/fields/definitions/sources-all-10.json +306 -0
- chronaxis/guide/en/fields/definitions/sources-all-11.json +294 -0
- chronaxis/guide/en/fields/definitions/sources-all-12.json +212 -0
- chronaxis/guide/en/fields/definitions/sources-all-13.json +217 -0
- chronaxis/guide/en/fields/definitions/sources-all-14.json +213 -0
- chronaxis/guide/en/fields/definitions/sources-all-15.json +214 -0
- chronaxis/guide/en/fields/definitions/sources-all-16.json +215 -0
- chronaxis/guide/en/fields/definitions/sources-all-17.json +213 -0
- chronaxis/guide/en/fields/definitions/sources-all-18.json +214 -0
- chronaxis/guide/en/fields/definitions/sources-all-19.json +213 -0
- chronaxis/guide/en/fields/definitions/sources-all-2.json +323 -0
- chronaxis/guide/en/fields/definitions/sources-all-20.json +217 -0
- chronaxis/guide/en/fields/definitions/sources-all-21.json +210 -0
- chronaxis/guide/en/fields/definitions/sources-all-22.json +214 -0
- chronaxis/guide/en/fields/definitions/sources-all-23.json +218 -0
- chronaxis/guide/en/fields/definitions/sources-all-24.json +209 -0
- chronaxis/guide/en/fields/definitions/sources-all-25.json +215 -0
- chronaxis/guide/en/fields/definitions/sources-all-26.json +218 -0
- chronaxis/guide/en/fields/definitions/sources-all-27.json +224 -0
- chronaxis/guide/en/fields/definitions/sources-all-28.json +215 -0
- chronaxis/guide/en/fields/definitions/sources-all-29.json +205 -0
- chronaxis/guide/en/fields/definitions/sources-all-3.json +303 -0
- chronaxis/guide/en/fields/definitions/sources-all-30.json +298 -0
- chronaxis/guide/en/fields/definitions/sources-all-31.json +315 -0
- chronaxis/guide/en/fields/definitions/sources-all-32.json +306 -0
- chronaxis/guide/en/fields/definitions/sources-all-33.json +209 -0
- chronaxis/guide/en/fields/definitions/sources-all-4.json +336 -0
- chronaxis/guide/en/fields/definitions/sources-all-5.json +299 -0
- chronaxis/guide/en/fields/definitions/sources-all-6.json +307 -0
- chronaxis/guide/en/fields/definitions/sources-all-7.json +320 -0
- chronaxis/guide/en/fields/definitions/sources-all-8.json +303 -0
- chronaxis/guide/en/fields/definitions/sources-all-9.json +315 -0
- chronaxis/guide/en/fields/index.json +3450 -0
- chronaxis/guide/en/fields/mapping/aliases-all-1.json +91 -0
- chronaxis/guide/en/fields/mapping/analysis-all-1.json +382 -0
- chronaxis/guide/en/fields/mapping/analysis-all-10.json +301 -0
- chronaxis/guide/en/fields/mapping/analysis-all-11.json +312 -0
- chronaxis/guide/en/fields/mapping/analysis-all-12.json +311 -0
- chronaxis/guide/en/fields/mapping/analysis-all-13.json +314 -0
- chronaxis/guide/en/fields/mapping/analysis-all-14.json +310 -0
- chronaxis/guide/en/fields/mapping/analysis-all-15.json +297 -0
- chronaxis/guide/en/fields/mapping/analysis-all-16.json +226 -0
- chronaxis/guide/en/fields/mapping/analysis-all-17.json +230 -0
- chronaxis/guide/en/fields/mapping/analysis-all-18.json +227 -0
- chronaxis/guide/en/fields/mapping/analysis-all-19.json +230 -0
- chronaxis/guide/en/fields/mapping/analysis-all-2.json +323 -0
- chronaxis/guide/en/fields/mapping/analysis-all-20.json +221 -0
- chronaxis/guide/en/fields/mapping/analysis-all-21.json +237 -0
- chronaxis/guide/en/fields/mapping/analysis-all-22.json +233 -0
- chronaxis/guide/en/fields/mapping/analysis-all-23.json +222 -0
- chronaxis/guide/en/fields/mapping/analysis-all-24.json +231 -0
- chronaxis/guide/en/fields/mapping/analysis-all-25.json +225 -0
- chronaxis/guide/en/fields/mapping/analysis-all-26.json +230 -0
- chronaxis/guide/en/fields/mapping/analysis-all-27.json +228 -0
- chronaxis/guide/en/fields/mapping/analysis-all-28.json +230 -0
- chronaxis/guide/en/fields/mapping/analysis-all-29.json +223 -0
- chronaxis/guide/en/fields/mapping/analysis-all-3.json +318 -0
- chronaxis/guide/en/fields/mapping/analysis-all-30.json +233 -0
- chronaxis/guide/en/fields/mapping/analysis-all-31.json +218 -0
- chronaxis/guide/en/fields/mapping/analysis-all-32.json +239 -0
- chronaxis/guide/en/fields/mapping/analysis-all-33.json +233 -0
- chronaxis/guide/en/fields/mapping/analysis-all-34.json +225 -0
- chronaxis/guide/en/fields/mapping/analysis-all-35.json +228 -0
- chronaxis/guide/en/fields/mapping/analysis-all-36.json +226 -0
- chronaxis/guide/en/fields/mapping/analysis-all-37.json +244 -0
- chronaxis/guide/en/fields/mapping/analysis-all-38.json +326 -0
- chronaxis/guide/en/fields/mapping/analysis-all-39.json +299 -0
- chronaxis/guide/en/fields/mapping/analysis-all-4.json +297 -0
- chronaxis/guide/en/fields/mapping/analysis-all-40.json +311 -0
- chronaxis/guide/en/fields/mapping/analysis-all-41.json +310 -0
- chronaxis/guide/en/fields/mapping/analysis-all-42.json +346 -0
- chronaxis/guide/en/fields/mapping/analysis-all-43.json +267 -0
- chronaxis/guide/en/fields/mapping/analysis-all-44.json +327 -0
- chronaxis/guide/en/fields/mapping/analysis-all-45.json +279 -0
- chronaxis/guide/en/fields/mapping/analysis-all-46.json +327 -0
- chronaxis/guide/en/fields/mapping/analysis-all-47.json +312 -0
- chronaxis/guide/en/fields/mapping/analysis-all-48.json +294 -0
- chronaxis/guide/en/fields/mapping/analysis-all-49.json +253 -0
- chronaxis/guide/en/fields/mapping/analysis-all-5.json +312 -0
- chronaxis/guide/en/fields/mapping/analysis-all-50.json +346 -0
- chronaxis/guide/en/fields/mapping/analysis-all-51.json +324 -0
- chronaxis/guide/en/fields/mapping/analysis-all-52.json +335 -0
- chronaxis/guide/en/fields/mapping/analysis-all-53.json +317 -0
- chronaxis/guide/en/fields/mapping/analysis-all-54.json +316 -0
- chronaxis/guide/en/fields/mapping/analysis-all-55.json +302 -0
- chronaxis/guide/en/fields/mapping/analysis-all-56.json +319 -0
- chronaxis/guide/en/fields/mapping/analysis-all-57.json +334 -0
- chronaxis/guide/en/fields/mapping/analysis-all-58.json +333 -0
- chronaxis/guide/en/fields/mapping/analysis-all-59.json +359 -0
- chronaxis/guide/en/fields/mapping/analysis-all-6.json +327 -0
- chronaxis/guide/en/fields/mapping/analysis-all-60.json +303 -0
- chronaxis/guide/en/fields/mapping/analysis-all-61.json +326 -0
- chronaxis/guide/en/fields/mapping/analysis-all-62.json +301 -0
- chronaxis/guide/en/fields/mapping/analysis-all-63.json +326 -0
- chronaxis/guide/en/fields/mapping/analysis-all-64.json +367 -0
- chronaxis/guide/en/fields/mapping/analysis-all-65.json +334 -0
- chronaxis/guide/en/fields/mapping/analysis-all-66.json +358 -0
- chronaxis/guide/en/fields/mapping/analysis-all-67.json +349 -0
- chronaxis/guide/en/fields/mapping/analysis-all-68.json +331 -0
- chronaxis/guide/en/fields/mapping/analysis-all-69.json +304 -0
- chronaxis/guide/en/fields/mapping/analysis-all-7.json +303 -0
- chronaxis/guide/en/fields/mapping/analysis-all-70.json +349 -0
- chronaxis/guide/en/fields/mapping/analysis-all-71.json +288 -0
- chronaxis/guide/en/fields/mapping/analysis-all-72.json +316 -0
- chronaxis/guide/en/fields/mapping/analysis-all-73.json +266 -0
- chronaxis/guide/en/fields/mapping/analysis-all-74.json +227 -0
- chronaxis/guide/en/fields/mapping/analysis-all-75.json +239 -0
- chronaxis/guide/en/fields/mapping/analysis-all-76.json +274 -0
- chronaxis/guide/en/fields/mapping/analysis-all-77.json +380 -0
- chronaxis/guide/en/fields/mapping/analysis-all-78.json +313 -0
- chronaxis/guide/en/fields/mapping/analysis-all-79.json +338 -0
- chronaxis/guide/en/fields/mapping/analysis-all-8.json +292 -0
- chronaxis/guide/en/fields/mapping/analysis-all-80.json +304 -0
- chronaxis/guide/en/fields/mapping/analysis-all-81.json +140 -0
- chronaxis/guide/en/fields/mapping/analysis-all-9.json +332 -0
- chronaxis/guide/en/fields/mapping/io_policy-all-1.json +19 -0
- chronaxis/guide/en/fields/mapping/mapping_version-all-1.json +19 -0
- chronaxis/guide/en/fields/mapping/path_base-all-1.json +19 -0
- chronaxis/guide/en/fields/mapping/sections-all-1.json +402 -0
- chronaxis/guide/en/fields/mapping/sections-all-2.json +232 -0
- chronaxis/guide/en/semantics.md +70 -0
- chronaxis/guide/en/tasks.json +290 -0
- chronaxis/guide/en/workflow.md +41 -0
- chronaxis/guide/examples/analysis-imports.yaml +22 -0
- chronaxis/guide/examples/analysis.yaml +23 -0
- chronaxis/guide/examples/batch-minimal.yaml +3 -0
- chronaxis/guide/examples/conditional-energy.yaml +36 -0
- chronaxis/guide/examples/data/activity.csv +6 -0
- chronaxis/guide/examples/data/can/activity.asc +11 -0
- chronaxis/guide/examples/data/can/calculation-minimal.asc +6 -0
- chronaxis/guide/examples/data/can/conditional-energy/part-1.asc +92 -0
- chronaxis/guide/examples/data/can/conditional-energy/part-2.asc +36 -0
- chronaxis/guide/examples/data/can/conditional-energy/signals.dbc +10 -0
- chronaxis/guide/examples/data/can/execution-comparison.asc +12 -0
- chronaxis/guide/examples/data/can/execution-report.asc +4 -0
- chronaxis/guide/examples/data/can/expression-extended.asc +11 -0
- chronaxis/guide/examples/data/can/interval-actual.asc +6 -0
- chronaxis/guide/examples/data/can/preset-charge-energy.asc +15 -0
- chronaxis/guide/examples/data/can/preset-charge-minimal.asc +11 -0
- chronaxis/guide/examples/data/can/preset-command-automatic.asc +11 -0
- chronaxis/guide/examples/data/can/preset-fault-context.asc +7 -0
- chronaxis/guide/examples/data/can/preset-threshold-delay.asc +7 -0
- chronaxis/guide/examples/data/can/preset-threshold-partial.asc +7 -0
- chronaxis/guide/examples/data/can/quality.asc +6 -0
- chronaxis/guide/examples/data/can/quickstart-parts/part1.asc +4 -0
- chronaxis/guide/examples/data/can/quickstart-parts/part2.asc +3 -0
- chronaxis/guide/examples/data/can/quickstart.asc +6 -0
- chronaxis/guide/examples/data/can/rule-condition_duration-extended.asc +35 -0
- chronaxis/guide/examples/data/can/rule-condition_duration-minimal.asc +19 -0
- chronaxis/guide/examples/data/can/rule-debounce-extended.asc +19 -0
- chronaxis/guide/examples/data/can/rule-falling_edge-extended.asc +35 -0
- chronaxis/guide/examples/data/can/rule-hysteresis-extended.asc +19 -0
- chronaxis/guide/examples/data/can/rule-start_end-extended.asc +35 -0
- chronaxis/guide/examples/data/can/rule-start_only-extended.asc +19 -0
- chronaxis/guide/examples/data/can/rule-window_delta-extended.asc +19 -0
- chronaxis/guide/examples/data/can/sequence-outcomes.asc +19 -0
- chronaxis/guide/examples/data/can/signal-types.asc +13 -0
- chronaxis/guide/examples/data/can/start-end.asc +30 -0
- chronaxis/guide/examples/data/can/teaching-base.asc +58 -0
- chronaxis/guide/examples/data/can/teaching.dbc +53 -0
- chronaxis/guide/examples/data/joint-current.csv +5 -0
- chronaxis/guide/examples/data/joint.asc +5 -0
- chronaxis/guide/examples/data/joint.dbc +7 -0
- chronaxis/guide/examples/data/message-clean.asc +6 -0
- chronaxis/guide/examples/data/message-direction.asc +7 -0
- chronaxis/guide/examples/data/message-direction.dbc +7 -0
- chronaxis/guide/examples/data/power.blf +0 -0
- chronaxis/guide/examples/data/power.dbc +6 -0
- chronaxis/guide/examples/data/quality.csv +5 -0
- chronaxis/guide/examples/data/raw-can-example.csv +5 -0
- chronaxis/guide/examples/data/signal-types.csv +5 -0
- chronaxis/guide/examples/data/signals.csv +6 -0
- chronaxis/guide/examples/data/timing.asc +6 -0
- chronaxis/guide/examples/data/timing.dbc +11 -0
- chronaxis/guide/examples/export-can-minimal.yaml +24 -0
- chronaxis/guide/examples/input-csv-minimal.yaml +23 -0
- chronaxis/guide/examples/preset-charge-energy.yaml +41 -0
- chronaxis/guide/examples/preset-charge-minimal.yaml +31 -0
- chronaxis/guide/examples/preset-fault-context.yaml +27 -0
- chronaxis/guide/examples/quality.yaml +19 -0
- chronaxis/guide/examples/sequence-outcomes.yaml +39 -0
- chronaxis/guide/examples/shared/definitions.yaml +14 -0
- chronaxis/guide/examples/signal-enum-minimal.yaml +19 -0
- chronaxis/guide/examples/signal-number-conversion.yaml +24 -0
- chronaxis/guide/examples/window-merged.yaml +28 -0
- chronaxis/guide/fields/analysis/calculations-all-1.json +360 -0
- chronaxis/guide/fields/analysis/calculations-all-2.json +299 -0
- chronaxis/guide/fields/analysis/calculations-all-3.json +70 -0
- chronaxis/guide/fields/analysis/config_version-all-1.json +24 -0
- chronaxis/guide/fields/analysis/dataset-all-1.json +344 -0
- chronaxis/guide/fields/analysis/derived-all-1.json +147 -0
- chronaxis/guide/fields/analysis/diagnostics-all-1.json +69 -0
- chronaxis/guide/fields/analysis/execution-all-1.json +167 -0
- chronaxis/guide/fields/analysis/imports-all-1.json +39 -0
- chronaxis/guide/fields/analysis/intervals-all-1.json +173 -0
- chronaxis/guide/fields/analysis/message_calculations-all-1.json +360 -0
- chronaxis/guide/fields/analysis/message_calculations-all-2.json +255 -0
- chronaxis/guide/fields/analysis/metadata-all-1.json +24 -0
- chronaxis/guide/fields/analysis/outputs-all-1.json +349 -0
- chronaxis/guide/fields/analysis/outputs-all-2.json +302 -0
- chronaxis/guide/fields/analysis/outputs-all-3.json +321 -0
- chronaxis/guide/fields/analysis/outputs-all-4.json +253 -0
- chronaxis/guide/fields/analysis/outputs-all-5.json +244 -0
- chronaxis/guide/fields/analysis/outputs-all-6.json +199 -0
- chronaxis/guide/fields/analysis/overrides-all-1.json +104 -0
- chronaxis/guide/fields/analysis/presets-charge_session-1.json +398 -0
- chronaxis/guide/fields/analysis/presets-charge_session-2.json +114 -0
- chronaxis/guide/fields/analysis/presets-command_response-1.json +376 -0
- chronaxis/guide/fields/analysis/presets-fault_context-1.json +285 -0
- chronaxis/guide/fields/analysis/presets-threshold_excursion-1.json +317 -0
- chronaxis/guide/fields/analysis/rules-condition_duration-1.json +344 -0
- chronaxis/guide/fields/analysis/rules-condition_duration-2.json +27 -0
- chronaxis/guide/fields/analysis/rules-debounce-1.json +335 -0
- chronaxis/guide/fields/analysis/rules-falling_edge-1.json +317 -0
- chronaxis/guide/fields/analysis/rules-hysteresis-1.json +334 -0
- chronaxis/guide/fields/analysis/rules-hysteresis-2.json +27 -0
- chronaxis/guide/fields/analysis/rules-rising_edge-1.json +317 -0
- chronaxis/guide/fields/analysis/rules-start_end-1.json +349 -0
- chronaxis/guide/fields/analysis/rules-start_end-2.json +44 -0
- chronaxis/guide/fields/analysis/rules-start_only-1.json +334 -0
- chronaxis/guide/fields/analysis/rules-window_delta-1.json +356 -0
- chronaxis/guide/fields/analysis/rules-window_delta-2.json +78 -0
- chronaxis/guide/fields/analysis/sequences-all-1.json +394 -0
- chronaxis/guide/fields/analysis/sequences-all-2.json +54 -0
- chronaxis/guide/fields/analysis/signals-variant-1-1.json +349 -0
- chronaxis/guide/fields/analysis/signals-variant-1-2.json +297 -0
- chronaxis/guide/fields/analysis/signals-variant-1-3.json +340 -0
- chronaxis/guide/fields/analysis/signals-variant-1-4.json +175 -0
- chronaxis/guide/fields/analysis/signals-variant-2-1.json +327 -0
- chronaxis/guide/fields/analysis/signals-variant-2-2.json +335 -0
- chronaxis/guide/fields/analysis/signals-variant-2-3.json +289 -0
- chronaxis/guide/fields/analysis/signals-variant-2-4.json +270 -0
- chronaxis/guide/fields/analysis/sources-can_asc-1.json +318 -0
- chronaxis/guide/fields/analysis/sources-can_asc-2.json +310 -0
- chronaxis/guide/fields/analysis/sources-can_asc-3.json +311 -0
- chronaxis/guide/fields/analysis/sources-can_asc-4.json +69 -0
- chronaxis/guide/fields/analysis/sources-can_blf-1.json +317 -0
- chronaxis/guide/fields/analysis/sources-can_blf-2.json +310 -0
- chronaxis/guide/fields/analysis/sources-can_blf-3.json +317 -0
- chronaxis/guide/fields/analysis/sources-memory-1.json +347 -0
- chronaxis/guide/fields/analysis/sources-memory-2.json +110 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-1.json +330 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-10.json +233 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-11.json +225 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-12.json +228 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-13.json +226 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-14.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-15.json +227 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-16.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-17.json +238 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-18.json +239 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-19.json +233 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-2.json +310 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-20.json +242 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-21.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-22.json +228 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-23.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-24.json +223 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-25.json +290 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-26.json +131 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-3.json +297 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-4.json +226 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-5.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-6.json +227 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-7.json +230 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-8.json +238 -0
- chronaxis/guide/fields/analysis/sources-raw_can_csv-9.json +239 -0
- chronaxis/guide/fields/analysis/sources-signal_csv-1.json +331 -0
- chronaxis/guide/fields/analysis/sources-signal_csv-2.json +327 -0
- chronaxis/guide/fields/analysis/sources-signal_csv-3.json +295 -0
- chronaxis/guide/fields/analysis/sources-variant-6-1.json +319 -0
- chronaxis/guide/fields/analysis/sources-variant-6-2.json +327 -0
- chronaxis/guide/fields/analysis/sources-variant-6-3.json +314 -0
- chronaxis/guide/fields/analysis/sources-variant-6-4.json +91 -0
- chronaxis/guide/fields/analysis/windows-all-1.json +361 -0
- chronaxis/guide/fields/analysis/windows-all-2.json +187 -0
- chronaxis/guide/fields/batch/backend-all-1.json +26 -0
- chronaxis/guide/fields/batch/batch_version-all-1.json +22 -0
- chronaxis/guide/fields/batch/fail_fast-all-1.json +22 -0
- chronaxis/guide/fields/batch/inputs-all-1.json +161 -0
- chronaxis/guide/fields/batch/jobs-all-1.json +58 -0
- chronaxis/guide/fields/batch/process_count-all-1.json +23 -0
- chronaxis/guide/fields/batch/source-all-1.json +22 -0
- chronaxis/guide/fields/batch/template-all-1.json +22 -0
- chronaxis/guide/fields/definitions/derived-all-1.json +121 -0
- chronaxis/guide/fields/definitions/signals-all-1.json +336 -0
- chronaxis/guide/fields/definitions/signals-all-2.json +307 -0
- chronaxis/guide/fields/definitions/signals-all-3.json +305 -0
- chronaxis/guide/fields/definitions/signals-all-4.json +352 -0
- chronaxis/guide/fields/definitions/signals-all-5.json +311 -0
- chronaxis/guide/fields/definitions/signals-all-6.json +254 -0
- chronaxis/guide/fields/definitions/signals-all-7.json +88 -0
- chronaxis/guide/fields/definitions/sources-all-1.json +332 -0
- chronaxis/guide/fields/definitions/sources-all-10.json +307 -0
- chronaxis/guide/fields/definitions/sources-all-11.json +280 -0
- chronaxis/guide/fields/definitions/sources-all-12.json +209 -0
- chronaxis/guide/fields/definitions/sources-all-13.json +219 -0
- chronaxis/guide/fields/definitions/sources-all-14.json +213 -0
- chronaxis/guide/fields/definitions/sources-all-15.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-16.json +232 -0
- chronaxis/guide/fields/definitions/sources-all-17.json +213 -0
- chronaxis/guide/fields/definitions/sources-all-18.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-19.json +217 -0
- chronaxis/guide/fields/definitions/sources-all-2.json +336 -0
- chronaxis/guide/fields/definitions/sources-all-20.json +228 -0
- chronaxis/guide/fields/definitions/sources-all-21.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-22.json +232 -0
- chronaxis/guide/fields/definitions/sources-all-23.json +213 -0
- chronaxis/guide/fields/definitions/sources-all-24.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-25.json +217 -0
- chronaxis/guide/fields/definitions/sources-all-26.json +228 -0
- chronaxis/guide/fields/definitions/sources-all-27.json +212 -0
- chronaxis/guide/fields/definitions/sources-all-28.json +217 -0
- chronaxis/guide/fields/definitions/sources-all-29.json +227 -0
- chronaxis/guide/fields/definitions/sources-all-3.json +306 -0
- chronaxis/guide/fields/definitions/sources-all-30.json +333 -0
- chronaxis/guide/fields/definitions/sources-all-31.json +302 -0
- chronaxis/guide/fields/definitions/sources-all-32.json +319 -0
- chronaxis/guide/fields/definitions/sources-all-33.json +89 -0
- chronaxis/guide/fields/definitions/sources-all-4.json +336 -0
- chronaxis/guide/fields/definitions/sources-all-5.json +313 -0
- chronaxis/guide/fields/definitions/sources-all-6.json +292 -0
- chronaxis/guide/fields/definitions/sources-all-7.json +319 -0
- chronaxis/guide/fields/definitions/sources-all-8.json +315 -0
- chronaxis/guide/fields/definitions/sources-all-9.json +318 -0
- chronaxis/guide/fields/index.json +3432 -0
- chronaxis/guide/fields/mapping/aliases-all-1.json +91 -0
- chronaxis/guide/fields/mapping/analysis-all-1.json +382 -0
- chronaxis/guide/fields/mapping/analysis-all-10.json +307 -0
- chronaxis/guide/fields/mapping/analysis-all-11.json +311 -0
- chronaxis/guide/fields/mapping/analysis-all-12.json +329 -0
- chronaxis/guide/fields/mapping/analysis-all-13.json +294 -0
- chronaxis/guide/fields/mapping/analysis-all-14.json +311 -0
- chronaxis/guide/fields/mapping/analysis-all-15.json +280 -0
- chronaxis/guide/fields/mapping/analysis-all-16.json +227 -0
- chronaxis/guide/fields/mapping/analysis-all-17.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-18.json +221 -0
- chronaxis/guide/fields/mapping/analysis-all-19.json +237 -0
- chronaxis/guide/fields/mapping/analysis-all-2.json +342 -0
- chronaxis/guide/fields/mapping/analysis-all-20.json +233 -0
- chronaxis/guide/fields/mapping/analysis-all-21.json +244 -0
- chronaxis/guide/fields/mapping/analysis-all-22.json +228 -0
- chronaxis/guide/fields/mapping/analysis-all-23.json +226 -0
- chronaxis/guide/fields/mapping/analysis-all-24.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-25.json +227 -0
- chronaxis/guide/fields/mapping/analysis-all-26.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-27.json +221 -0
- chronaxis/guide/fields/mapping/analysis-all-28.json +237 -0
- chronaxis/guide/fields/mapping/analysis-all-29.json +233 -0
- chronaxis/guide/fields/mapping/analysis-all-3.json +322 -0
- chronaxis/guide/fields/mapping/analysis-all-30.json +244 -0
- chronaxis/guide/fields/mapping/analysis-all-31.json +228 -0
- chronaxis/guide/fields/mapping/analysis-all-32.json +226 -0
- chronaxis/guide/fields/mapping/analysis-all-33.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-34.json +227 -0
- chronaxis/guide/fields/mapping/analysis-all-35.json +230 -0
- chronaxis/guide/fields/mapping/analysis-all-36.json +221 -0
- chronaxis/guide/fields/mapping/analysis-all-37.json +291 -0
- chronaxis/guide/fields/mapping/analysis-all-38.json +315 -0
- chronaxis/guide/fields/mapping/analysis-all-39.json +304 -0
- chronaxis/guide/fields/mapping/analysis-all-4.json +312 -0
- chronaxis/guide/fields/mapping/analysis-all-40.json +307 -0
- chronaxis/guide/fields/mapping/analysis-all-41.json +292 -0
- chronaxis/guide/fields/mapping/analysis-all-42.json +333 -0
- chronaxis/guide/fields/mapping/analysis-all-43.json +296 -0
- chronaxis/guide/fields/mapping/analysis-all-44.json +322 -0
- chronaxis/guide/fields/mapping/analysis-all-45.json +298 -0
- chronaxis/guide/fields/mapping/analysis-all-46.json +347 -0
- chronaxis/guide/fields/mapping/analysis-all-47.json +302 -0
- chronaxis/guide/fields/mapping/analysis-all-48.json +263 -0
- chronaxis/guide/fields/mapping/analysis-all-49.json +301 -0
- chronaxis/guide/fields/mapping/analysis-all-5.json +313 -0
- chronaxis/guide/fields/mapping/analysis-all-50.json +336 -0
- chronaxis/guide/fields/mapping/analysis-all-51.json +335 -0
- chronaxis/guide/fields/mapping/analysis-all-52.json +335 -0
- chronaxis/guide/fields/mapping/analysis-all-53.json +334 -0
- chronaxis/guide/fields/mapping/analysis-all-54.json +339 -0
- chronaxis/guide/fields/mapping/analysis-all-55.json +335 -0
- chronaxis/guide/fields/mapping/analysis-all-56.json +336 -0
- chronaxis/guide/fields/mapping/analysis-all-57.json +335 -0
- chronaxis/guide/fields/mapping/analysis-all-58.json +333 -0
- chronaxis/guide/fields/mapping/analysis-all-59.json +325 -0
- chronaxis/guide/fields/mapping/analysis-all-6.json +323 -0
- chronaxis/guide/fields/mapping/analysis-all-60.json +334 -0
- chronaxis/guide/fields/mapping/analysis-all-61.json +311 -0
- chronaxis/guide/fields/mapping/analysis-all-62.json +289 -0
- chronaxis/guide/fields/mapping/analysis-all-63.json +383 -0
- chronaxis/guide/fields/mapping/analysis-all-64.json +357 -0
- chronaxis/guide/fields/mapping/analysis-all-65.json +375 -0
- chronaxis/guide/fields/mapping/analysis-all-66.json +351 -0
- chronaxis/guide/fields/mapping/analysis-all-67.json +346 -0
- chronaxis/guide/fields/mapping/analysis-all-68.json +317 -0
- chronaxis/guide/fields/mapping/analysis-all-69.json +313 -0
- chronaxis/guide/fields/mapping/analysis-all-7.json +306 -0
- chronaxis/guide/fields/mapping/analysis-all-70.json +326 -0
- chronaxis/guide/fields/mapping/analysis-all-71.json +316 -0
- chronaxis/guide/fields/mapping/analysis-all-72.json +264 -0
- chronaxis/guide/fields/mapping/analysis-all-73.json +228 -0
- chronaxis/guide/fields/mapping/analysis-all-74.json +241 -0
- chronaxis/guide/fields/mapping/analysis-all-75.json +273 -0
- chronaxis/guide/fields/mapping/analysis-all-76.json +382 -0
- chronaxis/guide/fields/mapping/analysis-all-77.json +328 -0
- chronaxis/guide/fields/mapping/analysis-all-78.json +338 -0
- chronaxis/guide/fields/mapping/analysis-all-79.json +304 -0
- chronaxis/guide/fields/mapping/analysis-all-8.json +309 -0
- chronaxis/guide/fields/mapping/analysis-all-80.json +140 -0
- chronaxis/guide/fields/mapping/analysis-all-9.json +329 -0
- chronaxis/guide/fields/mapping/io_policy-all-1.json +19 -0
- chronaxis/guide/fields/mapping/mapping_version-all-1.json +19 -0
- chronaxis/guide/fields/mapping/path_base-all-1.json +19 -0
- chronaxis/guide/fields/mapping/sections-all-1.json +402 -0
- chronaxis/guide/fields/mapping/sections-all-2.json +232 -0
- chronaxis/guide/lookup.py +90 -0
- chronaxis/guide/manifest.json +614 -0
- chronaxis/guide/run_analysis.py +34 -0
- chronaxis/guide/schemas/analysis.schema.json +8451 -0
- chronaxis/guide/schemas/batch-v1.schema.json +172 -0
- chronaxis/guide/schemas/definitions.schema.json +29 -0
- chronaxis/guide/schemas/legacy-import-v1.schema.json +143 -0
- chronaxis/guide/semantics.md +62 -0
- chronaxis/guide/tasks.json +290 -0
- chronaxis/guide/workflow.md +38 -0
- chronaxis/legacy/__init__.py +46 -0
- chronaxis/legacy/batch_read.py +412 -0
- chronaxis/legacy/batch_validation.py +134 -0
- chronaxis/legacy/batch_wire.py +264 -0
- chronaxis/legacy/batch_worker.py +417 -0
- chronaxis/legacy/binding.py +154 -0
- chronaxis/legacy/dbc_cycles.py +47 -0
- chronaxis/legacy/decode_policy.py +28 -0
- chronaxis/legacy/disjunction.py +79 -0
- chronaxis/legacy/export_worker.py +147 -0
- chronaxis/legacy/export_write.py +378 -0
- chronaxis/legacy/message_store.py +562 -0
- chronaxis/legacy/process_read.py +526 -0
- chronaxis/legacy/raw_store.py +341 -0
- chronaxis/legacy/records.py +709 -0
- chronaxis/legacy/required_records.py +122 -0
- chronaxis/legacy/sum.py +403 -0
- chronaxis/legacy/sum_numpy.py +43 -0
- chronaxis/legacy/updates.py +277 -0
- chronaxis/legacy/vendor/sclicer_functions_v1/can_processor.py +138 -0
- chronaxis/legacy/vendor/sclicer_functions_v1/file_processor.py +218 -0
- chronaxis/legacy/vendor/sclicer_functions_v1/utils.py +447 -0
- chronaxis/legacy/worker.py +352 -0
- chronaxis/migration/__init__.py +11 -0
- chronaxis/migration/api.py +270 -0
- chronaxis/migration/ini.py +110 -0
- chronaxis/migration/legacy_sum.py +304 -0
- chronaxis/migration/models.py +83 -0
- chronaxis/migration/publication.py +230 -0
- chronaxis/migration/sclicer.py +241 -0
- chronaxis/migration/slope.py +78 -0
- chronaxis/migration/start_end.py +48 -0
- chronaxis/planning/__init__.py +19 -0
- chronaxis/planning/channels.py +30 -0
- chronaxis/planning/checks.py +447 -0
- chronaxis/planning/config_groups.py +215 -0
- chronaxis/planning/dbc_defaults.py +88 -0
- chronaxis/planning/export_options.py +247 -0
- chronaxis/planning/input_defaults.py +62 -0
- chronaxis/planning/input_paths.py +124 -0
- chronaxis/planning/input_requirements.py +250 -0
- chronaxis/planning/inputs.py +306 -0
- chronaxis/planning/intervals.py +242 -0
- chronaxis/planning/legacy_execution.py +38 -0
- chronaxis/planning/message_calculations.py +171 -0
- chronaxis/planning/models.py +369 -0
- chronaxis/planning/nodes.py +355 -0
- chronaxis/planning/plan.py +294 -0
- chronaxis/planning/preset_models.py +211 -0
- chronaxis/planning/record_execution.py +76 -0
- chronaxis/planning/reports.py +523 -0
- chronaxis/planning/sequences.py +91 -0
- chronaxis/planning/signal_groups.py +61 -0
- chronaxis/planning/signal_validity.py +46 -0
- chronaxis/planning/text_inputs.py +110 -0
- chronaxis/presets.py +270 -0
- chronaxis/results/__init__.py +34 -0
- chronaxis/results/analysis_outcome.py +67 -0
- chronaxis/results/artifact_exports.py +212 -0
- chronaxis/results/binding_metadata.py +54 -0
- chronaxis/results/budget.py +138 -0
- chronaxis/results/can_metadata.py +247 -0
- chronaxis/results/codec.py +246 -0
- chronaxis/results/errors.py +25 -0
- chronaxis/results/export_files.py +216 -0
- chronaxis/results/frame_exports.py +299 -0
- chronaxis/results/frame_patch.py +186 -0
- chronaxis/results/frame_rebuild.py +458 -0
- chronaxis/results/frame_sort.py +223 -0
- chronaxis/results/input_diagnostics.py +51 -0
- chronaxis/results/manifest.py +343 -0
- chronaxis/results/merge_runs.py +207 -0
- chronaxis/results/owned_directory.py +32 -0
- chronaxis/results/raw_exports.py +689 -0
- chronaxis/results/readable.py +355 -0
- chronaxis/results/readable_format.py +94 -0
- chronaxis/results/result.py +734 -0
- chronaxis/results/rows.py +57 -0
- chronaxis/results/signal_exports.py +209 -0
- chronaxis/results/signal_grid.py +219 -0
- chronaxis/results/spool.py +421 -0
- chronaxis/results/summary.py +350 -0
- chronaxis/results/text_can_metadata.py +64 -0
- chronaxis/results/threshold_metadata.py +105 -0
- chronaxis/runner.py +121 -0
- chronaxis/sources/__init__.py +23 -0
- chronaxis/sources/asc.py +412 -0
- chronaxis/sources/blf.py +101 -0
- chronaxis/sources/can_spec.py +179 -0
- chronaxis/sources/can_updates.py +160 -0
- chronaxis/sources/csv_spec.py +133 -0
- chronaxis/sources/descriptions.py +65 -0
- chronaxis/sources/memory.py +299 -0
- chronaxis/sources/models.py +497 -0
- chronaxis/sources/packing.py +170 -0
- chronaxis/sources/protocol.py +221 -0
- chronaxis/sources/raw_can.py +62 -0
- chronaxis/sources/raw_csv.py +470 -0
- chronaxis/sources/raw_csv_layout.py +310 -0
- chronaxis/sources/signal_csv.py +608 -0
- chronaxis/sources/text_can_decode.py +421 -0
- chronaxis/sources/text_can_ref.py +48 -0
- chronaxis/sources/text_can_spec.py +61 -0
- chronaxis/timebase/__init__.py +19 -0
- chronaxis/timebase/conversion.py +364 -0
- chronaxis/timebase/numpy_ops.py +104 -0
- chronaxis/user_guide.py +81 -0
- chronaxis-0.1.0.dev0.dist-info/METADATA +172 -0
- chronaxis-0.1.0.dev0.dist-info/RECORD +917 -0
- chronaxis-0.1.0.dev0.dist-info/WHEEL +5 -0
- chronaxis-0.1.0.dev0.dist-info/entry_points.txt +2 -0
- chronaxis-0.1.0.dev0.dist-info/licenses/LICENSE +21 -0
- chronaxis-0.1.0.dev0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# AnalysisRunner
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import AnalysisRunner`
|
|
4
|
+
|
|
5
|
+
<a id="api-AnalysisRunner"></a>
|
|
6
|
+
## `AnalysisRunner`
|
|
7
|
+
|
|
8
|
+
Configures execution of one analysis. backend can override the plan; run creates independent resources and returns an AnalysisResult that must be closed. A runner can normally be reused while each result is managed separately.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
AnalysisRunner(backend=None)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
<a id="api-AnalysisRunner-__init__"></a>
|
|
17
|
+
### `AnalysisRunner.__init__`
|
|
18
|
+
|
|
19
|
+
Selects an optional plan-backend override without reading source or configuration files.
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
AnalysisRunner.__init__(backend=None)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
#### Parameters
|
|
26
|
+
|
|
27
|
+
| Name | Type | Required | Default | Purpose, choices, and effect |
|
|
28
|
+
|---|---|---|---|---|
|
|
29
|
+
|`backend`|str | None|No|None|Positional or keyword. "reference" selects independent reference calculations; "numpy" selects NumPy array calculations. None uses the plan setting.|
|
|
30
|
+
|
|
31
|
+
#### Returns
|
|
32
|
+
|
|
33
|
+
None; initializes the instance.
|
|
34
|
+
|
|
35
|
+
#### Raises
|
|
36
|
+
|
|
37
|
+
TypeError for a non-string override; ValueError for an unknown backend.
|
|
38
|
+
|
|
39
|
+
Exact diagnostics reported directly by this function (Chinese text is retained):
|
|
40
|
+
|
|
41
|
+
- `TypeError`: `AnalysisRunner backend需要reference、numpy或None。` — backend must be reference, numpy, or None.
|
|
42
|
+
- `ValueError`: `AnalysisRunner仅支持reference与numpy后端。` — only reference and numpy are supported.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
<a id="api-AnalysisRunner-backend"></a>
|
|
46
|
+
### `AnalysisRunner.backend`
|
|
47
|
+
|
|
48
|
+
Reads the constructor override, not the effective backend of a plan that has not yet run.
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
AnalysisRunner.backend
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Decorators: `property`.
|
|
55
|
+
|
|
56
|
+
Read this as a property, without calling parentheses.
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
#### Parameter notes
|
|
60
|
+
|
|
61
|
+
None.
|
|
62
|
+
|
|
63
|
+
#### Returns
|
|
64
|
+
|
|
65
|
+
None/reference/numpy.
|
|
66
|
+
|
|
67
|
+
#### Raises
|
|
68
|
+
|
|
69
|
+
None.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
<a id="api-AnalysisRunner-validate"></a>
|
|
73
|
+
### `AnalysisRunner.validate`
|
|
74
|
+
|
|
75
|
+
Reports declaration validity and available execution paths without reading analysis data.
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
AnalysisRunner.validate(plan)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### Parameters
|
|
82
|
+
|
|
83
|
+
| Name | Type | Required | Default | Purpose, choices, and effect |
|
|
84
|
+
|---|---|---|---|---|
|
|
85
|
+
|`plan`|AnalysisPlan|Yes|None|Positional or keyword. An AnalysisPlan built with load_analysis_plan("analysis.yaml") or AnalysisPlan.from_dict(config). A filename string is not accepted here.|
|
|
86
|
+
|
|
87
|
+
#### Returns
|
|
88
|
+
|
|
89
|
+
The shared ValidationReport, retaining warnings about actual fields/ranges that have not been verified.
|
|
90
|
+
|
|
91
|
+
#### Raises
|
|
92
|
+
|
|
93
|
+
TypeError if plan is not AnalysisPlan or its execution model is invalid. Ordinary static problems appear in ValidationReport.errors; execution_ready reports execution capability. Inputs are not read, so an empty errors list does not verify real logs.
|
|
94
|
+
|
|
95
|
+
#### Side effects
|
|
96
|
+
|
|
97
|
+
No source I/O or directory creation.
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
<a id="api-AnalysisRunner-explain"></a>
|
|
101
|
+
### `AnalysisRunner.explain`
|
|
102
|
+
|
|
103
|
+
Lists dependencies, per-node backends, history requirements, and declared budgets without starting analysis.
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
AnalysisRunner.explain(plan)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### Parameters
|
|
110
|
+
|
|
111
|
+
| Name | Type | Required | Default | Purpose, choices, and effect |
|
|
112
|
+
|---|---|---|---|---|
|
|
113
|
+
|`plan`|AnalysisPlan|Yes|None|Positional or keyword. An AnalysisPlan built with load_analysis_plan("analysis.yaml") or AnalysisPlan.from_dict(config). A filename string is not accepted here.|
|
|
114
|
+
|
|
115
|
+
#### Returns
|
|
116
|
+
|
|
117
|
+
ExplainReport; plan_identity retains the original declaration identity.
|
|
118
|
+
|
|
119
|
+
#### Raises
|
|
120
|
+
|
|
121
|
+
TypeError for an invalid plan or execution type. Manually corrupted typed references can cause AttributeError/KeyError; rebuild a valid plan through from_dict/load_analysis_plan. This method does not open CSV/DBC or measure runtime/memory.
|
|
122
|
+
|
|
123
|
+
#### Side effects
|
|
124
|
+
|
|
125
|
+
Does not read CSV/DBC or measure actual resource use.
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
<a id="api-AnalysisRunner-run"></a>
|
|
129
|
+
### `AnalysisRunner.run`
|
|
130
|
+
|
|
131
|
+
Validates and performs one analysis, closing all inputs before returning an independent AnalysisResult.
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
AnalysisRunner.run(plan, work_dir=None)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
#### Parameters
|
|
138
|
+
|
|
139
|
+
| Name | Type | Required | Default | Purpose, choices, and effect |
|
|
140
|
+
|---|---|---|---|---|
|
|
141
|
+
|`plan`|AnalysisPlan|Yes|None|Positional or keyword. An AnalysisPlan built with load_analysis_plan("analysis.yaml") or AnalysisPlan.from_dict(config). A filename string is not accepted here.|
|
|
142
|
+
|`work_dir`|str | Path | None|No|None|Positional or keyword. Exclusive intermediate-work directory for this run. An explicit path must not exist; old directories are not overwritten. None creates a unique directory automatically.|
|
|
143
|
+
|
|
144
|
+
#### Returns
|
|
145
|
+
|
|
146
|
+
AnalysisResult in analysis_complete state. The caller closes it explicitly or with a context manager; write publishes separately.
|
|
147
|
+
|
|
148
|
+
#### Raises
|
|
149
|
+
|
|
150
|
+
TypeError for an invalid plan; validation/runtime failures raise AnalysisError retaining their cause and diagnostics. KeyboardInterrupt/SystemExit propagate unchanged. If cleanup remains incomplete, retry through runner_cleanup_owner.close.
|
|
151
|
+
|
|
152
|
+
#### Side effects
|
|
153
|
+
|
|
154
|
+
Creates staging for this run and scans sources once; any required subsequent history reads use the new staging. Publication is separate, and the returned result owns its cleanup lifecycle.
|
|
155
|
+
|
|
156
|
+
#### Example
|
|
157
|
+
|
|
158
|
+
```python
|
|
159
|
+
"""Run a YAML plan and stream results; optionally publish to a new directory."""
|
|
160
|
+
import argparse
|
|
161
|
+
from pathlib import Path
|
|
162
|
+
|
|
163
|
+
from chronaxis import AnalysisRunner, load_analysis_plan, validate_analysis_plan
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def main():
|
|
167
|
+
"""Validate, run, and close cursors/results. Return None; preserve error chains."""
|
|
168
|
+
parser = argparse.ArgumentParser(description=__doc__)
|
|
169
|
+
parser.add_argument('plan', nargs='?', type=Path, default=Path(__file__).parent / 'analysis.yaml')
|
|
170
|
+
parser.add_argument('--output', type=Path, help='New output directory; omit to print results only')
|
|
171
|
+
args = parser.parse_args()
|
|
172
|
+
plan = load_analysis_plan(args.plan)
|
|
173
|
+
report = validate_analysis_plan(plan)
|
|
174
|
+
if not report.valid or not report.execution_ready:
|
|
175
|
+
raise RuntimeError(report)
|
|
176
|
+
with AnalysisRunner().run(plan) as result:
|
|
177
|
+
rows = result.iter_calculations()
|
|
178
|
+
try:
|
|
179
|
+
for row in rows:
|
|
180
|
+
print(row.calculation_id, row.value, row.unit, row.status, row.reason)
|
|
181
|
+
finally:
|
|
182
|
+
rows.close()
|
|
183
|
+
if args.output is not None:
|
|
184
|
+
manifest = result.write(args.output)
|
|
185
|
+
print(manifest)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
if __name__ == '__main__':
|
|
189
|
+
main()
|
|
190
|
+
|
|
191
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# BatchJob
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import BatchJob`
|
|
4
|
+
|
|
5
|
+
<a id="api-BatchJob"></a>
|
|
6
|
+
## `BatchJob`
|
|
7
|
+
|
|
8
|
+
Declare one independent analysis. Continuous files from the same session belong in one plan within this job.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
BatchJob(job_id: str, plan: chronaxis.planning.plan.AnalysisPlan | pathlib.Path) -> None
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Field | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `job_id` | str | Required | Unique job name within the batch, such as `test_a`, used for output directories and report lookup. Names differing only in case are not allowed. |
|
|
17
|
+
| `plan` | AnalysisPlan | Path | Required | Plan object or pathlib.Path, such as `Path("analysis.yaml")`. A bare string is not accepted by the direct constructor. Path-based plans load when the job actually starts. |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# BatchJobResult
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import BatchJobResult`
|
|
4
|
+
|
|
5
|
+
<a id="api-BatchJobResult"></a>
|
|
6
|
+
## `BatchJobResult`
|
|
7
|
+
|
|
8
|
+
Store a job's final state. If cleanup fails after publication, status remains `failed` and the published path is retained.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
BatchJobResult(job_id: str, status: str, plan_path: str | None = None, plan_identity: str | None = None, dataset_id: str | None = None, entity_id: str | None = None, session_id: str | None = None, input_identity: str | None = None, run_id: str | None = None, output_dir: pathlib.Path | None = None, error_type: str | None = None, error_message: str | None = None, error_chain: tuple[str, ...] = (), elapsed_seconds: float = 0.0, memory_budget_bytes: int | None = None, worker_pid: int | None = None, recovery: chronaxis.batch.models.CleanupHandle | None = None) -> None
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Field | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `job_id` | str | Required | Original job identity. |
|
|
17
|
+
| `status` | str | Required | `completed`: analysis, publication, and cleanup all succeeded. `failed`: any stage failed; inspect diagnostics. `cancelled`: cancellation or fail_fast prevented further execution. Failure and cancellation are distinct. |
|
|
18
|
+
| `plan_path` | str | None | Optional; None | Absolute original plan-file path. Normally None when an AnalysisPlan was supplied directly. |
|
|
19
|
+
| `plan_identity` | str | None | Optional; None | Obtained plan's declaration identity, not an input-content hash. None when the file plan is not yet loaded or failed to load. |
|
|
20
|
+
| `dataset_id` | str | None | Optional; None | Obtained plan's `dataset.name`; None if not loaded or loading failed. The result property remains named `dataset_id`. |
|
|
21
|
+
| `entity_id` | str | None | Optional; None | Optional `dataset.entity`, falling back to `dataset.name`; None if no plan was obtained. |
|
|
22
|
+
| `session_id` | str | None | Optional; None | Optional `dataset.session`, falling back to `dataset.name`; None if no plan was obtained. |
|
|
23
|
+
| `input_identity` | str | None | Optional; None | Input-summary identity returned by AnalysisRunner. None if no result was returned or no summary was requested; successful runs may also have None. |
|
|
24
|
+
| `run_id` | str | None | Optional; None | Run ID when AnalysisRunner returned a result. None if failure/cancellation occurred before that. |
|
|
25
|
+
| `output_dir` | Path | None | Optional; None | Formal directory after successful publication. Retained if subsequent cleanup fails, while status is failed. |
|
|
26
|
+
| `error_type` | str | None | Optional; None | Exception class or `not_started` cancellation marker. None on completion; read with status and error_chain. |
|
|
27
|
+
| `error_message` | str | None | Optional; None | Specific failure/cancellation explanation; None on completion. Causes and cleanup notes are in error_chain. |
|
|
28
|
+
| `error_chain` | tuple[str, ...] | Optional; () | Cause chain and cleanup notes, retaining error origin. |
|
|
29
|
+
| `elapsed_seconds` | float | Optional; 0.0 | Job wall-clock seconds, including publication and cleanup, not CPU time. |
|
|
30
|
+
| `memory_budget_bytes` | int | None | Optional; None | Obtained plan's new-analysis-layer budget in bytes. None when no plan was loaded, not zero bytes. |
|
|
31
|
+
| `worker_pid` | int | None | Optional; None | PID of the analysis worker that actually executed the job. None for unstarted jobs. Jobs reusing a process may share a PID. |
|
|
32
|
+
| `recovery` | CleanupHandle | None | Optional; None | Handle retained after failed cleanup; call close() to retry. None after normal cleanup. Excluded from JSON. Type link is a Chinese implementation reference. |
|
|
33
|
+
|
|
34
|
+
<a id="api-BatchJobResult-to_dict"></a>
|
|
35
|
+
### `BatchJobResult.to_dict`
|
|
36
|
+
|
|
37
|
+
Convert job status, output directory, and errors to a report dictionary.
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
BatchJobResult.to_dict() -> dict
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
No explicit parameters. Returns a JSON-compatible dict. No documented exceptions; resource objects are not serialized.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# BatchPlan
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import BatchPlan`
|
|
4
|
+
|
|
5
|
+
<a id="api-BatchPlan"></a>
|
|
6
|
+
## `BatchPlan`
|
|
7
|
+
|
|
8
|
+
Store batch configuration for independent plans. Do not split one continuous session into separate time jobs.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
BatchPlan(jobs: tuple[chronaxis.batch.models.BatchJob, ...], process_count: int = 1, fail_fast: bool = False, backend: str | None = None) -> None
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Field | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `jobs` | tuple[BatchJob, ...] | Required | Job tuple, such as `(BatchJob("a", Path("a.yaml")),)`, or loaded from YAML. Its order determines final report order. |
|
|
17
|
+
| `process_count` | int | Optional; 1 | Positive maximum analysis-worker count. Fewer jobs use fewer workers; an empty batch starts none. Excludes the scheduler and CAN reader subprocesses. |
|
|
18
|
+
| `fail_fast` | bool | Optional; False | False continues other independent jobs after failure. True stops new dispatch; started jobs finish through the batch executor's cancellation cleanup. |
|
|
19
|
+
| `backend` | str | None | Optional; None | `reference` uses independent reference calculations; `numpy` uses NumPy arrays. None preserves plan settings. |
|
|
20
|
+
|
|
21
|
+
<a id="api-BatchPlan-from_dict"></a>
|
|
22
|
+
### `BatchPlan.from_dict`
|
|
23
|
+
|
|
24
|
+
Validate batch configuration. Jobs retain paths; templates are read and expanded into file sets.
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
BatchPlan.from_dict(config, *, base_dir=None)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Class method.
|
|
31
|
+
|
|
32
|
+
| Parameter | Type | Required / default | Meaning |
|
|
33
|
+
|---|---|---|---|
|
|
34
|
+
| `config` | dict[str, object] | Required | Positional or keyword. `batch_version=1`; choose either `jobs` or `template` plus `inputs`. Each jobs entry requires plan; omitted name becomes `job_N` by position. Multiple-source templates need `source` to identify the target. Optional process_count, fail_fast, backend. See batch tasks. |
|
|
35
|
+
| `base_dir` | str | Path | None | Optional; None | Keyword-only directory for resolving relative paths. None means the current working directory. |
|
|
36
|
+
|
|
37
|
+
Returns a frozen BatchPlan. Raises `PlanValidationError` identifying invalid fields, duplicate names, missing template inputs, or source ambiguity. Jobs may be empty. Jobs retain plan paths; template mode reads the template, expands inputs, and reads DBC metadata if needed, but does not scan business-message records.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# BatchReport
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import BatchReport`
|
|
4
|
+
|
|
5
|
+
<a id="api-BatchReport"></a>
|
|
6
|
+
## `BatchReport`
|
|
7
|
+
|
|
8
|
+
Summarize results in original job order. Each job's numerical tables remain in its own directory; this report does not combine values across different analysis definitions.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
BatchReport(output_dir: pathlib.Path, jobs: tuple[chronaxis.batch.models.BatchJobResult, ...], process_count: int, fail_fast: bool, cancel_requested: bool, device_label: str, worker_process_count: int = 0, infrastructure_error: str | None = None) -> None
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Field | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `output_dir` | Path | Required | New batch directory; existing targets are not overwritten. |
|
|
17
|
+
| `jobs` | tuple[BatchJobResult, ...] | Required | Final results in declaration order regardless of worker completion order. |
|
|
18
|
+
| `process_count` | int | Required | Configured positive maximum analysis-worker count. Scheduling defaults to 1; direct construction here requires a value. Excludes scheduler and CAN reader subprocesses. Fewer/zero jobs need fewer/zero workers. |
|
|
19
|
+
| `fail_fast` | bool | Required | Whether dispatch stops after observing a failure. |
|
|
20
|
+
| `cancel_requested` | bool | Required | Whether user cancellation or KeyboardInterrupt was observed. |
|
|
21
|
+
| `device_label` | str | Required | Nonempty batch-report source-device label. Only run_batch/BatchRunner.run default this to pending. Does not override child metadata.device_label. |
|
|
22
|
+
| `worker_process_count` | int | Optional; 0 | Actual number of analysis workers started, possibly less than process_count. Zero for an empty or pre-cancelled batch. Excludes CAN reader subprocesses. |
|
|
23
|
+
| `infrastructure_error` | str | None | Optional; None | Scheduler/report-infrastructure error. None means no such error was recorded, not that all jobs succeeded. Inspect each job's status and diagnostics. |
|
|
24
|
+
|
|
25
|
+
<a id="api-BatchReport-status"></a>
|
|
26
|
+
### `BatchReport.status`
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
BatchReport.status: str
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Property: read without parentheses. No parameters. Returns `failed`, `cancelled`, or `completed`, with failure taking precedence. No documented exceptions.
|
|
33
|
+
|
|
34
|
+
<a id="api-BatchReport-to_dict"></a>
|
|
35
|
+
### `BatchReport.to_dict`
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
BatchReport.to_dict() -> dict
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
No explicit parameters. Returns a JSON-compatible dict containing identities and counts. Does not aggregate calculation values. No documented exceptions.
|
|
42
|
+
|
|
43
|
+
<a id="api-BatchReport-close"></a>
|
|
44
|
+
### `BatchReport.close`
|
|
45
|
+
|
|
46
|
+
Retry all unfinished cleanup.
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
BatchReport.close() -> None
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
No explicit parameters. Returns None, not additional calculation values. Raises the first close error after still attempting the other cleanup items.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# BatchRunner
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import BatchRunner`
|
|
4
|
+
|
|
5
|
+
<a id="api-BatchRunner"></a>
|
|
6
|
+
## `BatchRunner`
|
|
7
|
+
|
|
8
|
+
Execute independent jobs with a bounded pool of spawn workers. Continuous files within each job retain their original order.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
BatchRunner(process_count=1, *, fail_fast=False, backend=None)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
<a id="api-BatchRunner-__init__"></a>
|
|
15
|
+
### `BatchRunner.__init__`
|
|
16
|
+
|
|
17
|
+
Configure scheduling without starting workers or reading business data.
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
BatchRunner.__init__(process_count=1, *, fail_fast=False, backend=None)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
| Parameter | Type | Required / default | Meaning |
|
|
24
|
+
|---|---|---|---|
|
|
25
|
+
| `process_count` | int | Optional; 1 | Positional or keyword. Positive maximum analysis-worker count. Fewer jobs need fewer workers; empty batches start none. Excludes scheduler and CAN reader subprocesses. |
|
|
26
|
+
| `fail_fast` | bool | Optional; False | Keyword-only. False continues later jobs after failure; True stops new dispatch after observing failure and waits for started jobs to finish cleanup. |
|
|
27
|
+
| `backend` | str | None | Optional; None | Keyword-only. `reference` or `numpy`; None uses each plan's setting. |
|
|
28
|
+
|
|
29
|
+
The initializer returns None; calling BatchRunner(...) creates the instance. Invalid types, ranges, or backends are rejected. Specific errors include `ValueError` (“process_count需要正原生int。”: requires a positive native int) and `TypeError` (“fail_fast需要bool。”: requires bool).
|
|
30
|
+
|
|
31
|
+
<a id="api-BatchRunner-run"></a>
|
|
32
|
+
### `BatchRunner.run`
|
|
33
|
+
|
|
34
|
+
Run independent jobs and return a report in declaration order.
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
BatchRunner.run(jobs, output_dir, *, cancel_event=None, device_label='pending') -> BatchReport
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
| Parameter | Type | Required / default | Meaning |
|
|
41
|
+
|---|---|---|---|
|
|
42
|
+
| `jobs` | tuple | Required | Positional or keyword. BatchJob tuple, for example `load_batch_plan("batch.yaml").jobs`; each includes an independent identity and plan. |
|
|
43
|
+
| `output_dir` | str | Path | Required | Positional or keyword. New batch directory with a subdirectory per job ID. Existing targets are rejected. |
|
|
44
|
+
| `cancel_event` | threading.Event | None | Optional; None | Keyword-only. Another thread can call set() to stop new dispatch; running jobs continue to finish cleanup. None disables this cancellation signal. |
|
|
45
|
+
| `device_label` | str | Optional; `'pending'` | Keyword-only. Verified source-device label, such as home/work, or pending when unknown. It does not affect calculations or infer the device from paths. |
|
|
46
|
+
|
|
47
|
+
Returns BatchReport; its close() retries failed cleanup in child processes. Declaration/path errors are rejected before creating workers. Worker-scheduler or other infrastructure errors propagate after cleanup.
|
|
48
|
+
|
|
49
|
+
Specific errors: `TypeError` if jobs is not a BatchJob tuple (“批量任务需要BatchJob tuple。”); `ValueError` for duplicate or case-colliding IDs (“批量job_id不能重复,大小写冲突也拒绝。”); `TypeError` for a non-threading.Event cancellation signal (“cancel_event需要threading.Event。”); `ValueError` for an empty/nontext device label (“device_label需要非空文本。”).
|
|
50
|
+
|
|
51
|
+
Side effects: starts at most process_count workers and publishes each job independently. Cancellation prevents dispatch only for jobs not yet dispatched.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# OutputManifest
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import OutputManifest`
|
|
4
|
+
|
|
5
|
+
<a id="api-OutputManifest"></a>
|
|
6
|
+
## `OutputManifest`
|
|
7
|
+
|
|
8
|
+
Stores the successfully published directory, manifest, and row counts for the fixed set of supported tables. Legacy output appears only when enabled.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
OutputManifest(run_id: str, output_dir: pathlib.Path, manifest_path: pathlib.Path, output_files: tuple[pathlib.Path, ...], row_counts: tuple[tuple[str, int], ...], status: str = 'completed') -> None
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### Properties and data fields
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Purpose, choices, and effect |
|
|
17
|
+
|---|---|---|---|---|
|
|
18
|
+
|`run_id`|str|Yes|None|Unique run identity, associated with the published manifest and resource records.|
|
|
19
|
+
|`output_dir`|Path|Yes|None|Absolute Path of the successfully published result directory.|
|
|
20
|
+
|`manifest_path`|Path|Yes|None|Absolute Path of the published run_manifest.json.|
|
|
21
|
+
|`output_files`|tuple[Path, ...]|Yes|None|Tuple of file paths actually published in this operation.|
|
|
22
|
+
|`row_counts`|tuple[tuple[str, int], ...]|Yes|None|Actual row counts for each supported result table.|
|
|
23
|
+
|`status`|str|No|'completed'|Publication status; successful publication is completed.|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# PlanFragment
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import PlanFragment`
|
|
4
|
+
|
|
5
|
+
<a id="api-PlanFragment"></a>
|
|
6
|
+
## `PlanFragment`
|
|
7
|
+
|
|
8
|
+
A preset-generated set of derived values, rules, windows, calculations, and pairings. Merge it into a full plan for execution. It contains no real samples and reads no files itself. Generated IDs must still be unique against user-defined IDs.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
PlanFragment(derived: tuple[chronaxis.core.expression.DerivedDefinition, ...] = (), rules: tuple[chronaxis.planning.preset_models.PresetRule, ...] = (), windows: tuple[chronaxis.core.windows.WindowSpec, ...] = (), calculations: tuple[chronaxis.planning.preset_models.PresetCalculation, ...] = (), sequences: tuple[chronaxis.planning.sequences.SequencePlan, ...] = ()) -> None
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The linked lower-level types are Chinese implementation references.
|
|
15
|
+
|
|
16
|
+
| Field | Type | Required / default | Meaning |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| `derived` | tuple[DerivedDefinition, ...] | Optional; () | Generated derived definitions; empty means none. |
|
|
19
|
+
| `rules` | tuple[PresetRule, ...] | Optional; () | Generated detection rules; empty means none. |
|
|
20
|
+
| `windows` | tuple[WindowSpec, ...] | Optional; () | Generated event windows; empty means none. |
|
|
21
|
+
| `calculations` | tuple[PresetCalculation, ...] | Optional; () | Generated calculation definitions; empty means none. |
|
|
22
|
+
| `sequences` | tuple[SequencePlan, ...] | Optional; () | Generated pairings. Nonempty values become a sequences list in to_dict(); no pairings means empty. |
|
|
23
|
+
|
|
24
|
+
<a id="api-PlanFragment-to_dict"></a>
|
|
25
|
+
### `PlanFragment.to_dict`
|
|
26
|
+
|
|
27
|
+
Serialize typed definitions to copies using the current configuration format; omit an empty sequences key.
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
PlanFragment.to_dict()
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
No explicit parameters; reads the immutable generated declarations. Returns a dict that can be merged into input for AnalysisPlan.from_dict. It contains no invented sources or execution results. No proactively raised exceptions are documented; build_preset constructs these instances.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# PlanValidationError
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import PlanValidationError`
|
|
4
|
+
|
|
5
|
+
<a id="api-PlanValidationError"></a>
|
|
6
|
+
## `PlanValidationError`
|
|
7
|
+
|
|
8
|
+
Store a configuration field path, reason, machine-readable code, and optional source location and correction hint. It does not suppress execution or data-read failures. `code` distinguishes invalid configuration from capabilities not yet connected to an executable path.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
PlanValidationError(path: str, message: str, code: str = 'invalid_config', *, hint=None, source=None, location=None, object_name=None, value=None)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Base class: `ValueError`.
|
|
15
|
+
|
|
16
|
+
<a id="api-PlanValidationError-__init__"></a>
|
|
17
|
+
### `PlanValidationError.__init__`
|
|
18
|
+
|
|
19
|
+
Construct a field-specific error, preserving the original exception chain for loader diagnostics.
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
PlanValidationError.__init__(path: str, message: str, code: str='invalid_config', *, hint=None, source=None, location=None, object_name=None, value=None)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| Parameter | Type | Required / default | Meaning |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| `path` | str | Required | Positional or keyword. Actual failing field path, such as `$.signals[0].unit`. |
|
|
28
|
+
| `message` | str | Required | Positional or keyword. Human-readable violated requirement, such as a positive integer being required. Do not include complete private input data. |
|
|
29
|
+
| `code` | str | Optional; `'invalid_config'` | Positional or keyword. Machine-readable category. Classify errors by code rather than matching Chinese message text. |
|
|
30
|
+
| `hint` | str or None | Optional; None | Keyword-only correction hint, such as valid options/names. Does not modify configuration. |
|
|
31
|
+
| `source` | str or None | Optional; None | Keyword-only source file or display name, separate from field path. None when unknown. |
|
|
32
|
+
| `location` | ConfigurationLocation or None | Optional; None | Keyword-only proven original line/column. If unavailable, report only file and field rather than guessing. |
|
|
33
|
+
| `object_name` | str or None | Optional; None | Keyword-only source, signal, or node name for locating the error, not inferring names. |
|
|
34
|
+
| `value` | str or None | Optional; None | Keyword-only shortened value description. Large containers show only type/size, not the entire configuration. |
|
|
35
|
+
|
|
36
|
+
Returns None; exception text contains path and reason. No documented exceptions: validators construct the arguments internally.
|
|
37
|
+
|
|
38
|
+
<a id="api-PlanValidationError-refresh_text"></a>
|
|
39
|
+
### `PlanValidationError.refresh_text`
|
|
40
|
+
|
|
41
|
+
Rebuild the human-readable message after attaching location information.
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
PlanValidationError.refresh_text()
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
No explicit parameters. Returns None. No documented exceptions.
|
|
48
|
+
|
|
49
|
+
<a id="api-PlanValidationError-to_dict"></a>
|
|
50
|
+
### `PlanValidationError.to_dict`
|
|
51
|
+
|
|
52
|
+
Return stable machine-readable diagnostics as a native dict.
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
PlanValidationError.to_dict()
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
No explicit parameters. No documented exceptions.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# PresetSpec
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import PresetSpec`
|
|
4
|
+
|
|
5
|
+
<a id="api-PresetSpec"></a>
|
|
6
|
+
## `PresetSpec`
|
|
7
|
+
|
|
8
|
+
Freeze a preset ID, type/version, role aliases, and parameters as an independent JSON snapshot. The ID is a simple identifier. Role values reference simple aliases in the current plan, not domain attribute paths. Parameters do not retain caller-owned mutable objects. build_preset validates the actual type-specific parameters.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
PresetSpec(id: str, preset_type: str, version: str, role_bindings: collections.abc.Mapping, parameters: collections.abc.Mapping) -> None
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| Field | Type | Required / default | Meaning |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| `id` | str | Required | Unique preset instance name, such as hot; generated names use this prefix and must not collide with existing nodes. |
|
|
17
|
+
| `preset_type` | str | Required | charge_session, fault_context, command_response, or threshold_excursion. See presets for their purposes and roles. |
|
|
18
|
+
| `version` | str | Required | Current template version is string `"1"`, not number 1 or the top-level config_version. |
|
|
19
|
+
| `role_bindings` | Mapping | Required | Map permitted roles to defined signals, for example `{"signal": "temperature"}`. Omitted roles require the documented semantic lookup declarations. |
|
|
20
|
+
| `parameters` | Mapping | Required | Type-specific parameters, such as threshold unit/enter_threshold/exit_threshold. Obtain values from business requirements and device units; do not mix different preset types' fields. |
|
|
21
|
+
|
|
22
|
+
<a id="api-PresetSpec-from_dict"></a>
|
|
23
|
+
### `PresetSpec.from_dict`
|
|
24
|
+
|
|
25
|
+
Build an immutable public declaration from the current configuration format.
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
PresetSpec.from_dict(value)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Class method.
|
|
32
|
+
|
|
33
|
+
| Parameter | Type | Required / default | Meaning |
|
|
34
|
+
|---|---|---|---|
|
|
35
|
+
| `value` | dict[str, object] | Required | Positional or keyword. Requires name, preset_type, and parameters. Omitted version is string `"1"`; omitted role_bindings is an empty mapping. See role requirements. |
|
|
36
|
+
|
|
37
|
+
Returns PresetSpec. Raises `PlanValidationError` for unknown keys, missing fields, or construction-protocol errors.
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from chronaxis import PresetSpec
|
|
41
|
+
|
|
42
|
+
# Full role and threshold semantics are checked when the plan is assembled.
|
|
43
|
+
spec = PresetSpec.from_dict({
|
|
44
|
+
"name": "heat_alarm",
|
|
45
|
+
"preset_type": "threshold_excursion",
|
|
46
|
+
"version": "1",
|
|
47
|
+
"role_bindings": {"signal": "temperature"},
|
|
48
|
+
"parameters": {"unit": "degC", "enter_threshold": 80, "exit_threshold": 75},
|
|
49
|
+
})
|
|
50
|
+
print(spec.id, spec.preset_type)
|
|
51
|
+
```
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# ResultClosedError
|
|
2
|
+
|
|
3
|
+
Import: `from chronaxis import ResultClosedError`
|
|
4
|
+
|
|
5
|
+
<a id="api-ResultClosedError"></a>
|
|
6
|
+
## `ResultClosedError`
|
|
7
|
+
|
|
8
|
+
Indicates a closed result: new iterators cannot be created and the result cannot be read or published.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
class ResultClosedError(AnalysisError)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Base class: AnalysisError. No additional fields are declared by this class.
|