diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md old mode 100755 new mode 100644 index b7898bb..3b5671a --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,307 +1,5 @@ -# PyAutoLens Code of Conduct - -**Table of Contents** - -- [The Short Version](#the-short-version) -- [The Longer Version](#the-longer-version) - - [PyAutoLens Diversity Statement](#project-diversity-statement) - - [PyAutoLens Code of Conduct: Introduction & Scope](#project-code-of-conduct-introduction--scope) - - [Standards for Behavior](#standards-for-behavior) - - [Unacceptable Behavior](#unacceptable-behavior) - - [Reporting Guidelines](#reporting-guidelines) - - [How to Submit a Report](#how-to-submit-a-report) - - [Person(s) Responsible for Resolving Complaints](#persons-responsible-for-resolving-complaints) - - [Conflicts of Interest](#conflicts-of-interest) - - [What to Include in a Report](#what-to-include-in-a-report) - - [Enforcement: What Happens After a Report is Filed?](#enforcement-what-happens-after-a-report-is-filed) - - [Acknowledgment and Responding to Immediate Needs](#acknowledgment-and-responding-to-immediate-needs) - - [Reviewing the Report](#reviewing-the-report) - - [Contacting the Person Reported](#contacting-the-person-reported) - - [Response and Potential Consequences](#response-and-potential-consequences) - - [Appealing a Decision](#appealing-a-decision) - - [Timeline Summary:](#timeline-summary) - - [Confirming Receipt](#confirming-receipt) - - [Reviewing the Report](#reviewing-the-report-1) - - [Consequences & Resolution](#consequences--resolution) -- [License](#license) - -## The Short Version - -Be kind to others. Do not insult or put down others. Behave professionally. Remember that harassment and sexist, -racist, or exclusionary jokes are not appropriate for PyAutoLens. - -All communication should be appropriate for a professional audience including people of many different backgrounds. -Sexual language and imagery is not appropriate. - -PyAutoLens is dedicated to providing a harassment-free community for everyone, regardless of gender, sexual orientation, -gender identity and expression, disability, physical appearance, body size, race, or religion. We do not tolerate -harassment of community members in any form. - -Thank you for helping make this a welcoming, friendly community for all. - -## The Longer Version - -### PyAutoLens Diversity Statement - -PyAutoLens welcomes and encourages participation in our community by people of all backgrounds and identities. We -are committed to promoting and sustaining a culture that values mutual respect, tolerance, and learning, and we work -together as a community to help each other live out these values. - -We have created this diversity statement because we believe that a diverse community is stronger, more vibrant, -and produces better software and better science. A diverse community where people treat each other with respect has -more potential contributors, more sources for ideas, and fewer shared assumptions that might hinder development -or research. - -Although we have phrased the formal diversity statement generically to make it all-inclusive, we recognize that there -are specific identities that are impacted by systemic discrimination and marginalization. We welcome all people to -participate in the PyAutoLens community regardless of their identity or background. - -### PyAutoLens Code of Conduct: Introduction & Scope - -This code of conduct should be honored by everyone who participates in the PyAutoLens community. It should be -honored in any PyAutoLens-related activities, by anyone claiming affiliation with PyAutoLens, and especially when -someone is representing PyAutoLens in any role (including as an event volunteer or speaker). - -This code of conduct applies to all spaces managed by PyAutoLens, including all public and private mailing lists, -issue trackers, wikis, forums, and any other communication channel used by our community. The code of conduct equally -applies at PyAutoLens events and governs standards of behavior for attendees, speakers, volunteers, booth staff, -and event sponsors. - -This code is not exhaustive or complete. It serves to distill our understanding of a collaborative, inclusive -community culture. Please try to follow this code in spirit as much as in letter, to create a friendly and -productive environment that enriches the PyAutoLens community. - -The PyAutoLens Code of Conduct follows below. - -### Standards for Behavior - -PyAutoLens is a worldwide community. All communication should be appropriate for a professional audience including -people of many different backgrounds. - -**Please always be kind and courteous. There's never a need to be mean or rude or disrespectful.** Thank you for -helping make this a welcoming, friendly community for all. - -We strive to: - -**Be empathetic, welcoming, friendly, and patient.** We remember that PyAutoLens is crafted by human beings who -deserve to be treated with kindness and empathy. We work together to resolve conflict and assume good intentions. -We may all experience some frustration from time to time, but we do not allow frustration to turn into a personal -attack. A community where people feel uncomfortable or threatened is not a productive one. - -**Be collaborative.** Our work depends on the participation of many people, and in turn others depend on our work. -Open source communities depend on effective and friendly collaboration to achieve their goals. - -**Be inquisitive.** Nobody knows everything! Asking questions early avoids many problems later, so we encourage -questions, although we may direct them to the appropriate forum. We will try hard to be responsive and helpful. - -**Be careful in the words that we choose.** We are careful and respectful in our communication and we take -responsibility for our own speech. Be kind to others. Do not insult or put down other members of the community. - -#### Unacceptable Behavior - -We are committed to making participation in this community a harassment-free experience. - -We will not accept harassment or other exclusionary behaviours, such as: - -- The use of sexualized language or imagery -- Excessive profanity (please avoid curse words; people differ greatly in their sensitivity to swearing) -- Posting sexually explicit or violent material -- Violent or intimidating threats or language directed against another person -- Inappropriate physical contact and/or unwelcome sexual attention or sexual comments -- Sexist, racist, or otherwise discriminatory jokes and language -- Trolling or insulting and derogatory comments -- Written or verbal comments which have the effect of excluding people on the basis of membership in a specific group, -including level of experience, gender, gender identity and expression, sexual orientation, disability, neurotype, -personal appearance, body size, race, ethnicity, age, religion, or nationality -- Public or private harassment -- Sharing private content, such as emails sent privately or non-publicly, or direct message history, without the -sender's consent -- Continuing to initiate interaction (such as photography, recording, messaging, or conversation) with someone after -being asked to stop -- Sustained disruption of talks, events, or communications, such as heckling of a speaker -- Publishing (or threatening to post) other people's personally identifying information ("doxing"), such as -physical or electronic addresses, without explicit permission -- Other unethical or unprofessional conduct -- Advocating for, or encouraging, any of the above behaviors - -### Reporting Guidelines - -If you believe someone is violating the code of conduct, please report this in a timely manner. Code of conduct -violations reduce the value of the community for everyone. The PyAutoLens leadership team takes reports of misconduct -very seriously and is committed to preserving and maintaining the welcoming nature of our community. - -**All reports will be kept confidential.** - -In some cases we may determine that a public statement will need to be made. If that's the case, the identities of -all involved parties and reporters will remain confidential unless those individuals instruct us otherwise. - -All complaints will be reviewed and investigated and will result in a response that is deemed necessary and -appropriate to the circumstances. The PyAutoLens team commits to maintaining confidentiality with regard to the -reporter of an incident. - -For possibly unintentional breaches of the code of conduct, you may want to respond to the person and point out -this code of conduct (either in public or in private, whatever is most appropriate). If you would prefer not to do -that, please report the issue to PyAutoLens directly, or ask James Nightingale for advice in confidence. Complete contact -information is below, under "How to Submit a Report." - -Take care of each other. Alert PyAutoLens if you notice a dangerous situation, someone in distress, or violations of -this code of conduct, even if they seem inconsequential. - -#### How to Submit a Report - -**If you feel your safety is in jeopardy or the situation is an emergency, we urge you to contact local law enforcement before making a report to PyAutoLens.** (In the U.K., dial 999.) - -PyAutoLens is committed to promptly addressing any reported issues. If you have experienced or witnessed behavior that -violates the PyAutoLens Code of Conduct, please report it by sending an email to one of the members of the PyAutoLens -CoC Enforcement Team. - -#### Person(s) Responsible for Resolving Complaints - -All reports of breaches of the code of conduct will be investigated and handled by the **PyAutoLens Code of Conduct Enforcement Team**. - -The current PyAutoLens Code of Conduct Enforcement Team consists of: - -- James Nightingale - - - [*james.w.nightingale@durham.ac.uk*](mailto:james.w.nightingale@durham.ac.uk) - -#### Conflicts of Interest - -In the event of any conflict of interest, the team member will immediately notify the PyAutoLens Code of Conduct -Enforcement Team and recuse themselves if necessary. - -#### What to Include in a Report - -Our ability to address any code of conduct breaches in a timely and effective manner is impacted by the amount of -information you can provide, so, **our reporting form asks you to include as much of the following information as you can**: - -- **Your contact info** (so we can get in touch with you if we need to follow up). This will be kept confidential. -If you wish to remain anonymous, your information will not be shared beyond the person receiving the initial report. -- The **approximate time and location of the incident** (please be as specific as possible) -- **Identifying information** (e.g. name, nickname, screen name, physical description) of the individual whose -behavior is being reported -- **Description of the behavior** (if reporting harassing language, please be specific about the words -used), **your account of what happened**, and any available **supporting records** (e.g. email, GitHub issue, screenshots, etc.) -- **Description of the circumstances/context** surrounding the incident -- Let us know **if the incident is ongoing**, and/or if this is part of an ongoing pattern of behavior -- Names and contact info, if possible, of **anyone else who witnessed** or was involved in this incident. (Did -anyone else observe the incident?) -- **Any other relevant information** you believe we should have - -At PyAutoLens Events: Event staff will attempt to gather and write down the above information from anyone making a -verbal report in-person at an event. Recording the details in writing is exceedingly important in order for us to -effectively respond to reports. If event staff write down a report taken verbally, then the person making the -report will be asked to review the written report for accuracy. - -**If urgent action is needed regarding an incident at an in-person event, we strongly encourage you to reach out to the local event staff for immediate assistance.** - -### Enforcement: What Happens After a Report is Filed? - -What happens after a report is filed? - -#### Acknowledgment and Responding to Immediate Needs - -PyAutoLens and/or our event staff will attempt to ensure your safety and help with any immediate needs, particularly -at an in-person event. PyAutoLens will make every effort to **acknowledge receipt within 24 hours** (and we'll aim -for much more quickly than that). - - - -#### Reviewing the Report - -PyAutoLens will make all efforts to **review the incident within three days** and determine: - -- Whether this is an ongoing situation, or if there is a threat to anyone's physical safety -- What happened -- Whether this event constitutes a code of conduct violation -- Who the bad actor was, if any - -#### Contacting the Person Reported - -After PyAutoLens has had time to review and discuss the report, someone will attempt to contact the person who is the -subject of the report to inform them of what has been reported about them. We will then ask that person for their -account of what happened. - -#### Response and Potential Consequences - -Once PyAutoLens has completed our investigation of the report, we will make a decision as to how to respond. The -person making a report will not normally be consulted as to the proposed resolution of the issue, except insofar as -we need to understand how to help them feel safe. - -Potential consequences for violating the PyAutoLens code of conduct include: - -- Nothing (if we determine that no violation occurred) -- Private feedback or reprimand from PyAutoLens to the individual(s) involved -- Warning the person to cease their behavior and that any further reports will result in sanctions -- A public announcement that an incident occurred -- Mediation (only if both reporter and reportee agree) -- An imposed vacation (e.g. asking someone to "take a week off" from a mailing list) -- A permanent or temporary ban from some or all PyAutoLens spaces (mailing lists, GitHub repos, in-person events, etc.) -- Assistance to the complainant with a report to other bodies, for example, institutional offices or appropriate law enforcement agencies -- Removing a person from PyAutoLens membership or other formal affiliation -- Publishing an account of the harassment and calling for the resignation of the alleged harasser from their -responsibilities (usually pursued by people without formal authority: may be called for if the person is the -event leader, or refuses to stand aside from the conflict of interest, or similar) -- Any other response that PyAutoLens deems necessary and appropriate to the situation - -At PyAutoLens events, if a participant engages in behavior that violates this code of conduct, the conference -organizers and staff may take any action they deem appropriate. - -Potential consequences for violating the PyAutoLens Code of Conduct at an in-person event include: - -- Warning the person to cease their behavior and that any further reports will result in sanctions -- Requiring that the person avoid any interaction with, and physical proximity to, the person they are harassing -for the remainder of the event -- Ending a talk that violates the policy early -- Not publishing the video or slides of a talk that violated the policy -- Not allowing a speaker who violated the policy to give (further) talks at the event now or in the future -- Immediately ending any event volunteer responsibilities and privileges the reported person holds -- Requiring that the person not volunteer for future events PyAutoLens runs (either indefinitely or for a certain time period) -- Expelling the person from the event without a refund -- Requiring that the person immediately leave the event and not return -- Banning the person from future events (either indefinitely or for a certain time period) -- Any other response that PyAutoLens deems necessary and appropriate to the situation - -No one espousing views or values contrary to the standards of our code of conduct will be permitted to hold any -position representing PyAutoLens, including volunteer positions. PyAutoLens has the right and responsibility to -remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not -aligned with this code of conduct. - -We aim to **respond within one week** to the original reporter with either a resolution or an explanation of why the -situation is not yet resolved. - -We will contact the person who is the subject of the report to let them know what actions will be taken as a result of -the report, if any. - -Our policy is to make sure that everyone aware of the initial incident is also made aware that official action has -been taken, while still respecting the privacy of individuals. PyAutoLens may choose to make a public report of the -incident, while maintaining the anonymity of those involved. - -#### Appealing a Decision - -To appeal a decision of PyAutoLens, contact James Nightingale via email at -[*james.w.nightingale@durham.ac.uk*](mailto:james.w.nightingale@durham.ac.uk) with your appeal and -the Leadership Team will review the case. - -### Timeline Summary: - -#### Confirming Receipt - -PyAutoLens will make every effort to acknowledge receipt of a report **within 24 hours** (and we'll aim for much more -quickly than that). - -#### Reviewing the Report - -PyAutoLens will make all efforts to review the incident **within three days**. - -#### Consequences & Resolution - -We aim to respond **within one week** to the original reporter with either a resolution or an explanation of why -the situation is not yet resolved. - -## License - -This code of conduct has been adapted from [*NUMFOCUS code of conduct*](https://numfocus.org/code-of-conduct), -which is adapted from numerous sources, including the [*Geek Feminism wiki, created by the Ada Initiative and other volunteers, which is under a Creative Commons Zero license*](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy), the [*Contributor Covenant version 1.2.0*](http://contributor-covenant.org/version/1/2/0/), the [*Bokeh Code of Conduct*](https://github.com/bokeh/bokeh/blob/main/docs/CODE_OF_CONDUCT.md), the [*SciPy Code of Conduct*](https://github.com/jupyter/governance/blob/main/conduct/enforcement.md), the [*Carpentries Code of Conduct*](https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#enforcement-manual), and the [*NeurIPS Code of Conduct*](https://neurips.cc/public/CodeOfConduct). - -**PyAutoLens Code of Conduct is licensed under the [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/).** \ No newline at end of file +# Code of Conduct + +PyAutoLabs uses one Code of Conduct across all of its repositories. + +Read the [canonical PyAutoLabs Code of Conduct](https://github.com/PyAutoLabs/PyAutoScientist/blob/main/CODE_OF_CONDUCT.md). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md old mode 100755 new mode 100644 index 9ba1cb2..b7df3e4 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,78 +1,8 @@ -# AI-Assisted Development +# Contributing to PyAutoLabs -This project uses an AI-first development workflow. Most features, bug fixes, and improvements are implemented through AI coding agents (Claude Code, GitHub Copilot, OpenAI Codex) working from structured issue descriptions. +PyAutoLabs maintains its shared contribution guidance in one place. -## How It Works +Read the [canonical PyAutoLabs contribution guide](https://github.com/PyAutoLabs/PyAutoScientist/blob/main/CONTRIBUTING.md). -1. **Issues are the starting point** — Every task begins as a GitHub issue with a structured format: an overview, a human-readable plan, a detailed implementation plan (in a collapsible block), and optionally the original prompt that generated the issue. - -2. **AI agents pick up issues** — Issues can be assigned to AI coding agents (e.g. GitHub Copilot) which read the issue description, `AGENTS.md`, and `CLAUDE.md` for context, then implement the changes autonomously. - -3. **Human review** — All AI-generated pull requests are reviewed by maintainers before merging. - -## Maintainer Workflow - -Maintainer-driven dev work starts as a prompt file in -**[PyAutoPrompt](https://github.com/PyAutoLabs/PyAutoPrompt)** — the public -workflow repo that hosts the PyAuto task registry and the prompt-coupled -Claude Code skills. The pipeline: - -1. Write the task as `PyAutoPrompt//.md` (free-form markdown - describing what to do, with `@RepoName/path/to/file.py` references). -2. `/start_dev /.md` — reads the prompt, audits the code, - drafts the GitHub issue you see in this repo, and files it. -3. `/start_library` or `/start_workspace` — opens a feature worktree under - `~/Code/PyAutoLabs-wt//`. -4. `/ship_library` / `/ship_workspace` — runs tests, opens the PR, and - tracks state in `PyAutoPrompt/active.md`. - -External contributors don't need PyAutoPrompt access — open an issue using -the templates in this repo and the same machinery handles it on our end. - -## Creating an Issue - -When opening an issue, please use the provided issue templates. The **Feature / Task Request** template follows our standard format: - -- **Overview** — What and why, in 2-4 sentences -- **Plan** — High-level bullet points (human-readable) -- **Detailed implementation plan** — File paths, steps, key files (in a collapsible block) -- **Original Prompt** — If you used an AI to help draft the issue, include the original prompt - -If your feature involves a specific calculation, algorithm, or small piece of functionality — **include example code**. Even a rough script, a working prototype, or a snippet showing the existing behaviour you want to change makes a huge difference. Code examples give AI agents and human contributors concrete context to work from, and dramatically reduce misunderstandings about what you're asking for. - -This structure ensures that both human contributors and AI agents can understand and act on the issue effectively. - -## Contributing Without AI - -Traditional contributions are equally welcome! If you prefer to work without AI tools, simply follow the development setup and pull request guidelines below. The issue templates are helpful for any contributor, AI or human. - ---- - -# Contributing - -Contributions are welcome and greatly appreciated! - -## Getting Started - -1. Clone the repository -2. Create a feature branch: - ``` - git checkout -b feature/name-of-your-branch - ``` - -3. Only edit files in `scripts/`. Notebooks are auto-generated. - -4. Test your changes: - ``` - bash run_all_scripts.sh - ``` - -5. Regenerate notebooks after scripts pass. - -6. Commit, push, and submit a pull request. - -### Pull Request Guidelines - -1. Include a summary of which scripts were changed and why. -2. Confirm that notebooks were regenerated. -3. Preserve all docstrings, comments, and tutorial explanations. +Repository-specific setup, test commands, and editing rules are documented in +that repository's `README.md` and `AGENTS.md`, where present.