Contributing

Contributions are welcome from any “array-consuming” library contributors who have found themselves writing private array-agnostic functions in the process of converting code to consume the standard!

How to contribute a function

  • Add the implementation of your function to src/array_api_extra/_funcs.py.

    • Ensure that your function includes type annotations and a numpydoc-style docstring.

    • Add your function to __all__ at the top of the file.

  • Import your function to src/array_api_extra/__init__.py and add it to __all__ there.

  • Add a test class for your function in tests/test_funcs.py.

  • Make a PR!

Development workflow

If you are an experienced contributor to Python packages, feel free to develop however you feel comfortable! However, if you would like some guidance, development of array-api-extra is made easy with Pixi:

pixi shell -e dev
  • To run the tests:

pixi run test
  • To build the docs locally:

pixi run docs
  • To open and preview the locally-built docs:

pixi run open-docs
  • To install a pre-commit hook and run the lint suite:

pixi run lint
  • To enter an interactive Python prompt:

pixi run ipython
  • To run individual parts of the lint suite separately:

pixi run pre-commit
pixi run pylint
pixi run mypy

Alternative environments are available with a subset of the dependencies and tasks available in the dev environment:

pixi shell -e docs
pixi shell -e test
pixi shell -e lint