Changelog#

v4.0.0 (2026-03-03)#

Full Changelog

Breaking changes:

  • Drop Python 3.10 support; minimum version is now Python 3.11

  • Rename SmactFilterOutputs.dict to composition_dict to avoid shadowing the built-in #442

  • Enforce zip(strict=True) across all source code — silently mismatched sequences now raise ValueError

Implemented enhancements:

  • Add mixed-valence support to smact_validity #568

  • Add ElementEmbeddings integration via smact.io #442

  • Add full type annotations across all public APIs with pyright “standard” mode enforcement

  • Enable ruff ANN rules for enforcing type annotations in source code

  • Migrate test_core.py from unittest.TestCase to idiomatic pytest

  • Add pytest markers for slow and integration tests

  • Add coverage threshold (fail_under = 85) to prevent regressions

  • Compile regexes at module level in composition.py and species.py for performance

  • Read docs version from importlib.metadata instead of hardcoding

Fixed bugs:

  • Fix noble gas TypeError crash with explicit oxidation state sets #588

  • Fix RuntimeError in SmactStructure.from_mp() BVAnalyzer fallback #595

  • Replace recursive GCD with functools.reduce to prevent stack overflow on large stoichiometries

  • Fix type-check in properties.py that only validated the first element in a list

  • Convert recursive parse_formula to iterative with depth limit to prevent RecursionError

  • Fix variable shadowing in ordered_elements function

  • Fix SmactStructure.__eq__ to handle different species counts without raising ValueError

  • Fix wurtzite builder oxidation states mismatch (8 states for 4 sites)

Merged pull requests:

  • Deep audit: security, correctness, and API cleanup for v4.0.0 #595

  • Unify local checks via pre-commit and consolidate CI workflows

  • Fix all pyright type errors and add pyright to CI

  • Modernize install instructions and update Python version to >=3.11

  • Remove redundant requirements files and modernize docs

  • Use local pre-commit hooks for ruff, codespell, and pyright

  • Update maintainers for v4.0.0 #595

v3.1.0 (2025-04-02)#

Full Changelog

Breaking changes:

Implemented enhancements:

  • Changes to the smact_validity function to allow for early short-circuiting resolving issue #378 #379 (ryannduma)

  • SMACT Metallicity Handling Enhancements #367 (ryannduma)

Fixed bugs:

  • Chore/remove data in docs tutorials #383 (AntObi)

  • fix: correct function call for d block element count #371 (AntObi)

  • Fix the MP URL to ensure tests run #365 (AntObi)

Closed issues:

  • Function smact_validity slow #378

Merged pull requests:

v3.0.2 (2025-01-13)#

Full Changelog

Fixed bugs:

  • Include crystal space utils in package build #361 (AntObi)

  • Make the Materials Project tests optional #360 (AntObi)

Merged pull requests:

v3.0.1 (2024-12-18)#

Full Changelog

Implemented enhancements:

Fixed bugs:

  • Updated MP test files for the Structure prediction module #350 (AntObi)

Merged pull requests:

  • Merge develop branch into master #352 (AntObi)

  • Update develop branch in line with master branch #349 (AntObi)

  • Merge master into develop branch #335 (AntObi)

v3.0 (2024-12-02)#

Full Changelog

Breaking changes:

  • Change default oxidation states from SMACT14 to ICSD24 #346 (AntObi)

Implemented enhancements:

  • Move to ruff for linting and formatting #297

  • Running examples from a browser #67

  • Migrate CI dependency installation from pip to uv #338 (AntObi)

  • Structure prediction fixes #336 (AntObi)

  • Move towards using Ruff as a linter and formatter #302 (AntObi)

Fixed bugs:

Closed issues:

  • Can the upper pin on pymatgen be removed? #316

  • Low code coverage #163

Merged pull requests:

v2.8 (2024-09-26)#

Full Changelog

Merged pull requests:

  • Bump min python version to 3.10 and update metadata #318 (AntObi)

v2.7 (2024-08-30)#

Full Changelog

Implemented enhancements:

  • Any special considerations for superconductors? #56

  • Issue of the charge neutrality check function #55

  • Gradient information for chemical filters #47

  • Develop branch updates in preparation for new release #308 (AntObi)

  • Utility module updates #307 (AntObi)

  • Nvalence_modification #290 (AntObi)

Merged pull requests:

  • VEC function integration into smact.properties with a test file to serve as an example for its use. #305 (ryannduma)

  • Restrict pymatgen version due to windows #301 (AntObi)

  • Dependabot updates #298 (AntObi)

v2.6 (2024-07-10)#

Full Changelog

Implemented enhancements:

  • Add oxidation states choice to smact_validity #281

Fixed bugs:

  • ElementCountsParallel example is non deterministic #268

Closed issues:

  • Some Boron Oxidation States Missing #278

  • When to drop support for Python3.8 #162

Merged pull requests:

  • Merge develop branch changes into the master branch #288 (AntObi)

  • Merge dependabot changes into develop branch #287 (AntObi)

  • Preparation for v2.6 #286 (AntObi)

  • Add cmap option to doper plots #285 (AntObi)

v2.5.5 (2023-12-07)#

Full Changelog

Fixed bugs:

  • Oxidation States module currently fails for Structures #190

Merged pull requests:

v2.5.4 (2023-11-30)#

Full Changelog

Implemented enhancements:

Closed issues:

  • Custom oxidation state calls #164

  • Readthedocs is deprecating the “use system packages” feature #155

Merged pull requests:

v2.5.3 (2023-08-23)#

Full Changelog

Merged pull requests:

v2.5.2 (2023-07-14)#

Full Changelog

Merged pull requests:

v2.5.1 (2023-05-02)#

Full Changelog

Implemented enhancements:

  • SMACT Composition templates #76

Closed issues:

  • Github actions failing at QA step #104

Merged pull requests:

v2.5.0 (2022-12-22)#

Full Changelog

Implemented enhancements:

  • Need to update some structure_prediction functions for the new MP API #75

Merged pull requests:

v2.4.2 (2022-12-14)#

Full Changelog

Implemented enhancements:

  • Code formatting and linting #61

Fixed bugs:

  • Some examples are python2 only #30

Closed issues:

  • oxidation states model not findable from paper #66

  • oxidation_states module missing from docs #65

  • Dopant prediction #64

Merged pull requests:

  • Updated pre-commit hooks (now includes jupyter) #77 (AntObi)

  • Ran pre-commit on all files #73 (AntObi)

  • Add pre-commit hooks and formatting to CI #72 (dandavies99)

  • Dopant prediction docs #71 (AntObi)

  • Oxidation states docs #70 (AntObi)

  • Examples have been updated to run using python3 #69 (AntObi)

  • Oxidation states model example updates #68 (AntObi)

v2.4.1 (2022-09-22)#

Full Changelog

Closed issues:

  • How to use Smact to detect invalid covalent compounds? #58

  • is it possible to use SMACT to detect valid intermetallic compounds? #57

Merged pull requests:

v2.4.0 (2022-09-20)#

Full Changelog

Closed issues:

  • Using of neutral_ratios() method in the case of non-stoichiometric compounds. #50

  • another outdated oxidation states for B #36

Merged pull requests:

v2.3.3.1 (2022-07-07)#

Full Changelog

Merged pull requests:

v2.3.3 (2022-07-07)#

Full Changelog

Closed issues:

  • how to use different oxidation states file? #48

Merged pull requests:

v2.3.2 (2022-06-09)#

Full Changelog

Closed issues:

  • how to use SMACT to generate new random compositions? #49

Merged pull requests:

v2.3.1 (2021-11-04)#

Full Changelog

Closed issues:

  • SMACT without local installation #41

  • how can we switch to another oxidation states table in your data folder for smact.screening.smact_filter? #37

  • a bug in electronegativity calculation… #35

  • Organise examples and workflows #17

Merged pull requests:

v2.3 (2021-10-06)#

Full Changelog

Fixed bugs:

  • correct oxidation states of Ir #33 (keeeto)

Closed issues:

  • pymatgen (v2022.0.*) is no longer backwards compatible #42

  • Do you have plan for more advanced Pauling rules for screening module? #34

  • the oxidation states dataset is outdated. Can you guys update it according to wikipedia? #32

  • Bug in the allowed oxidation states of element Ir #31

  • [StructurePrediction] Composition errors with the SmactStructure class #28

Merged pull requests:

v2.2 (2019-11-06)#

Full Changelog

Closed issues:

  • [__init__.py] Species.shannon_radius produces the NoneType #25

Merged pull requests:

v2.1 (2019-06-10)#

Full Changelog

Closed issues:

  • Tests #8

v2.0.2 (2019-03-20)#

Full Changelog

v2.0.1 (2019-03-13)#

Full Changelog

Closed issues:

  • Contributing section #18

  • possible_compositions function in lattice module needs fixing #15

  • Add atomic polarisability #11

  • Empty API doc pages #10

  • Include data from Faraday Oxidation Model #9

  • Clean up iPython notebooks #6

Merged pull requests:

v1.2 (2017-01-06)#

Full Changelog

v1.01 (2016-09-12)#

Full Changelog

v1.0 (2016-04-29)#

Full Changelog

Implemented enhancements:

  • Suggested Refactoring Of __init__.py #7

Closed issues:

  • smact.properties doesn’t need to be a subpackage #5

  • BUG: Running examples from the top level #4

  • BUG: CationMutation example doesn’t work #3

  • API: Move core functions to __init__ #2

  • DEP: permutations/README #1

* This Changelog was automatically generated by github_changelog_generator