Download Latest Version v1.8.1 source code.zip (45.9 MB)
Email in envelope

Get an email when there's a new version of OpenFermion

Home / v1.8.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-07-14 20.2 kB
v1.8.0 source code.tar.gz 2026-07-14 45.5 MB
v1.8.0 source code.zip 2026-07-14 45.9 MB
openfermion-1.8.0-py3-none-any.whl 2026-07-14 44.7 MB
Totals: 4 Items   136.1 MB 1

OpenFermion v1.8.0

Summary of changes

This release contains the following API enhancements:

  • Added trotter_steps_required_propagator for computing the number of Trotter steps required for propagation (rather than ground state energy estimation).
  • MolecularData now supports arbitrary multiplicities (rather than only up to duodectet).
  • SymbolicOperator.isclose(…) now accepts relative and absolute tolerance values (c.f. PR https://github.com/quantumlib/OpenFermion/pull/1114).

In addition, this release adds support for the latest release of Cirq (1.7.0) and many other packages, updates Python type annotations throughout the code (thanks to a big effort by @rosspeili), and fixes many small bugs in code and documentation. For developers, there is an updated CONTRIBUTING.md (github.com) file, several new scripts in the check/ subdirectory, support for parallel execution of Pytest for faster testing, an optional pre-commit hook configuration, and much more. (Refer to the detailed changed list below for more information.)

List of contributors

A huge thank-you to all the contributors for their work towards this release! In alphabetical order by GitHub user names, they are:

@aoowweenn, @arettig, @BapisteB, @BeauDevCode, @blazingphoenix7, @dstrain115, @jajapuramshivasai, @JdelArco98, @kottmanj, @matti-sarjala, @pavoljuhas, @rosspeili, @S-Erik, and @SamKChang.

Detailed change list

  • (PR [#805]) Fix convention of PolynomialTensor basis change (@aoowweenn)
  • (PR [#1085]) Fix [#1076]: Update orbital_energies to diagonalizing_bogoliubov_transform (@SamKChang)
  • (PR [#1086]) Fix [#929]: Raise error for non-physical terms (@SamKChang)
  • (PR [#1089]) Fix [#928]: Define rows of matrix explicitly (@SamKChang)
  • (PR [#1094]) Update versions of Python and GitHub runners (@mhucka)
  • (PR [#1096]) Fix typos in two files (@dstrain115)
  • (PR [#1109]) Remove CodeQL scanner & move others to new weekly schedule (@mhucka)
  • (PR [#1111]) Fix [#925]: inconsistent return in df_integrals.py::double_factorize (@mhucka)
  • (PR [#1114]) Fix [#764]: wrong SymbolicOperator.isclose() result (@mhucka)
  • (PR [#1121]) Fix [#1118]: avoid using "-P" with grep (@mhucka)
  • (PR [#1122]) Make CI run on any changes to tools, check scripts, and all workflow files (@mhucka)
  • (PR [#1136]) Tell actionlint that image ubuntu-24.04-arm is valid (@mhucka)
  • (PR [#1140]) Fix [#1120]: change unsafe regex in symbolic_operator.py (@mhucka)
  • (PR [#1142]) Update hadolint configuration (@mhucka)
  • (PR [#1143]) Fix [#1137] and [#908]: replace README.rst with Markdown version & update content (@mhucka)
  • (PR [#1144]) Add check/shellcheck (@mhucka)
  • (PR [#1145]) Add check/pylint-changed-files (@mhucka)
  • (PR [#1146]) Add check/all (@mhucka)
  • (PR [#1147]) check/shellcheck - exit if it cannot reliably change to the repo_dir (@pavoljuhas)
  • (PR [#1150]) Avoid early exit in check/shellcheck due to spurious read failure (@pavoljuhas)
  • (PR [#1151]) Change references to "master" to be to "main" (@mhucka)
  • (PR [#1166]) docs: update return type of get_molecular_hamiltonian (@BapisteB)
  • (PR [#1171]) Add numbers.Number to COEFFICIENT_TYPES in SymbolicOperator (@kottmanj)
  • (PR [#1175]) Update versions of GitHub Actions used in workflows (@mhucka)
  • (PR [#1194]) Fixed expectation_computational_basis_state (@S-Erik) in
  • (PR [#1195]) Remove OSV scanner because it turns out to be redundant (@mhucka)
  • (PR [#1196]) Update scorecard workflow (@mhucka)
  • (PR [#1197]) Remove no-longer-necessary weekly.yaml workflow (@mhucka)
  • (PR [#1202]) Update GitHub Actions versions to latest (@mhucka)
  • (PR [#1204]) Re-pip-compile all requirements files (@mhucka)
  • (PR [#1205]) Remove asyncio_default_fixture_loop_scope setting (@mhucka)
  • (PR [#1206]) Merge file change tests for Python source and requirements files (@mhucka)
  • (PR [#1207]) Consider .ini files & config files in Python file changes (@mhucka)
  • (PR [#1208]) Adjust tolerance in compute_lambda_thc_test.py test (@mhucka)
  • (PR [#1215]) Update all GitHub Actions versions (@mhucka)
  • (PR [#1216]) Run check/format-incremental --all --apply (no code changes) (@mhucka)
  • (PR [#1217]) Fix README.rst → README.md (@mhucka)
  • (PR [#1219]) Fix [#481]: make tests of Pubchem more robust (@mhucka)
  • (PR [#1220]) Use sys.monitoring for small speedup of tests in Python 3.12+ (@mhucka)
  • (PR [#1222]) Add settings file for Gemini Code Assist (@mhucka)
  • (PR [#1223]) Remove OSV scanner config file (@mhucka)
  • (PR [#1224]) Add a .geminiignore file (@mhucka)
  • (PR [#1225]) Add hash for [#1216] to .git-blame-ignore-revs and add info to CONTRIBUTING.md (@mhucka)
  • (PR [#1230]) Try to avoid equation constructs that look like Jinja templates (@mhucka)
  • (PR [#1231]) More documentation formatting fixes (@mhucka)
  • (PR [#1238]) Skip running slow tests in CI (@mhucka)
  • (PR [#1241]) Improve reliability and tests for map_particle_hole_dm_to_one_pdm (@mhucka)
  • (PR [#1242]) Remove unused imports in hamiltonians/richardson_gaudin.py (@mhucka)
  • (PR [#1251]) Add test coverage for missing general_calculations in MolecularData.load (@mhucka)
  • (PR [#1252]) Expand and improve CONTRIBUTING.md (@mhucka)
  • (PR [#1253]) Fix Scorecard workflow problem when dealing with PR forks (@mhucka)
  • (PR [#1254]) Update Python requirements (@mhucka)
  • (PR [#1258]) Add tests for additional h5py.File exceptions (@mhucka)
  • (PR [#1259]) Fix typos in FQE Hamiltonian time evolution tutorial notebook (@jajapuramshivasai)
  • (PR [#1260]) Remove Python 2 shims (@mhucka)
  • (PR [#1261]) Move GitHub access token from query parameter into header (@mhucka)
  • (PR [#1262]) Avoid inefficient list construction in qubit_tapering_from_stabilizer.py (@mhucka)
  • (PR [#1263]) Remove commented-out import in binary_code.py (@mhucka)
  • (PR [#1264]) Add tests for ValueError in double_commutator (@mhucka)
  • (PR [#1269]) Don't run Scorecard on fork PRs (@mhucka)
  • (PR [#1271]) Simplify and streamline ci.yaml (@mhucka)
  • (PR [#1275]) Simplify the filters used to detect changed files (@mhucka)
  • (PR [#1276]) Robustify the Pubchem live api pytest test (@mhucka)
  • (PR [#1278]) Convert pubchem_test.py to use plain pytest instead of unittest (@mhucka)
  • (PR [#1279]) Move pytest options to pyproject.toml (@mhucka)
  • (PR [#1280]) Move mypy options to pyproject.toml (@mhucka)
  • (PR [#1281]) Move .coveragerc contents to pyproject.toml (@mhucka)
  • (PR [#1283]) Remove left-over Python 2-isms (@mhucka)
  • (PR [#1284]) Increase the delay between PubChem retries (@mhucka)
  • (PR [#1285]) Increase the delay between PubChem retries again (@mhucka)
  • (PR [#1286]) Increase number of retries for Pubchem test even more (@mhucka)
  • (PR [#1287]) Move dev_tools/conf/.pylintrc to the top level (@mhucka)
  • (PR [#1288]) Skip Pubchem live API test in CI (@mhucka)
  • (PR [#1289]) Add optional .pre-commit-config.yaml for the OpenFermion project (@mhucka)
  • (PR [#1291]) Make it possible to run Pytest in parallel (@mhucka)
  • (PR [#1292]) Mark a few more tests as slow (@mhucka)
  • (PR [#1293]) Fix 2 problems in _multitensor.py (@mhucka)
  • (PR [#1294]) Fix typo in property name in pyproject.toml (@mhucka)
  • (PR [#1295]) Remove reference to discontinued icon in docs (@mhucka)
  • (PR [#1296]) Fix TypeError on non-spin-symmetric hamiltonians in low_rank trotter decomposition (@rosspeili)
  • (PR [#1298]) Add missing Python type annotations to code in dev_tools/ (@mhucka)
  • (PR [#1299]) Feature/issue 1274 notebook format check (@rosspeili)
  • (PR [#1300]) Add missing type declarations for top-level files in src/openfermion (@mhucka)
  • (PR [#1301]) Explain in CONTRIBUTING.md about using --apply with format-incremental (@mhucka)
  • (PR [#1306]) document interactionoperator hermitian assumptions (@matti-sarjala)
  • (PR [#1309]) Update some requirements to their latest versions (@mhucka)
  • (PR [#1320]) Added shellcheck dependency (@arettig)
  • (PR [#1322]) docs: format notebooks with tensorflow-docs nbfmt (@rosspeili)
  • (PR [#1323]) Use pip installable hadolint for pre-commit hook (@arettig)
  • (PR [#1325]) Fix RDM basis set rotation (@arettig)
  • (PR [#1331]) Add unit tests for utils/indexing.py (@mhucka)
  • (PR [#1334]) Revise .editorconfig (@mhucka)
  • (PR [#1335]) Remove downloads badge from top-level README.md (@mhucka)
  • (PR [#1338]) In ci.yaml, tell brew not to auto-update itself (@mhucka)
  • (PR [#1339]) Rerun flaky test in vpe_circuits_test.py (@arettig)
  • (PR [#1347]) Use SPDX license metadata (@BeauDevCode)
  • (PR [#1348]) Replace noninclusive dummy and sanity language (#1290) (@rosspeili)
  • (PR [#1349]) Fix mypy annotations in fermion_partitioning (#1282) (@rosspeili)
  • (PR [#1352]) Replace pip-compile-based dependency management with uv-based approach (@mhucka)
  • (PR [#1353]) Simplify & update CI workflow (@mhucka)
  • (PR [#1354]) Fix planewave based jellium model (@arettig)
  • (PR [#1355]) Add .gitattributes file (@mhucka)
  • (PR [#1356]) Fix integer type in binary_code_transform (@JdelArco98)
  • (PR [#1357]) Fix mypy errors in batch 2 files (#1282) (@rosspeili)
  • (PR [#1358]) Remove use of NumPy for scalar math in jellium.py (@arettig)
  • (PR [#1359]) Add missing term to trotter error loose bounds (@arettig)
  • (PR [#1360]) Fix bogoliubov_transform for spin-preserving Gaussian transformations (@blazingphoenix7)
  • (PR [#1361]) Accept NumPy scalar coefficients across operator and representation types (@blazingphoenix7)
  • (PR [#1362]) Fix mypy errors in batch 2 part 2 (#1282) (@rosspeili)
  • (PR [#1365]) Fix mypy errors in batch 2 part 3 (#1282) (@rosspeili)
  • (PR [#1366]) Fix inconsistencies in double factorization cost estimation (@arettig)
  • (PR [#1368]) Fix mypy errors in batch 3 part 1 (#1282) (@rosspeili)
  • (PR [#1370]) Add support for arbitrarily large spin states (@arettig)
  • (PR [#1371]) Add nsteps for Trotter expansion based on propagator error (@arettig)
  • (PR [#1378]) Fix up a few minor things in setup.py (@mhucka)
  • (PR [#1379]) Fix modification of rotation matrix in Givens rotation (@arettig)
  • (PR [#1380]) Fix factor of 2 in Rz operator in trotter_export_to_qgates_test.py (@arettig)
  • (PR [#1382]) Fix broken string in setup.py (@mhucka)
  • (PR [#1384]) Make minor updates and tweaks to pre-commit setup (@mhucka)
  • (PR [#1385]) Fix [#1383]: replace some noninclusive terms in various files (@mhucka)
  • (PR [#1386]) Fix/issue 1282 mypy batch3 part2 (@rosspeili)
  • (PR [#1387]) Fix remaining mypy errors for issue [#1282] (PR1) (@rosspeili)
  • (PR [#1392]) Fix final mypy errors for issue [#1282] and enable strict checking (@rosspeili)
  • (PR [#1394]) Update docs/_book.yaml to fix broken doc builds (@mhucka)
  • (PR [#1395]) Fix additional API documentation bugs (@mhucka)
  • (PR [#1396]) Fix type casting error in thc_jax.py (@mhucka)
  • (PR [#1397]) Support Cirq 1.7 change in exponents that affects rendering of circuit diagrams (@mhucka)
  • (PR [#1400]) Don't add package name to site_path value in dev_tools/docs/build_api_docs.py (@mhucka)
  • (PR [#1401]) Mark test_kpoint_isdf_symmetries() as flaky (@mhucka)
  • (PR [#1403]) Add missing r to gvec_map_logic.py module docstring (@mhucka)
  • (PR [#1404]) Make multiprocessing calls aware of parallelism used during testing (@mhucka)
  • (PR [#1406]) Use retry_once_with_later_random_values() in isdf_test.py (@mhucka)

Full Changelog: https://github.com/quantumlib/OpenFermion/compare/v1.7.1...v1.8.0

Problems, help, and discussions

If you encounter problems, please open an issue on GitHub and let us know.

If you would like to get help with using OpenFermion or discuss topics in quantum algorithms to simulate electronic structures, please go over to the Discussion section and start a new discussion.

Source: README.md, updated 2026-07-14