History¶
[Unreleased]¶
- Iterative docs cleanup: landing pages, packaging/conda/dev guides, Mermaid and tutorial rendering, and a clean Zensical build (#673).
-
Report dry-run setup destinations without claiming that files were written (#666).
-
Align 2.0 release guides for a
v2.0.0rc1soak and record the Stage 3.17 gate audit (#574). -
Lock the file-format compatibility matrix (v8/v9 read/write, convert, pre-v8 freeze) (#573).
-
Complete cli_api extraction for remaining CLI commands (new, serve, setup, …) (#651).
-
Fix summary CV-split plots: use exclude_step_types and full−non_cv instead of dead selector_type (#654).
-
Wire Batch.plot to plotting and delete batch_plotters.py (#658).
-
Add ica_plot / dva_plot families on the new pipeline (#648).
-
Port raw_plot and cycle_info_plot to prepare→spec→render (#647).
-
Port cycles_plot to prepare→spec→render (#646).
-
Matplotlib backend; retire SeabornPlotBuilder; unify backend= (#639).
-
Port summary prepare path and flip summary_plot to prepare→spec→render (#638).
-
Generic plotly panel/formation layout backend (#637).
-
Add FigureSpec dataclasses and a PlotFamily registry (#636).
-
Tier-3 loader close-out:
biologics_mpr/batmo_bdfpasscheck_loader(native-projected adapters);ext_nda_readerparked;local_instrumentconfirmed as warn-only escape hatch (#561). -
Sync conda env files with
pyproject.toml: pincellpycore ==0.2.3from conda-forge (was PyPI 0.2.1), addpyyaml/paramiko/universal-pathlib, drop obsoletefabric(#628). -
Include plotting tests in the nightly Tier-3 matrix: drop the stale
test_plotutils_summary_plot--ignorefromci-scheduled.ymland setMPLBACKEND=Aggonconda-pytest/pip-install(#594). -
Docs: expand the 1.x→2.x migration guide (support matrix, config/
c.schema, ICA, plotting, alpha caveats, loader notes) and point atDEPRECATIONS.md(#572). -
Maccor txt / 2.0.0a5: zero capacities from a swallowed pandas-3
Series.updatefailure (#580, fixed #581). Cellpy files saved from Maccor raw on 2.0.0a5 may have zeros baked in — re-load from raw after upgrading. Onlymaccor_txt(split_capacity: True) was affected. -
ICA redesign (#566):
ica.dqdv()returns the long framecycle, direction, voltage, capacity, dqdv(dqduplicate deprecated); newica.dvdq(); failed half-cycles warn +frame.attrs["failures"]; old entry points shimmed to 2.1. Direction is cell-centric (#591). -
CLI:
cellpy convertdefaults to v9;--to {v9,v8}added; help is rich-formatted (Typer cutover #569).clickis no longer a direct dependency. -
Plotting on 2.0.0a5:
raw_plot/cycle_info_plotKeyError: 'voltage',summary_plot(x="cycle_index"), and in-memory summary corruption from CV-splity=sets are fixed (#593 / #567 Phase 0). Re-load in-memory cells that hit the CV-split bug; disk files were unaffected. -
Dependency budget (#570): drop required
python-box/ruamel.yaml/python-dotenv; move PyTables tocellpy[legacy-files](conda still ships pytables). Missing extra raisesOptionalDependencyErrorwith the install hint. -
Loaders: unknown undeclared vendor columns warn once (#599); Maccor model-one
Watt-hrmaps to energy (cumulative_charge_energy), not power (#599).harmonize()raises if a schema cast empties a column; newLoaderDeclarations.duration_columnsfor string durations (loader authors). -
Re-base collectors' drawing half onto
cellpy.plotting(#657).
[2.0.0a6] - 2026-07-22¶
-
Breaking:
CellpyCell.get_capnow returns nativecellpycorecurve columns (#540, native-headers flip Stage 1):voltage→potentialandcycle→cycle_num(capacity/directionunchanged). All in-repo consumers —plotutils.cycles_plot, the batch collectors,ica, and the CSV/Excel exporters — are updated; user code that indexes theget_capframe directly must rename. Seedocs/getting_started/migration_v1_to_v2.md. -
Removed the deprecated
cellpy.utils.easyplotmodule (#544). It was deprecated since 1.1 with removal scheduled for 2.0; usecellpy.utils.plotutilsandcellpy.utils.collectorsinstead. The module, its tests, its docs entry, and itsDEPRECATIONS.mdrow are gone. -
Step-type string literals use the
cellpycorevocabulary (#543, native- headers Phase-0 prerequisite):CellpyCell.list_of_step_typesis nowlist(config.STEP_TYPES)(was a hand-maintained duplicate of the 13 step-type names), and the step-tabletypecomparisons inutils/ocv_rlx.py/utils/helpers.pyuseStepType.CHARGE.value/.DISCHARGE.valueinstead of bare"charge"/"discharge"literals. Behavior-identical. -
Header column literals in
utils/helpers.pyandfilters/summary.pyuse header-object attributes (#538, native-headers Phase-0 prerequisite): the base-name string-keyedhdr_summary["charge_capacity"]-style lookups become attribute access, andfilter_summary'srate_columnsdefault is resolved fromHeadersSummary(was a hard-coded("charge_c_rate", "discharge_c_rate")tuple). Postfix/specific columns (*_gravimetric,areal_*) keep string-key composition. Behavior-identical. -
Journal-page column literals use
HeadersJournalattributes (#537, native- headers Phase-0 prerequisite): the string-keyedhdr_journal["mass"]-style lookups inbatch_plotters.pyandhelpers.pybecome attribute access (hdr_journal.mass, …) so a journal-header rename touches the header class only. Behavior-identical. -
Remote paths via
universal_pathlib(#375, #371):OtherPathis now a thin wrapper aroundUPath(fsspec/Paramiko) instead of Fabric. Supported schemes remainssh:///sftp:///scp://(scp aliased to sftp). Remoteexists/is_file/is_dirare truthful (no longer stubbed as always true). Saving a cellpy file to a remote URI raises a clear error. Credentials still come fromCELLPY_KEY_FILENAME/CELLPY_PASSWORD. Seedocs/getting_started/remote_paths.md. -
Units are per-cell now (#427):
get_cellpy_unitsreturns a freshCellpyUnitsper call (optionally seeded from its argument, which used to be silently ignored), so changing units on oneCellpyCell— directly, via the constructor, or viacellpy.get(units=...)— no longer changes them for every other cell in the session. -
Campaign merge supports
renumber_cycles=False(#529, unblocked by cellpycore 0.2.2): sources keep their original cycle numbers — the identifying key becomes(test_id, cycle)and cycle-keyed consumers see the union of matching cycles; data points are still offset to stay globally unique. Steps/summary group and window per test, and the merged object round-trips through v9. -
Dependency-injection tail of V2-09 (#520):
CellpyCell(core=..., instrument_factory=...)— the core seam and the loader registry are now constructor-injectable (defaults unchanged);register_instrument_readers()keeps an injected factory instead of silently rebuilding. ADR:.issueflows/04-designs-and-guides/cellpycell-di-restructuring.md. -
Split/drop-cycle helpers extracted from
cellreader.pyintocellpy.readers.slicing(#519, V2-09 follow-up):split,split_many,drop_from/drop_to,from_cycle/to_cycle,drop_edges,with_cycles,mod_raw_split_cyclemoved verbatim (instance-first functions, thin delegates keep the public API); new pin tests added where coverage was thin. -
Exporter family extracted from
cellreader.pyintocellpy.exporters.tabular(#518, V2-09 follow-up):to_csv/to_exceland the_export_*helpers moved verbatim (instance-first functions, thin delegates keep the public API); the near-dead_cap_mod_*helpers moved along with their removal deferred to #520. A strayprint(externals)debug line into_excelwas dropped. -
Native schema opt-in (#511, V2-11):
CellpyCell(native_schema=True)keeps frames in native cellpy-core column names and runs the polars engine directly — no legacy rename sandwich. Supported pipeline:from_raw/load→make_step_table→make_summary→save(v9). Legacy path stays the default; legacy-named consumers (get_cap, exporters, plotting, campaign merge) are not supported on a native-schema cell yet. -
cellpycore 0.2.2 sync: the legacy bridge now carries
test_idon steps and summary for all objects (core #136), so the #507 re-stamp workaround inmake_step_tableis removed and the campaign merger remaps the right-hand summary'stest_idonto its new ids (previously the merged, pre-recompute summary showedtest_id=0everywhere). -
Cellpy-file format v9 (#510, V2-13/14): default
save()writes zip-of-parquet +meta.json(.cellpy);load()still reads v4–v8 HDF5 and sniffs v9. FullTestMetaCollection(+ units/limits) persists on v9; campaign-merged multi-test_idobjects round-trip. Escape:.h5/cellpy_file_format="hdf5". Cellpy-ownedsave_meta_archive/load_meta_archive(core archive stubs stay stubs). User guide:docs/getting_started/migration_v1_to_v2.md. -
make_summarygainsexclude_step_types(#509, v2 theme V2-12): step-type prefixes (e.g.["cv_"]) whose per-cycle capacity contribution is subtracted from cycle-end charge/discharge capacities before derived columns — the core-native replacement (cellpy-core #54) for the removed selector-based exclusion. The deprecated no-effectexclude_types/exclude_steps/selector_type/selectorkwargs still only warn. Also fixes a latent load bug: older cellpy files with a double-nestedcycle_mode([['anode']]) are now unwrapped at the file-load boundary. - Slim
CellpyCell(#509, v2 theme V2-09): remove dead/experimental code — the_dev_update*family (broken call signatures, never wired), the module-level_check*/__main__dev-scratch harness,_export_cycles_old,_select_steps, the long-deadselect_steps/populate_step_dict(raisedDeprecatedFeaturesince 1.x), and the superseded_select_withoutlegacy exclusion. The capacity/curve getters (get_cap,get_ccap,get_dcap,get_ocv) moved verbatim to the newcellpy.readers.capacity_curvesmodule with thin delegate methods — public API unchanged, curve goldens byte-identical.cellreader.py: 5987 → 4778 lines (−20%). Follow-ups tracked separately: exporter extraction, split/drop extraction, dependency-injection restructuring. -
Top-level API (#509, v2 theme V2-10):
cellpy.getconfirmed as the sanctioned entry point (stale removal-TODO dropped);cellpy.merge_cellsandcellpy.print_instrumentsnow exported at package level. -
Loaders emit per-test metadata (#508, v2 Phase 2, themes V2-05/06/08):
from_rawnow routes loader-parsed metadata (testertest_ID,channel_index,creator,schedule_file_name) intometa_test_dependent(so it persists and surfaces inData.tests; the orphan attributes remain set for backward compatibility), stamps the compacttest_idgrouping key (0) onto raw (tester ids stay as provenance — note: this overwrites Arbin's per-row tester Test_ID values in the raw column), and records load provenance (uuid— new per load until #510 persists it,source_kind,source_type,source_uri,raw_file_names,loaded_datetime) that the derivedTestMetarecord now carries. Config-driven loaders stamp instrumentraw_unitson the returnedData(sharedinternal_settings.merge_raw_unitshelper). ArbinGlobal_Table.Commentsnow maps tometa_common.comment; the full vendor-column mapping (incl. deliberately dropped columns) is documented in the arbin_res module docstring. Loader goldens regenerated accordingly. -
Campaign merge (#507, v2 Phase 1-2, themes V2-03/V2-07):
CellpyCell.mergeis rewritten (old signature was dead code) —merge(cells, mode="campaign")folds different tests into one multi-test object: distinct compacttest_idper source stamped on raw (overwrites tester-assigned ids; provenance stays inmeta_test_dependent.test_ID), per-test metadata records inData.tests, globally renumbered cycles, offset data points, unshifted timelines, and no cumulative carry-forward (summaries window per test on recompute).mode="continuation"keeps the classic fold (identical tofrom_raw([f1, f2]), which is untouched). New non-mutatingmerge_cells()helper andtest_meta.cycle_ranges_per_test(). Step tables of campaign objects carry atest_idcolumn so the engine groups and windows per test end-to-end. Also fixes latent bugs in_append'smerge_step_tablebranch. -
Per-test metadata API (#506, v2 Phase 1, themes V2-01/02/04):
Data.testsexposes acellpycore.metadata.TestMetaCollectionkeyed bytest_id(active record derived from the legacy meta boxes, which stay authoritative; extra records stored in memory), withData.set_test_meta,Data.get_cycle_mode(test_id)/set_cycle_mode(mode, test_id)andData.active_test_id. v1-v8 cellpy files load as a single-test collection (test_id=0). Engine compute on objects mixing differentcycle_modes now raisesMixedCycleModesErrorinstead of silently applying one convention (per-test engine polarity: #507/#510). On-disk format v8 unchanged; only the active test's metadata is persisted (full collection persistence: #510). Adds the legacy<->core metadata mapping contract tests thatcellpycore.legacy.meta_mappingassigns to cellpy. Future vocabulary/export alignment target: BattINFO (BIG-MAP). -
Header single source (#505, v2 Phase 0 gate): drop the redundant module-level
HEADERS_NORMAL/HEADERS_SUMMARY/HEADERS_STEP_TABLEconstants incellreader.pyanddata_structures.py; use the instance attributes /get_headers_*()accessors frominternal_settingsinstead. -
Decommission the in-repo legacy summary engine (#385, v2 Phase 0 gate): remove
_make_summar_legacy,_generate_absolute_summary_columns,_ir_to_summary,_end_voltage_to_summaryand themake_summary(old=True)branch — the cellpy-core engine is the only summary path. Breaking: theoldkwarg is gone (1.x users keep it on thev1.xbranch). The arbin_sql_h5 test now runs on the core path (verified value-identical; core prunes 13 duplicate raw rows, 47→34). -
Stage 3.3: single-file raw loads default to
harmonize(parse())(Reader.use_harmonized_raw=True); Arbin wide-aux columns keep values underaux_<quantity>_<name>; vendordatapoint_numis preserved;batmo_bdfdecode runs inparse();arbin_sql_h5keeps all loader-stage rows. (#560)
1.1.0.post1 - 2026-07-15¶
- Sync conda env files (
environment.yml,environment_dev.yml,github_actions_environment.yml) withpyproject.toml: pandas ≥3.0.3,cellpycore==0.2.1from PyPI, drop obsolete pip tooling - Remove invoke
tasks.py;noxfile.pyinstalls frompyproject.toml(.[all]+ dependency-groupdev) - Docs: require Python 3.13+, copyright 2026; remove scratch root notes / Jupyter ZMQ fix markdown; refresh developer folder-structure tree
1.1.0 - 2026-07-15¶
- Pin
cellpycore==0.2.1(bridge honorscycle_modefor coulombic columns); regeneratepipeline_smokegoldens and fix native summary parity helper - Stage 1.8: config migration — prms shim / legacy YAML path, migrate internal
call sites, remove import-time config init (#453);
cellpy setupwritescellpy.tomltwin +setup migrate;info --config(#454) - Stage 1.15 / 1.14: dormant native↔legacy frame translation (#458); Polars Phase A — de-index raw/summary/journal (#457)
- Stage 1.6: delegate duplicated unit converters to
cellpycore.units(#451) - Stage 1.7: parallel
cellpy/config/pydantic-settings stack — typed models, layered TOML loader, provenance,override(), inventory parity vs #430; not wired into legacyprmsyet (#452) - Fix: full-suite test failures —
extract_fidstest uses module helper; externalcheck_file_idstest avoids live SCP; Arbin.resloader closes ODBC connections (#491) - Stage 1.10: replace hard-coded column-header literals with canonical
headers_*lookups in journal pages, ocv_rlx/plotutils, and instrument loaders (priorities 1–3); delete dead easyplot block (#455) - Stage 1.4: redirect out-of-band HDF5 readers to
cellpy_file.read_table/read_fid_table;CorruptCellpyFilefor missing keys;cellpy convertCLI for v<8 upgrades (#449) - Stage 1.3: move cellpy-file read/write paths into
cellpy_file/(#448) - Units Phase 1: re-export
CellpyUnitsandQfrom cellpycore; remove cellpy-local pint registry; renamecellreaderdata_structuresalias tods(#450) - Deprecation:
cellpy.utils.easyplotwarns on import viawarn_once; useplotutils/collectorsinstead (removed in 2.0, #438 decision 5) (#479) - Fix: loader PEC golden compares all datetime columns by epoch-ns (Windows
datetime64[us]vsns); benchmark baseline gate warns above +20% slowdown and fails only above +100% (#476) - Stage 1.1: extract cellpy-file format spec into
cellpy/readers/cellpy_file/format.py;prms._cellpyfile_*aliases preserved; template registry and example-data URL constants moved to owning modules (#446) - Stage 1.2: stateless cellpy-file helpers in
cellpy_file/; explicitLoadSelector/LoadLimitsreplacesself.limit_*side channel during HDF5 extraction (#447) - Stage 0 foundations complete — all linked characterization, oracle, baseline, convention, and decision-register issues closed; ready for Stage 1 (#439)
- Docs: Stage 0.11 decision register recorded in architecture-plan (timezone, curve-schema, v9 container, IR semantics, easyplot, v1.x maintenance) (#438)
- Conventions:
cellpy._deprecation.warn_oncehelper,DEPRECATIONS.mdregistry, exception-tree stubs (CellpyErrorre-export plusCorruptCellpyFile,ConfigurationError,UnitsError,LoaderError), andmake_new_cellwired as first consumer (#437, closes #456) - Testing: legacy v4/v5 cellpy-file loads now covered in the v4–v7 characterization matrix (removed stale TypeError pin) (#466)
- CI: retry
setup-minicondain scheduled workflow on transient conda-forge download failures (#465) - Testing: Stage 0.9 benchmark harness — opt-in
pytest-benchmarksuite underbenchmarks/, committed v1.x baseline JSON, and dedicated CI job with ±20% regression gate (#436) - Docs: Stage-0 AST inventory scanners (
scan_member_usage.py,scan_hardcoded_headers.py) in.issueflows/00-tools/for consumer/header reports (#435) (tests/parity.py::assert_value_parity) — legacy vs native frames compared throughcellpycore.legacy.mappingwith dtype-tolerant mapped-column equality, named exception list, and trivial-pass essential tests on the current bridge (#434) - Testing: curve-extraction golden snapshots for
get_cap/get_ccap/get_dcap/get_ocvon the canonical Arbin cell, including labeled/interpolated/multi-cycle variants and NullData edge cases (#433) - Testing: per-loader golden snapshots for tier-1 loaders (
arbin_res,maccor_txt,neware_txt,pec_csv,custom) — raw frame,raw_units, and loader meta oracles undertests/data/goldens/loader_*/with parametrized essential regression tests (#432) - Testing: prms configuration characterization tests — inventory parity contract, config round-trip/precedence, OtherPath coercion,
.env_cellpypickup, andcellpy setupdir/file creation (#430) - Testing: cellpy-file HDF5 characterization tests — v8 round-trip (fid-populated fixture), limits-prefix trap,
max_cycleselector, legacy version matrix, and missing-key failure mode (#429) - Testing: golden-fixture convention under
tests/data/goldens/,dev/regenerate_goldens.pysuite registry, andpipeline_smokeessential oracle on the canonical Arbin.res(#428) - Docs: clarify cellpy_units defaults in
cellpy.get()and Google docstring formatting cleanup incellreader.py(#425) - Fix: bump pandas to 3.0.3 — BDF Unix-time export, batch journal string extraction, and post-processor datetime handling (#415)
- CI: move Windows conda pytest from AppVeyor to GitHub Actions (ACE x64 install with cache) (#407)
- Testing: new offline unit tests for
utils/helpers.py(outlier removal, group names, rate column) andreaders/filefinder.py(tmp-path raw-file trees) (#372) - Fix: local
OtherPath.rglob()did not recurse into subdirectories, sosearch_for_files(..., sub_folders=True)missed files in subfolders (#372) - Fix:
remove_outliers_from_summary_on_nn_distancecrashed on pandas ≥ 2 (TypeErrorin 2-element window branch) (#372) - Fix:
list_raw_file_directory(extension=...)raisedTypeErrorwhen filtering path objects (#372) - Testing: silenced
easyplotSyntaxWarningand corrected anxfailmarker to useraises=(#372)
1.0.4a1 - 2026-07-03¶
First alpha on the automated GitHub release → PyPI pipeline. Install with
pip install cellpy --pre or pip install cellpy==1.0.4a1.
- Integration:
cellpycoreconsumed from PyPI (pinned0.1.2for this release); core step/summary processing delegated viaOldCellpyCellCoreseam (#377, #400–#401) - CI:
release.yml— published GitHub release triggers test + PyPI trusted publishing (#403) - Testing:
essentialpytest marker for read → step-table → summary smoke + parity contract - Build: Python ≥ 3.13; hatchling + uv-dynamic-versioning from git tags (#354)
- Removed dependency on cellpy-core's deprecated
create_selector(#399) - Plus fixes and features merged since
v1.0.3a6(PEC reader #393, batch/config #392/#397, module rename #381, filters #363, BDF export #356, …)
1.0.3 (pre-release)¶
- Refactor: Renamed internal modules accidentally named
core—cellpy.readers.core→cellpy.readers.data_structuresandcellpy.internals.core→cellpy.internals.connections— to avoid a name clash with the new cellpy-core package (#381) - Testing: Added header/unit parity contract tests asserting cellpy-core's settings copies (HeadersNormal, HeadersSummary, HeadersStepTable, CellpyUnits) stay in sync with cellpy's internal_settings (#378)
- Build: Migrated packaging to a single
pyproject.toml(hatchling + git-tag dynamic versioning), managed withuv; removedsetup.py/requirements*.txt/MANIFEST.inand added a Docker-based local build test (#354) - Filters: add filtering possibility to plotters in plotutils (#363)
- Fix: clear leaky seaborn facet titles (
row = ... | cycle_type = standard) in multi-rowsummary_plotpanes whenshow_formation=True, while preserving x-tick labels on the bottom row (pre-existing bug surfaced by the new_with_ratey-sets) - Exporters: New
CellpyCell.to_bdf(...)exports raw time-series in Battery Data Format (CSV/Parquet) with optional cycle filtering, for use by UiA's dsToolbox and other BDF-aware tools (#356) - Exporters:
to_bdfnow accepts anextraskeyword for appending custom/auxiliary raw columns alongside the BDF payload (extras=Truefor all unmapped columns, or pass a list/string of column names). Extras are written verbatim with no unit conversion; the resulting file is no longer strictly BDF-compliant. - General: New
cellpy.exportersandcellpy.filterspackages; theCellpyCellclass layer no longer imports fromcellpy.utils - Batch: Batch plotting with multiple subfigures (#343, #344, #346)
- Batch: JSON db reader from batbase (
batbase_json_reader) - new database reader for JSON-based batch files - Batch: Improved batch load functionality
- Batch: Enhanced error handling and logging in batch processing with clearer exception messages
- Batch: Changed default output directory name from 'out' to 'dump'
- Batch: Use local folder for journal file as default
- Batch: Allow prms to pass during batch update when reloading cellpy files
- Batch: Improved
concat_summarieswith support for different averaging methods and filtering (low/high values) - Batch: Added CV-share partitioning support in summary collector
- Batch: Added line hooks in summary plot
- Batch: Summary plot now supports fullcell standard
- Batch: Added possibility to drop columns and filter low/high for non-grouped data
- Batch: Added helper function
collectors.standard_gravimetric_collector - General: Require numpy >= 2
- General: Made explicit imports of parameters and readers in top init-file
- General: Allow additional arguments to plotly save images
- CLI: New label for create new projectdir in
cellpy new - Readers: JSON db reader now supports optional storage of raw JSON data via
store_raw_dataparameter - Readers: Added
raw_pages_dictandpages_dictproperties to JSON db reader for accessing data as dictionaries - Bug fixes: Fixed bug in pandas.ExcelWriter call (#347)
- Bug fixes: Fixed bug in summary collector (concat summaries) that mutated list of selected columns
- Bug fixes: Fixed bug in OtherPathsNew
- Bug fixes: Various other bug fixes and improvements
- CI: Fix failing CI pipelines (pyarrow runtime dep + AppVeyor 64-bit Miniconda) (#360)
- Bug fixes: Fix
TypeError: bad operand type for unary ~: 'slice'inplotutils.summary_plotwhen called withformation_cycles=Falseor0(#366) - Exporters:
to_bdfaccepts abdf_unitskeyword to control units written into the BDF file (#365)
1.0.2¶
- Batch:
only_selectedkeyword added for concatenating summaries choosing only selected cells in the pages (selected==1) - General: Add option to specify custom_log_path and path to logging config json in get() (#326) by @morrowrasmus
- Batch: implement wide format for collectors to csv
- Batch: adding more columns to pages (model, selected, nom_cap_specifics)
- General: Implemented lazy import to speed up loading of cellpy
- General: Added _absolute cols in the summary
- General: Add basic support for reading parquet for custom instruments (#322) by @morrowrasmus
- Utils: General improvements in plotutils
- General: Dropped support for python 3.9 and added support for python 3.12 (and probably beyond) by upgrading
OtherPaths - Bug fixes.
1.0.1¶
- Utils:
example_datanow includes auto-download of example data - General: supports only python 3.10 and up to 3.11
- Batch:
nakedandinit(empty=True)easier method for creating batch with empty pages - File handling: new fix in
find_files - Batch / Utils: refactored and updated
Collectors(usingplotly) - Batch: new summary plotter (using
plotly) - Batch: new convenience function for automatically creating batch from batch-file if file exists.
- Batch: added
markanddropmethods - CLI: added possibility to use custom jupyter executable
- Added checks (
c.has_xxx) for checking if data has been processed correctly / fix errors in raw/semi-processed data. - Added possibility to filter on C-rates (
c.get_cycles) - Added experimental feature
c.total_time_at_voltage_levelfor calculating total time at low/high voltage - Added experimental instrument reader for neware xlsx files (hopefully not used much because it is very slow)
- Added try-except block for ica post-processing step and add if-clause (suggested by Vajee)
- Fixed several smaller bugs and improved some of the functionality (most notably in
c.get_cap) - Added CI for macOS
- Added conda package including
sqlalchemy-access - Improved plotting tools
- Improved documentation
- Improved feedback from the CLI
1.0.0 (2023)¶
- Unit handling: new unit handling (using pint)
- Unit handling: renaming summary headers
- Unit handling: new cellpy-file-format version
- Unit handling: tool for converting old to new format
- Unit handling: parsing input parameters for units
- Templates: using one repository with sub-folders
- Templates: adding more documentation
- File handling: allow for external raw files (ssh)
- Readers: neware.txt (one version/model)
- Readers:
arbin_sql7(experimental, @jtgibson91) - Batch plotting: collectors for both data collection, plotting and saving
- OCV-rlx: improvements of the OCV-rlx tools
- Internals: rename main classes (
CellpyData->CellpyCell,Cell->Data) - Internals: rename
.cellproperty to.data - Internals: allow for only one
Dataobject prCellpyCellobject - CLI: general improvements and bug fixes
- CLI: move editing of db-file to the edit sub-command
0.4.3 (2023)¶
- Neware txt loader (supports one specific format only, other formats will have to wait for v.1.0)
0.4.2 (2022)¶
- Changed definition of Coulombic Difference (negative of previous)
- Updated loaders with hooks and additional base class
TxtLoaderwith configuration mechanism - Support for Maccor txt files
- Supports only python 3.8 and up
- Optional parameters through batch and pages
- Several bug fixes and minor improvements / adjustments
- Restrict use of instrument label to only one option
- Fix bug in example file (@kevinsmia1939)
0.4.1 (2021)¶
- Updated documentations
- CLI improvements
- New argument for get_cap:
max_cycle - Reverting from using Documents to user home for location of prm file in windows.
- Easyplot by Amund
- Arbin sql reader by Muhammad
0.4.0 (2020)¶
- Reading arbin .res files with auxiliary data should now work.
- Many bugs have been removed - many new introduced.
- Now on conda-forge (can be installed using conda).
0.4.0 a2 (2020)¶
- Reading PEC files now updated and should work
0.4.0 a1 (2020)¶
- New column names (lowercase and underscore)
- New batch concatenating and plotting routines
0.3.3 (2020)¶
- Switching from git-flow to github-flow
- New cli options for running batches
- cli option for creating template notebooks
- Using
ruamel.yamlinstead ofpyyaml - Using
python-box> 4 - Several bug-fixes
0.3.2 (2019)¶
- Starting fixing documentation
- TODO: create conda package
- TODO: extensive tests
0.3.1 (2019)¶
- Refactoring - renaming from
dfsummarytosummary - Refactoring - renaming from
step_tabletosteps - Refactoring - renaming from
dfdatatoraw - Refactoring - renaming
cellpy.datatocellpy.get - Updated save and load cellpy files allowing for new naming
- Implemented cellpy new and cellpy serve cli functionality
0.3.0 (2019)¶
- New batch-feature
- Improved make-steps and make-summary functionality
- Improved cmd-line interface for setup
- More helper functions and tools
- Experimental support for other instruments
- invoke tasks for developers
0.2.1 (2018)¶
- Allow for using mdbtools also on win
- Slightly faster find_files using cache and
fnmatch - Bug fix: error in sorting files when using
pathlibfixed
0.2.0 (2018-10-17)¶
- Improved creation of step tables (much faster)
- Default compression on cellpy (hdf5) files
- Bug fixes
0.1.22 (2018-07-17)¶
- Parameters can be set by dot-notation (
python-box). - The parameter Instruments.cell_configuration is removed.
- Options for getting voltage curves in different formats.
- Fixed python 3.6 issues with Read the Docs.
- Can now also be used on posix (the user must install
mdb_toolsfirst). - Improved logging allowing for custom log-directory.
0.1.21 (2018-06-09)¶
- No legacy python.
0.1.0 (2016-09-26)¶
- First release on PyPI.