Changelog#
v4.0.0 (2026-03-03)#
Breaking changes:
Drop Python 3.10 support; minimum version is now Python 3.11
Rename
SmactFilterOutputs.dicttocomposition_dictto avoid shadowing the built-in #442Enforce
zip(strict=True)across all source code — silently mismatched sequences now raiseValueError
Implemented enhancements:
Add mixed-valence support to
smact_validity#568Add ElementEmbeddings integration via
smact.io#442Add 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.pyfromunittest.TestCaseto idiomatic pytestAdd pytest markers for
slowandintegrationtestsAdd coverage threshold (
fail_under = 85) to prevent regressionsCompile regexes at module level in
composition.pyandspecies.pyfor performanceRead docs version from
importlib.metadatainstead of hardcoding
Fixed bugs:
Fix noble gas
TypeErrorcrash with explicit oxidation state sets #588Fix
RuntimeErrorinSmactStructure.from_mp()BVAnalyzer fallback #595Replace recursive GCD with
functools.reduceto prevent stack overflow on large stoichiometriesFix type-check in
properties.pythat only validated the first element in a listConvert recursive
parse_formulato iterative with depth limit to preventRecursionErrorFix variable shadowing in
ordered_elementsfunctionFix
SmactStructure.__eq__to handle different species counts without raisingValueErrorFix 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)#
Breaking changes:
Implemented enhancements:
Changes to the smact_validity function to allow for early short-circuiting resolving issue #378 #379 (ryannduma)
Fixed bugs:
Closed issues:
Function smact_validity slow #378
Merged pull requests:
[pre-commit.ci] pre-commit autoupdate #387 (pre-commit-ci[bot])
Added ‘main’ to ‘commonality’ parameter in the ‘filter’ function #386 (KingaMas)
[pre-commit.ci] pre-commit autoupdate #377 (pre-commit-ci[bot])
[WIP] Update continuous integration and contributing guide #368 (AntObi)
v3.0.2 (2025-01-13)#
Fixed bugs:
Merged pull requests:
v3.0.1 (2024-12-18)#
Implemented enhancements:
Fixed bugs:
Merged pull requests:
v3.0 (2024-12-02)#
Breaking changes:
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)
Move towards using Ruff as a linter and formatter #302 (AntObi)
Fixed bugs:
Closed issues:
Merged pull requests:
v2.8 (2024-09-26)#
Merged pull requests:
v2.7 (2024-08-30)#
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)
Merged pull requests:
v2.6 (2024-07-10)#
Implemented enhancements:
Add oxidation states choice to
smact_validity#281
Fixed bugs:
ElementCountsParallel example is non deterministic #268
Closed issues:
Merged pull requests:
v2.5.5 (2023-12-07)#
Fixed bugs:
Oxidation States module currently fails for Structures #190
Merged pull requests:
crystal_space #189 (hspark1212)
v2.5.4 (2023-11-30)#
Implemented enhancements:
Closed issues:
Merged pull requests:
a tiny error in eletronegativity of Zr in element_data.txt #181 (hspark1212)
compare ternary/quaternary charge state fixed #177 (JiwooChloeLee)
v2.5.3 (2023-08-23)#
Merged pull requests:
Chloe Lee Modify doper_example and doper.py files to a newer version #153 (JiwooChloeLee)
v2.5.2 (2023-07-14)#
Merged pull requests:
v2.5.1 (2023-05-02)#
Implemented enhancements:
SMACT Composition templates #76
Closed issues:
Github actions failing at QA step #104
Merged pull requests:
v2.5.0 (2022-12-22)#
Implemented enhancements:
Need to update some structure_prediction functions for the new MP API #75
Merged pull requests:
v2.4.2 (2022-12-14)#
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:
v2.4.1 (2022-09-22)#
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)#
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:
fix tests and move to GitHub Actions #60 (dandavies99)
Dopant prediction #59 (JiwooChloeLee)
v2.3.3.1 (2022-07-07)#
Merged pull requests:
v2.3.3 (2022-07-07)#
Closed issues:
how to use different oxidation states file? #48
Merged pull requests:
v2.3.2 (2022-06-09)#
Closed issues:
how to use SMACT to generate new random compositions? #49
Merged pull requests:
v2.3.1 (2021-11-04)#
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)#
Fixed bugs:
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)#
Closed issues:
[__init__.py] Species.shannon_radius produces the NoneType #25
Merged pull requests:
v2.1 (2019-06-10)#
Closed issues:
Tests #8
v2.0.2 (2019-03-20)#
v2.0.1 (2019-03-13)#
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)#
v1.01 (2016-09-12)#
v1.0 (2016-04-29)#
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