Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,7 @@
- [ ] Update docstrings/[documentation](https://github.com/openforcefield/openff-toolkit/tree/main/docs), if applicable
- [ ] [Lint](https://docs.openforcefield.org/projects/toolkit/en/stable/users/developing.html#style-guide) codebase
- [ ] Update [changelog](https://github.com/openforcefield/openff-toolkit/blob/main/docs/releasehistory.md)

See our [AI Policy](https://github.com/openforcefield/openff-toolkit/blob/main/AI_POLICY.md). Please indicate whether LLMs or other AI-powered tools (beyond simple IDE use cases) were used in this contribution:
- [ ] No
- [ ] Yes: [If yes, please provide details here]
28 changes: 28 additions & 0 deletions AI_POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# AI Policy

## OpenFF Ecosystem Policies

The Open Force Field Initiative reserves the right to reject contributions if we judge that they do not follow the spirit of these principles.
The following policies hold for all repositories in the OpenFF ecosystem:

1. Repository Maintainers always reserve the right to make exceptions to any of the following rules on a case-by-case basis.
2. LLMs use must be always disclosed. At minimum in the PR description, but preferably reflected in a “Co-Authored-By” line in the commit.
3. LLMs may always be used for translation (disclosing LLM use is important here, so that maintainers can be more considerate when encountering translation inaccuracies).
4. All content must have a human identified as being accountable for the contribution. The human takes responsibility for the contribution and stands by its correctness. No agent-only commits.
5. Code authors must retain full authorship for any contributed code and contributions must be covered by the [MIT license](https://github.com/openforcefield/openff-toolkit/blob/main/LICENSE), and [Developer Certificate of Origin](https://developercertificate.org/).

## Policies specific to this repository

The following policies are specific only to this repository, and decided by the repository's maintainer(s).

In this repository, it is either acceptable (✅) or not acceptable (❌) to use LLMs for:

- ✅️ Generating content that only the author sees, but affects their work (searching repositories, asking questions, finding bugs, self-review, linting).
- ✅️ Generating code that is shared, but not committed to the code base (e.g. Minimally Reproducible Examples in issue text).
- Generating content which the human author has:

| | Code | Docs | PRs & Issues | Replies to humans |
|--------------------------------------------------------------|:----:|:----:|:------------:|:-----------------:|
| Read thoroughly and understands every line before submission | ✅️ | ✅️ | ✅️ | ❌ |
| Checked for obvious issues before submission | ❌ | ❌ | ❌ | ❌ |
| Not reviewed before submission | ❌ | ❌ | ❌ | ❌ |
3 changes: 3 additions & 0 deletions docs/releasehistory.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ Releases follow the `major.minor.micro` scheme recommended by [PEP440](https://w

### Improved documentation and warnings

- [PR #2248](https://github.com/openforcefield/openff-toolkit/pull/2248): Add initial AI policy.


## 0.19.0

### Behavior changes
Expand Down
9 changes: 8 additions & 1 deletion openff/toolkit/topology/molecule.py
Original file line number Diff line number Diff line change
Expand Up @@ -1170,7 +1170,14 @@ def to_dict(self) -> dict:
# https://mypy.readthedocs.io/en/latest/typed_dict.html#typeddict
molecule_dict: dict[
str,
str | bytes | dict[str, Any] | list[str] | list[bytes] | list[HierarchyElement] | list[dict[str, Any]] | None,
str
| bytes
| dict[str, Any]
| list[str]
| list[bytes]
| list[HierarchyElement]
| list[dict[str, Any]]
| None,
] = dict()
molecule_dict["name"] = self._name

Expand Down
Loading