diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 72afc817..1c576783 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,7 +17,7 @@ I care a lot about having a clean API, so I am unlikely to accept a random PR th ### Code style -For this project I have used [Black](https://github.com/ambv/black) as the formatting standard, with all of the default arguments. I recommend that PRs use black. +This project uses [ruff](https://github.com/astral-sh/ruff) for linting and formatting, enforced via pre-commit. Before submitting a PR, run `make fmt` (or `pre-commit run --all-files`) to apply the same checks used in CI. ### Testing @@ -29,6 +29,10 @@ Inline comments (and docstrings!) are great when needed, but don't go overboard. I would appreciate if changes are accompanied by relevant documentation – it doesn't have to be pretty, because I will probably try to tidy it up before it goes onto ReadTheDocs, but it'd make things a lot simpler to have the person who wrote the code explain it in their own words. +## Community + +PyPortfolioOpt is part of the [GC.OS](https://gc-os-ai.github.io/) umbrella maintenance model. For general chat, dev discussion, or just to say hello, join the [GC.OS Discord](https://discord.gg/7uKdHfdcJG) and head to the [PyPortfolioOpt channel](https://discord.com/channels/1390583813414981755/1436760376216781091). + ## Questions If you have any questions related to the project, it is probably easiest to [raise an issue](https://github.com/pyportfolio/pyportfolioopt/issues), and I will tag it as a question. diff --git a/README.md b/README.md index dcf80eff..5aaf88cd 100755 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ strategies, PyPortfolioOpt can help you combine your alpha sources in a risk-eff | **Open Source** | [![MIT](https://img.shields.io/github/license/pyportfolio/pyportfolioopt)](https://github.com/pyportfolio/pyportfolioopt/blob/main/LICENSE) [![GC.OS Sponsored](https://img.shields.io/badge/GC.OS-Sponsored%20Project-orange.svg?style=flat&colorA=0eac92&colorB=2077b4)](https://gc-os-ai.github.io/) | | | **Community** | [![!discord](https://img.shields.io/static/v1?logo=discord&label=discord&message=chat&color=lightgreen)](https://discord.gg/7uKdHfdcJG) [![!linkedin](https://img.shields.io/static/v1?logo=linkedin&label=LinkedIn&message=news&color=lightblue)](https://www.linkedin.com/company/pyportfolioopt/) | | **CI/CD** | [![github-actions](https://img.shields.io/github/actions/workflow/status/pyportfolio/pyportfolioopt/main.yml?logo=github)](https://github.com/pyportfolio/pyportfolioopt/actions/workflows/main.yml) [![readthedocs](https://img.shields.io/readthedocs/pyportfolioopt?logo=readthedocs)](https://pyportfolioopt.readthedocs.io/en/latest/?badge=latest) | -| **Code** | [![!pypi](https://img.shields.io/pypi/v/pyportfolioopt?color=orange)](https://pypi.org/project/pyportfolioopt/) [![!python-versions](https://img.shields.io/pypi/pyversions/pyportfolioopt)](https://www.python.org/) [![!black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) | +| **Code** | [![!pypi](https://img.shields.io/pypi/v/pyportfolioopt?color=orange)](https://pypi.org/project/pyportfolioopt/) [![!python-versions](https://img.shields.io/pypi/pyversions/pyportfolioopt)](https://www.python.org/) [![!ruff](https://img.shields.io/badge/code%20style-ruff-261230.svg)](https://github.com/astral-sh/ruff) | | **Downloads** | ![PyPI - Downloads](https://img.shields.io/pypi/dw/pyportfolioopt) ![PyPI - Downloads](https://img.shields.io/pypi/dm/pyportfolioopt) [![Downloads](https://static.pepy.tech/badge/pyportfolioopt)](https://pepy.tech/project/pyportfolioopt) | | **Citation** | [JOSS article](https://joss.theoj.org/papers/10.21105/joss.03066) |