Repository: glotzerlab/signac
Pull request #903 (2023-03-22 21:43:31)

Remove Zenodo.
## Description
This PR removes Zenodo metadata.

## Motivation and Context
We haven't been updating the [Zenodo records for signac](https://zenodo.org/record/2581327) (last updated February 2019). To simplify the repository, we can remove this. Discussed offline with @csadorf @vyasr.

cc: @joaander in case this affects how we track citation statistics. We may also remove the Zenodo reference from https://docs.signac.io/en/latest/acknowledge.html.

## Checklist:
- [x] I am familiar with the [Contributing Guidelines](https://github.com/glotzerlab/signac/blob/master/CONTRIBUTING.md).
- [x] I agree with the terms of the [Contributor Agreement](https://github.com/glotzerlab/signac/blob/master/ContributorAgreement.md).
- [x] My name is on the [list of contributors](https://github.com/glotzerlab/signac/blob/master/contributors.yaml).
- [x] The changes introduced by this pull request are covered by existing or newly introduced tests.
- [x] The [package documentation](https://github.com/glotzerlab/signac/tree/master/doc) and [framework documentation](https://docs.signac.io/) in [signac-docs](https://github.com/glotzerlab/signac-docs) are up to date with these changes.
- [x] I have updated the [changelog](https://github.com/glotzerlab/signac/blob/master/changelog.txt) and added any related issue and pull request numbers for future reference.


codecov[bot]: ## [Codecov](https://codecov.io/gh/glotzerlab/signac/pull/903?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=glotzerlab) Report
> Merging [#903](https://codecov.io/gh/glotzerlab/signac/pull/903?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=glotzerlab) (df79e65) into [master](https://codecov.io/gh/glotzerlab/signac/commit/e8a7885f7373c4f9372178baa5a7115c54944a23?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=glotzerlab) (e8a7885) will **decrease** coverage by `8.14%`.
> The diff coverage is `n/a`.

```diff
@@            Coverage Diff             @@
##           master     #903      +/-   ##
==========================================
- Coverage   86.64%   78.51%   -8.14%     
==========================================
  Files          41       41              
  Lines        4575     4575              
  Branches      996      996              
==========================================
- Hits         3964     3592     -372     
- Misses        431      808     +377     
+ Partials      180      175       -5     
```


[see 18 files with indirect coverage changes](https://codecov.io/gh/glotzerlab/signac/pull/903/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=glotzerlab)

Help us with your feedback. Take ten seconds to tell us [how you rate us](https://about.codecov.io/nps?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=glotzerlab). Have a feature suggestion? [Share it here.](https://app.codecov.io/gh/feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=glotzerlab)

bdice: It looks like `contributors.yaml` was being used to generate Zenodo metadata. Do we want to keep tracking contributors in the same way, or change that somehow?
joaander: The siganc developer team is free to track citations however they wish.
vyasr: > It looks like `contributors.yaml` was being used to generate Zenodo metadata. Do we want to keep tracking contributors in the same way, or change that somehow?

No strong opinion, so I say we just leave it as is until we have a reason to do something else. I think maintaining a simpler text format would also be fine, but no value add in converting now.

Patch:
diff --git a/.bumpversion b/.bumpversion
index 04318fc8..ddc134b3 100644
--- a/.bumpversion
+++ b/.bumpversion
@@ -11,5 +11,3 @@ message = Bump up to version {new_version}.
 [bumpversion:file:doc/conf.py]
 
 [bumpversion:file:CITATION.cff]
-
-[bumpversion:file:.zenodo.json]
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index a77bdb73..42a8d72b 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -11,9 +11,9 @@
 ## Checklist:
 <!-- This checklist must be complete before merging the pull request. -->
 <!-- If you are unsure about any of these items, do not hesitate to ask! -->
-- [ ] I am familiar with the [Contributing Guidelines](https://github.com/glotzerlab/signac/blob/master/CONTRIBUTING.md).
-- [ ] I agree with the terms of the [Contributor Agreement](https://github.com/glotzerlab/signac/blob/master/ContributorAgreement.md).
-- [ ] My name is on the [list of contributors](https://github.com/glotzerlab/signac/blob/master/contributors.yaml).
+- [ ] I am familiar with the [Contributing Guidelines](https://github.com/glotzerlab/signac/blob/main/CONTRIBUTING.md).
+- [ ] I agree with the terms of the [Contributor Agreement](https://github.com/glotzerlab/signac/blob/main/ContributorAgreement.md).
+- [ ] My name is on the [list of contributors](https://github.com/glotzerlab/signac/blob/main/contributors.yaml).
 - [ ] The changes introduced by this pull request are covered by existing or newly introduced tests.
-- [ ] The [package documentation](https://github.com/glotzerlab/signac/tree/master/doc) and [framework documentation](https://docs.signac.io/) in [signac-docs](https://github.com/glotzerlab/signac-docs) are up to date with these changes.
-- [ ] I have updated the [changelog](https://github.com/glotzerlab/signac/blob/master/changelog.txt) and added any related issue and pull request numbers for future reference.
+- [ ] The [package documentation](https://github.com/glotzerlab/signac/tree/main/doc) and [framework documentation](https://docs.signac.io/) in [signac-docs](https://github.com/glotzerlab/signac-docs) are up to date with these changes.
+- [ ] I have updated the [changelog](https://github.com/glotzerlab/signac/blob/main/changelog.txt) and added any related issue and pull request numbers for future reference.
diff --git a/.sync-zenodo-metadata.py b/.sync-zenodo-metadata.py
deleted file mode 100755
index 34ca50ed..00000000
--- a/.sync-zenodo-metadata.py
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/env python3
-"""Synchronize authors and contributor metadata.
-
-This script synchronizes the metadata provided in the CITATION.cff and
-the contributors.yaml file with the metadata stored in the .zenodo.json
-file.
-
-All authors should be listed in the CITATION.cff file, while contributors
-should be listed in the contributors.yaml file.
-Both files use the [citation file-format][1] for [person objects][2].
-
-[1] https://citation-file-format.github.io/
-[2] https://citation-file-format.github.io/1.0.3/specifications/#/person-objects
-"""
-import json
-from dataclasses import dataclass
-from typing import Optional
-
-import click
-from ruamel.yaml import Loader, load
-
-
-@dataclass
-class Contributor:
-    last_names: str
-    first_names: str
-    affiliation: str
-    orcid: Optional[str] = None
-
-    @classmethod
-    def from_citation_author(cls, **citation):
-        return cls(
-            last_names=citation.pop("family-names"),
-            first_names=citation.pop("given-names"),
-            **citation,
-        )
-
-    def as_zenodo_creator(self):
-        ret = dict(
-            name=f"{self.first_names} {self.last_names}", affiliation=self.affiliation
-        )
-        if self.orcid:
-            ret["orcid"] = self.orcid.lstrip("https://orcid.org/")
-        return ret
-
-
-@click.command()
-@click.pass_context
-@click.option(
-    "--check",
-    default=False,
-    is_flag=True,
-    help="Return with non-zero exit code if metadata needs to be updated.",
-)
-@click.option(
-    "-i", "--in-place", type=bool, is_flag=True, help="Modify metadata in place."
-)
-def sync(ctx, in_place=False, check=True):
-    with open("CITATION.cff", "rb") as file:
-        citation = load(file.read(), Loader=Loader)
-        authors = [
-            Contributor.from_citation_author(**author) for author in citation["authors"]
-        ]
-
-    with open("contributors.yaml", "rb") as file:
-        contributors = load(file.read(), Loader=Loader)["contributors"]
-        contributors = [
-            Contributor.from_citation_author(**contributor)
-            for contributor in contributors
-        ]
-
-    with open(".zenodo.json", "rb") as file:
-        zenodo = json.loads(file.read())
-        zenodo_updated = zenodo.copy()
-        zenodo_updated["creators"] = [a.as_zenodo_creator() for a in authors]
-        zenodo_updated["contributors"] = [
-            c.as_zenodo_creator() for c in contributors if c not in authors
-        ]
-        for key in ("version", "keywords"):
-            zenodo_updated[key] = citation[key]
-
-    def dump_json_utf8(content):
-        return json.dumps(content, sort_keys=True, indent=4, ensure_ascii=False)
-
-    modified = dump_json_utf8(zenodo) != dump_json_utf8(zenodo_updated)
-    if modified:
-        json_data = dump_json_utf8(zenodo_updated)
-        if in_place:
-            with open(".zenodo.json", "wb") as file:
-                file.write((json_data + "\n").encode("utf-8"))
-        else:
-            click.echo(json_data)
-        if check:
-            ctx.exit(1)
-    else:
-        click.echo("No changes.", err=True)
-
-
-if __name__ == "__main__":
-    sync()
diff --git a/.zenodo.json b/.zenodo.json
deleted file mode 100644
index d86a262a..00000000
--- a/.zenodo.json
+++ /dev/null
@@ -1,163 +0,0 @@
-{
-    "contributors": [
-        {
-            "affiliation": "University of Michigan",
-            "name": "Benjamin Swerdlow",
-            "orcid": "0000-0001-6240-1430"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Jens Glaser",
-            "orcid": "0000-0003-1852-3849"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Timothy Moore",
-            "orcid": "0000-0002-5709-7259"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Yuan Zhou"
-        },
-        {
-            "affiliation": "Air Force Science and Technology Fellowship Program",
-            "name": "Eric Harper",
-            "orcid": "0000-0002-7058-1686"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Kelly Wang"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Alexander Adams"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Thomas R. Waltmann",
-            "orcid": "0000-0001-6876-5956"
-        },
-        {
-            "affiliation": "University of Goettingen",
-            "name": "Ali Malek"
-        },
-        {
-            "affiliation": "Boise State University",
-            "name": "Jenny Fothergill",
-            "orcid": "0000-0001-9665-5420"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Alyssa Travitz",
-            "orcid": "0000-0001-5953-8807"
-        },
-        {
-            "affiliation": "National Institute of Technology, Hamirpur",
-            "name": "Vishav Sharma"
-        },
-        {
-            "affiliation": "Indian Institute of Technology, Gandhinagar",
-            "name": "Abhavya Chandra"
-        },
-        {
-            "affiliation": "Indian Institute of Technology Roorkee",
-            "name": "Hardik Ojha"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Corwin Kerr",
-            "orcid": "0000-0003-0776-2596"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Pengji Zhou",
-            "orcid": "0000-0002-1409-9633"
-        },
-        {
-            "affiliation": "Jodhpur Institute of Engineering and Technology",
-            "name": "Shantanu Dave"
-        },
-        {
-            "affiliation": "Cluster Innovation Centre, New Delhi",
-            "name": "Onkar Mahapatra"
-        },
-        {
-            "affiliation": "",
-            "name": "Parisa Tork"
-        },
-        {
-            "affiliation": "University of Wisconsin-Madison",
-            "name": "Matthew Feickert",
-            "orcid": "0000-0003-4124-7862"
-        },
-        {
-            "affiliation": "Cornell University",
-            "name": "Rachael S Skye",
-            "orcid": "0000-0001-8639-3607"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Alain Kadar",
-            "orcid": "0000-0002-0522-4199"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Kody Takada"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Alain Kadar"
-        }
-    ],
-    "creators": [
-        {
-            "affiliation": "University of Michigan",
-            "name": "Carl Simon Adorf",
-            "orcid": "0000-0003-4962-2495"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Vyas Ramasubramani",
-            "orcid": "0000-0001-5181-9532"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Bradley D. Dice",
-            "orcid": "0000-0002-9983-0770"
-        },
-        {
-            "affiliation": "Boise State University",
-            "name": "Mike Henry",
-            "orcid": "0000-0002-3870-9993"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Brandon Butler",
-            "orcid": "0000-0001-7739-7796"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Paul M. Dodd"
-        },
-        {
-            "affiliation": "University of Michigan",
-            "name": "Sharon C. Glotzer",
-            "orcid": "0000-0002-7197-0085"
-        }
-    ],
-    "description": "The signac framework helps users manage and scale file-based workflows, facilitating data reuse, sharing, and reproducibility.\n\nIt provides a simple and robust data model to create a well-defined indexable storage layout for data and metadata. This makes it easier to operate on large data spaces, streamlines post-processing and analysis and makes data collectively accessible.",
-    "doi": "10.5281/zenodo.2581327",
-    "keywords": [
-        "python",
-        "data management",
-        "reproducibility",
-        "sharability",
-        "workflow",
-        "scientific computing"
-    ],
-    "license": {
-        "id": "http://www.opensource.org/licenses/BSD-3-Clause"
-    },
-    "title": "signac",
-    "version": "1.8.0"
-}
diff --git a/CITATION.cff b/CITATION.cff
index 4697f195..477db6a6 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -9,7 +9,6 @@ abstract: |
     a well-defined indexable storage layout for data and metadata. This makes it easier to
     operate on large data spaces, streamlines post-processing and analysis and makes data
     collectively accessible.
-doi: 10.5281/zenodo.2581327
 authors:
   -
     family-names: Adorf
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 1ecdc259..03ec8015 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -27,9 +27,9 @@ All contributors must agree to the Contributor Agreement ([ContributorAgreement.
 ### Guideline for Code Contributions
 
 * Use the [OneFlow](https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow) model of development:
-  - Both new features and bug fixes should be developed in branches based on `master`.
+  - Both new features and bug fixes should be developed in branches based on `main`.
   - Hotfixes (critical bugs that need to be released *fast*) should be developed in a branch based on the latest tagged release.
-* Write code that is compatible with all supported versions of Python (listed in [pyproject.toml](https://github.com/glotzerlab/signac/blob/master/pyproject.toml)).
+* Write code that is compatible with all supported versions of Python (listed in [pyproject.toml](https://github.com/glotzerlab/signac/blob/main/pyproject.toml)).
 * Avoid introducing dependencies -- especially those that might be harder to install in high-performance computing environments.
 * Create [unit tests](https://en.wikipedia.org/wiki/Unit_testing) and [integration tests](https://en.wikipedia.org/wiki/Integration_testing) that cover the common cases and the corner cases of the code.
 * Preserve backwards-compatibility whenever possible, and make clear if something must change.
diff --git a/README.md b/README.md
index 412e7f60..57b91f35 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
-# <img src="https://raw.githubusercontent.com/glotzerlab/signac/master/doc/images/palette-header.png" width="75" height="58"> signac - simple data management
+# <img src="https://raw.githubusercontent.com/glotzerlab/signac/main/doc/images/palette-header.png" width="75" height="58"> signac - simple data management
 
 [![Affiliated with NumFOCUS](https://img.shields.io/badge/NumFOCUS-affiliated%20project-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](https://numfocus.org/sponsored-projects/affiliated-projects)
 [![PyPI](https://img.shields.io/pypi/v/signac.svg)](https://pypi.org/project/signac/)
 [![conda-forge](https://img.shields.io/conda/vn/conda-forge/signac.svg?style=flat)](https://anaconda.org/conda-forge/signac)
 [![GitHub Actions](https://github.com/glotzerlab/signac/actions/workflows/run-pytest.yml/badge.svg)](https://github.com/glotzerlab/signac/actions)
 [![RTD](https://img.shields.io/readthedocs/signac.svg?style=flat)](https://docs.signac.io)
-[![License](https://img.shields.io/github/license/glotzerlab/signac.svg)](https://github.com/glotzerlab/signac/blob/master/LICENSE.txt)
+[![License](https://img.shields.io/github/license/glotzerlab/signac.svg)](https://github.com/glotzerlab/signac/blob/main/LICENSE.txt)
 [![PyPI-downloads](https://img.shields.io/pypi/dm/signac.svg?style=flat)](https://pypistats.org/packages/signac)
 [![Slack](https://img.shields.io/badge/Slack-chat%20support-brightgreen.svg?style=flat&logo=slack)](https://signac.io/slack-invite/)
 [![Twitter](https://img.shields.io/twitter/follow/signacdata?style=social)](https://twitter.com/signacdata)
diff --git a/asv.conf.json b/asv.conf.json
index 62b278fd..b6514565 100644
--- a/asv.conf.json
+++ b/asv.conf.json
@@ -30,7 +30,7 @@
 
     // List of branches to benchmark. If not provided, defaults to "master"
     // (for git) or "default" (for mercurial).
-    // "branches": ["master"], // for git
+    "branches": ["main"], // for git
     // "branches": ["default"],    // for mercurial
 
     // The DVCS being used.  If not set, it will be automatically
diff --git a/changelog.txt b/changelog.txt
index cf9ff1d8..0bf98cf0 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -70,6 +70,7 @@ Removed
  - The ``Config`` class (#860).
  - The ``DictManager`` class (#858).
  - The ``signac.testing`` module (#863).
+ - Zenodo is no longer updated (#903).
 
 Version 1
 =========
diff --git a/doc/support.rst b/doc/support.rst
index b9ebc847..8b8a9fdf 100644
--- a/doc/support.rst
+++ b/doc/support.rst
@@ -17,8 +17,8 @@ This project is open-source.
 Users are highly encouraged to contribute directly by implementing new features and fixing issues.
 Development for packages as part of the **signac** framework should follow the general development guidelines outlined `here <https://docs.signac.io/en/latest/community.html#contributions>`__.
 
-A brief summary of contributing guidelines are outlined in the `CONTRIBUTING.md <https://github.com/glotzerlab/signac/blob/master/CONTRIBUTING.md>`_ file as part of the repository.
-All contributors must agree to the `Contributor Agreement <https://github.com/glotzerlab/signac/blob/master/ContributorAgreement.md>`_ before their pull request can be merged.
+A brief summary of contributing guidelines are outlined in the `CONTRIBUTING.md <https://github.com/glotzerlab/signac/blob/main/CONTRIBUTING.md>`_ file as part of the repository.
+All contributors must agree to the `Contributor Agreement <https://github.com/glotzerlab/signac/blob/main/ContributorAgreement.md>`_ before their pull request can be merged.
 
 Set up a development environment
 --------------------------------
@@ -107,7 +107,7 @@ To install the tool, execute:
 The ``asv`` tool will install signac into an isolated virtual environment that is used for benchmarking.
 Below is a quick reference with some helpful commands:
 
-  * ``$ asv run master..mybranch`` benchmarks every commit from ``master`` to ``mybranch``.
+  * ``$ asv run main..mybranch`` benchmarks every commit from ``main`` to ``mybranch``.
   * ``$ asv publish`` generates a static HTML site showing benchmark results.
   * ``$ asv preview`` hosts a local preview of the generated HTML site.
   * ``$ asv dev`` runs benchmarks that are in development.
@@ -140,7 +140,7 @@ Then you can build the documentation from within the ``doc/`` directory as part
 Updating the changelog
 ----------------------
 
-To update the changelog, add a one-line description to the `changelog.txt <https://github.com/glotzerlab/signac/blob/master/changelog.txt>`_ file within the ``next`` section.
+To update the changelog, add a one-line description to the `changelog.txt <https://github.com/glotzerlab/signac/blob/main/changelog.txt>`_ file within the ``next`` section.
 For example:
 
 .. code-block:: bash
diff --git a/pyproject.toml b/pyproject.toml
index 2e677893..b60b475f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -80,7 +80,6 @@ skip_glob = 'signac/_vendor/*'
 
 [tool.pydocstyle]
 convention = "numpy"
-match = "^((?!\\.sync-zenodo-metadata|setup).)*\\.py$"
 match-dir = "^((?!\\.|tests|_vendor).)*$"
 ignore-decorators = "deprecated"
 add-ignore = "D105, D107, D203, D204, D213"
diff --git a/references.bib b/references.bib
deleted file mode 100644
index 5632c3c5..00000000
--- a/references.bib
+++ /dev/null
@@ -1,38 +0,0 @@
-@article{signac_commat,
-  author        = {Carl S. Adorf and
-                   Paul M. Dodd and
-                   Vyas Ramasubramani and
-                   Sharon C. Glotzer},
-  title         = {Simple data and workflow management with the signac framework},
-  journal       = {Comput. Mater. Sci.},
-  volume        = {146},
-  number        = {C},
-  year          = {2018},
-  pages         = {220-229},
-  doi           = {10.1016/j.commatsci.2018.01.035}
-}
-@inproceedings{signac_scipy,
-  author        = {Vyas Ramasubramani and
-                   Carl S. Adorf and
-                   Paul M. Dodd and
-                   Bradley D. Dice and
-                   Sharon C. Glotzer},
-  title         = {{signac: A Python framework for data and workflow management}},
-  booktitle     = {Proc. 17th Python Sci. Conf.},
-  year          = {2018},
-  pages         = {152--159},
-  doi           = {10.25080/Majora-4af1f417-016}
-}
-@misc{signac_0_9_2,
-  author       = {Carl S. Adorf and
-                  Paul M. Dodd and
-                  Vyas Ramasubramani and
-                  Benjamin Swerdlow and
-                  Jens Glaser and
-                  Bradley Dice},
-  title        = {csadorf/signac v0.9.2},
-  month        = {dec},
-  year         = {2017},
-  doi          = {10.5281/zenodo.1117952},
-  url          = {https://doi.org/10.5281/zenodo.1117952}
-}
diff --git a/signac/_config.py b/signac/_config.py
index 94c5a2cf..2fb947d4 100644
--- a/signac/_config.py
+++ b/signac/_config.py
@@ -40,17 +40,16 @@ def _raise_if_older_schema(root):
     from .migration import _get_config_schema_version
     from .version import SCHEMA_VERSION, __version__
 
-    schema_version = int(SCHEMA_VERSION)
-
     try:
-        schema_version = _get_config_schema_version(root, schema_version)
+        schema_version = _get_config_schema_version(root, int(SCHEMA_VERSION))
         assert schema_version != int(SCHEMA_VERSION), (
             "Migration schema loader succeeded in loading a config file "
-            "where normal loader failed. This indicates an internal "
-            "error, please contact the signac developers."
+            "where normal loader failed. Do you have config files for multiple "
+            "schemas? Otherwise, this indicates an internal "
+            "error. Please contact the signac developers."
         )
         raise IncompatibleSchemaVersion(
-            "The signac schema version used by this project is "
+            "Detected signac project using schema version "
             f"{schema_version}, but signac {__version__} requires "
             f"schema version {SCHEMA_VERSION}. Try running python -m "
             "signac migrate."
diff --git a/signac/project.py b/signac/project.py
index 41c2a11f..771132b8 100644
--- a/signac/project.py
+++ b/signac/project.py
@@ -1508,6 +1508,7 @@ class Project:
         try:
             project = cls.get_project(path=path, search=False)
         except LookupError:
+            _raise_if_older_schema(path)
             fn_config = _get_project_config_fn(path)
             _mkdir_p(os.path.dirname(fn_config))
             config = _read_config_file(fn_config)


Test patch:
diff --git a/.github/workflows/run-pytest.yml b/.github/workflows/run-pytest.yml
index 85b9da23..cd5b1fef 100644
--- a/.github/workflows/run-pytest.yml
+++ b/.github/workflows/run-pytest.yml
@@ -4,10 +4,10 @@ on:
   # trigger on pull requests
   pull_request:
 
-  # trigger on all commits to master
+  # trigger on all commits to main
   push:
     branches:
-      - 'master'
+      - 'main'
 
   # trigger on request
   workflow_dispatch:
diff --git a/requirements/requirements-test-optional.txt b/requirements/requirements-test-optional.txt
index 01f84c42..4ff71356 100644
--- a/requirements/requirements-test-optional.txt
+++ b/requirements/requirements-test-optional.txt
@@ -2,7 +2,7 @@ h5py==3.8.0; implementation_name=='cpython'
 numpy==1.24.2
 pandas==1.5.3; implementation_name=='cpython'
 pymongo==4.3.3; implementation_name=='cpython'
-redis==4.5.1
+redis==4.5.4
 ruamel.yaml==0.17.21
 tables==3.8.0; implementation_name=='cpython'
 zarr==2.14.2; platform_system!='Windows'
diff --git a/requirements/requirements-test.txt b/requirements/requirements-test.txt
index 49b9c475..42227eee 100644
--- a/requirements/requirements-test.txt
+++ b/requirements/requirements-test.txt
@@ -1,4 +1,4 @@
-coverage==7.2.1
-pytest==7.2.1
+coverage==7.2.2
+pytest==7.2.2
 pytest-cov==4.0.0
-pytest-xdist==3.2.0
+pytest-xdist==3.2.1
diff --git a/tests/test_project.py b/tests/test_project.py
index b96ac863..e268c4f9 100644
--- a/tests/test_project.py
+++ b/tests/test_project.py
@@ -2403,6 +2403,9 @@ class TestSchemaMigration:
             with pytest.raises(IncompatibleSchemaVersion):
                 signac.get_project(dirname)
 
+            with pytest.raises(IncompatibleSchemaVersion):
+                signac.init_project(dirname)
+
             with pytest.raises(IncompatibleSchemaVersion):
                 signac.Project(dirname)