Contributing

Thanks for contributing to legacy-puyo-tools, this project would not exist if not for people like you and those who modded the Puyo Puyo games before.

Code of Conduct

This project and everyone participating in it is governed by the Contributor Convert. Everybody is expected to uphold this code, please read it before contributing. Please report violations to @wushenrong.

Feature Requests

Want a feature to be in to legacy-puyo-tools. Great! Create an issue at https://github.com/wushenrong/legacy-puyo-tools/issues and add a description on why it should be added. Be sure that the feature is related to the project’s goal.

Bug Reports

Found a bug? Create an issue on how the bug occurred.

Code Contribution

This project and everyone contributing code to it follows the Developer Certificate of Origin. Everybody is expected to contribute code that is compatible with the license of this project. To certify that you are following the DCO, add a signoff to your commits with the -s or --signoff flag while committing.

If the code is from another project, ensure that it is compatible with the license of this project and add attribution and licensing information. Failure to do so will result in a warning and a required understanding of open source. Repeated offenses will result in a ban from contributing code.

AI Policy

The use of AI is acceptable as it follows guidelines:

  1. The generated code is either:

    1. Boilerplate.

    2. Refactor of existing code.

    3. Generic implementation of a mathematical equation or short algorithm.

    4. Code from other projects whose license is compatible with this project’s under the DCO.

  2. Add the following notes to the generated code:

    1. The code is AI generated with its source (e.g. ChatGPT, Copilot, Claud).

    2. If the generated code falls under 1.iv, add appropriate attributions and licensing information.

  3. Declare that you have used AI in pull requests and understand what the generated code does.

  4. You have reviewed and modified the generated code.

  5. All tests are run and passes regressions for both conversion and creation of formats.

Failure to follow this guideline will result in a warning and requires a comprehensive understanding of the code submitted. If the comprehensive check is generated by AI, you will be banned from contributing code. Repeated offenses will also result in a ban from contributing code.

Development environment

First install Python and then uv.

Then clone the repository and create the development environment with uv:

# Clone repository
git clone https://github.com/wushenrong/legacy-python-tools.git
# Change into the repository
cd legacy-python-tools
# Create development environment and install tools
uv sync
# Activate development environment
./.venv/Scripts/activate
# Run linters and tests
tox

Testing

This project uses Pytest, tox, and several plugins as its testing infrastructure. If you are finished adding conversion and creation support for a format, please add tests to ensure the outputs of the tool is the same when given the same inputs, this is called regression testing.

Developer Certificate of Origin

Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.