Changelog and release#

This page is the single maintainer entry for what shipped and how to cut a release. cifkit follows scikit-package for news fragments, tagging, and PyPI upload.

Every pull request carries a news file#

Copy news/TEMPLATE.rst to news/<branch-name>.rst and fill in only the section that applies (Added, Changed, Deprecated, Removed, Fixed, Security), leaving the other placeholders untouched. CI enforces the news file’s presence.

At release time those fragments are compiled into CHANGELOG.rst (the history below).

Cutting a release#

  1. Ensure main is green and news fragments for the release are present.

  2. Push an annotated version tag (e.g. 1.2.3).

  3. The release GitHub Actions workflow builds the wheel with setuptools-git-versioning, uploads to PyPI, compiles news fragments into CHANGELOG.rst, and creates the GitHub release.

Full checklist: scikit-package release guide.

Docs deployment#

Canonical docs (also PyPI Homepage / Documentation):

https://bobleesj.github.io/cifkit/

LLM plain-text recipes: https://bobleesj.github.io/cifkit/llms.txt

This site builds from docs/ with jupyter-book via .github/workflows/cifkit-docs.yml on every push to main (and on PRs for build-only). The workflow runs scripts/docs_e2e_check.py, then publishes HTML to the gh-pages branch (peaceiris/actions-gh-pages).

To build locally:

pip install -r docs/requirements.txt
pip install -e .
jupyter-book build docs
# docs/_build/html/index.html

Tutorial pages are plain MyST with pasted, verified outputs - nothing executes at build time. When behavior changes, re-run snippets against the package and update the shown outputs in the same commit.

Release notes (changelog)#

Compiled history from CHANGELOG.rst (news fragments + past releases):

Release Notes#

1.2.2#

Changed:

  • Drop Python 3.11 support; require Python 3.12–3.14 (classifiers and requires-python).

1.2.1#

Added:

  • Add elemental data modules migrated from bobleesj.utils: the Oliynyk elemental property database (cifkit.sources.oliynyk), Mendeleev numbers, periodic table data, CIF and Pauling CN12 radius data, the Formula parser, ElementSorter, and basic statistics helpers, with parity tests asserting exact equality against the legacy package.

Changed:

  • Remove the bobleesj.utils dependency by sourcing elemental data from the new built-in modules; add pandas and openpyxl as dependencies for the Oliynyk Excel database.

  • Update the maintainer contact email to the Stanford address in package metadata, AUTHORS, and the code of conduct.

1.1.1#

Fixed:

  • Bump version 1.1.0 to 1.1.1 since v1.1.0 was already uploaded before to PyPI.

1.1.0#

Added:

  • Use tests.txt, modify folder name from doc to docs.

  • Add Bala to contributor’s list in index.rst.

Fixed:

  • Use vectorization for computing connections.

1.0.9#

Added:

  • Add unit tests for refined CIF radius for binary and ternary.

  • Add bobleesj.utils to the pip.txt and conda.txt requirement files.

  • Add deepdiff to test.txt.

  • Use bobleesj.utils to source CIF radius for all elements.

  • Relocate PCD .cif files that have no atomic site/label while preprocessing each .cif file.

  • Standarlize cifkit using scikit-package v0.1.0 including docformatter, prettier, and codespell for code formatting and linting.

  • Include an option to compute coordination metrics when CIF and CifEnsemble are initialized.

  • Implement compute_CN to separate computing CN related metrics, separated from computing connections.

  • Return objective function value after finding refined CIF radius.

Changed:

  • Source Mendeleeve values from bobleesj.utils.

Fixed:

  • Catch error for the polyhedron when the volume cannot be calculated due to flat surface.

  • Fix all local unit tests to pass with compute_CN() method.

  • Generate 5 by 5 by 5 supercell by default in instead of 3 by 3 by 3 to handle the case where a bigger supercell is required to accurate to determine the correct shortest distances from each site.

  • Fix Jupyter CIF doc rendering problem with PCD demo file.

  • Set line-length max to 90 instead of 79.

  • Fix error in polyhedron volume calculation for CN=5 and other polyhedrons with central atom on the same plane with equatorial atoms.

Removed:

  • Remove hard coded data for CIF and Pauling CN12 radius values. Retrieve them from bobleesj.utils.

1.0.6#

Added:

1.0.5#

Added:

  • Add docstrings to Cif and CifEnsembleo classes.

  • Add support for ICSD, COD, MP, CCDC files.

  • Use GitHub Actions to deploy to PyPI and update CHANGELOG.rst.

1.0.3#

Added:

  • Support .cif file formats of PCD, COD, Materials Studio, ICSD.

Fixed:

  • Update U Pauling CN12 value from 1.51 to 1.516.

1.0.2#

Added:

  • Initializing progress statement for CifEnsemble to enhance user experience.

  • Print option for compute_connections in CifEnsemble.

  • Preprocessing option for CifEnsemble to handle input data more flexibly.

Fixed:

  • Error computing polyhedron metrics: index 4 is out of bounds for axis 0 with size 4.

  • Warning for using categorical units to plot a list of strings for histogram generation.

  • Misclassification issue during preprocessing: do not move to ‘others’ folder if elements do not belong to Mendeleev table.