Skip to content

June 2, 2026¤

changed: event-log output now trims entirely-empty extra columns. The 9 canonical core columns (ocel:eid, ocel:activity, ocel:timestamp, ts_shape:start_timestamp, ts_shape:duration_s, ts_shape:detector, ts_shape:pack, ts_shape:severity, ts_shape:value) are always emitted, so every event log keeps an identical append-friendly core schema; per-detector extras (: passthroughs, standard-attr extensions) are dropped when all-empty instead of shipped full of NaN. add: align_columns(logs) -- reindex multiple EventLogs' events tables to their shared column union (core first, extras sorted) so each frame exposes an identical column set before appending/stacking. concat(...) already unions columns on merge; this is for callers stacking frames themselves. changed: event-log exporters renamed for a consistent to_event_log family: to_flat_df -> to_event_log_xes, to_ocel_tables -> to_event_log_ocel. The old names remain as deprecated aliases (DeprecationWarning) for back-compat.

May 20, 2026¤

add: Pipeline -- the single declarative orchestrator for ts-shape. Chains transform and detector steps into one reusable definition: .transform() steps replace the working signal; .detect() steps store named event results. Supports $input/$prev sentinels for multi-DataFrame wiring, run_steps() for intermediates, describe() for previews, and PipelineResult.to_event_log() for combined OCEL export. BREAKING: removed FeaturePipeline (features.segment_analysis.feature_pipeline); Pipeline replaces it. Migration: FeaturePipeline(df)...run() becomes Pipeline()...run(df); .add_step(Cls.method, kw) and .add_instance_step(Cls, call='method', kw) both become .transform(Cls, 'method', **kw); .add_lambda_step(fn) becomes .transform(fn). $input/$prev sentinels and run_steps() are unchanged. add: UnitConverter -- engineering unit conversion (transform), a thin wrapper around the pint library. Optional extra: pip install ts-shape[units]. add: RuntimeAccountingEvents -- operating-hours accounting (total run time, start count, longest run, utilization, per-window runtime, hour-meter). add: LineBalancingEvents -- line balancing & takt analysis (station cycle times, balance efficiency/delay, smoothness index, theoretical minimum stations, Yamazumi station-loading table). add: FlowMetricsEvents -- flow analytics (time-weighted WIP, throughput, FIFO lead time, Little's Law consistency check, Process Cycle Efficiency). add: ts_shape.make_timeseries() -- public synthetic-data generator for trying detectors and transforms without real data or loaders. add: ts_shape.list_detectors() -- programmatic catalog of every top-level class, grouped by pack/category. add: Base.repr -- detector and instance classes now print a useful summary (row count + configured uuid/value_column). changed: OutlierDetectionEvents emits the canonical point shape (systime, uuid, source_uuid) via events/_output.py -- completes the May 14 output standardization. uuid carries the event id, source_uuid the source signal. changed: event detectors validate their configured UUID up front (Base._validate_uuid) -- a typo'd UUID now raises a clear error listing the available UUIDs instead of silently returning empty results. fix: DatapointAPI HTTP requests now send a timeout (default 30s) so an unresponsive server can no longer hang the loader. fix: TimescaleDBDataAccess uses bound SQL parameters instead of f-string interpolation. fix: CycleExtractor uses Base's sorted, defensive copy -- it no longer mutates the caller's DataFrame. fix: README quick-start and pack examples corrected to match real constructor signatures (SPC, ToleranceDeviationEvents, DataIntegratorHybrid, TimeGroupedStatistics).

May 14, 2026¤

BREAKING: event-detector outputs standardized across all packs (quality, production, engineering, maintenance, supplychain, energy, correlation). Every public DataFrame-returning method now emits one of three canonical shapes: point (systime), interval (start, end, duration_seconds), or summary (start, end, duration_seconds + aggregate columns).

Column renames applied uniformly: start_time, gap_start, window_start, period_start, disturbance_start -> start end_time, gap_end, window_end, period_end, disturbance_end -> end severity_score, severity_level -> severity OEECalculator: date -> start + end + duration_seconds (86400)

New helpers in src/ts_shape/events/_output.py (empty_event_df, finalize_point_df, finalize_interval_df, finalize_summary_df) define the canonical column constants and empty-frame schema.

ts_shape.eventlog.adapters.adapt no longer probes legacy column name variants -- it expects the canonical names. The taxonomy registry has been updated (severity_field="severity"). See docs/guides/eventlog.md for the simplified shape table.

Downstream code asserting old column names must be updated.

Sep 09, 2025¤

add: Azure blob storage container loader add: Metadata JSON loader added changed: development guide

Apr 06, 2025¤

add: quickstart guide added to docs

Dec 26, 2024¤

add: mkdocs material deployment with gh actions

Dec 25, 2024¤

add: pdoc docs exchanged with mkdocs material autodoc

Dec 23, 2024¤

add: library rename add: library structure change. loader, transform, feature, context, events

Dec 20, 2024¤

fix: closes #7

Nov 16, 2024¤

add: dev state docs for combine/integrator.py add: dev state for combine/integrator.py add: metadata loader improved

Nov 4, 2024¤

add: stats classes improved + feature table class added

Oct 29, 2024¤

add: timescaledb loader adjusted

Oct 28, 2024¤

add: loader classes adjusted add: classes for timestamp_converter added add: classes for s3, timescaledb, timezone_shift added

Oct 27, 2024¤

add: docs for time_stats added add: time_stats for numeric value columns added

Sep 11, 2024¤

add: methods refactored to execute without an instance

Sep 9, 2024¤

add: cycle methods refined and splitted to cycle processor and extractor

Sep 8, 2024¤

add: cycle method and metadata loader including tests for numeric filters add: additional methods added

Aug 25, 2024¤

fix: docs re-created fix: docs add: parquet loader, timestamp, string, numeric and boolean stats methods

May 4, 2024¤

change: typings added, first test added change: package folder moved init: pypi package structure for timeseries-shaper / internal project for my master thesis