diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa7817d..8241b14 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v3 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 92a39cf..a24be8e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -88,6 +88,21 @@ Enhancement suggestions are tracked as GitHub issues. When creating an enhanceme - Aim for high test coverage - Use descriptive test names +## Guidelines for AI/LLM-Assisted Contributions + +- **Remain accountable for all your outputs and decisions.** + Individuals remain fully responsible and accountable for the accuracy, quality, appropriateness, and consequences of their work. Use of AI does not transfer this responsibility to the AI model, agent, or other tool. +- **Understand your work.** + Regardless of how code or PR was produced, this project requires that authors illustrate a thorough understanding of any proposed changes. You must review such code line-by-line; it is your responsibility to ensure that it is correct, and that it does not breach copyright. Always critically engage with AI outputs, do not trust them implicitly. AI-assisted code, analysis, and artifacts must be tested and validated at a level appropriate to their impact. Authors are responsible for ensuring that generated code is correct, secure, maintainable, non-obfuscated, appropriately scoped, documented, and reproducible where relevant. +- **Disclose AI-generated or AI-assisted work.** + If AI/LLM tools were primarily used to generate code or artifacts, this should be clearly indicated in the PR. +- **Use of AI to review PRs.** + All PRs must be reviewed by a human reviewer. An LLM review may be used in addition to a human reviewer since this can help spot issues that a human may have missed, but this should not be the sole reviewer. The human reviewer should be fully accountable and responsible for the review feedback or comments (see 1). +- **Proprietary or personal information.** + For this project, proprietary or personal information should never be sent to code generators or AI tools. +- **Be transparent, assume goodwill, and share what you learn.** + Contributors should be open about relevant AI use, disclose details of AI use as appropriate to the project, engage constructively with colleagues, and share experiences and lessons learned with the project. + ## Questions? Feel free to open an issue with the label `question` if you have any questions. diff --git a/README.md b/README.md index 276650b..56f4b7a 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ BaseTemplate provides a foundation for creating new repositories following open- - Issue and pull request templates - Comprehensive documentation structure -## Required Elements for Base Public Repositories +## Required Elements for ModCon Base Public Repositories Every Base public repository must include the following elements to ensure quality, maintainability, and compliance with open-source standards: @@ -38,11 +38,13 @@ Every Base public repository must include the following elements to ensure quali ### Community Guidelines - `CONTRIBUTING.md` file with contribution guidelines + - This should include a stated policy on AI-generated/AI-assisted contributions - `CODE_OF_CONDUCT.md` file outlining community standards - Clear procedures for reporting issues and submitting pull requests +- Branch protection to ensure that sufficient review is being performed on anything going into `main` ### Project Metadata -- `pyproject.toml` or `setup.py` with clear metadata including: +- `pyproject.toml` with clear metadata including: - Project name and description - Author and contact information - Dependencies and optional dependencies @@ -56,14 +58,14 @@ Every Base public repository must include the following elements to ensure quali - Example commands for linting, testing, and building ### Acknowledgments -- Acknowledgment of Genesis Mission support in the README or `ACKNOWLEDGMENTS.md` -- Recognition of funding sources and institutional support +- Acknowledgment of Genesis Mission support in the README +- [Optional] Recognition of other funding sources ## Quick Start ### Prerequisites -- Python 3.8 or higher +- Python 3.11 or higher - Git ### Installation @@ -100,7 +102,7 @@ We welcome contributions! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for gu ## Support -This project acknowledges support from the US Department of Energy's Genesis Mission. +This project acknowledges support from the U.S. Department of Energy's Genesis Mission. ## License diff --git a/docs/faq.md b/docs/faq.md index 48bdb5b..2f4a276 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -18,7 +18,7 @@ Yes! Feel free to customize the template to suit your project's needs. All files ### Python version requirements? -BaseTemplate requires Python 3.8 or higher. We test against Python 3.8 through 3.12. +BaseTemplate requires Python 3.11 or higher. We test against Python 3.11 through 3.14. ### How do I set up a development environment? diff --git a/docs/getting_started.md b/docs/getting_started.md index fe88a49..745f9b3 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -4,7 +4,7 @@ Welcome to BaseTemplate! This guide will help you get started with this project. ## Prerequisites -- Python 3.8 or higher +- Python 3.11 or higher - pip (Python package manager) - git (for version control) diff --git a/pyproject.toml b/pyproject.toml index 99fb426..07ca2ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,10 +7,10 @@ name = "basetemplate" version = "1.0.0" description = "A template repository for ModCon base team projects" readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.11" license = {text = "Apache-2.0"} authors = [ - {name = "ModCon Base Team", email = "contact@modcon.org"} + {name = "ModCon Base Team", email = "modcon-base-code@lbl.gov"} ] keywords = [ "template", @@ -24,11 +24,10 @@ classifiers = [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] dependencies = [] @@ -53,7 +52,7 @@ packages = ["basetemplate"] [tool.black] line-length = 100 -target-version = ["py38", "py39", "py310", "py311", "py312"] +target-version = ["py311", "py312", "py313", "py314"] include = '\.pyi?$' extend-exclude = ''' /( @@ -72,14 +71,12 @@ extend-exclude = ''' [tool.isort] profile = "black" line_length = 100 -multi_line_mode = 3 include_trailing_comma = true -force_grid_wrap = 0 use_parentheses = true ensure_newline_before_comments = true [tool.mypy] -python_version = "3.8" +python_version = "3.11" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = false